diff --git a/apps/files/css/detailsView.css b/apps/files/css/detailsView.css deleted file mode 100644 index 13a07ec303ec2..0000000000000 --- a/apps/files/css/detailsView.css +++ /dev/null @@ -1,5 +0,0 @@ -/*! - * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors - * SPDX-FileCopyrightText: 2015-2016 ownCloud, Inc. - * SPDX-License-Identifier: AGPL-3.0-only - */.app-sidebar .detailFileInfoContainer{min-height:50px;padding:15px}.app-sidebar .detailFileInfoContainer>div{clear:both}.app-sidebar .mainFileInfoView .icon{display:inline-block;background-size:16px 16px}.app-sidebar .mainFileInfoView .permalink{padding:6px 10px;vertical-align:top;opacity:.6}.app-sidebar .mainFileInfoView .permalink:hover,.app-sidebar .mainFileInfoView .permalink:focus{opacity:1}.app-sidebar .mainFileInfoView .permalink-field>input{clear:both;width:90%}.app-sidebar .thumbnailContainer.large{margin-inline:-15px -35px;margin-top:-15px}.app-sidebar .thumbnailContainer.large.portrait{margin:0}.app-sidebar .large .thumbnail{width:100%;display:block;background-repeat:no-repeat;background-position:center;background-size:100%;float:none;margin:0;height:auto}.app-sidebar .large .thumbnail .stretcher{content:"";display:block;padding-bottom:56.25%}.app-sidebar .large.portrait .thumbnail{background-position:50% top}.app-sidebar .large.portrait .thumbnail{background-size:contain}.app-sidebar .large.text{overflow-y:scroll;overflow-x:hidden;padding-top:14px;font-size:80%;margin-inline-start:0}.app-sidebar .thumbnail{width:100%;min-height:75px;display:inline-block;float:left;margin-inline-end:10px;background-size:contain;background-repeat:no-repeat}.app-sidebar .ellipsis{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.app-sidebar .fileName{font-size:16px;padding-top:13px;padding-bottom:3px}.app-sidebar .fileName h3{width:calc(100% - 42px);display:inline-block;padding:5px 0;margin:-5px 0}.app-sidebar .file-details{color:var(--color-text-maxcontrast)}.app-sidebar .action-favorite{vertical-align:sub;padding:10px;margin:-10px}.app-sidebar .action-favorite>span{opacity:.7 !important}.app-sidebar .detailList{float:left}.app-sidebar .close{position:absolute;top:0;inset-inline-end:0;opacity:.5;z-index:1;width:44px;height:44px}/*# sourceMappingURL=detailsView.css.map */ diff --git a/apps/files/css/detailsView.css.map b/apps/files/css/detailsView.css.map deleted file mode 100644 index 6155e2465531f..0000000000000 --- a/apps/files/css/detailsView.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sourceRoot":"","sources":["detailsView.scss"],"names":[],"mappings":"AAAA;AAAA;AAAA;AAAA;AAAA,GAKA,sCACC,gBACA,aAGD,0CACC,WAID,qCACC,qBACA,0BAGD,0CACC,iBACA,mBACA,WAEA,gGAEC,UAGF,sDACC,WACA,UAGD,uCACC,0BACA,iBAGD,gDACC,SAGD,+BACC,WACA,cACA,4BACA,2BACA,qBACA,WACA,SACA,YAGD,0CACC,WACA,cACA,sBAGD,wCACC,4BAGD,wCACC,wBAGD,yBACC,kBACA,kBACA,iBACA,cACA,sBAGD,wBACC,WACA,gBACA,qBACA,WACA,uBACA,wBACA,4BAGD,uBACC,mBACA,uBACA,gBAGD,uBACC,eACA,iBACA,mBAGD,0BACC,wBACA,qBACA,cACA,cAGD,2BACC,oCAGD,8BACC,mBACA,aACA,aAGD,mCACC,sBAGD,yBACC,WAGD,oBACC,kBACA,MACA,mBACA,WACA,UACA,WACA","file":"detailsView.css"} \ No newline at end of file diff --git a/apps/files/css/detailsView.css.map.license b/apps/files/css/detailsView.css.map.license deleted file mode 100644 index 97c7e742c563c..0000000000000 --- a/apps/files/css/detailsView.css.map.license +++ /dev/null @@ -1,3 +0,0 @@ -SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors -SPDX-FileCopyrightText: 2015-2016 ownCloud, Inc. -SPDX-License-Identifier: AGPL-3.0-only diff --git a/apps/files/css/detailsView.scss b/apps/files/css/detailsView.scss deleted file mode 100644 index 2fa09606ed79a..0000000000000 --- a/apps/files/css/detailsView.scss +++ /dev/null @@ -1,133 +0,0 @@ -/*! - * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors - * SPDX-FileCopyrightText: 2015-2016 ownCloud, Inc. - * SPDX-License-Identifier: AGPL-3.0-only - */ -.app-sidebar .detailFileInfoContainer { - min-height: 50px; - padding: 15px; -} - -.app-sidebar .detailFileInfoContainer > div { - clear: both; -} - - -.app-sidebar .mainFileInfoView .icon { - display: inline-block; - background-size: 16px 16px; -} - -.app-sidebar .mainFileInfoView .permalink { - padding: 6px 10px; - vertical-align: top; - opacity: .6; - - &:hover, - &:focus { - opacity: 1; - } -} -.app-sidebar .mainFileInfoView .permalink-field>input { - clear: both; - width: 90%; -} - -.app-sidebar .thumbnailContainer.large { - margin-inline: -15px -35px; /* 15 + 20 for the close button */ - margin-top: -15px; -} - -.app-sidebar .thumbnailContainer.large.portrait { - margin: 0; /* if we don't fit the image anyway we give it back the margin */ -} - -.app-sidebar .large .thumbnail { - width:100%; - display:block; - background-repeat: no-repeat; - background-position: center; - background-size: 100%; - float: none; - margin: 0; - height: auto; -} - -.app-sidebar .large .thumbnail .stretcher { - content: ''; - display: block; - padding-bottom: 56.25%; /* sets height of .thumbnail to 9/16 of the width */ -} - -.app-sidebar .large.portrait .thumbnail { - background-position: 50% top; -} - -.app-sidebar .large.portrait .thumbnail { - background-size: contain; -} - -.app-sidebar .large.text { - overflow-y: scroll; - overflow-x: hidden; - padding-top: 14px; - font-size: 80%; - margin-inline-start: 0; -} - -.app-sidebar .thumbnail { - width: 100%; - min-height: 75px; - display: inline-block; - float: left; - margin-inline-end: 10px; - background-size: contain; - background-repeat: no-repeat; -} - -.app-sidebar .ellipsis { - white-space: nowrap; - text-overflow: ellipsis; - overflow: hidden; -} - -.app-sidebar .fileName { - font-size: 16px; - padding-top: 13px; - padding-bottom: 3px; -} - -.app-sidebar .fileName h3 { - width: calc(100% - 42px); /* 36px is the with of the copy link icon, but this breaks so we add some more to be sure */ - display: inline-block; - padding: 5px 0; - margin: -5px 0; -} - -.app-sidebar .file-details { - color: var(--color-text-maxcontrast); -} - -.app-sidebar .action-favorite { - vertical-align: sub; - padding: 10px; - margin: -10px; -} - -.app-sidebar .action-favorite > span{ - opacity: .7 !important; -} - -.app-sidebar .detailList { - float: left; -} - -.app-sidebar .close { - position: absolute; - top: 0; - inset-inline-end: 0; - opacity: .5; - z-index: 1; - width: 44px; - height: 44px; -} diff --git a/apps/files/css/files.css b/apps/files/css/files.css deleted file mode 100644 index 4be196fdcd1aa..0000000000000 --- a/apps/files/css/files.css +++ /dev/null @@ -1,11 +0,0 @@ -/*! - * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors - * SPDX-FileCopyrightText: 2012-2016 ownCloud, Inc. - * SPDX-License-Identifier: AGPL-3.0-only - *//*! - * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors - * SPDX-License-Identifier: AGPL-3.0-or-later - *//*! - * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors - * SPDX-License-Identifier: AGPL-3.0-or-later - */.actions{padding:3px;height:100%;display:inline-block;float:left}.actions input,.actions button,.actions .button{margin:0;float:left}.actions .button a{color:#555}.actions .button a:hover,.actions .button a:focus{background-color:var(--color-background-hover)}.actions .button a:active{background-color:var(--color-primary-element-light)}.actions.creatable{position:relative;display:flex;flex:1 1}.actions.creatable .button:not(:last-child){margin-inline-end:3px;width:unset;gap:14px;background-color:var(--color-primary-element-light);color:var(--color-primary-element-light-text);border:unset;padding:0px 20px}.actions.hidden{display:none}#trash{margin-inline-end:8px;float:right;z-index:1010;padding:10px;font-weight:normal}.newFileMenu .error,.newFileMenu .error+.icon-confirm,.files-fileList .error{color:var(--color-error);border-color:var(--color-error)}.files-filestable{position:relative;width:100%;min-width:250px;display:block;flex-direction:column}.emptycontent:not(.hidden)~.files-filestable{display:none}.files-filestable thead{position:-webkit-sticky;position:sticky;top:44px;z-index:60;display:block;background-color:var(--color-main-background-translucent)}.files-filestable tbody{display:table;width:100%}.files-filestable tbody tr[data-permissions="0"],.files-filestable tbody tr[data-permissions="16"]{background-color:var(--color-background-dark)}.files-filestable tbody tr[data-permissions="0"] td.filename .nametext .innernametext,.files-filestable tbody tr[data-permissions="16"] td.filename .nametext .innernametext{color:var(--color-text-maxcontrast)}.files-filestable tbody tr[data-e2eencrypted=true] .selection{pointer-events:none}.files-filestable.hidden{display:none}.app-files #app-content>.viewcontainer{min-height:0%;width:100%}.app-files #app-content{width:calc(100% - 300px);overflow-anchor:none}.file-drag,.file-drag .files-filestable tbody tr,.file-drag .files-filestable tbody tr:hover{background-color:var(--color-primary-element-light) !important}.app-files #app-content.dir-drop{background-color:var(--color-main-background) !important}.file-drag .files-filestable tbody tr,.file-drag .files-filestable tbody tr:hover{background-color:rgba(0,0,0,0) !important}.app-files #app-content.dir-drop .files-filestable tbody tr.dropping-to-dir{background-color:var(--color-primary-element-light) !important}#app-navigation .nav-files a.new{width:40px;height:32px;padding:0 10px;margin:0;cursor:pointer}#app-navigation .nav-files a.new.hidden{display:none}#app-navigation .nav-files a.new.disabled{opacity:.3}.files-filestable tbody tr{height:51px}.files-filestable tbody tr:hover,.files-filestable tbody tr:focus,.files-filestable tbody .name:focus,.files-filestable tbody tr:hover .filename form,table tr.mouseOver td{background-color:var(--color-background-hover)}.files-filestable tbody tr:active,.files-filestable tbody tr.highlighted,.files-filestable tbody tr.highlighted .name:focus,.files-filestable tbody tr.selected,.files-filestable tbody tr.searchresult{background-color:var(--color-primary-element-light)}tbody a{color:var(--color-main-text)}span.conflict-path,span.extension,span.uploading,td.date{color:var(--color-text-maxcontrast)}span.conflict-path,span.extension{-webkit-transition:opacity 300ms;-moz-transition:opacity 300ms;-o-transition:opacity 300ms;transition:opacity 300ms;vertical-align:top}tr:hover span.conflict-path,tr:focus span.conflict-path,tr:hover span.extension,tr:focus span.extension{opacity:1;color:var(--color-text-maxcontrast)}table th,table th a{color:var(--color-text-maxcontrast)}table.multiselect th a{color:var(--color-main-text)}table th .columntitle{display:block;padding:15px;height:50px;box-sizing:border-box;-moz-box-sizing:border-box;vertical-align:middle}table th .columntitle:focus-visible{border-radius:2px}table.multiselect th .columntitle{display:inline-block;margin-inline-end:-20px}table th .columntitle.name{padding-inline-start:0;margin-inline-start:44px}table.multiselect th .columntitle.name{margin-inline-start:0}table th .sort-indicator{width:10px;height:8px;margin-inline-start:5px;display:inline-block;vertical-align:text-bottom;opacity:.3}.sort-indicator.hidden,.multiselect .sort-indicator,table.multiselect th:hover .sort-indicator.hidden,table.multiselect th:focus .sort-indicator.hidden{visibility:hidden}.multiselect .sort,.multiselect .sort span{cursor:default}table th:hover .sort-indicator.hidden,table th:focus .sort-indicator.hidden{visibility:visible}table th,table td{border-bottom:1px solid var(--color-border);text-align:start;font-weight:normal}table td{padding:0 15px;font-style:normal;background-position:8px center;background-repeat:no-repeat}table th.column-name{position:relative;width:9999px;padding:0}.column-name-container{position:relative;height:50px}table th.column-selection{padding-top:2px}table th.column-size,table td.filesize{text-align:end}table th.column-mtime,table td.date,table th.column-last,table td.column-last{-moz-box-sizing:border-box;box-sizing:border-box;position:relative;min-width:130px}#app-content-recent,#app-content-favorites,#app-content-shareoverview,#app-content-sharingout,#app-content-sharingin,#app-content-sharinglinks,#app-content-deletedshares,#app-content-pendingshares{margin-top:22px}#app-content-recent thead,#app-content-favorites thead,#app-content-shareoverview thead,#app-content-sharingout thead,#app-content-sharingin thead,#app-content-sharinglinks thead,#app-content-deletedshares thead,#app-content-pendingshares thead{top:0}table.multiselect thead th{background-color:var(--color-main-background-translucent);font-weight:bold}#app-content.with-app-sidebar table.multiselect thead{margin-inline-end:27%}table.multiselect .column-name{position:relative;width:9999px}table.multiselect .column-mtime>a{display:none}table td.selection,table th.selection,table td.fileaction{width:32px;text-align:center}table td.filename a.name,table td.filename p.name{display:flex;position:relative;-moz-box-sizing:border-box;box-sizing:border-box;height:50px;line-height:50px;padding:0}table td.filename .thumbnail-wrapper{width:0;min-width:50px;max-width:50px;height:50px}table td.filename .thumbnail-wrapper.icon-loading-small:after{z-index:10}table td.filename .thumbnail-wrapper.icon-loading-small .thumbnail{opacity:.2}table td.filename .thumbnail{display:inline-block;width:32px;height:32px;background-size:contain;background-position:center;background-repeat:no-repeat;margin-inline-start:9px;margin-top:9px;border-radius:var(--border-radius);cursor:pointer;position:absolute;z-index:4}table td.filename p.name .thumbnail{cursor:default}table tr[data-has-preview=true] .thumbnail{border:1px solid var(--color-border)}table:not(.view-grid) td.filename input.filename{width:70% !important;margin-inline-start:48px !important;cursor:text}table td.filename form{margin-top:-40px;position:relative;top:-6px}table td.filename a,table td.login,table td.logout,table td.download,table td.upload,table td.create,table td.delete{padding:3px 8px 8px 3px}table td.filename .nametext,.modified,.column-last>span:first-child{float:left;padding:15px 0}.modified,.column-last>span:first-child{position:relative;overflow:hidden;text-overflow:ellipsis;width:110px}table td.filename{max-width:0}table td.filename .nametext{width:0;flex-grow:1;display:flex;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;height:100%;z-index:10;padding:0;padding-inline-end:20px}.hide-hidden-files .files-filestable .files-fileList tr.hidden-file,.hide-hidden-files .files-filestable .files-fileList tr.hidden-file.dragging{display:none !important}.files-fileList tr.animate-opacity{-webkit-transition:opacity 250ms;-moz-transition:opacity 250ms;-o-transition:opacity 250ms;transition:opacity 250ms}.files-fileList tr.dragging{opacity:.2}table td.filename .nametext .innernametext{text-overflow:ellipsis;overflow:hidden;position:relative;vertical-align:top}table td.filename .uploadtext{position:absolute;font-weight:normal;margin-inline-start:50px;inset-inline-start:0;bottom:0;height:20px;padding:0 4px;padding-inline-start:1px;font-size:11px;line-height:22px;color:var(--color-text-maxcontrast);text-overflow:ellipsis;white-space:nowrap}table td.selection{padding:0}.files-fileList tr td.selection>.selectCheckBox+label:before{opacity:.3;margin-inline-end:0}.files-fileList tr:hover td.selection>.selectCheckBox+label:before,.files-fileList tr:focus td.selection>.selectCheckBox+label:before,.files-fileList tr td.selection>.selectCheckBox:checked+label:before,.files-fileList tr.selected td.selection>.selectCheckBox+label:before{opacity:1}.files-fileList tr.halfselected td.selection>.selectCheckBox+label:before{opacity:.5}.files-fileList tr td.selection>.selectCheckBox+label,.select-all+label{padding:16px}.files-fileList tr td.selection>.selectCheckBox:focus-visible+label,.select-all:focus-visible+label{background-color:var(--color-background-hover);border-radius:var(--border-radius-pill);outline:none !important;border:2px solid var(--color-primary-element) !important;padding:14px}.files-fileList tr td.selection>.selectCheckBox:focus-visible+label,.select-all:focus-visible+label{outline-offset:0px}.files-fileList tr td.filename{position:relative;width:100%;padding-inline:0;-webkit-transition:background-image 500ms;-moz-transition:background-image 500ms;-o-transition:background-image 500ms;transition:background-image 500ms}.files-fileList tr td.filename a.name label,.files-fileList tr td.filename p.name label{position:absolute;width:80%;height:50px}.files-fileList tr td.filename .favorite{display:inline-block;float:left}.files-fileList tr td.filename .favorite-mark{position:absolute;display:block;top:-8px;inset-inline-end:-8px;line-height:100%;text-align:center}.files-fileList tr td.filename .favorite-mark.permanent{background-color:var(--color-main-background);mask:var(--icon-star-rounded-white) no-repeat;mask-size:22px 22px;width:22px;height:22px;display:flex;align-content:center;justify-content:center}.files-fileList tr:hover td.filename .favorite-mark.permanent{background-color:var(--color-background-hover)}#uploadsize-message,#delete-confirm{display:none}.fileactions{z-index:50}.busy .fileactions,.busy .action{visibility:hidden}.bubble,#app-navigation .app-navigation-entry-menu{min-width:100px}.files-fileList .icon-loading-small{opacity:1 !important;display:inline !important}.files-fileList .action.action-share-notification span,.files-fileList a.name{cursor:default !important}.files-fileList a.name.disabled *{cursor:default}.files-fileList a.name.disabled a,.files-fileList a.name.disabled a *{cursor:pointer}.files-fileList a.name.disabled:focus{background:none}a.action>img{height:16px;width:16px;vertical-align:text-bottom}a.action.action-editlocally img.icon,a.action.action-setreminder img.icon{filter:var(--background-invert-if-dark)}.selectedActions{position:relative;display:inline-block;vertical-align:middle}.selectedActions.hidden{display:none}.selectedActions a{display:inline;line-height:50px;padding:16px 5px}.selectedActions a.hidden{display:none}.selectedActions a img{position:relative;vertical-align:text-bottom;margin-bottom:-1px}.selectedActions .actions-selected .icon-more{margin-top:-3px}.files-fileList td a a.action{display:inline;padding:17px 8px;line-height:50px;opacity:.3}.files-fileList td a a.action.action-share{padding:17px 14px}.files-fileList td a a.action.action-share.permanent:not(.shared-style) .icon-shared+span{position:absolute;inset-inline-start:-10000px;top:auto;width:1px;height:1px;overflow:hidden}.files-fileList td a a.action.action-share .avatar{display:inline-block;vertical-align:middle}.files-fileList td a a.action.action-menu{padding-top:17px;padding-bottom:17px;padding-inline:14px}.files-fileList td a a.action.no-permission:hover,.files-fileList td a a.action.no-permission:focus{opacity:.3}.files-fileList td a a.action.disabled:hover,.files-fileList td a a.action.disabled:focus,.files-fileList td a a.action.disabled img{opacity:.3}.files-fileList td a a.action.disabled.action-download{opacity:.7}.files-fileList td a a.action.disabled.action-download:hover,.files-fileList td a a.action.disabled.action-download:focus{opacity:.7}.files-fileList td a a.action:hover,.files-fileList td a a.action:focus{opacity:1}.files-fileList td a a.action:focus{background-color:var(--color-background-hover);border-radius:var(--border-radius-pill)}.files-fileList td a .fileActionsMenu a.action,.files-fileList td a a.action.action-share.shared-style{opacity:.7}.files-fileList td a .fileActionsMenu .action.permanent{opacity:1}.files-fileList .action.action-share.permanent.shared-style span:not(.icon){display:inline-block;max-width:70px;overflow:hidden;text-overflow:ellipsis;vertical-align:middle;margin-inline-end:6px}.files-fileList .remoteAddress .userDomain{margin-inline-start:0 !important}.files-fileList .favorite-mark.permanent{opacity:1}.files-fileList .fileActionsMenu a.action:hover,.files-fileList .fileActionsMenu a.action:focus,.files-fileList a.action.action-share.shared-style:hover,.files-fileList a.action.action-share.shared-style:focus{opacity:1}.files-fileList tr a.action.disabled{background:none}.selectedActions a.download.disabled,.files-fileList tr a.action.action-download.disabled{color:#000}.files-fileList tr:hover a.action.disabled:hover *{cursor:default}.summary{color:var(--color-text-maxcontrast);height:330px}.files-filestable .summary .filesummary{width:100%;padding-inline-start:101px}#body-public .summary{height:180px}.summary:hover,.summary:focus,.summary,table tr.summary td{background-color:rgba(0,0,0,0)}.summary td{border-bottom:none;vertical-align:top;padding-top:20px}.summary td:first-child{padding:0}.hiddeninfo{white-space:pre-line}table.dragshadow{width:auto;z-index:2000}table.dragshadow td.filename{padding-inline:60px 16px;height:36px;max-width:unset}table.dragshadow td.size{padding-inline-end:8px}.mask{z-index:50;position:absolute;inset:0;background-color:var(--color-main-background);background-repeat:no-repeat no-repeat;background-position:50%;opacity:.7;transition:opacity 100ms;-moz-transition:opacity 100ms;-o-transition:opacity 100ms;-ms-transition:opacity 100ms;-webkit-transition:opacity 100ms}.mask.transparent{opacity:0}.newFileMenu{font-weight:300;top:100%;inset-inline-start:-48px !important;margin-top:4px;min-width:100px;z-index:1001}.newFileMenu::after{inset-inline-start:84px !important}.files-controls{box-sizing:border-box;position:-webkit-sticky;position:sticky;height:50px;padding:0;margin:0;background-color:var(--color-main-background-translucent);z-index:62;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:flex;top:0;padding-inline-start:50px}.files-controls .actions>div>.button,.files-controls .actions>div button,.files-controls .actions>.button,.files-controls .actions button{box-sizing:border-box;display:inline-block;display:flex;height:44px;width:44px;padding:9px;align-items:center;justify-content:center}.files-controls .actions>div .button.hidden,.files-controls .actions .button.hidden{display:none}.viewer-mode #app-navigation+#app-content .files-controls{inset-inline-start:0}.files-filestable .filename .action .icon,.files-filestable .selectedActions a .icon,.files-filestable .filename .favorite-mark .icon,.files-controls .actions .button .icon{display:inline-block;vertical-align:middle;background-size:16px 16px}.files-filestable .filename .favorite-mark .icon-star{background-image:none}.files-filestable .filename .favorite-mark .icon-starred{background-image:var(--icon-starred-yellow) !important}.files-filestable .filename .action .icon.hidden,.files-filestable .selectedActions a .icon.hidden,.files-controls .actions .button .icon.hidden{display:none}.files-filestable .filename .action .icon.loading,.files-filestable .selectedActions a .icon.loading,.files-controls .actions .button .icon.loading{width:15px;height:15px}.app-files .actions .button.new{position:relative;width:unset;gap:14px;background-color:var(--color-primary-element-light);color:var(--color-primary-element-light-text);border:unset;padding:0px 20px}.breadcrumb{align-items:center}.breadcrumb .icon-home{border-radius:var(--border-radius)}.breadcrumb .canDrop>a,.files-filestable tbody tr.canDrop{background-color:rgba(0,130,201,.3)}.dropzone-background{background-color:rgba(0,130,201,.3)}.dropzone-background :hover{box-shadow:none !important}.notCreatable{margin-inline:12px 44px;margin-top:12px;color:var(--color-main-text);overflow:auto;min-width:160px;height:54px}.notCreatable:not(.hidden){display:flex}.notCreatable .icon-alert-outline{top:-15px;position:relative;margin-inline-end:4px}.quota-navigation-item{margin:0 !important;border:none;border-radius:0;background-color:rgba(0,0,0,0);z-index:1;height:44px;display:flex !important;flex-direction:column}.quota-navigation-item__text{height:30px}.quota-navigation-item[href="#"],.quota-navigation-item[href="#"] *{cursor:default !important}.quota-navigation-item__container{height:5px;border-radius:var(--border-radius)}.files-filestable.view-grid:not(.hidden) thead tr{display:block;border-bottom:1px solid var(--color-border);background-color:var(--color-main-background-translucent)}.files-filestable.view-grid:not(.hidden) thead tr th{width:auto;border:none}.files-filestable.view-grid:not(.hidden) tbody{display:grid;grid-template-columns:repeat(auto-fill, 160px);justify-content:space-around;row-gap:15px;margin:15px 0}.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden){display:block;position:relative;height:190px;border-radius:var(--border-radius)}.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted{background-color:rgba(0,0,0,0)}.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted .fileactions{background-color:var(--color-background-hover)}.files-filestable.view-grid:not(.hidden) tbody td{display:inline;border-bottom:none}.files-filestable.view-grid:not(.hidden) tbody td.filename .thumbnail-wrapper{min-width:0;max-width:none;position:absolute;width:160px;height:160px;padding:14px;top:0;inset-inline-start:0;z-index:-1}.files-filestable.view-grid:not(.hidden) tbody td.filename .thumbnail-wrapper .thumbnail{width:calc(100% - 2*14px);height:calc(100% - 2*14px);background-size:contain;margin:0;border-radius:var(--border-radius);background-repeat:no-repeat;background-position:center}.files-filestable.view-grid:not(.hidden) tbody td.filename .thumbnail-wrapper .thumbnail .favorite-mark{inset-inline-start:auto;top:-11px;inset-inline-end:-11px}.files-filestable.view-grid:not(.hidden) tbody td.filename .uploadtext{width:100%;margin:0;top:0;bottom:auto;height:28px;padding-top:4px;padding-inline-start:28px}.files-filestable.view-grid:not(.hidden) tbody td.filename .name{height:100%;border-radius:var(--border-radius);overflow:hidden;cursor:pointer !important}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext{display:flex;height:44px;margin-top:146px;text-align:center;line-height:44px;padding:0}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext .innernametext{display:inline-block;text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext:before{content:"";flex:1;min-width:14px}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext:after{content:"";flex:1;min-width:44px}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext .extension{display:none}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .system-tags{display:none}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .fileactions{height:initial;margin-top:146px;display:flex;align-items:center;position:absolute;inset-inline-end:0}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .fileactions .action{padding:14px;width:44px;height:44px;display:flex;align-items:center;justify-content:center}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .fileactions .action:not(.action-menu){display:none}.files-filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-share-container.hidden{display:block !important}.files-filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-share-container.hidden .action-share img{padding:6px;border-radius:50%}.files-filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-restore-container.hidden{display:block !important}.files-filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-comment-container.hidden{display:block !important}.files-filestable.view-grid:not(.hidden) tbody td.filename form{padding:3px 14px;border-radius:var(--border-radius)}.files-filestable.view-grid:not(.hidden) tbody td.filename form input.filename{width:100%;margin-inline-start:0;cursor:text}.files-filestable.view-grid:not(.hidden) tbody td.filesize,.files-filestable.view-grid:not(.hidden) tbody td.date{display:none}.files-filestable.view-grid:not(.hidden) tbody td.selection,.files-filestable.view-grid:not(.hidden) tbody td.filename .favorite-mark{position:absolute;top:-8px;inset-inline-start:-8px;display:flex;z-index:10}.files-filestable.view-grid:not(.hidden) tbody td.selection label,.files-filestable.view-grid:not(.hidden) tbody td.filename .favorite-mark label{width:44px;height:44px;display:inline-flex;padding:14px}.files-filestable.view-grid:not(.hidden) tbody td.selection label::before,.files-filestable.view-grid:not(.hidden) tbody td.filename .favorite-mark label::before{margin:0;width:14px;height:14px}.files-filestable.view-grid:not(.hidden) tbody td .popovermenu{inset-inline-start:0;width:150px;margin:0 5px}.files-filestable.view-grid:not(.hidden) tbody td .popovermenu .menuitem span:not(.icon){overflow:hidden;text-overflow:ellipsis}.files-filestable.view-grid:not(.hidden) tr.hidden-file td.filename .name .nametext .extension{display:block}.files-filestable.view-grid:not(.hidden) tfoot{display:grid}.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden){display:inline-block;margin:0 auto;height:418px}.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td{padding-top:50px}.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td:first-child,.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td.date{display:none}.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td .info{margin-inline-start:0}#view-toggle{background-color:var(--color-main-background-translucent);border:none;margin:0;padding:22px;opacity:.5;float:right;inset-inline-end:var(--default-grid-baseline);top:var(--default-grid-baseline);z-index:100;position:sticky}#view-toggle:hover,#view-toggle:focus,#showgridview:focus+#view-toggle{opacity:1}#view-toggle:focus-visible,#showgridview:focus-visible+#view-toggle{box-shadow:inset 0 0 0 2px var(--color-primary-element) !important}#showgridview{position:fixed;top:0}#body-public .files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext .innernametext{max-width:124px}#body-public .files-filestable.view-grid:not(.hidden) tbody td .popovermenu{inset-inline-start:-80px}#body-public #view-toggle{position:absolute;inset-inline-end:0;top:0}#gallery-button{display:none}#tag_multiple_files_container{overflow:hidden;background-color:#fff;border-radius:3px;position:relative;display:flex;flex-wrap:wrap;margin-bottom:10px}#tag_multiple_files_container h3{width:100%;padding:0 18px}#tag_multiple_files_container .systemTagsInputFieldContainer{flex:1 1 80%;min-width:0;margin:0 12px}/*# sourceMappingURL=files.css.map */ diff --git a/apps/files/css/files.css.map b/apps/files/css/files.css.map deleted file mode 100644 index f7bb52b3d6097..0000000000000 --- a/apps/files/css/files.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sourceRoot":"","sources":["files.scss"],"names":[],"mappings":"AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GASA,SAEC,YACA,YACA,qBACA,WAED,oEACA,8BACA,kDAEC,+CAED,0BACC,oDAGD,mBACC,kBACA,aACA,SACA,4CACC,sBACA,YACA,SACA,oDACA,8CACA,aACA,iBAIF,gBACC,aAGD,OACC,sBACA,YACA,aACA,aACA,mBAGD,6EAGC,yBACA,gCAID,kBACC,kBACA,WACA,gBACA,cACA,sBAEA,6CACC,aAGD,wBACC,wBACA,gBAEA,SAEA,WACA,cACA,0DAMD,wBACC,cACA,WAEA,mGAEC,8CAEA,6KACC,oCAKF,8DACC,oBAKH,yBACC,aAID,uCACC,cACA,WAGD,wBAGC,yBAEA,qBAGD,6FACC,+DAGD,iCACC,yDAGD,kFACC,0CAGD,4EACC,+DAID,iCACC,WACA,YACA,eACA,SACA,eAGD,wCACC,aAGD,0CACC,WAGD,2BACC,YAED,4KAKC,+CAED,wMAKC,oDAGD,qCAEA,yDACC,oCAED,kCACC,iCACA,8BACA,4BACA,yBACA,mBAED,wGAIC,UACA,oCAGD,oBACC,oCAED,uBACC,6BAED,sBACC,cACA,aACA,YACA,sBACA,2BACA,sBACA,oCACC,kBAGF,kCACC,qBACA,wBAED,2BACC,uBACA,yBAGD,uCACC,sBAGD,yBACC,WACA,WACA,wBACA,qBACA,2BACA,WAED,wJAIC,kBAED,2CACC,eAED,4EAEC,mBAGD,kBAEC,4CACA,iBACA,mBAED,SACC,eACA,kBACA,+BACA,4BAED,qBACC,kBACA,aACA,UAGD,uBACC,kBACA,YAGD,0BACC,gBAED,uCACC,eAED,8EAEC,2BACA,sBACA,kBAEA,gBAGD,qMAQC,gBACA,qPACC,MAIF,2BACC,0DACA,iBAGD,sDACC,sBAGD,+BACC,kBACA,aAED,kCACC,aAGD,0DAGC,WACA,kBAED,kDAEC,aACA,kBACA,2BACA,sBACA,YACA,iBACA,UAED,qCAEC,QACA,eACA,eACA,YAGA,8DACC,WAED,mEACC,WAGF,6BACC,qBACA,WACA,YACA,wBACA,2BACA,4BACA,wBACA,eACA,mCACA,eACA,kBACA,UAED,oCACC,eAID,2CACC,qCAGD,iDACC,qBACA,oCACA,YAED,uBACC,iBACA,kBACA,SAGD,6IACA,8FAEA,wCACC,kBACA,gBACA,uBACA,YAKA,kBACC,YACA,4BACC,QACA,YACA,aACA,gBACA,mBACA,uBACA,YACA,WACA,UACA,wBAKH,iJAEC,wBAGD,mCACC,iCACA,8BACA,4BACA,yBAED,4BACC,WAGD,2CACC,uBACA,gBACA,kBACA,mBAKD,8BACC,kBACA,mBAEA,yBACA,qBACA,SACA,YACA,cAEA,yBACA,eAEA,iBACA,oCACA,uBACA,mBAGD,mBACC,UAID,6DACC,WACA,oBAID,iRAIC,UAID,0EACC,WAMA,wEACC,aAGD,oGACC,+CACA,wCACA,wBACA,yDACA,aAIF,oGAEC,mBAGD,+BACC,kBACA,WACA,iBACA,wJAGD,wFAEC,kBACA,UACA,YAGD,yCACC,qBACA,WAED,8CACC,kBACA,cACA,SACA,sBACA,iBACA,kBACA,wDAEC,8CACA,8CACA,oBAEA,WACA,YACA,aACA,qBACA,uBAGF,8DACC,+CAGD,iDAGA,aACC,WAGD,iCACC,kBAID,mDAEC,gBAID,oCACC,qBACA,0BAGD,8EACC,0BAOA,kCACC,eAGD,sEACC,eAGD,sCACC,gBAIF,aACC,YACA,WACA,2BAKA,0EACC,wCAKF,iBACI,kBACA,qBACA,sBAEJ,wBACI,aAEJ,mBACC,eACA,iBACA,iBAGD,0BACC,aAED,uBACC,kBACA,2BACA,mBAGD,8CACC,gBAIA,8BACC,eACA,iBACA,iBACA,WACA,2CACC,kBACA,0FAGC,kBACA,4BACA,SACA,UACA,WACA,gBAED,mDACC,qBACA,sBAGF,0CACC,iBACA,oBACA,oBAGA,oGACC,WAID,qIAEC,WAED,uDACC,WACA,0HACC,WAIH,wEACC,UAED,oCACC,+CACA,wCAGF,uGACC,WAED,wDACC,UAKF,4EACC,qBACA,eACA,gBACA,uBACA,sBACA,sBAGD,2CACC,iCAGD,yCACC,UAGD,kNAKC,UAGD,qCACC,gBAGD,0FAEC,WAGD,mDACC,eAGD,SACC,oCAGA,aAED,wCACC,WAEA,2BAKD,sBACC,aAED,2DAIC,+BAED,YACC,mBACA,mBACA,iBAED,wBACC,UAED,YACC,qBAGD,iBACC,WACA,aAED,6BACC,yBACA,YAGA,gBAED,yBACC,uBAED,MACC,WACA,kBACA,QACA,8CACA,sCACA,wBACA,WACA,yBACA,8BACA,4BACA,6BACA,iCAED,kBACC,UAGD,aACC,gBACA,SACA,oCACA,eACA,gBACA,aAGA,oBACC,mCAKF,gBACC,sBACA,wBACA,gBACA,YACA,UACA,SACA,0DACA,WACA,yBACA,sBACA,qBACA,iBACA,aACA,MACA,0BAKE,0IACC,sBACA,qBACA,aACA,YACA,WACA,YACA,mBACA,uBAED,oFACC,aAQJ,0DACC,qBAGD,6KAIC,qBACA,sBACA,0BAMA,sDACC,sBAED,yDACC,uDAIF,iJAGC,aAGD,oJAGC,WACA,YAGD,gCACC,kBACA,YACA,SACA,oDACA,8CACA,aACA,iBAGD,YACC,mBAEA,uBACC,mCAIF,0DAEC,oCAED,qBACC,oCACA,4BACC,2BAIF,cACC,wBACA,gBACA,6BACA,cACA,gBACA,YAEA,2BACC,aAGD,kCACC,UACA,kBACA,sBAIF,uBACC,oBACA,YACA,gBACA,+BACA,UACA,YACA,wBACA,sBAEA,6BACC,YAKA,oEACC,0BAIF,kCACC,WACA,mCAWA,kDACC,cACA,4CACA,0DACA,qDACC,WACA,YAMH,+CACC,aACA,+CACA,6BACA,aACA,cAGA,+DACC,cACA,kBACA,aACA,mCAEA,0fAKC,+BAEA,oxDAGC,+CAKH,kDACC,eACA,mBAGC,8EACC,YACA,eACA,kBACA,MAvDQ,MAwDR,OAxDQ,MAyDR,QAxDO,KAyDP,MACA,qBACA,WAEA,yFACC,0BACA,2BACA,wBACA,SACA,mCACA,4BACA,2BAKA,wGACC,wBACA,UACA,uBAKH,uEACC,WACA,SACA,MACA,YAEA,YACA,gBAEA,0BAGD,iEACC,YACA,mCAIA,gBAKA,0BAEA,2EACC,aACA,YACA,iBACA,kBACA,iBACA,UAEA,0FACC,qBACA,kBACA,gBACA,uBACA,mBAED,kFACC,WACA,OACA,eAED,iFACC,WACA,OACA,eAID,sFACC,aAKF,8EACC,aAGD,8EACC,eACA,iBACA,aACA,mBACA,kBACA,mBAEA,sFACC,QAxJK,KAyJL,WACA,YACA,aACA,mBACA,uBAGA,wGACC,aAQH,2GACC,yBAEA,6HACC,YACA,kBAIF,6GACC,yBAGD,6GACC,yBAIF,gEACC,iBACA,mCAEA,+EACC,WACA,sBACA,YAMH,kHAEC,aAGD,sIAEC,kBACA,SACA,wBACA,aACA,WAEA,kJACC,WACA,YACA,oBACA,QAzNO,KA0NP,kKACC,SACA,MA5NM,KA6NN,OA7NM,KAmOT,+DACC,qBACA,YACA,aAGA,yFACC,gBACA,uBAMJ,+FACC,cAID,+CACC,aAEA,qEACC,qBACA,cAEA,aAEA,wEACC,iBAEA,iKAEC,aAGD,8EACI,sBAQR,aACC,0DACA,YACA,SACA,aACA,WACA,YACA,8CACA,iCACA,YACA,gBAEA,uEAGC,UAGD,oEAEC,mEASF,cACC,eACA,MAOC,uGACC,gBAID,4EACC,yBAKF,0BACC,kBACA,mBACA,MAKF,gBACC,aAGD,8BACC,gBACA,sBACA,kBACA,kBACA,aACA,eACA,mBAEA,iCACC,WACA,eAGD,6DACC,aACA,YACA","file":"files.css"} \ No newline at end of file diff --git a/apps/files/css/files.css.map.license b/apps/files/css/files.css.map.license deleted file mode 100644 index 1c70f3b7dd426..0000000000000 --- a/apps/files/css/files.css.map.license +++ /dev/null @@ -1,3 +0,0 @@ -SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors -SPDX-FileCopyrightText: 2012-2016 ownCloud, Inc. -SPDX-License-Identifier: AGPL-3.0-only diff --git a/apps/files/css/files.scss b/apps/files/css/files.scss deleted file mode 100644 index 53d00a1109240..0000000000000 --- a/apps/files/css/files.scss +++ /dev/null @@ -1,1313 +0,0 @@ -/*! - * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors - * SPDX-FileCopyrightText: 2012-2016 ownCloud, Inc. - * SPDX-License-Identifier: AGPL-3.0-only - */ -@use 'variables'; -@import 'functions'; - -/* FILE MENU */ -.actions { - // (50px - 44px) / 2 - padding: 3px; - height: 100%; - display: inline-block; - float: left; -} -.actions input, .actions button, .actions .button { margin:0; float:left; } -.actions .button a { color: #555; } -.actions .button a:hover, -.actions .button a:focus { - background-color: var(--color-background-hover); -} -.actions .button a:active { - background-color: var(--color-primary-element-light); -} - -.actions.creatable { - position: relative; - display: flex; - flex: 1 1; - .button:not(:last-child) { - margin-inline-end: 3px; - width: unset; - gap: 14px; - background-color: var(--color-primary-element-light); - color: var(--color-primary-element-light-text); - border: unset; - padding: 0px 20px; - } -} - -.actions.hidden { - display: none; -} - -#trash { - margin-inline-end: 8px; - float: right; - z-index: 1010; - padding: 10px; - font-weight: normal; -} - -.newFileMenu .error, -.newFileMenu .error + .icon-confirm, -.files-fileList .error { - color: var(--color-error); - border-color: var(--color-error); -} - -/* FILE TABLE */ -.files-filestable { - position: relative; - width: 100%; - min-width: 250px; - display: block; - flex-direction: column; - // hide table if emptycontent is not hidden - .emptycontent:not(.hidden) ~ & { - display: none; - } - // floating header - thead { - position: -webkit-sticky; - position: sticky; - // breadcrumbs - top: 44px; - // under breadcrumbs, over file list - z-index: 60; - display: block; - background-color: var(--color-main-background-translucent); - } - - /** - * This is a dirty hack as the sticky header requires us to use a different display type on the table element - */ - tbody { - display: table; - width: 100%; - - tr[data-permissions="0"], - tr[data-permissions="16"] { - background-color: var(--color-background-dark); - - td.filename .nametext .innernametext { - color: var(--color-text-maxcontrast); - } - } - - // Deactivates the possiblility to checkmark or click on the encrypted folder - tr[data-e2eencrypted="true"] .selection { - pointer-events: none; - } - } -} - -.files-filestable.hidden { - display: none; -} - -/* fit app list view heights */ -.app-files #app-content > .viewcontainer { - min-height: 0%; - width: 100%; -} - -.app-files #app-content { - // force the width to be the full width to not go bigger than the screen - // flex will grow for the mobile view if necessary - width: calc(100% - 300px); - // disable overflow-anchor which causes undesired behaviour on Firefox - overflow-anchor: none; -} - -.file-drag, .file-drag .files-filestable tbody tr, .file-drag .files-filestable tbody tr:hover { - background-color: var(--color-primary-element-light) !important; -} - -.app-files #app-content.dir-drop { - background-color: var(--color-main-background) !important; -} - -.file-drag .files-filestable tbody tr, .file-drag .files-filestable tbody tr:hover{ - background-color: transparent !important; -} - -.app-files #app-content.dir-drop .files-filestable tbody tr.dropping-to-dir{ - background-color: var(--color-primary-element-light) !important; -} - -/* button needs overrides due to navigation styles */ -#app-navigation .nav-files a.new { - width: 40px; - height: 32px; - padding: 0 10px; - margin: 0; - cursor: pointer; -} - -#app-navigation .nav-files a.new.hidden { - display: none; -} - -#app-navigation .nav-files a.new.disabled { - opacity: 0.3; -} - -.files-filestable tbody tr { - height: 51px; -} -.files-filestable tbody tr:hover, -.files-filestable tbody tr:focus, -.files-filestable tbody .name:focus, -.files-filestable tbody tr:hover .filename form, -table tr.mouseOver td { - background-color: var(--color-background-hover); -} -.files-filestable tbody tr:active, -.files-filestable tbody tr.highlighted, -.files-filestable tbody tr.highlighted .name:focus, -.files-filestable tbody tr.selected, -.files-filestable tbody tr.searchresult { - background-color: var(--color-primary-element-light); -} - -tbody a { color: var(--color-main-text); } - -span.conflict-path, span.extension, span.uploading, td.date { - color: var(--color-text-maxcontrast); -} -span.conflict-path, span.extension { - -webkit-transition: opacity 300ms; - -moz-transition: opacity 300ms; - -o-transition: opacity 300ms; - transition: opacity 300ms; - vertical-align: top; -} -tr:hover span.conflict-path, -tr:focus span.conflict-path, -tr:hover span.extension, -tr:focus span.extension { - opacity: 1; - color: var(--color-text-maxcontrast); -} - -table th, table th a { - color: var(--color-text-maxcontrast); -} -table.multiselect th a { - color: var(--color-main-text); -} -table th .columntitle { - display: block; - padding: 15px; - height: 50px; - box-sizing: border-box; - -moz-box-sizing: border-box; - vertical-align: middle; - &:focus-visible { - border-radius: 2px; - } -} -table.multiselect th .columntitle { - display: inline-block; - margin-inline-end: -20px; -} -table th .columntitle.name { - padding-inline-start: 0; - margin-inline-start: 44px; -} - -table.multiselect th .columntitle.name { - margin-inline-start: 0; -} - -table th .sort-indicator { - width: 10px; - height: 8px; - margin-inline-start: 5px; - display: inline-block; - vertical-align: text-bottom; - opacity: .3; -} -.sort-indicator.hidden, -.multiselect .sort-indicator, -table.multiselect th:hover .sort-indicator.hidden, -table.multiselect th:focus .sort-indicator.hidden { - visibility: hidden; -} -.multiselect .sort, .multiselect .sort span { - cursor: default; -} -table th:hover .sort-indicator.hidden, -table th:focus .sort-indicator.hidden { - visibility: visible; -} - -table th, -table td { - border-bottom: 1px solid var(--color-border); - text-align: start; - font-weight: normal; -} -table td { - padding: 0 15px; - font-style: normal; - background-position: 8px center; - background-repeat: no-repeat; -} -table th.column-name { - position: relative; - width: 9999px; /* not really sure why this works better than 100% … table styling */ - padding: 0; -} - -.column-name-container { - position: relative; - height: 50px; -} - -table th.column-selection { - padding-top: 2px; -} -table th.column-size, table td.filesize { - text-align: end; -} -table th.column-mtime, table td.date, -table th.column-last, table td.column-last { - -moz-box-sizing: border-box; - box-sizing: border-box; - position: relative; - /* this can not be just width, both need to be set … table styling */ - min-width: 130px; -} - -#app-content-recent, -#app-content-favorites, -#app-content-shareoverview, -#app-content-sharingout, -#app-content-sharingin, -#app-content-sharinglinks, -#app-content-deletedshares, -#app-content-pendingshares { - margin-top: 22px; - thead { - top: 0; - } -} - -table.multiselect thead th { - background-color: var(--color-main-background-translucent); - font-weight: bold; -} - -#app-content.with-app-sidebar table.multiselect thead{ - margin-inline-end: 27%; -} - -table.multiselect .column-name { - position: relative; - width: 9999px; /* when we use 100%, the styling breaks on mobile … table styling */ -} -table.multiselect .column-mtime>a { - display: none; -} - -table td.selection, -table th.selection, -table td.fileaction { - width: 32px; - text-align: center; -} -table td.filename a.name, -table td.filename p.name { - display: flex; - position:relative; /* Firefox needs to explicitly have this default set … */ - -moz-box-sizing: border-box; - box-sizing: border-box; - height: 50px; - line-height: 50px; - padding: 0; -} -table td.filename .thumbnail-wrapper { - /* we need this to make sure flex is working inside a table cell */ - width: 0; - min-width: 50px; - max-width: 50px; - height: 50px; -} -table td.filename .thumbnail-wrapper.icon-loading-small { - &:after { - z-index: 10; - } - .thumbnail { - opacity: 0.2; - } -} -table td.filename .thumbnail { - display: inline-block; - width: 32px; - height: 32px; - background-size: contain; - background-position: center; - background-repeat: no-repeat; - margin-inline-start: 9px; - margin-top: 9px; - border-radius: var(--border-radius); - cursor: pointer; - position: absolute; - z-index: 4; -} -table td.filename p.name .thumbnail { - cursor: default; -} - -// Show slight border around previews for images, txt, etc. -table tr[data-has-preview='true'] .thumbnail { - border: 1px solid var(--color-border); -} - -table:not(.view-grid) td.filename input.filename { - width: 70% !important; - margin-inline-start: 48px !important; - cursor: text; -} -table td.filename form { - margin-top: -40px; - position: relative; - top: -6px; -} - -table td.filename a, table td.login, table td.logout, table td.download, table td.upload, table td.create, table td.delete { padding:3px 8px 8px 3px; } -table td.filename .nametext, .modified, .column-last>span:first-child { float:left; padding:15px 0; } - -.modified, .column-last>span:first-child { - position: relative; - overflow: hidden; - text-overflow: ellipsis; - width: 110px; -} - -/* TODO fix usability bug (accidental file/folder selection) */ -table { - td.filename { - max-width: 0; - .nametext { - width: 0; - flex-grow: 1; - display: flex; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - height: 100%; - z-index: 10; - padding: 0; - padding-inline-end: 20px; - } - } -} - -.hide-hidden-files .files-filestable .files-fileList tr.hidden-file, -.hide-hidden-files .files-filestable .files-fileList tr.hidden-file.dragging { - display: none !important; -} - -.files-fileList tr.animate-opacity { - -webkit-transition:opacity 250ms; - -moz-transition:opacity 250ms; - -o-transition:opacity 250ms; - transition:opacity 250ms; -} -.files-fileList tr.dragging { - opacity: 0.2; -} - -table td.filename .nametext .innernametext { - text-overflow: ellipsis; - overflow: hidden; - position: relative; - vertical-align: top; -} - -/* for smaller resolutions - see mobile.css */ - -table td.filename .uploadtext { - position: absolute; - font-weight: normal; - // checkbox width - margin-inline-start: 50px; - inset-inline-start: 0; - bottom: 0; - height: 20px; - padding: 0 4px; - // align with file name - padding-inline-start: 1px; - font-size: 11px; - // double the font size - line-height: 22px; - color: var(--color-text-maxcontrast); - text-overflow: ellipsis; - white-space: nowrap; -} - -table td.selection { - padding: 0; -} - -/* File checkboxes */ -.files-fileList tr td.selection>.selectCheckBox + label:before { - opacity: 0.3; - margin-inline-end: 0; -} - -/* Show checkbox with full opacity when hovering, checked, or selected */ -.files-fileList tr:hover td.selection>.selectCheckBox + label:before, -.files-fileList tr:focus td.selection>.selectCheckBox + label:before, -.files-fileList tr td.selection>.selectCheckBox:checked + label:before, -.files-fileList tr.selected td.selection>.selectCheckBox + label:before { - opacity: 1; -} - -/* Show checkbox with half opacity when selecting range */ -.files-fileList tr.halfselected td.selection>.selectCheckBox + label:before { - opacity: 0.5; -} - -/* Use label to have bigger clickable size for checkbox */ -.files-fileList tr td.selection>.selectCheckBox, -.select-all { - & + label { - padding: 16px; - } - - &:focus-visible + label { - background-color: var(--color-background-hover); - border-radius: var(--border-radius-pill); - outline: none !important; - border: 2px solid var(--color-primary-element) !important; - padding: 14px; - } -} - -.files-fileList tr td.selection>.selectCheckBox:focus-visible + label, -.select-all:focus-visible + label { - outline-offset: 0px; -} - -.files-fileList tr td.filename { - position: relative; - width: 100%; - padding-inline: 0; - -webkit-transition:background-image 500ms; -moz-transition:background-image 500ms; -o-transition:background-image 500ms; transition:background-image 500ms; -} - -.files-fileList tr td.filename a.name label, -.files-fileList tr td.filename p.name label { - position: absolute; - width: 80%; - height: 50px; -} - -.files-fileList tr td.filename .favorite { - display: inline-block; - float: left; -} -.files-fileList tr td.filename .favorite-mark { - position: absolute; - display: block; - top: -8px; - inset-inline-end: -8px; - line-height: 100%; - text-align: center; - &.permanent { - // Create background around the favorite marker to ensure there is enough contrast - background-color: var(--color-main-background); - mask: var(--icon-star-rounded-white) no-repeat; - mask-size: 22px 22px; - - width: 22px; - height: 22px; - display: flex; - align-content: center; - justify-content: center; - } -} -.files-fileList tr:hover td.filename .favorite-mark.permanent { - background-color: var(--color-background-hover); -} - -#uploadsize-message,#delete-confirm { display:none; } - -/* File actions */ -.fileactions { - z-index: 50; -} - -.busy .fileactions, .busy .action { - visibility: hidden; -} - -/* fix position of bubble pointer for Files app */ -.bubble, -#app-navigation .app-navigation-entry-menu { - min-width: 100px; -} - -/* force show the loading icon, not only on hover */ -.files-fileList .icon-loading-small { - opacity: 1 !important; - display: inline !important; -} - -.files-fileList .action.action-share-notification span, .files-fileList a.name { - cursor: default !important; -} - -/* - * Make the disabled link look not like a link in file list rows - */ -.files-fileList a.name.disabled { - * { - cursor: default; - } - - a, a * { - cursor: pointer; - } - - &:focus { - background: none; - } -} - -a.action > img { - height: 16px; - width: 16px; - vertical-align: text-bottom; -} - -a.action.action-editlocally, -a.action.action-setreminder { - img.icon { - filter: var(--background-invert-if-dark); - } -} - -/* Actions for selected files */ -.selectedActions { - position: relative; - display: inline-block; - vertical-align: middle; -} -.selectedActions.hidden { - display: none; -} -.selectedActions a { - display: inline; - line-height: 50px; - padding: 16px 5px; -} - -.selectedActions a.hidden { - display: none; -} -.selectedActions a img { - position:relative; - vertical-align: text-bottom; - margin-bottom: -1px; -} - -.selectedActions .actions-selected .icon-more { - margin-top: -3px; -} - -.files-fileList td a { - a.action { - display: inline; - padding: 17px 8px; - line-height: 50px; - opacity: .3; - &.action-share { - padding: 17px 14px; - &.permanent:not(.shared-style) .icon-shared + span { - /* hide text of the share action */ - /* .hidden-visually for accessbility */ - position: absolute; - inset-inline-start:-10000px; - top: auto; - width: 1px; - height: 1px; - overflow: hidden; - } - .avatar { - display: inline-block; - vertical-align: middle; - } - } - &.action-menu { - padding-top: 17px; - padding-bottom: 17px; - padding-inline: 14px; - } - &.no-permission { - &:hover, &:focus { - opacity: .3; - } - } - &.disabled { - &:hover, &:focus, - img { - opacity: .3; - } - &.action-download { - opacity: .7; - &:hover, &:focus { - opacity: .7; - } - } - } - &:hover, &:focus { - opacity: 1; - } - &:focus { - background-color: var(--color-background-hover); - border-radius: var(--border-radius-pill); - } - } - .fileActionsMenu a.action, a.action.action-share.shared-style { - opacity: .7; - } - .fileActionsMenu .action.permanent { - opacity: 1; - } -} - -// Ellipsize long sharer names -.files-fileList .action.action-share.permanent.shared-style span:not(.icon) { - display: inline-block; - max-width: 70px; - overflow: hidden; - text-overflow: ellipsis; - vertical-align: middle; - margin-inline-end: 6px; -} - -.files-fileList .remoteAddress .userDomain { - margin-inline-start: 0 !important; -} - -.files-fileList .favorite-mark.permanent { - opacity: 1; -} - -.files-fileList .fileActionsMenu a.action:hover, -.files-fileList .fileActionsMenu a.action:focus, -/* show share action of shared items darker to distinguish from non-shared */ -.files-fileList a.action.action-share.shared-style:hover, -.files-fileList a.action.action-share.shared-style:focus { - opacity: 1; -} - -.files-fileList tr a.action.disabled { - background: none; -} - -.selectedActions a.download.disabled, -.files-fileList tr a.action.action-download.disabled { - color: #000000; -} - -.files-fileList tr:hover a.action.disabled:hover * { - cursor: default; -} - -.summary { - color: var(--color-text-maxcontrast); - /* add whitespace to bottom of files list to correctly show dropdowns */ - $action-menu-items-count: 7; // list view has currently max 7 items in its action menu - height: 44px * ($action-menu-items-count + 0.5); // 0.5 is added to show some whitespace below -} -.files-filestable .summary .filesummary { - width: 100%; - /* Width of checkbox and file preview */ - padding-inline-start: 101px; -} -/* Less whitespace needed on link share page - * as there is a footer and action menus have fewer entries. - */ -#body-public .summary { - height: 180px; -} -.summary:hover, -.summary:focus, -.summary, -table tr.summary td { - background-color: transparent; -} -.summary td { - border-bottom: none; - vertical-align: top; - padding-top: 20px; -} -.summary td:first-child { - padding: 0; -} -.hiddeninfo { - white-space: pre-line; -} - -table.dragshadow { - width:auto; - z-index: 2000; -} -table.dragshadow td.filename { - padding-inline: 60px 16px; - height: 36px; - - /* Override "max-width: 0" to prevent file name and size from overlapping */ - max-width: unset; -} -table.dragshadow td.size { - padding-inline-end: 8px; -} -.mask { - z-index: 50; - position: absolute; - inset: 0; - background-color: var(--color-main-background); - background-repeat: no-repeat no-repeat; - background-position: 50%; - opacity: 0.7; - transition: opacity 100ms; - -moz-transition: opacity 100ms; - -o-transition: opacity 100ms; - -ms-transition: opacity 100ms; - -webkit-transition: opacity 100ms; -} -.mask.transparent{ - opacity: 0; -} - -.newFileMenu { - font-weight: 300; - top: 100%; - inset-inline-start: -48px !important; - margin-top: 4px; - min-width: 100px; - z-index: 1001; - - /* Center triangle */ - &::after { - inset-inline-start: 84px !important; - } -} - - -.files-controls { - box-sizing: border-box; - position: -webkit-sticky; - position: sticky; - height: 50px; /* height of the nav toggle button; */ - padding: 0; - margin: 0; - background-color: var(--color-main-background-translucent); - z-index: 62; /* must be above the filelist sticky header and texteditor menubar */ - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - display: flex; - top: 0; - padding-inline-start: 50px; /* width of the nav toggle button; */ - - .actions { - > div, - & { - > .button, button { - box-sizing: border-box; - display: inline-block; - display: flex; - height: 44px; - width: 44px; - padding: 9px; // width - border - icon width = 18px - align-items: center; - justify-content: center; - } - .button.hidden { - display: none; - } - } - } -} - -/* position controls for apps with app-navigation */ - -.viewer-mode #app-navigation + #app-content .files-controls { - inset-inline-start: 0; -} - -.files-filestable .filename .action .icon, -.files-filestable .selectedActions a .icon, -.files-filestable .filename .favorite-mark .icon, -.files-controls .actions .button .icon { - display: inline-block; - vertical-align: middle; - background-size: 16px 16px; -} - -.files-filestable .filename .favorite-mark { - // Override default icons to always hide the star icon and always show the - // starred icon even when hovered or focused. - & .icon-star { - background-image: none; - } - & .icon-starred { - background-image: var(--icon-starred-yellow) !important; - } -} - -.files-filestable .filename .action .icon.hidden, -.files-filestable .selectedActions a .icon.hidden, -.files-controls .actions .button .icon.hidden { - display: none; -} - -.files-filestable .filename .action .icon.loading, -.files-filestable .selectedActions a .icon.loading, -.files-controls .actions .button .icon.loading { - width: 15px; - height: 15px; -} - -.app-files .actions .button.new { - position: relative; - width: unset; - gap: 14px; - background-color: var(--color-primary-element-light); - color: var(--color-primary-element-light-text); - border: unset; - padding: 0px 20px; -} - -.breadcrumb { - align-items: center; - - .icon-home { - border-radius: var(--border-radius); - } -} - -.breadcrumb .canDrop > a, -.files-filestable tbody tr.canDrop { - background-color: rgba( variables.$color-primary, .3 ); -} -.dropzone-background { - background-color: rgba( variables.$color-primary, .3 ); - :hover{ - box-shadow: none !important; - } -} - -.notCreatable { - margin-inline: 12px 44px; - margin-top: 12px; - color: var(--color-main-text); - overflow: auto; - min-width: 160px; - height: 54px; - - &:not(.hidden) { - display: flex; - } - - .icon-alert-outline { - top: -15px; - position: relative; - margin-inline-end: 4px; - } -} - -.quota-navigation-item { - margin: 0 !important; - border: none; - border-radius: 0; - background-color: transparent; - z-index:1; - height: 44px; - display: flex !important; - flex-direction: column; - - &__text { - height: 30px; - } - - &[href='#'] { - // if no link is set, no mouse feedback - &, * { - cursor: default !important; - } - } - - &__container { - height: 5px; - border-radius: var(--border-radius); - } -} - -/* GRID */ -.files-filestable.view-grid:not(.hidden) { - $grid-size: 160px; - $grid-pad: 14px; - - /* HEADER and MULTISELECT */ - thead { - tr { - display: block; - border-bottom: 1px solid var(--color-border); - background-color: var(--color-main-background-translucent); - th { - width: auto; - border: none; - } - } - } - - /* MAIN FILE LIST */ - tbody { - display: grid; - grid-template-columns: repeat(auto-fill, $grid-size); - justify-content: space-around; - row-gap: 15px; - margin: 15px 0; - - // ensure search still filters tr with .hidden - tr:not(.hidden) { - display: block; - position: relative; - height: $grid-size + 44px - $grid-pad; - border-radius: var(--border-radius); - - &:hover, &:focus, &:active, - &.selected, - &.searchresult, - .name:focus, - &.highlighted { - background-color: transparent; - - .thumbnail-wrapper, - .nametext, - .fileactions { - background-color: var(--color-background-hover); - } - } - } - - td { - display: inline; - border-bottom: none; - - &.filename { - .thumbnail-wrapper { - min-width: 0; - max-width: none; - position: absolute; - width: $grid-size; - height: $grid-size; - padding: $grid-pad; // same as action icon bottom and right padding - top: 0; - inset-inline-start: 0; - z-index: -1; // make sure the default click is the link - - .thumbnail { - width: calc(100% - 2 * #{$grid-pad}); - height: calc(100% - 2 * #{$grid-pad}); //action icon padding - background-size: contain; - margin: 0; - border-radius: var(--border-radius); - background-repeat: no-repeat; - background-position: center; - - /* Position favorite star related to checkbox to left and 3-dot menu below - * Position is inherited from the selection while in grid view - */ - .favorite-mark { - inset-inline-start: auto; - top: -11px; // center in corner of thumbnail - inset-inline-end: -11px; // center in corner of thumbnail - } - } - } - - .uploadtext { - width: 100%; - margin: 0; - top: 0; - bottom: auto; - // checkbox align - height: 28px; - padding-top: 4px; - // checkbox margins - padding-inline-start: calc(44px - 16px); - } - - .name { - height: 100%; - border-radius: var(--border-radius); - // since we're using thumbnail, name and actions bg - // we need to hide the overflow for the radius to show - // luckily the popovermenu is outside .name - overflow: hidden; - // we but the thumbnail in background to ensure - // the name is the default click handler - // force back the cursor which has been overridden - // and disabled for some reason... - cursor: pointer !important; - - .nametext { - display: flex; - height: 44px; - margin-top: $grid-size - $grid-pad; - text-align: center; - line-height: 44px; - padding: 0; - - .innernametext { - display: inline-block; - text-align: center; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - } - &:before { - content: ''; - flex: 1; - min-width: 14px; - } - &:after { - content: ''; - flex: 1; - min-width: 44px; - } - - /* No space for extension in grid view */ - .extension { - display: none; - } - } - - /* System tags */ - .system-tags { - display: none; - } - - .fileactions { - height: initial; - margin-top: $grid-size - $grid-pad; - display: flex; - align-items: center; - position: absolute; - inset-inline-end: 0; - - .action { - padding: $grid-pad; - width: 44px; - height: 44px; - display: flex; - align-items: center; - justify-content: center; - - // hide all actions in grid view that are not the menu - &:not(.action-menu) { - display: none; - } - } - } - } - - .fileActionsMenu { - // force show the sharing entry in the dropdown menu - .action-share-container.hidden { - display: block !important; - // avatar in shared by user dropdown menu - .action-share img { - padding: 6px; - border-radius: 50%; - } - } - // force show the sharing entry in the dropdown menu - .action-restore-container.hidden { - display: block !important; - } - // force show the sharing entry in the dropdown menu - .action-comment-container.hidden { - display: block !important; - } - } - - form { - padding: 3px 14px; - border-radius: var(--border-radius); - - input.filename { - width: 100%; - margin-inline-start: 0; - cursor: text; - } - } - } - - /* No space for filesize and date in grid view */ - &.filesize, - &.date { - display: none; - } - - &.selection, - &.filename .favorite-mark { - position: absolute; - top: -8px; // half the checkbox width, center on corner of thumbnail - inset-inline-start: -8px; // half the checkbox width, center on corner of thumbnail - display: flex; - z-index: 10; - - label { - width: 44px; - height: 44px; - display: inline-flex; - padding: $grid-pad; // like any action icon - &::before { - margin: 0; - width: $grid-pad; // 16px - border - height: $grid-pad; // 16px - border - } - } - } - - /* Position actions menu below file */ - .popovermenu { - inset-inline-start: 0; - width: $grid-size - 10px; // 2 * margin - margin: 0 5px; - - /* Ellipsize long entries, normally menu width is adjusted but for grid we use fixed width. */ - .menuitem span:not(.icon) { - overflow: hidden; - text-overflow: ellipsis; - } - } - } - } - - tr.hidden-file td.filename .name .nametext .extension { - display: block; - } - - /* Center align the footer file number & size summary */ - tfoot { - display: grid; - - .summary:not(.hidden) { - display: inline-block; - margin: 0 auto; - $action-menu-items-count: 9; // grid view has currently max 9 items in its action menu - height: 44px * ($action-menu-items-count + 0.5); // 0.5 is added to show some whitespace below - - td { - padding-top: 50px; - - &:first-child, - &.date { - display: none; - } - - .info { - margin-inline-start: 0; - } - } - } - } -} - -/* Grid view toggle */ -#view-toggle { - background-color: var(--color-main-background-translucent); - border: none; - margin: 0; - padding: 22px; - opacity: .5; - float: right; - inset-inline-end: var(--default-grid-baseline); - top: var(--default-grid-baseline); - z-index: 100; - position: sticky; - - &:hover, - &:focus, - #showgridview:focus + & { - opacity: 1; - } - - &:focus-visible, - #showgridview:focus-visible + & { - box-shadow: inset 0 0 0 2px var(--color-primary-element) !important; - } -} - -/** - * Make sure the hidden input is always - * on the visible scrolled area of the - * page to avoid scrolling to top when focusing - */ -#showgridview { - position: fixed; - top: 0; -} - -/* Adjustments for link share page */ -#body-public { - .files-filestable.view-grid:not(.hidden) tbody td { - /* More space for filename since there is no share icon */ - &.filename .name .nametext .innernametext { - max-width: 124px; - } - - /* Position actions menu correctly below 3-dot-menu */ - .popovermenu { - inset-inline-start: -80px; - } - } - - /* Right-align view toggle on link share page */ - #view-toggle { - position: absolute; - inset-inline-end: 0; - top: 0; - } -} - -/* Hide legacy Gallery toggle */ -#gallery-button { - display: none; -} - -#tag_multiple_files_container { - overflow: hidden; - background-color: #fff; - border-radius: 3px; - position: relative; - display: flex; - flex-wrap: wrap; - margin-bottom: 10px; - - h3 { - width: 100%; - padding: 0 18px; - } - - .systemTagsInputFieldContainer { - flex: 1 1 80%; - min-width: 0; - margin: 0 12px; - } -} diff --git a/apps/files/css/merged.css b/apps/files/css/merged.css deleted file mode 100644 index 1332033c1ed8b..0000000000000 --- a/apps/files/css/merged.css +++ /dev/null @@ -1,28 +0,0 @@ -/*! - * SPDX-FileCopyrightText: 2017-2024 Nextcloud GmbH and Nextcloud contributors - * SPDX-License-Identifier: AGPL-3.0-or-later - *//*! - * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors - * SPDX-License-Identifier: AGPL-3.0-or-later - *//*! - * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors - * SPDX-License-Identifier: AGPL-3.0-or-later - */.actions{padding:3px;height:100%;display:inline-block;float:left}.actions input,.actions button,.actions .button{margin:0;float:left}.actions .button a{color:#555}.actions .button a:hover,.actions .button a:focus{background-color:var(--color-background-hover)}.actions .button a:active{background-color:var(--color-primary-element-light)}.actions.creatable{position:relative;display:flex;flex:1 1}.actions.creatable .button:not(:last-child){margin-inline-end:3px;width:unset;gap:14px;background-color:var(--color-primary-element-light);color:var(--color-primary-element-light-text);border:unset;padding:0px 20px}.actions.hidden{display:none}#trash{margin-inline-end:8px;float:right;z-index:1010;padding:10px;font-weight:normal}.newFileMenu .error,.newFileMenu .error+.icon-confirm,.files-fileList .error{color:var(--color-error);border-color:var(--color-error)}.files-filestable{position:relative;width:100%;min-width:250px;display:block;flex-direction:column}.emptycontent:not(.hidden)~.files-filestable{display:none}.files-filestable thead{position:-webkit-sticky;position:sticky;top:44px;z-index:60;display:block;background-color:var(--color-main-background-translucent)}.files-filestable tbody{display:table;width:100%}.files-filestable tbody tr[data-permissions="0"],.files-filestable tbody tr[data-permissions="16"]{background-color:var(--color-background-dark)}.files-filestable tbody tr[data-permissions="0"] td.filename .nametext .innernametext,.files-filestable tbody tr[data-permissions="16"] td.filename .nametext .innernametext{color:var(--color-text-maxcontrast)}.files-filestable tbody tr[data-e2eencrypted=true] .selection{pointer-events:none}.files-filestable.hidden{display:none}.app-files #app-content>.viewcontainer{min-height:0%;width:100%}.app-files #app-content{width:calc(100% - 300px);overflow-anchor:none}.file-drag,.file-drag .files-filestable tbody tr,.file-drag .files-filestable tbody tr:hover{background-color:var(--color-primary-element-light) !important}.app-files #app-content.dir-drop{background-color:var(--color-main-background) !important}.file-drag .files-filestable tbody tr,.file-drag .files-filestable tbody tr:hover{background-color:rgba(0,0,0,0) !important}.app-files #app-content.dir-drop .files-filestable tbody tr.dropping-to-dir{background-color:var(--color-primary-element-light) !important}#app-navigation .nav-files a.new{width:40px;height:32px;padding:0 10px;margin:0;cursor:pointer}#app-navigation .nav-files a.new.hidden{display:none}#app-navigation .nav-files a.new.disabled{opacity:.3}.files-filestable tbody tr{height:51px}.files-filestable tbody tr:hover,.files-filestable tbody tr:focus,.files-filestable tbody .name:focus,.files-filestable tbody tr:hover .filename form,table tr.mouseOver td{background-color:var(--color-background-hover)}.files-filestable tbody tr:active,.files-filestable tbody tr.highlighted,.files-filestable tbody tr.highlighted .name:focus,.files-filestable tbody tr.selected,.files-filestable tbody tr.searchresult{background-color:var(--color-primary-element-light)}tbody a{color:var(--color-main-text)}span.conflict-path,span.extension,span.uploading,td.date{color:var(--color-text-maxcontrast)}span.conflict-path,span.extension{-webkit-transition:opacity 300ms;-moz-transition:opacity 300ms;-o-transition:opacity 300ms;transition:opacity 300ms;vertical-align:top}tr:hover span.conflict-path,tr:focus span.conflict-path,tr:hover span.extension,tr:focus span.extension{opacity:1;color:var(--color-text-maxcontrast)}table th,table th a{color:var(--color-text-maxcontrast)}table.multiselect th a{color:var(--color-main-text)}table th .columntitle{display:block;padding:15px;height:50px;box-sizing:border-box;-moz-box-sizing:border-box;vertical-align:middle}table th .columntitle:focus-visible{border-radius:2px}table.multiselect th .columntitle{display:inline-block;margin-inline-end:-20px}table th .columntitle.name{padding-inline-start:0;margin-inline-start:44px}table.multiselect th .columntitle.name{margin-inline-start:0}table th .sort-indicator{width:10px;height:8px;margin-inline-start:5px;display:inline-block;vertical-align:text-bottom;opacity:.3}.sort-indicator.hidden,.multiselect .sort-indicator,table.multiselect th:hover .sort-indicator.hidden,table.multiselect th:focus .sort-indicator.hidden{visibility:hidden}.multiselect .sort,.multiselect .sort span{cursor:default}table th:hover .sort-indicator.hidden,table th:focus .sort-indicator.hidden{visibility:visible}table th,table td{border-bottom:1px solid var(--color-border);text-align:start;font-weight:normal}table td{padding:0 15px;font-style:normal;background-position:8px center;background-repeat:no-repeat}table th.column-name{position:relative;width:9999px;padding:0}.column-name-container{position:relative;height:50px}table th.column-selection{padding-top:2px}table th.column-size,table td.filesize{text-align:end}table th.column-mtime,table td.date,table th.column-last,table td.column-last{-moz-box-sizing:border-box;box-sizing:border-box;position:relative;min-width:130px}#app-content-recent,#app-content-favorites,#app-content-shareoverview,#app-content-sharingout,#app-content-sharingin,#app-content-sharinglinks,#app-content-deletedshares,#app-content-pendingshares{margin-top:22px}#app-content-recent thead,#app-content-favorites thead,#app-content-shareoverview thead,#app-content-sharingout thead,#app-content-sharingin thead,#app-content-sharinglinks thead,#app-content-deletedshares thead,#app-content-pendingshares thead{top:0}table.multiselect thead th{background-color:var(--color-main-background-translucent);font-weight:bold}#app-content.with-app-sidebar table.multiselect thead{margin-inline-end:27%}table.multiselect .column-name{position:relative;width:9999px}table.multiselect .column-mtime>a{display:none}table td.selection,table th.selection,table td.fileaction{width:32px;text-align:center}table td.filename a.name,table td.filename p.name{display:flex;position:relative;-moz-box-sizing:border-box;box-sizing:border-box;height:50px;line-height:50px;padding:0}table td.filename .thumbnail-wrapper{width:0;min-width:50px;max-width:50px;height:50px}table td.filename .thumbnail-wrapper.icon-loading-small:after{z-index:10}table td.filename .thumbnail-wrapper.icon-loading-small .thumbnail{opacity:.2}table td.filename .thumbnail{display:inline-block;width:32px;height:32px;background-size:contain;background-position:center;background-repeat:no-repeat;margin-inline-start:9px;margin-top:9px;border-radius:var(--border-radius);cursor:pointer;position:absolute;z-index:4}table td.filename p.name .thumbnail{cursor:default}table tr[data-has-preview=true] .thumbnail{border:1px solid var(--color-border)}table:not(.view-grid) td.filename input.filename{width:70% !important;margin-inline-start:48px !important;cursor:text}table td.filename form{margin-top:-40px;position:relative;top:-6px}table td.filename a,table td.login,table td.logout,table td.download,table td.upload,table td.create,table td.delete{padding:3px 8px 8px 3px}table td.filename .nametext,.modified,.column-last>span:first-child{float:left;padding:15px 0}.modified,.column-last>span:first-child{position:relative;overflow:hidden;text-overflow:ellipsis;width:110px}table td.filename{max-width:0}table td.filename .nametext{width:0;flex-grow:1;display:flex;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;height:100%;z-index:10;padding:0;padding-inline-end:20px}.hide-hidden-files .files-filestable .files-fileList tr.hidden-file,.hide-hidden-files .files-filestable .files-fileList tr.hidden-file.dragging{display:none !important}.files-fileList tr.animate-opacity{-webkit-transition:opacity 250ms;-moz-transition:opacity 250ms;-o-transition:opacity 250ms;transition:opacity 250ms}.files-fileList tr.dragging{opacity:.2}table td.filename .nametext .innernametext{text-overflow:ellipsis;overflow:hidden;position:relative;vertical-align:top}table td.filename .uploadtext{position:absolute;font-weight:normal;margin-inline-start:50px;inset-inline-start:0;bottom:0;height:20px;padding:0 4px;padding-inline-start:1px;font-size:11px;line-height:22px;color:var(--color-text-maxcontrast);text-overflow:ellipsis;white-space:nowrap}table td.selection{padding:0}.files-fileList tr td.selection>.selectCheckBox+label:before{opacity:.3;margin-inline-end:0}.files-fileList tr:hover td.selection>.selectCheckBox+label:before,.files-fileList tr:focus td.selection>.selectCheckBox+label:before,.files-fileList tr td.selection>.selectCheckBox:checked+label:before,.files-fileList tr.selected td.selection>.selectCheckBox+label:before{opacity:1}.files-fileList tr.halfselected td.selection>.selectCheckBox+label:before{opacity:.5}.files-fileList tr td.selection>.selectCheckBox+label,.select-all+label{padding:16px}.files-fileList tr td.selection>.selectCheckBox:focus-visible+label,.select-all:focus-visible+label{background-color:var(--color-background-hover);border-radius:var(--border-radius-pill);outline:none !important;border:2px solid var(--color-primary-element) !important;padding:14px}.files-fileList tr td.selection>.selectCheckBox:focus-visible+label,.select-all:focus-visible+label{outline-offset:0px}.files-fileList tr td.filename{position:relative;width:100%;padding-inline:0;-webkit-transition:background-image 500ms;-moz-transition:background-image 500ms;-o-transition:background-image 500ms;transition:background-image 500ms}.files-fileList tr td.filename a.name label,.files-fileList tr td.filename p.name label{position:absolute;width:80%;height:50px}.files-fileList tr td.filename .favorite{display:inline-block;float:left}.files-fileList tr td.filename .favorite-mark{position:absolute;display:block;top:-8px;inset-inline-end:-8px;line-height:100%;text-align:center}.files-fileList tr td.filename .favorite-mark.permanent{background-color:var(--color-main-background);mask:var(--icon-star-rounded-white) no-repeat;mask-size:22px 22px;width:22px;height:22px;display:flex;align-content:center;justify-content:center}.files-fileList tr:hover td.filename .favorite-mark.permanent{background-color:var(--color-background-hover)}#uploadsize-message,#delete-confirm{display:none}.fileactions{z-index:50}.busy .fileactions,.busy .action{visibility:hidden}.bubble,#app-navigation .app-navigation-entry-menu{min-width:100px}.files-fileList .icon-loading-small{opacity:1 !important;display:inline !important}.files-fileList .action.action-share-notification span,.files-fileList a.name{cursor:default !important}.files-fileList a.name.disabled *{cursor:default}.files-fileList a.name.disabled a,.files-fileList a.name.disabled a *{cursor:pointer}.files-fileList a.name.disabled:focus{background:none}a.action>img{height:16px;width:16px;vertical-align:text-bottom}a.action.action-editlocally img.icon,a.action.action-setreminder img.icon{filter:var(--background-invert-if-dark)}.selectedActions{position:relative;display:inline-block;vertical-align:middle}.selectedActions.hidden{display:none}.selectedActions a{display:inline;line-height:50px;padding:16px 5px}.selectedActions a.hidden{display:none}.selectedActions a img{position:relative;vertical-align:text-bottom;margin-bottom:-1px}.selectedActions .actions-selected .icon-more{margin-top:-3px}.files-fileList td a a.action{display:inline;padding:17px 8px;line-height:50px;opacity:.3}.files-fileList td a a.action.action-share{padding:17px 14px}.files-fileList td a a.action.action-share.permanent:not(.shared-style) .icon-shared+span{position:absolute;inset-inline-start:-10000px;top:auto;width:1px;height:1px;overflow:hidden}.files-fileList td a a.action.action-share .avatar{display:inline-block;vertical-align:middle}.files-fileList td a a.action.action-menu{padding-top:17px;padding-bottom:17px;padding-inline:14px}.files-fileList td a a.action.no-permission:hover,.files-fileList td a a.action.no-permission:focus{opacity:.3}.files-fileList td a a.action.disabled:hover,.files-fileList td a a.action.disabled:focus,.files-fileList td a a.action.disabled img{opacity:.3}.files-fileList td a a.action.disabled.action-download{opacity:.7}.files-fileList td a a.action.disabled.action-download:hover,.files-fileList td a a.action.disabled.action-download:focus{opacity:.7}.files-fileList td a a.action:hover,.files-fileList td a a.action:focus{opacity:1}.files-fileList td a a.action:focus{background-color:var(--color-background-hover);border-radius:var(--border-radius-pill)}.files-fileList td a .fileActionsMenu a.action,.files-fileList td a a.action.action-share.shared-style{opacity:.7}.files-fileList td a .fileActionsMenu .action.permanent{opacity:1}.files-fileList .action.action-share.permanent.shared-style span:not(.icon){display:inline-block;max-width:70px;overflow:hidden;text-overflow:ellipsis;vertical-align:middle;margin-inline-end:6px}.files-fileList .remoteAddress .userDomain{margin-inline-start:0 !important}.files-fileList .favorite-mark.permanent{opacity:1}.files-fileList .fileActionsMenu a.action:hover,.files-fileList .fileActionsMenu a.action:focus,.files-fileList a.action.action-share.shared-style:hover,.files-fileList a.action.action-share.shared-style:focus{opacity:1}.files-fileList tr a.action.disabled{background:none}.selectedActions a.download.disabled,.files-fileList tr a.action.action-download.disabled{color:#000}.files-fileList tr:hover a.action.disabled:hover *{cursor:default}.summary{color:var(--color-text-maxcontrast);height:330px}.files-filestable .summary .filesummary{width:100%;padding-inline-start:101px}#body-public .summary{height:180px}.summary:hover,.summary:focus,.summary,table tr.summary td{background-color:rgba(0,0,0,0)}.summary td{border-bottom:none;vertical-align:top;padding-top:20px}.summary td:first-child{padding:0}.hiddeninfo{white-space:pre-line}table.dragshadow{width:auto;z-index:2000}table.dragshadow td.filename{padding-inline:60px 16px;height:36px;max-width:unset}table.dragshadow td.size{padding-inline-end:8px}.mask{z-index:50;position:absolute;inset:0;background-color:var(--color-main-background);background-repeat:no-repeat no-repeat;background-position:50%;opacity:.7;transition:opacity 100ms;-moz-transition:opacity 100ms;-o-transition:opacity 100ms;-ms-transition:opacity 100ms;-webkit-transition:opacity 100ms}.mask.transparent{opacity:0}.newFileMenu{font-weight:300;top:100%;inset-inline-start:-48px !important;margin-top:4px;min-width:100px;z-index:1001}.newFileMenu::after{inset-inline-start:84px !important}.files-controls{box-sizing:border-box;position:-webkit-sticky;position:sticky;height:50px;padding:0;margin:0;background-color:var(--color-main-background-translucent);z-index:62;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:flex;top:0;padding-inline-start:50px}.files-controls .actions>div>.button,.files-controls .actions>div button,.files-controls .actions>.button,.files-controls .actions button{box-sizing:border-box;display:inline-block;display:flex;height:44px;width:44px;padding:9px;align-items:center;justify-content:center}.files-controls .actions>div .button.hidden,.files-controls .actions .button.hidden{display:none}.viewer-mode #app-navigation+#app-content .files-controls{inset-inline-start:0}.files-filestable .filename .action .icon,.files-filestable .selectedActions a .icon,.files-filestable .filename .favorite-mark .icon,.files-controls .actions .button .icon{display:inline-block;vertical-align:middle;background-size:16px 16px}.files-filestable .filename .favorite-mark .icon-star{background-image:none}.files-filestable .filename .favorite-mark .icon-starred{background-image:var(--icon-starred-yellow) !important}.files-filestable .filename .action .icon.hidden,.files-filestable .selectedActions a .icon.hidden,.files-controls .actions .button .icon.hidden{display:none}.files-filestable .filename .action .icon.loading,.files-filestable .selectedActions a .icon.loading,.files-controls .actions .button .icon.loading{width:15px;height:15px}.app-files .actions .button.new{position:relative;width:unset;gap:14px;background-color:var(--color-primary-element-light);color:var(--color-primary-element-light-text);border:unset;padding:0px 20px}.breadcrumb{align-items:center}.breadcrumb .icon-home{border-radius:var(--border-radius)}.breadcrumb .canDrop>a,.files-filestable tbody tr.canDrop{background-color:rgba(0,130,201,.3)}.dropzone-background{background-color:rgba(0,130,201,.3)}.dropzone-background :hover{box-shadow:none !important}.notCreatable{margin-inline:12px 44px;margin-top:12px;color:var(--color-main-text);overflow:auto;min-width:160px;height:54px}.notCreatable:not(.hidden){display:flex}.notCreatable .icon-alert-outline{top:-15px;position:relative;margin-inline-end:4px}.quota-navigation-item{margin:0 !important;border:none;border-radius:0;background-color:rgba(0,0,0,0);z-index:1;height:44px;display:flex !important;flex-direction:column}.quota-navigation-item__text{height:30px}.quota-navigation-item[href="#"],.quota-navigation-item[href="#"] *{cursor:default !important}.quota-navigation-item__container{height:5px;border-radius:var(--border-radius)}.files-filestable.view-grid:not(.hidden) thead tr{display:block;border-bottom:1px solid var(--color-border);background-color:var(--color-main-background-translucent)}.files-filestable.view-grid:not(.hidden) thead tr th{width:auto;border:none}.files-filestable.view-grid:not(.hidden) tbody{display:grid;grid-template-columns:repeat(auto-fill, 160px);justify-content:space-around;row-gap:15px;margin:15px 0}.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden){display:block;position:relative;height:190px;border-radius:var(--border-radius)}.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted{background-color:rgba(0,0,0,0)}.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted .fileactions{background-color:var(--color-background-hover)}.files-filestable.view-grid:not(.hidden) tbody td{display:inline;border-bottom:none}.files-filestable.view-grid:not(.hidden) tbody td.filename .thumbnail-wrapper{min-width:0;max-width:none;position:absolute;width:160px;height:160px;padding:14px;top:0;inset-inline-start:0;z-index:-1}.files-filestable.view-grid:not(.hidden) tbody td.filename .thumbnail-wrapper .thumbnail{width:calc(100% - 2*14px);height:calc(100% - 2*14px);background-size:contain;margin:0;border-radius:var(--border-radius);background-repeat:no-repeat;background-position:center}.files-filestable.view-grid:not(.hidden) tbody td.filename .thumbnail-wrapper .thumbnail .favorite-mark{inset-inline-start:auto;top:-11px;inset-inline-end:-11px}.files-filestable.view-grid:not(.hidden) tbody td.filename .uploadtext{width:100%;margin:0;top:0;bottom:auto;height:28px;padding-top:4px;padding-inline-start:28px}.files-filestable.view-grid:not(.hidden) tbody td.filename .name{height:100%;border-radius:var(--border-radius);overflow:hidden;cursor:pointer !important}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext{display:flex;height:44px;margin-top:146px;text-align:center;line-height:44px;padding:0}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext .innernametext{display:inline-block;text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext:before{content:"";flex:1;min-width:14px}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext:after{content:"";flex:1;min-width:44px}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext .extension{display:none}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .system-tags{display:none}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .fileactions{height:initial;margin-top:146px;display:flex;align-items:center;position:absolute;inset-inline-end:0}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .fileactions .action{padding:14px;width:44px;height:44px;display:flex;align-items:center;justify-content:center}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .fileactions .action:not(.action-menu){display:none}.files-filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-share-container.hidden{display:block !important}.files-filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-share-container.hidden .action-share img{padding:6px;border-radius:50%}.files-filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-restore-container.hidden{display:block !important}.files-filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-comment-container.hidden{display:block !important}.files-filestable.view-grid:not(.hidden) tbody td.filename form{padding:3px 14px;border-radius:var(--border-radius)}.files-filestable.view-grid:not(.hidden) tbody td.filename form input.filename{width:100%;margin-inline-start:0;cursor:text}.files-filestable.view-grid:not(.hidden) tbody td.filesize,.files-filestable.view-grid:not(.hidden) tbody td.date{display:none}.files-filestable.view-grid:not(.hidden) tbody td.selection,.files-filestable.view-grid:not(.hidden) tbody td.filename .favorite-mark{position:absolute;top:-8px;inset-inline-start:-8px;display:flex;z-index:10}.files-filestable.view-grid:not(.hidden) tbody td.selection label,.files-filestable.view-grid:not(.hidden) tbody td.filename .favorite-mark label{width:44px;height:44px;display:inline-flex;padding:14px}.files-filestable.view-grid:not(.hidden) tbody td.selection label::before,.files-filestable.view-grid:not(.hidden) tbody td.filename .favorite-mark label::before{margin:0;width:14px;height:14px}.files-filestable.view-grid:not(.hidden) tbody td .popovermenu{inset-inline-start:0;width:150px;margin:0 5px}.files-filestable.view-grid:not(.hidden) tbody td .popovermenu .menuitem span:not(.icon){overflow:hidden;text-overflow:ellipsis}.files-filestable.view-grid:not(.hidden) tr.hidden-file td.filename .name .nametext .extension{display:block}.files-filestable.view-grid:not(.hidden) tfoot{display:grid}.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden){display:inline-block;margin:0 auto;height:418px}.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td{padding-top:50px}.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td:first-child,.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td.date{display:none}.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td .info{margin-inline-start:0}#view-toggle{background-color:var(--color-main-background-translucent);border:none;margin:0;padding:22px;opacity:.5;float:right;inset-inline-end:var(--default-grid-baseline);top:var(--default-grid-baseline);z-index:100;position:sticky}#view-toggle:hover,#view-toggle:focus,#showgridview:focus+#view-toggle{opacity:1}#view-toggle:focus-visible,#showgridview:focus-visible+#view-toggle{box-shadow:inset 0 0 0 2px var(--color-primary-element) !important}#showgridview{position:fixed;top:0}#body-public .files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext .innernametext{max-width:124px}#body-public .files-filestable.view-grid:not(.hidden) tbody td .popovermenu{inset-inline-start:-80px}#body-public #view-toggle{position:absolute;inset-inline-end:0;top:0}#gallery-button{display:none}#tag_multiple_files_container{overflow:hidden;background-color:#fff;border-radius:3px;position:relative;display:flex;flex-wrap:wrap;margin-bottom:10px}#tag_multiple_files_container h3{width:100%;padding:0 18px}#tag_multiple_files_container .systemTagsInputFieldContainer{flex:1 1 80%;min-width:0;margin:0 12px}/*! - * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors - * SPDX-FileCopyrightText: 2013-2016 ownCloud, Inc. - * SPDX-License-Identifier: AGPL-3.0-only - */#upload{box-sizing:border-box;height:36px;width:39px;padding:0 !important;margin-inline-start:3px;overflow:hidden;vertical-align:top;position:relative;z-index:-20}#upload .icon-upload{position:relative;display:block;width:100%;height:44px;width:44px;margin:-5px -3px;cursor:pointer;z-index:10;opacity:.65}.file_upload_target{display:none}.file_upload_form{display:inline;float:left;margin:0;padding:0;cursor:pointer;overflow:visible}.uploadprogresswrapper,.uploadprogresswrapper *{box-sizing:border-box}.uploadprogresswrapper{display:inline-block;vertical-align:top;height:36px;margin-inline-start:3px}.uploadprogresswrapper>input[type=button]{height:36px;margin-inline-start:3px}#uploadprogressbar{border-color:var(--color-border-dark);border-radius:var(--border-radius-pill) 0 0 var(--border-radius-pill);border-inline-end:0;position:relative;float:left;width:200px;height:44px;display:inline-block;text-align:center}#uploadprogressbar .ui-progressbar-value{margin-top:.1em}#uploadprogressbar .ui-progressbar-value.ui-widget-header.ui-corner-left{height:calc(100% + 2px);top:-2px;inset-inline-start:-1px;position:absolute;overflow:hidden;background-color:var(--color-primary-element)}#uploadprogressbar .label{top:8px;opacity:1;overflow:hidden;white-space:nowrap;font-weight:normal}#uploadprogressbar .label.inner{color:var(--color-primary-element-text);position:absolute;display:block;width:200px}#uploadprogressbar .label.outer{position:relative;color:var(--color-main-text)}#uploadprogressbar .desktop{display:block}#uploadprogressbar .mobile{display:none}#uploadprogressbar+.stop{border-start-start-radius:0;border-end-start-radius:0}.oc-dialog .fileexists{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;margin-bottom:30px}.oc-dialog .fileexists .conflict .filename,.oc-dialog .fileexists .conflict .mtime,.oc-dialog .fileexists .conflict .size{-webkit-touch-callout:initial;-webkit-user-select:initial;-khtml-user-select:initial;-moz-user-select:initial;-ms-user-select:initial;user-select:initial}.oc-dialog .fileexists .conflict .message{color:#e9322d}.oc-dialog .fileexists table{width:100%}.oc-dialog .fileexists th{padding-inline:0}.oc-dialog .fileexists th input[type=checkbox]{margin-inline-end:3px}.oc-dialog .fileexists th:first-child{width:225px}.oc-dialog .fileexists th label{font-weight:normal;color:var(--color-main-text)}.oc-dialog .fileexists th .count{margin-inline-start:3px}.oc-dialog .fileexists .conflicts .template{display:none}.oc-dialog .fileexists .conflict{width:100%;height:85px}.oc-dialog .fileexists .conflict .filename{color:#777;word-break:break-all;clear:left}.oc-dialog .fileexists .icon{width:64px;height:64px;margin:0px 5px 5px 5px;background-repeat:no-repeat;background-size:64px 64px;float:left}.oc-dialog .fileexists .original,.oc-dialog .fileexists .replacement{float:left;width:50%}.oc-dialog .fileexists .conflicts{overflow-y:auto;max-height:225px}.oc-dialog .fileexists .conflict input[type=checkbox]{float:left}.oc-dialog .fileexists #allfileslabel{float:right}.oc-dialog .fileexists #allfiles{vertical-align:bottom;position:relative;top:-3px}.oc-dialog .fileexists #allfiles+span{vertical-align:bottom}.oc-dialog .oc-dialog-buttonrow{width:100%;text-align:right}.oc-dialog .oc-dialog-buttonrow .cancel{float:left}.highlightUploaded{-webkit-animation:highlightAnimation 2s 1;-moz-animation:highlightAnimation 2s 1;-o-animation:highlightAnimation 2s 1;animation:highlightAnimation 2s 1}@-webkit-keyframes highlightAnimation{0%{background-color:#ffff8c}100%{background-color:rgba(0,0,0,0)}}@-moz-keyframes highlightAnimation{0%{background-color:#ffff8c}100%{background-color:rgba(0,0,0,0)}}@-o-keyframes highlightAnimation{0%{background-color:#ffff8c}100%{background-color:rgba(0,0,0,0)}}@keyframes highlightAnimation{0%{background-color:#ffff8c}100%{background-color:rgba(0,0,0,0)}}/*! - * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors - * SPDX-License-Identifier: AGPL-3.0-or-later - *//*! - * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors - * SPDX-FileCopyrightText: 2014-2016 ownCloud, Inc. - * SPDX-License-Identifier: AGPL-3.0-only - */@media only screen and (max-width: 988px)and (min-width: 1025px),only screen and (max-width: 688px){.app-files #app-content.dir-drop{background-color:#fff !important}table th.column-size,table td.filesize,table th.column-mtime,table td.date{display:none}table td{padding:0}table.multiselect thead{padding-inline-start:0}.fileList a.action.action-menu img{padding-inline-start:0}.fileList .fileActionsMenu{margin-inline-end:6px}.fileList a.action-share span:not(.icon):not(.avatar){position:absolute;inset-inline-start:-10000px;top:auto;width:1px;height:1px;overflow:hidden}td.filename a.name .system-tags{display:none}#uploadprogressbar,#uploadprogressbar .label.inner{width:50px}#uploadprogressbar .desktop{display:none !important}#uploadprogressbar .mobile{display:block !important}table.dragshadow{z-index:1000}}@media only screen and (max-width: 480px){table th .selectedActions{float:right}table th .selectedActions>a span:not(.icon){display:none}table th .selectedActions a{padding:17px 14px}table.multiselect th .columntitle.name{margin-inline-start:0}}/*! - * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors - * SPDX-FileCopyrightText: 2015-2016 ownCloud, Inc. - * SPDX-License-Identifier: AGPL-3.0-only - */.app-sidebar .detailFileInfoContainer{min-height:50px;padding:15px}.app-sidebar .detailFileInfoContainer>div{clear:both}.app-sidebar .mainFileInfoView .icon{display:inline-block;background-size:16px 16px}.app-sidebar .mainFileInfoView .permalink{padding:6px 10px;vertical-align:top;opacity:.6}.app-sidebar .mainFileInfoView .permalink:hover,.app-sidebar .mainFileInfoView .permalink:focus{opacity:1}.app-sidebar .mainFileInfoView .permalink-field>input{clear:both;width:90%}.app-sidebar .thumbnailContainer.large{margin-inline:-15px -35px;margin-top:-15px}.app-sidebar .thumbnailContainer.large.portrait{margin:0}.app-sidebar .large .thumbnail{width:100%;display:block;background-repeat:no-repeat;background-position:center;background-size:100%;float:none;margin:0;height:auto}.app-sidebar .large .thumbnail .stretcher{content:"";display:block;padding-bottom:56.25%}.app-sidebar .large.portrait .thumbnail{background-position:50% top}.app-sidebar .large.portrait .thumbnail{background-size:contain}.app-sidebar .large.text{overflow-y:scroll;overflow-x:hidden;padding-top:14px;font-size:80%;margin-inline-start:0}.app-sidebar .thumbnail{width:100%;min-height:75px;display:inline-block;float:left;margin-inline-end:10px;background-size:contain;background-repeat:no-repeat}.app-sidebar .ellipsis{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.app-sidebar .fileName{font-size:16px;padding-top:13px;padding-bottom:3px}.app-sidebar .fileName h3{width:calc(100% - 42px);display:inline-block;padding:5px 0;margin:-5px 0}.app-sidebar .file-details{color:var(--color-text-maxcontrast)}.app-sidebar .action-favorite{vertical-align:sub;padding:10px;margin:-10px}.app-sidebar .action-favorite>span{opacity:.7 !important}.app-sidebar .detailList{float:left}.app-sidebar .close{position:absolute;top:0;inset-inline-end:0;opacity:.5;z-index:1;width:44px;height:44px}/*! - * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors - * SPDX-License-Identifier: AGPL-3.0-or-later - */.whatsNewPopover{bottom:35px !important;inset-inline-start:15px !important;width:270px;z-index:700}.whatsNewPopover p{width:auto !important}.whatsNewPopover .caption{font-weight:bold;cursor:auto !important}.whatsNewPopover .icon-close{position:absolute;inset-inline-end:0}.whatsNewPopover::after{content:none}/*# sourceMappingURL=merged.css.map */ diff --git a/apps/files/css/merged.css.map b/apps/files/css/merged.css.map deleted file mode 100644 index e6987e4e3f94a..0000000000000 --- a/apps/files/css/merged.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sourceRoot":"","sources":["merged.scss","files.scss","upload.scss","../../../core/css/variables.scss","mobile.scss","detailsView.scss","../../../core/css/whatsnew.scss"],"names":[],"mappings":"AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GCSA,SAEC,YACA,YACA,qBACA,WAED,oEACA,8BACA,kDAEC,+CAED,0BACC,oDAGD,mBACC,kBACA,aACA,SACA,4CACC,sBACA,YACA,SACA,oDACA,8CACA,aACA,iBAIF,gBACC,aAGD,OACC,sBACA,YACA,aACA,aACA,mBAGD,6EAGC,yBACA,gCAID,kBACC,kBACA,WACA,gBACA,cACA,sBAEA,6CACC,aAGD,wBACC,wBACA,gBAEA,SAEA,WACA,cACA,0DAMD,wBACC,cACA,WAEA,mGAEC,8CAEA,6KACC,oCAKF,8DACC,oBAKH,yBACC,aAID,uCACC,cACA,WAGD,wBAGC,yBAEA,qBAGD,6FACC,+DAGD,iCACC,yDAGD,kFACC,0CAGD,4EACC,+DAID,iCACC,WACA,YACA,eACA,SACA,eAGD,wCACC,aAGD,0CACC,WAGD,2BACC,YAED,4KAKC,+CAED,wMAKC,oDAGD,qCAEA,yDACC,oCAED,kCACC,iCACA,8BACA,4BACA,yBACA,mBAED,wGAIC,UACA,oCAGD,oBACC,oCAED,uBACC,6BAED,sBACC,cACA,aACA,YACA,sBACA,2BACA,sBACA,oCACC,kBAGF,kCACC,qBACA,wBAED,2BACC,uBACA,yBAGD,uCACC,sBAGD,yBACC,WACA,WACA,wBACA,qBACA,2BACA,WAED,wJAIC,kBAED,2CACC,eAED,4EAEC,mBAGD,kBAEC,4CACA,iBACA,mBAED,SACC,eACA,kBACA,+BACA,4BAED,qBACC,kBACA,aACA,UAGD,uBACC,kBACA,YAGD,0BACC,gBAED,uCACC,eAED,8EAEC,2BACA,sBACA,kBAEA,gBAGD,qMAQC,gBACA,qPACC,MAIF,2BACC,0DACA,iBAGD,sDACC,sBAGD,+BACC,kBACA,aAED,kCACC,aAGD,0DAGC,WACA,kBAED,kDAEC,aACA,kBACA,2BACA,sBACA,YACA,iBACA,UAED,qCAEC,QACA,eACA,eACA,YAGA,8DACC,WAED,mEACC,WAGF,6BACC,qBACA,WACA,YACA,wBACA,2BACA,4BACA,wBACA,eACA,mCACA,eACA,kBACA,UAED,oCACC,eAID,2CACC,qCAGD,iDACC,qBACA,oCACA,YAED,uBACC,iBACA,kBACA,SAGD,6IACA,8FAEA,wCACC,kBACA,gBACA,uBACA,YAKA,kBACC,YACA,4BACC,QACA,YACA,aACA,gBACA,mBACA,uBACA,YACA,WACA,UACA,wBAKH,iJAEC,wBAGD,mCACC,iCACA,8BACA,4BACA,yBAED,4BACC,WAGD,2CACC,uBACA,gBACA,kBACA,mBAKD,8BACC,kBACA,mBAEA,yBACA,qBACA,SACA,YACA,cAEA,yBACA,eAEA,iBACA,oCACA,uBACA,mBAGD,mBACC,UAID,6DACC,WACA,oBAID,iRAIC,UAID,0EACC,WAMA,wEACC,aAGD,oGACC,+CACA,wCACA,wBACA,yDACA,aAIF,oGAEC,mBAGD,+BACC,kBACA,WACA,iBACA,wJAGD,wFAEC,kBACA,UACA,YAGD,yCACC,qBACA,WAED,8CACC,kBACA,cACA,SACA,sBACA,iBACA,kBACA,wDAEC,8CACA,8CACA,oBAEA,WACA,YACA,aACA,qBACA,uBAGF,8DACC,+CAGD,iDAGA,aACC,WAGD,iCACC,kBAID,mDAEC,gBAID,oCACC,qBACA,0BAGD,8EACC,0BAOA,kCACC,eAGD,sEACC,eAGD,sCACC,gBAIF,aACC,YACA,WACA,2BAKA,0EACC,wCAKF,iBACI,kBACA,qBACA,sBAEJ,wBACI,aAEJ,mBACC,eACA,iBACA,iBAGD,0BACC,aAED,uBACC,kBACA,2BACA,mBAGD,8CACC,gBAIA,8BACC,eACA,iBACA,iBACA,WACA,2CACC,kBACA,0FAGC,kBACA,4BACA,SACA,UACA,WACA,gBAED,mDACC,qBACA,sBAGF,0CACC,iBACA,oBACA,oBAGA,oGACC,WAID,qIAEC,WAED,uDACC,WACA,0HACC,WAIH,wEACC,UAED,oCACC,+CACA,wCAGF,uGACC,WAED,wDACC,UAKF,4EACC,qBACA,eACA,gBACA,uBACA,sBACA,sBAGD,2CACC,iCAGD,yCACC,UAGD,kNAKC,UAGD,qCACC,gBAGD,0FAEC,WAGD,mDACC,eAGD,SACC,oCAGA,aAED,wCACC,WAEA,2BAKD,sBACC,aAED,2DAIC,+BAED,YACC,mBACA,mBACA,iBAED,wBACC,UAED,YACC,qBAGD,iBACC,WACA,aAED,6BACC,yBACA,YAGA,gBAED,yBACC,uBAED,MACC,WACA,kBACA,QACA,8CACA,sCACA,wBACA,WACA,yBACA,8BACA,4BACA,6BACA,iCAED,kBACC,UAGD,aACC,gBACA,SACA,oCACA,eACA,gBACA,aAGA,oBACC,mCAKF,gBACC,sBACA,wBACA,gBACA,YACA,UACA,SACA,0DACA,WACA,yBACA,sBACA,qBACA,iBACA,aACA,MACA,0BAKE,0IACC,sBACA,qBACA,aACA,YACA,WACA,YACA,mBACA,uBAED,oFACC,aAQJ,0DACC,qBAGD,6KAIC,qBACA,sBACA,0BAMA,sDACC,sBAED,yDACC,uDAIF,iJAGC,aAGD,oJAGC,WACA,YAGD,gCACC,kBACA,YACA,SACA,oDACA,8CACA,aACA,iBAGD,YACC,mBAEA,uBACC,mCAIF,0DAEC,oCAED,qBACC,oCACA,4BACC,2BAIF,cACC,wBACA,gBACA,6BACA,cACA,gBACA,YAEA,2BACC,aAGD,kCACC,UACA,kBACA,sBAIF,uBACC,oBACA,YACA,gBACA,+BACA,UACA,YACA,wBACA,sBAEA,6BACC,YAKA,oEACC,0BAIF,kCACC,WACA,mCAWA,kDACC,cACA,4CACA,0DACA,qDACC,WACA,YAMH,+CACC,aACA,+CACA,6BACA,aACA,cAGA,+DACC,cACA,kBACA,aACA,mCAEA,0fAKC,+BAEA,oxDAGC,+CAKH,kDACC,eACA,mBAGC,8EACC,YACA,eACA,kBACA,MAvDQ,MAwDR,OAxDQ,MAyDR,QAxDO,KAyDP,MACA,qBACA,WAEA,yFACC,0BACA,2BACA,wBACA,SACA,mCACA,4BACA,2BAKA,wGACC,wBACA,UACA,uBAKH,uEACC,WACA,SACA,MACA,YAEA,YACA,gBAEA,0BAGD,iEACC,YACA,mCAIA,gBAKA,0BAEA,2EACC,aACA,YACA,iBACA,kBACA,iBACA,UAEA,0FACC,qBACA,kBACA,gBACA,uBACA,mBAED,kFACC,WACA,OACA,eAED,iFACC,WACA,OACA,eAID,sFACC,aAKF,8EACC,aAGD,8EACC,eACA,iBACA,aACA,mBACA,kBACA,mBAEA,sFACC,QAxJK,KAyJL,WACA,YACA,aACA,mBACA,uBAGA,wGACC,aAQH,2GACC,yBAEA,6HACC,YACA,kBAIF,6GACC,yBAGD,6GACC,yBAIF,gEACC,iBACA,mCAEA,+EACC,WACA,sBACA,YAMH,kHAEC,aAGD,sIAEC,kBACA,SACA,wBACA,aACA,WAEA,kJACC,WACA,YACA,oBACA,QAzNO,KA0NP,kKACC,SACA,MA5NM,KA6NN,OA7NM,KAmOT,+DACC,qBACA,YACA,aAGA,yFACC,gBACA,uBAMJ,+FACC,cAID,+CACC,aAEA,qEACC,qBACA,cAEA,aAEA,wEACC,iBAEA,iKAEC,aAGD,8EACI,sBAQR,aACC,0DACA,YACA,SACA,aACA,WACA,YACA,8CACA,iCACA,YACA,gBAEA,uEAGC,UAGD,oEAEC,mEASF,cACC,eACA,MAOC,uGACC,gBAID,4EACC,yBAKF,0BACC,kBACA,mBACA,MAKF,gBACC,aAGD,8BACC,gBACA,sBACA,kBACA,kBACA,aACA,eACA,mBAEA,iCACC,WACA,eAGD,6DACC,aACA,YACA,cC9xCF;AAAA;AAAA;AAAA;AAAA,GAKA,QACC,sBACA,YACA,WACA,qBACA,wBACA,gBACA,mBACA,kBACA,YAED,qBACC,kBACA,cACA,WACA,YACA,WACA,iBACA,eACA,WACA,YAED,iCACA,+FAEA,gDACC,sBAGD,uBACC,qBACA,mBACA,YACA,wBAED,0CACC,YACA,wBAED,mBACC,sCACA,sEACA,oBACA,kBACA,WACA,YACA,YACA,qBACA,kBAEA,yCACC,gBAGF,yEACC,wBACA,SACA,wBACA,kBACA,gBACA,8CAED,0BACC,QACA,UACA,gBACA,mBACA,mBAED,gCACC,wCACA,kBACA,cACA,YAED,gCACC,kBACA,6BAED,4BACC,cAED,2BACC,aAGD,yBACC,4BACA,0BAGD,uBACC,2BACA,yBACA,wBACA,sBACA,qBACA,iBACA,mBAGD,0HAGC,8BACA,4BACA,2BACA,yBACA,wBACA,oBAED,0CACC,cAED,6BACC,WAED,0BACC,iBAED,+CACC,sBAED,sCACC,YAED,gCACC,mBACA,6BAED,iCACC,wBAED,4CACC,aAED,iCACC,WACA,YAED,2CACC,WACA,qBACA,WAED,6BACC,WACA,YACA,uBACA,4BACA,0BACA,WAGD,qEAEC,WACA,UAED,kCACC,gBACA,iBAED,sDACC,WAED,sCACC,YAED,iCACC,sBACA,kBACA,SAED,sCACC,sBAGD,gCACC,WACA,iBAEA,wCACC,WAIF,mBACC,0CACA,uCACA,qCACA,kCAGD,sCACE,4BACA,qCAEF,mCACE,4BACA,qCAEF,iCACE,4BACA,qCAEF,8BACE,4BACA,qCCrNF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GCWA,oGAEA,iCACC,iCAGD,2EAIC,aAID,SACC,UAID,wBACC,uBAGD,mCACC,uBAGD,2BACC,sBAID,sDACC,kBACA,4BACA,SACA,UACA,WACA,gBAID,gCACC,aAKD,mDACC,WAGD,4BACC,wBAED,2BACC,yBAID,iBACC,cAID,0CAEC,0BACC,YAED,4CACC,aAID,4BACC,kBAID,uCACC,uBC5FF;AAAA;AAAA;AAAA;AAAA,GAKA,sCACC,gBACA,aAGD,0CACC,WAID,qCACC,qBACA,0BAGD,0CACC,iBACA,mBACA,WAEA,gGAEC,UAGF,sDACC,WACA,UAGD,uCACC,0BACA,iBAGD,gDACC,SAGD,+BACC,WACA,cACA,4BACA,2BACA,qBACA,WACA,SACA,YAGD,0CACC,WACA,cACA,sBAGD,wCACC,4BAGD,wCACC,wBAGD,yBACC,kBACA,kBACA,iBACA,cACA,sBAGD,wBACC,WACA,gBACA,qBACA,WACA,uBACA,wBACA,4BAGD,uBACC,mBACA,uBACA,gBAGD,uBACC,eACA,iBACA,mBAGD,0BACC,wBACA,qBACA,cACA,cAGD,2BACC,oCAGD,8BACC,mBACA,aACA,aAGD,mCACC,sBAGD,yBACC,WAGD,oBACC,kBACA,MACA,mBACA,WACA,UACA,WACA,YCnID;AAAA;AAAA;AAAA,GAIA,iBACE,uBACA,mCACA,YACA,YAGF,mBACE,sBAGF,0BACE,iBACA,uBAGF,6BACE,kBACA,mBAGF,wBACE","file":"merged.css"} \ No newline at end of file diff --git a/apps/files/css/merged.css.map.license b/apps/files/css/merged.css.map.license deleted file mode 100644 index 7f637358d261f..0000000000000 --- a/apps/files/css/merged.css.map.license +++ /dev/null @@ -1,2 +0,0 @@ -SPDX-FileCopyrightText: 2017-2024 Nextcloud GmbH and Nextcloud contributors -SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/apps/files/css/merged.scss b/apps/files/css/merged.scss deleted file mode 100644 index b5a9a9324cb89..0000000000000 --- a/apps/files/css/merged.scss +++ /dev/null @@ -1,9 +0,0 @@ -/*! - * SPDX-FileCopyrightText: 2017-2024 Nextcloud GmbH and Nextcloud contributors - * SPDX-License-Identifier: AGPL-3.0-or-later - */ -@import 'files.scss'; -@import 'upload.scss'; -@import 'mobile.scss'; -@import 'detailsView.scss'; -@import '../../../core/css/whatsnew.scss'; diff --git a/apps/files/css/mobile.css b/apps/files/css/mobile.css deleted file mode 100644 index cdc9d59773b80..0000000000000 --- a/apps/files/css/mobile.css +++ /dev/null @@ -1,8 +0,0 @@ -/*! - * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors - * SPDX-FileCopyrightText: 2014-2016 ownCloud, Inc. - * SPDX-License-Identifier: AGPL-3.0-only - *//*! - * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors - * SPDX-License-Identifier: AGPL-3.0-or-later - */@media only screen and (max-width: 988px)and (min-width: 1025px),only screen and (max-width: 688px){.app-files #app-content.dir-drop{background-color:#fff !important}table th.column-size,table td.filesize,table th.column-mtime,table td.date{display:none}table td{padding:0}table.multiselect thead{padding-inline-start:0}.fileList a.action.action-menu img{padding-inline-start:0}.fileList .fileActionsMenu{margin-inline-end:6px}.fileList a.action-share span:not(.icon):not(.avatar){position:absolute;inset-inline-start:-10000px;top:auto;width:1px;height:1px;overflow:hidden}td.filename a.name .system-tags{display:none}#uploadprogressbar,#uploadprogressbar .label.inner{width:50px}#uploadprogressbar .desktop{display:none !important}#uploadprogressbar .mobile{display:block !important}table.dragshadow{z-index:1000}}@media only screen and (max-width: 480px){table th .selectedActions{float:right}table th .selectedActions>a span:not(.icon){display:none}table th .selectedActions a{padding:17px 14px}table.multiselect th .columntitle.name{margin-inline-start:0}}/*# sourceMappingURL=mobile.css.map */ diff --git a/apps/files/css/mobile.css.map b/apps/files/css/mobile.css.map deleted file mode 100644 index 8ae25b008dcdb..0000000000000 --- a/apps/files/css/mobile.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sourceRoot":"","sources":["mobile.scss"],"names":[],"mappings":"AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAWA,oGAEA,iCACC,iCAGD,2EAIC,aAID,SACC,UAID,wBACC,uBAGD,mCACC,uBAGD,2BACC,sBAID,sDACC,kBACA,4BACA,SACA,UACA,WACA,gBAID,gCACC,aAKD,mDACC,WAGD,4BACC,wBAED,2BACC,yBAID,iBACC,cAID,0CAEC,0BACC,YAED,4CACC,aAID,4BACC,kBAID,uCACC","file":"mobile.css"} \ No newline at end of file diff --git a/apps/files/css/mobile.css.map.license b/apps/files/css/mobile.css.map.license deleted file mode 100644 index f800692cd8f35..0000000000000 --- a/apps/files/css/mobile.css.map.license +++ /dev/null @@ -1,3 +0,0 @@ -SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors -SPDX-FileCopyrightText: 2014-2016 ownCloud, Inc. -SPDX-License-Identifier: AGPL-3.0-only diff --git a/apps/files/css/mobile.scss b/apps/files/css/mobile.scss deleted file mode 100644 index 9efdf1d9d7a6f..0000000000000 --- a/apps/files/css/mobile.scss +++ /dev/null @@ -1,95 +0,0 @@ -/*! - * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors - * SPDX-FileCopyrightText: 2014-2016 ownCloud, Inc. - * SPDX-License-Identifier: AGPL-3.0-only - */ -@use 'variables'; - -/* 938 = table min-width(688) + app-navigation width: 250\ - $breakpoint-mobile +1 = size where app-navigation is hidden +1 - 688 = table min-width */ -$min-table-width: 688px; -@media only screen and (max-width: $min-table-width + variables.$navigation-width) and (min-width: variables.$breakpoint-mobile + 1), only screen and (max-width: $min-table-width) { - -.app-files #app-content.dir-drop{ - background-color: rgba(255, 255, 255, 1)!important; -} - -table th.column-size, -table td.filesize, -table th.column-mtime, -table td.date { - display: none; -} - -/* remove padding to let border bottom fill the whole width*/ -table td { - padding: 0; -} - -/* remove shift for multiselect bar to account for missing navigation */ -table.multiselect thead { - padding-inline-start: 0; -} - -.fileList a.action.action-menu img { - padding-inline-start: 0; -} - -.fileList .fileActionsMenu { - margin-inline-end: 6px; -} -/* hide text of the share action on mobile */ -/* .hidden-visually for accessbility */ -.fileList a.action-share span:not(.icon):not(.avatar) { - position: absolute; - inset-inline-start: -10000px; - top: auto; - width: 1px; - height: 1px; - overflow: hidden; -} - -// Hide system tags on mobile -td.filename a.name .system-tags { - display: none; -} - - -/* shorten elements for mobile */ -#uploadprogressbar, #uploadprogressbar .label.inner { - width: 50px; -} -/* hide desktop-only parts */ -#uploadprogressbar .desktop { - display: none !important; -} -#uploadprogressbar .mobile { - display: block !important; -} - -/* ensure that it is visible over #app-content */ -table.dragshadow { - z-index: 1000; -} - -} -@media only screen and (max-width: 480px) { - /* Only show icons */ - table th .selectedActions { - float: right; - } - table th .selectedActions > a span:not(.icon) { - display: none; - } - - /* Increase touch area for the icons */ - table th .selectedActions a { - padding: 17px 14px; - } - - /* Remove the margin to reduce the overlap between the name and the icons */ - table.multiselect th .columntitle.name { - margin-inline-start: 0; - } -} diff --git a/apps/files/css/upload.css b/apps/files/css/upload.css deleted file mode 100644 index 04891a9dff3d8..0000000000000 --- a/apps/files/css/upload.css +++ /dev/null @@ -1,5 +0,0 @@ -/*! - * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors - * SPDX-FileCopyrightText: 2013-2016 ownCloud, Inc. - * SPDX-License-Identifier: AGPL-3.0-only - */#upload{box-sizing:border-box;height:36px;width:39px;padding:0 !important;margin-inline-start:3px;overflow:hidden;vertical-align:top;position:relative;z-index:-20}#upload .icon-upload{position:relative;display:block;width:100%;height:44px;width:44px;margin:-5px -3px;cursor:pointer;z-index:10;opacity:.65}.file_upload_target{display:none}.file_upload_form{display:inline;float:left;margin:0;padding:0;cursor:pointer;overflow:visible}.uploadprogresswrapper,.uploadprogresswrapper *{box-sizing:border-box}.uploadprogresswrapper{display:inline-block;vertical-align:top;height:36px;margin-inline-start:3px}.uploadprogresswrapper>input[type=button]{height:36px;margin-inline-start:3px}#uploadprogressbar{border-color:var(--color-border-dark);border-radius:var(--border-radius-pill) 0 0 var(--border-radius-pill);border-inline-end:0;position:relative;float:left;width:200px;height:44px;display:inline-block;text-align:center}#uploadprogressbar .ui-progressbar-value{margin-top:.1em}#uploadprogressbar .ui-progressbar-value.ui-widget-header.ui-corner-left{height:calc(100% + 2px);top:-2px;inset-inline-start:-1px;position:absolute;overflow:hidden;background-color:var(--color-primary-element)}#uploadprogressbar .label{top:8px;opacity:1;overflow:hidden;white-space:nowrap;font-weight:normal}#uploadprogressbar .label.inner{color:var(--color-primary-element-text);position:absolute;display:block;width:200px}#uploadprogressbar .label.outer{position:relative;color:var(--color-main-text)}#uploadprogressbar .desktop{display:block}#uploadprogressbar .mobile{display:none}#uploadprogressbar+.stop{border-start-start-radius:0;border-end-start-radius:0}.oc-dialog .fileexists{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;margin-bottom:30px}.oc-dialog .fileexists .conflict .filename,.oc-dialog .fileexists .conflict .mtime,.oc-dialog .fileexists .conflict .size{-webkit-touch-callout:initial;-webkit-user-select:initial;-khtml-user-select:initial;-moz-user-select:initial;-ms-user-select:initial;user-select:initial}.oc-dialog .fileexists .conflict .message{color:#e9322d}.oc-dialog .fileexists table{width:100%}.oc-dialog .fileexists th{padding-inline:0}.oc-dialog .fileexists th input[type=checkbox]{margin-inline-end:3px}.oc-dialog .fileexists th:first-child{width:225px}.oc-dialog .fileexists th label{font-weight:normal;color:var(--color-main-text)}.oc-dialog .fileexists th .count{margin-inline-start:3px}.oc-dialog .fileexists .conflicts .template{display:none}.oc-dialog .fileexists .conflict{width:100%;height:85px}.oc-dialog .fileexists .conflict .filename{color:#777;word-break:break-all;clear:left}.oc-dialog .fileexists .icon{width:64px;height:64px;margin:0px 5px 5px 5px;background-repeat:no-repeat;background-size:64px 64px;float:left}.oc-dialog .fileexists .original,.oc-dialog .fileexists .replacement{float:left;width:50%}.oc-dialog .fileexists .conflicts{overflow-y:auto;max-height:225px}.oc-dialog .fileexists .conflict input[type=checkbox]{float:left}.oc-dialog .fileexists #allfileslabel{float:right}.oc-dialog .fileexists #allfiles{vertical-align:bottom;position:relative;top:-3px}.oc-dialog .fileexists #allfiles+span{vertical-align:bottom}.oc-dialog .oc-dialog-buttonrow{width:100%;text-align:right}.oc-dialog .oc-dialog-buttonrow .cancel{float:left}.highlightUploaded{-webkit-animation:highlightAnimation 2s 1;-moz-animation:highlightAnimation 2s 1;-o-animation:highlightAnimation 2s 1;animation:highlightAnimation 2s 1}@-webkit-keyframes highlightAnimation{0%{background-color:#ffff8c}100%{background-color:rgba(0,0,0,0)}}@-moz-keyframes highlightAnimation{0%{background-color:#ffff8c}100%{background-color:rgba(0,0,0,0)}}@-o-keyframes highlightAnimation{0%{background-color:#ffff8c}100%{background-color:rgba(0,0,0,0)}}@keyframes highlightAnimation{0%{background-color:#ffff8c}100%{background-color:rgba(0,0,0,0)}}/*# sourceMappingURL=upload.css.map */ diff --git a/apps/files/css/upload.css.map b/apps/files/css/upload.css.map deleted file mode 100644 index 7c1d81d514dbe..0000000000000 --- a/apps/files/css/upload.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sourceRoot":"","sources":["upload.scss"],"names":[],"mappings":"AAAA;AAAA;AAAA;AAAA;AAAA,GAKA,QACC,sBACA,YACA,WACA,qBACA,wBACA,gBACA,mBACA,kBACA,YAED,qBACC,kBACA,cACA,WACA,YACA,WACA,iBACA,eACA,WACA,YAED,iCACA,+FAEA,gDACC,sBAGD,uBACC,qBACA,mBACA,YACA,wBAED,0CACC,YACA,wBAED,mBACC,sCACA,sEACA,oBACA,kBACA,WACA,YACA,YACA,qBACA,kBAEA,yCACC,gBAGF,yEACC,wBACA,SACA,wBACA,kBACA,gBACA,8CAED,0BACC,QACA,UACA,gBACA,mBACA,mBAED,gCACC,wCACA,kBACA,cACA,YAED,gCACC,kBACA,6BAED,4BACC,cAED,2BACC,aAGD,yBACC,4BACA,0BAGD,uBACC,2BACA,yBACA,wBACA,sBACA,qBACA,iBACA,mBAGD,0HAGC,8BACA,4BACA,2BACA,yBACA,wBACA,oBAED,0CACC,cAED,6BACC,WAED,0BACC,iBAED,+CACC,sBAED,sCACC,YAED,gCACC,mBACA,6BAED,iCACC,wBAED,4CACC,aAED,iCACC,WACA,YAED,2CACC,WACA,qBACA,WAED,6BACC,WACA,YACA,uBACA,4BACA,0BACA,WAGD,qEAEC,WACA,UAED,kCACC,gBACA,iBAED,sDACC,WAED,sCACC,YAED,iCACC,sBACA,kBACA,SAED,sCACC,sBAGD,gCACC,WACA,iBAEA,wCACC,WAIF,mBACC,0CACA,uCACA,qCACA,kCAGD,sCACE,4BACA,qCAEF,mCACE,4BACA,qCAEF,iCACE,4BACA,qCAEF,8BACE,4BACA","file":"upload.css"} \ No newline at end of file diff --git a/apps/files/css/upload.css.map.license b/apps/files/css/upload.css.map.license deleted file mode 100644 index ada7fbdd4caf2..0000000000000 --- a/apps/files/css/upload.css.map.license +++ /dev/null @@ -1,3 +0,0 @@ -SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors -SPDX-FileCopyrightText: 2013-2016 ownCloud, Inc. -SPDX-License-Identifier: AGPL-3.0-only diff --git a/apps/files/css/upload.scss b/apps/files/css/upload.scss deleted file mode 100644 index 4ab46d9070118..0000000000000 --- a/apps/files/css/upload.scss +++ /dev/null @@ -1,215 +0,0 @@ -/*! - * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors - * SPDX-FileCopyrightText: 2013-2016 ownCloud, Inc. - * SPDX-License-Identifier: AGPL-3.0-only - */ -#upload { - box-sizing: border-box; - height: 36px; - width: 39px; - padding: 0 !important; /* override default control bar button padding */ - margin-inline-start: 3px; - overflow: hidden; - vertical-align: top; - position: relative; - z-index: -20; -} -#upload .icon-upload { - position: relative; - display: block; - width: 100%; - height: 44px; - width: 44px; - margin: -5px -3px; - cursor: pointer; - z-index: 10; - opacity: .65; -} -.file_upload_target { display:none; } -.file_upload_form { display:inline; float:left; margin:0; padding:0; cursor:pointer; overflow:visible; } - -.uploadprogresswrapper, .uploadprogresswrapper * { - box-sizing: border-box; -} - -.uploadprogresswrapper { - display: inline-block; - vertical-align: top; - height: 36px; - margin-inline-start: 3px; -} -.uploadprogresswrapper > input[type='button'] { - height: 36px; - margin-inline-start: 3px; -} -#uploadprogressbar { - border-color: var(--color-border-dark); - border-radius: var(--border-radius-pill) 0 0 var(--border-radius-pill); - border-inline-end: 0; - position:relative; - float: left; - width: 200px; - height: 44px; - display:inline-block; - text-align: center; - - .ui-progressbar-value { - margin-top:.1em; - } -} -#uploadprogressbar .ui-progressbar-value.ui-widget-header.ui-corner-left { - height: calc(100% + 2px); - top: -2px; - inset-inline-start: -1px; - position: absolute; - overflow: hidden; - background-color: var(--color-primary-element); -} -#uploadprogressbar .label { - top: 8px; - opacity: 1; - overflow: hidden; - white-space: nowrap; - font-weight: normal; -} -#uploadprogressbar .label.inner { - color: var(--color-primary-element-text); - position: absolute; - display: block; - width: 200px; -} -#uploadprogressbar .label.outer { - position: relative; - color: var(--color-main-text); -} -#uploadprogressbar .desktop { - display: block; -} -#uploadprogressbar .mobile { - display: none; -} - -#uploadprogressbar + .stop { - border-start-start-radius: 0; - border-end-start-radius: 0; -} - -.oc-dialog .fileexists { - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - margin-bottom: 30px; -} - -.oc-dialog .fileexists .conflict .filename, -.oc-dialog .fileexists .conflict .mtime, -.oc-dialog .fileexists .conflict .size { - -webkit-touch-callout: initial; - -webkit-user-select: initial; - -khtml-user-select: initial; - -moz-user-select: initial; - -ms-user-select: initial; - user-select: initial; -} -.oc-dialog .fileexists .conflict .message { - color: #e9322d; -} -.oc-dialog .fileexists table { - width: 100%; -} -.oc-dialog .fileexists th { - padding-inline: 0; -} -.oc-dialog .fileexists th input[type='checkbox'] { - margin-inline-end: 3px; -} -.oc-dialog .fileexists th:first-child { - width: 225px; -} -.oc-dialog .fileexists th label { - font-weight: normal; - color: var(--color-main-text); -} -.oc-dialog .fileexists th .count { - margin-inline-start: 3px; -} -.oc-dialog .fileexists .conflicts .template { - display: none; -} -.oc-dialog .fileexists .conflict { - width: 100%; - height: 85px; -} -.oc-dialog .fileexists .conflict .filename { - color:#777; - word-break: break-all; - clear: left; -} -.oc-dialog .fileexists .icon { - width: 64px; - height: 64px; - margin: 0px 5px 5px 5px; - background-repeat: no-repeat; - background-size: 64px 64px; - float: left; -} - -.oc-dialog .fileexists .original, -.oc-dialog .fileexists .replacement { - float: left; - width: 50%; -} -.oc-dialog .fileexists .conflicts { - overflow-y: auto; - max-height: 225px; -} -.oc-dialog .fileexists .conflict input[type='checkbox'] { - float: left; -} -.oc-dialog .fileexists #allfileslabel { - float:right; -} -.oc-dialog .fileexists #allfiles { - vertical-align: bottom; - position: relative; - top: -3px; -} -.oc-dialog .fileexists #allfiles + span{ - vertical-align: bottom; -} - -.oc-dialog .oc-dialog-buttonrow { - width:100%; - text-align:right; - - .cancel { - float:left; - } -} - -.highlightUploaded { - -webkit-animation: highlightAnimation 2s 1; - -moz-animation: highlightAnimation 2s 1; - -o-animation: highlightAnimation 2s 1; - animation: highlightAnimation 2s 1; -} - -@-webkit-keyframes highlightAnimation { - 0% { background-color: rgba(255, 255, 140, 1); } - 100% { background-color: rgba(0, 0, 0, 0); } -} -@-moz-keyframes highlightAnimation { - 0% { background-color: rgba(255, 255, 140, 1); } - 100% { background-color: rgba(0, 0, 0, 0); } -} -@-o-keyframes highlightAnimation { - 0% { background-color: rgba(255, 255, 140, 1); } - 100% { background-color: rgba(0, 0, 0, 0); } -} -@keyframes highlightAnimation { - 0% { background-color: rgba(255, 255, 140, 1); } - 100% { background-color: rgba(0, 0, 0, 0); } -} diff --git a/apps/files/js/app.js b/apps/files/js/app.js deleted file mode 100644 index 820aa2c1ef885..0000000000000 --- a/apps/files/js/app.js +++ /dev/null @@ -1,398 +0,0 @@ -/** - * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors - * SPDX-FileCopyrightText: 2014-2016 ownCloud, Inc. - * SPDX-License-Identifier: AGPL-3.0-or-later - */ - -/* global dragOptions, folderDropOptions, OC */ -(function() { - - if (!OCA.Files) { - /** - * Namespace for the files app - * @namespace OCA.Files - */ - OCA.Files = {}; - } - - /** - * @namespace OCA.Files.App - */ - OCA.Files.App = { - /** - * Navigation instance - * - * @member {OCP.Files.Navigation} - */ - navigation: null, - - /** - * File list for the "All files" section. - * - * @member {OCA.Files.FileList} - */ - fileList: null, - - currentFileList: null, - - /** - * Backbone model for storing files preferences - */ - _filesConfig: null, - - /** - * Initializes the files app - */ - initialize: function() { - this.$showHiddenFiles = $('input#showhiddenfilesToggle'); - var showHidden = $('#showHiddenFiles').val() === "1"; - this.$showHiddenFiles.prop('checked', showHidden); - - // Toggle for grid view - this.$showGridView = $('input#showgridview'); - this.$showGridView.on('change', _.bind(this._onGridviewChange, this)); - - if ($('#fileNotFound').val() === "1") { - OC.Notification.show(t('files', 'File could not be found'), {type: 'error'}); - } - - this._filesConfig = OCP.InitialState.loadState('files', 'config', {}) - - var { fileid, scrollto, openfile } = OC.Util.History.parseUrlQuery(); - var fileActions = new OCA.Files.FileActions(); - // default actions - fileActions.registerDefaultActions(); - // regular actions - fileActions.merge(OCA.Files.fileActions); - - this._onActionsUpdated = _.bind(this._onActionsUpdated, this); - OCA.Files.fileActions.on('setDefault.app-files', this._onActionsUpdated); - OCA.Files.fileActions.on('registerAction.app-files', this._onActionsUpdated); - - this.files = OCA.Files.Files; - - // TODO: ideally these should be in a separate class / app (the embedded "all files" app) - this.fileList = new OCA.Files.FileList( - $('#app-content-files'), { - dragOptions: dragOptions, - folderDropOptions: folderDropOptions, - fileActions: fileActions, - allowLegacyActions: true, - scrollTo: scrollto, - openFile: openfile, - filesClient: OC.Files.getClient(), - multiSelectMenu: [ - { - name: 'copyMove', - displayName: t('files', 'Move or copy'), - iconClass: 'icon-external', - order: 10, - }, - { - name: 'download', - displayName: t('files', 'Download'), - iconClass: 'icon-download', - order: 10, - }, - OCA.Files.FileList.MultiSelectMenuActions.ToggleSelectionModeAction, - { - name: 'delete', - displayName: t('files', 'Delete'), - iconClass: 'icon-delete', - order: 99, - }, - ...( - OCA?.SystemTags === undefined ? [] : ([{ - name: 'tags', - displayName: t('files', 'Tags'), - iconClass: 'icon-tag', - order: 100, - }]) - ), - ], - sorting: { - mode: $('#defaultFileSorting').val() === 'basename' - ? 'name' - : $('#defaultFileSorting').val(), - direction: $('#defaultFileSortingDirection').val() - }, - config: this._filesConfig, - enableUpload: true, - maxChunkSize: OC.appConfig.files && OC.appConfig.files.max_chunk_size - } - ); - this.updateCurrentFileList(this.fileList) - this.files.initialize(); - - // for backward compatibility, the global FileList will - // refer to the one of the "files" view - window.FileList = this.fileList; - - OC.Plugins.attach('OCA.Files.App', this); - - this._setupEvents(); - - if (sessionStorage.getItem('WhatsNewServerCheck') < (Date.now() - 3600*1000)) { - OCP.WhatsNew.query(); // for Nextcloud server - sessionStorage.setItem('WhatsNewServerCheck', Date.now()); - } - - window._nc_event_bus.emit('files:legacy-view:initialized', this); - - this.navigation = OCP.Files.Navigation - }, - - /** - * Destroy the app - */ - destroy: function() { - this.fileList.destroy(); - this.fileList = null; - this.files = null; - OCA.Files.fileActions.off('setDefault.app-files', this._onActionsUpdated); - OCA.Files.fileActions.off('registerAction.app-files', this._onActionsUpdated); - }, - - _onActionsUpdated: function(ev) { - // forward new action to the file list - if (ev.action) { - this.fileList.fileActions.registerAction(ev.action); - } else if (ev.defaultAction) { - this.fileList.fileActions.setDefault( - ev.defaultAction.mime, - ev.defaultAction.name - ); - } - }, - - /** - * Set the currently active file list - * - * Due to the file list implementations being registered after clicking the - * navigation item for the first time, OCA.Files.App is not aware of those until - * they have initialized themselves. Therefore the files list needs to call this - * method manually - * - * @param {OCA.Files.FileList} newFileList - - */ - updateCurrentFileList: function(newFileList) { - if (this.currentFileList === newFileList) { - return - } - - this.currentFileList = newFileList; - if (this.currentFileList !== null) { - // update grid view to the current value - const isGridView = this.$showGridView.is(':checked'); - this.currentFileList.setGridView(isGridView); - } - }, - - /** - * Return the currently active file list - * @return {?OCA.Files.FileList} - */ - getCurrentFileList: function () { - return this.currentFileList; - }, - - /** - * Returns the container of the currently visible app. - * - * @return app container - */ - getCurrentAppContainer: function() { - var viewId = this.getActiveView(); - return $('#app-content-' + viewId); - }, - - /** - * Sets the currently active view - * @param viewId view id - */ - setActiveView: function(viewId) { - // The Navigation API will handle the final event - window._nc_event_bus.emit('files:legacy-navigation:changed', { id: viewId }) - }, - - /** - * Returns the view id of the currently active view - * @return view id - */ - getActiveView: function() { - return this.navigation - && this.navigation.active - && this.navigation.active.id; - }, - - /** - * - * @returns {Backbone.Model} - */ - getFilesConfig: function() { - return this._filesConfig; - }, - - /** - * Setup events based on URL changes - */ - _setupEvents: function() { - OC.Util.History.addOnPopStateHandler(_.bind(this._onPopState, this)); - - // detect when app changed their current directory - $('#app-content').delegate('>div', 'changeDirectory', _.bind(this._onDirectoryChanged, this)); - $('#app-content').delegate('>div', 'afterChangeDirectory', _.bind(this._onAfterDirectoryChanged, this)); - $('#app-content').delegate('>div', 'changeViewerMode', _.bind(this._onChangeViewerMode, this)); - }, - - /** - * Event handler for when the current navigation item has changed - */ - _onNavigationChanged: function(view) { - var params; - if (view && (view.itemId || view.id)) { - if (view.id) { - params = { - view: view.id, - dir: '/', - } - } else { - // Legacy handling - params = { - view: typeof view.view === 'string' && view.view !== '' ? view.view : view.itemId, - dir: view.dir ? view.dir : '/' - } - } - this._changeUrl(params.view, params.dir); - OCA.Files.Sidebar.close(); - this.getCurrentAppContainer().trigger(new $.Event('urlChanged', params)); - window._nc_event_bus.emit('files:navigation:changed') - } - }, - - /** - * Event handler for when an app notified that its directory changed - */ - _onDirectoryChanged: function(e) { - if (e.dir && !e.changedThroughUrl) { - this._changeUrl(this.getActiveView(), e.dir, e.fileId); - } - }, - - /** - * Event handler for when an app notified that its directory changed - */ - _onAfterDirectoryChanged: function(e) { - if (e.dir && e.fileId) { - this._changeUrl(this.getActiveView(), e.dir, e.fileId); - } - }, - - /** - * Event handler for when an app notifies that it needs space - * for viewer mode. - */ - _onChangeViewerMode: function(e) { - var state = !!e.viewerModeEnabled; - if (e.viewerModeEnabled) { - OCA.Files.Sidebar.close(); - } - $('#app-navigation').toggleClass('hidden', state); - $('.app-files').toggleClass('viewer-mode no-sidebar', state); - }, - - /** - * Event handler for when the URL changed - */ - _onPopState: function(params) { - params = _.extend({ - dir: '/', - view: 'files' - }, params); - - var lastId = this.getActiveView(); - if (!this.navigation.views.find(view => view.id === params.view)) { - params.view = 'files'; - } - - this.setActiveView(params.view, {silent: true}); - if (lastId !== this.getActiveView()) { - this.getCurrentAppContainer().trigger(new $.Event('show', params)); - window._nc_event_bus.emit('files:navigation:changed') - } - - this.getCurrentAppContainer().trigger(new $.Event('urlChanged', params)); - - }, - - /** - * Encode URL params into a string, except for the "dir" attribute - * that gets encoded as path where "/" is not encoded - * - * @param {Object.} params - * @return {string} encoded params - */ - _makeUrlParams: function(params) { - var dir = params.dir; - delete params.dir; - return 'dir=' + OC.encodePath(dir) + '&' + OC.buildQueryString(params); - }, - - /** - * Change the URL to point to the given dir and view - */ - _changeUrl: function(view, dir, fileId) { - var params = { dir: dir }; - if (view !== 'files') { - params.view = view; - } else if (fileId) { - params.fileid = fileId; - } - var currentParams = OC.Util.History.parseUrlQuery(); - if (currentParams.dir === params.dir && currentParams.view === params.view) { - if (currentParams.fileid !== params.fileid) { - // if only fileid changed or was added, replace instead of push - OC.Util.History.replaceState(this._makeUrlParams(params)); - return - } - } else { - OC.Util.History.pushState(this._makeUrlParams(params)); - return - } - }, - - /** - * Toggle showing gridview by default or not - * - * @returns {undefined} - */ - _onGridviewChange: function() { - const isGridView = this.$showGridView.is(':checked'); - // only save state if user is logged in - if (OC.currentUser) { - $.post(OC.generateUrl('/apps/files/api/v1/showgridview'), { - show: isGridView, - }); - } - this.$showGridView.next('#view-toggle') - .removeClass('icon-toggle-filelist icon-toggle-pictures') - .addClass(isGridView ? 'icon-toggle-filelist' : 'icon-toggle-pictures') - this.$showGridView.next('#view-toggle') - .attr('title', isGridView ? t('files', 'Show list view') : t('files', 'Show grid view')) - this.$showGridView.attr('aria-label', isGridView ? t('files', 'Show list view') : t('files', 'Show grid view')) - - if (this.currentFileList) { - this.currentFileList.setGridView(isGridView); - } - }, - - }; -})(); - -window.addEventListener('DOMContentLoaded', function() { - // wait for other apps/extensions to register their event handlers and file actions - // in the "ready" clause - _.defer(function() { - OCA.Files.App.initialize(); - }); -}); diff --git a/apps/files/js/breadcrumb.js b/apps/files/js/breadcrumb.js deleted file mode 100644 index b4e1d19444609..0000000000000 --- a/apps/files/js/breadcrumb.js +++ /dev/null @@ -1,352 +0,0 @@ -/** - * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors - * SPDX-FileCopyrightText: 2013-2015 ownCloud, Inc. - * SPDX-License-Identifier: AGPL-3.0-or-later - */ - -(function() { - /** - * @class BreadCrumb - * @memberof OCA.Files - * @classdesc Breadcrumbs that represent the current path. - * - * @param {Object} [options] options - * @param {Function} [options.onClick] click event handler - * @param {Function} [options.onDrop] drop event handler - * @param {Function} [options.getCrumbUrl] callback that returns - * the URL of a given breadcrumb - */ - var BreadCrumb = function(options){ - this.$el = $(''); - this.$menu = $(''); - - this.crumbSelector = '.crumb:not(.hidden):not(.crumbhome):not(.crumbmenu)'; - this.hiddenCrumbSelector = '.crumb.hidden:not(.crumbhome):not(.crumbmenu)'; - options = options || {}; - if (options.onClick) { - this.onClick = options.onClick; - } - if (options.onDrop) { - this.onDrop = options.onDrop; - this.onOver = options.onOver; - this.onOut = options.onOut; - } - if (options.getCrumbUrl) { - this.getCrumbUrl = options.getCrumbUrl; - } - this._detailViews = []; - }; - - /** - * @memberof OCA.Files - */ - BreadCrumb.prototype = { - $el: null, - dir: null, - dirInfo: null, - - /** - * Total width of all breadcrumbs - * @type int - * @private - */ - totalWidth: 0, - breadcrumbs: [], - onClick: null, - onDrop: null, - onOver: null, - onOut: null, - - /** - * Sets the directory to be displayed as breadcrumb. - * This will re-render the breadcrumb. - * @param dir path to be displayed as breadcrumb - */ - setDirectory: function(dir) { - dir = dir.replace(/\\/g, '/'); - dir = dir || '/'; - if (dir !== this.dir) { - this.dir = dir; - this.render(); - } - }, - - setDirectoryInfo: function(dirInfo) { - if (dirInfo !== this.dirInfo) { - this.dirInfo = dirInfo; - this.render(); - } - }, - - /** - * @param {Backbone.View} detailView - */ - addDetailView: function(detailView) { - this._detailViews.push(detailView); - }, - - /** - * Returns the full URL to the given directory - * - * @param {Object.} part crumb data as map - * @param {number} index crumb index - * @return full URL - */ - getCrumbUrl: function(part, index) { - return '#'; - }, - - /** - * Renders the breadcrumb elements - */ - render: function() { - // Menu is destroyed on every change, we need to init it - OC.unregisterMenu($('.crumbmenu > .icon-more'), $('.crumbmenu > .popovermenu')); - - var parts = this._makeCrumbs(this.dir || '/'); - var $crumb; - var $menuItem; - this.$el.empty(); - this.breadcrumbs = []; - var $crumbList = $(''); - - for (var i = 0; i < parts.length; i++) { - var part = parts[i]; - var $image; - var $link = $(''); - $crumb = $('
  • '); - if(part.dir) { - $link.attr('href', this.getCrumbUrl(part, i)); - } - if(part.name) { - $link.text(part.name); - } - $link.addClass(part.linkclass); - $crumb.append($link); - $crumb.data('dir', part.dir); - // Ignore menu button - $crumb.data('crumb-id', i - 1); - $crumb.addClass(part.class); - - if (part.img) { - $image = $(''); - $image.attr('src', part.img); - $image.attr('alt', part.alt); - $link.append($image); - } - this.breadcrumbs.push($crumb); - $crumbList.append($crumb); - // Only add feedback if not menu - if (this.onClick && i !== 0) { - $link.on('click', this.onClick); - } - } - this.$el.append($crumbList); - - // Menu creation - this._createMenu(); - for (var j = 0; j < parts.length; j++) { - var menuPart = parts[j]; - if(menuPart.dir) { - $menuItem = $('
  • '); - $menuItem.data('dir', menuPart.dir); - $menuItem.find('a').attr('href', this.getCrumbUrl(part, j)); - $menuItem.find('span:eq(1)').text(menuPart.name); - this.$menu.children('ul').append($menuItem); - if (this.onClick) { - $menuItem.on('click', this.onClick); - } - } - } - _.each(this._detailViews, function(view) { - view.render({ - dirInfo: this.dirInfo - }); - $crumb.append(view.$el); - $menuItem.append(view.$el.clone(true)); - }, this); - - // setup drag and drop - if (this.onDrop) { - this.$el.find('.crumb:not(:last-child):not(.crumbmenu), .crumblist:not(:last-child)').droppable({ - drop: this.onDrop, - over: this.onOver, - out: this.onOut, - tolerance: 'pointer', - hoverClass: 'canDrop', - greedy: true - }); - } - - // Menu is destroyed on every change, we need to init it - OC.registerMenu($('.crumbmenu > .icon-more'), $('.crumbmenu > .popovermenu')); - - this._resize(); - }, - - /** - * Makes a breadcrumb structure based on the given path - * - * @param {String} dir path to split into a breadcrumb structure - * @param {String} [rootIcon=icon-home] icon to use for root - * @return {Object.} map of {dir: path, name: displayName} - */ - _makeCrumbs: function(dir, rootIcon) { - var crumbs = []; - var pathToHere = ''; - // trim leading and trailing slashes - dir = dir.replace(/^\/+|\/+$/g, ''); - var parts = dir.split('/'); - if (dir === '') { - parts = []; - } - // menu part - crumbs.push({ - class: 'crumbmenu hidden', - linkclass: 'icon-more menutoggle' - }); - // root part - crumbs.push({ - name: t('files', 'Home'), - dir: '/', - class: 'crumbhome', - linkclass: rootIcon || 'icon-home' - }); - for (var i = 0; i < parts.length; i++) { - var part = parts[i]; - pathToHere = pathToHere + '/' + part; - crumbs.push({ - dir: pathToHere, - name: part - }); - } - return crumbs; - }, - - /** - * Calculate real width based on individual crumbs - * - * @param {boolean} ignoreHidden ignore hidden crumbs - */ - getTotalWidth: function(ignoreHidden) { - // The width has to be calculated by adding up the width of all the - // crumbs; getting the width of the breadcrumb element is not a - // valid approach, as the returned value could be clamped to its - // parent width. - var totalWidth = 0; - for (var i = 0; i < this.breadcrumbs.length; i++ ) { - var $crumb = $(this.breadcrumbs[i]); - if(!$crumb.hasClass('hidden') || ignoreHidden === true) { - totalWidth += $crumb.outerWidth(true); - } - } - return totalWidth; - }, - - /** - * Hide the middle crumb - */ - _hideCrumb: function() { - var length = this.$el.find(this.crumbSelector).length; - // Get the middle one floored down - var elmt = Math.floor(length / 2 - 0.5); - this.$el.find(this.crumbSelector+':eq('+elmt+')').addClass('hidden'); - }, - - /** - * Get the crumb to show - */ - _getCrumbElement: function() { - var hidden = this.$el.find(this.hiddenCrumbSelector).length; - var shown = this.$el.find(this.crumbSelector).length; - // Get the outer one with priority to the highest - var elmt = (1 - shown % 2) * (hidden - 1); - return this.$el.find(this.hiddenCrumbSelector + ':eq('+elmt+')'); - }, - - /** - * Show the middle crumb - */ - _showCrumb: function() { - if(this.$el.find(this.hiddenCrumbSelector).length === 1) { - this.$el.find(this.hiddenCrumbSelector).removeClass('hidden'); - } - this._getCrumbElement().removeClass('hidden'); - }, - - /** - * Create and append the popovermenu - */ - _createMenu: function() { - this.$el.find('.crumbmenu').append(this.$menu); - this.$menu.children('ul').empty(); - }, - - /** - * Update the popovermenu - */ - _updateMenu: function() { - var menuItems = this.$el.find(this.hiddenCrumbSelector); - - this.$menu.find('li').addClass('in-breadcrumb'); - for (var i = 0; i < menuItems.length; i++) { - var crumbId = $(menuItems[i]).data('crumb-id'); - this.$menu.find('li:eq('+crumbId+')').removeClass('in-breadcrumb'); - } - }, - - _resize: function() { - - if (this.breadcrumbs.length <= 2) { - // home & menu - return; - } - - // Always hide the menu to ensure that it does not interfere with - // the width calculations; otherwise, the result could be different - // depending on whether the menu was previously being shown or not. - this.$el.find('.crumbmenu').addClass('hidden'); - - // Show the crumbs to compress the siblings before hiding again the - // crumbs. This is needed when the siblings expand to fill all the - // available width, as in that case their old width would limit the - // available width for the crumbs. - // Note that the crumbs shown always overflow the parent width - // (except, of course, when they all fit in). - while (this.$el.find(this.hiddenCrumbSelector).length > 0 - && Math.round(this.getTotalWidth()) <= Math.round(this.$el.parent().width())) { - this._showCrumb(); - } - - var siblingsWidth = 0; - this.$el.prevAll(':visible').each(function () { - siblingsWidth += $(this).outerWidth(true); - }); - this.$el.nextAll(':visible').each(function () { - siblingsWidth += $(this).outerWidth(true); - }); - - var availableWidth = this.$el.parent().width() - siblingsWidth; - - // If container is smaller than content - // AND if there are crumbs left to hide - while (Math.round(this.getTotalWidth()) > Math.round(availableWidth) - && this.$el.find(this.crumbSelector).length > 0) { - // As soon as one of the crumbs is hidden the menu will be - // shown. This is needed for proper results in further width - // checks. - // Note that the menu is not shown only when all the crumbs were - // being shown and they all fit the available space; if any of - // the crumbs was not being shown then those shown would - // overflow the available width, so at least one will be hidden - // and thus the menu will be shown. - this.$el.find('.crumbmenu').removeClass('hidden'); - this._hideCrumb(); - } - - this._updateMenu(); - } - }; - - OCA.Files.BreadCrumb = BreadCrumb; -})(); diff --git a/apps/files/js/detailfileinfoview.js b/apps/files/js/detailfileinfoview.js deleted file mode 100644 index a93a4f40207b6..0000000000000 --- a/apps/files/js/detailfileinfoview.js +++ /dev/null @@ -1,51 +0,0 @@ -/** - * SPDX-FileCopyrightText: 2015 ownCloud, Inc. - * SPDX-License-Identifier: AGPL-3.0-or-later - */ - -(function() { - /** - * @class OCA.Files.DetailFileInfoView - * @classdesc - * - * Displays a block of details about the file info. - * - */ - var DetailFileInfoView = OC.Backbone.View.extend({ - tagName: 'div', - className: 'detailFileInfoView', - - _template: null, - - /** - * returns the jQuery object for HTML output - * - * @returns {jQuery} - */ - get$: function() { - return this.$el; - }, - - /** - * Sets the file info to be displayed in the view - * - * @param {OCA.Files.FileInfo} fileInfo file info to set - */ - setFileInfo: function(fileInfo) { - this.model = fileInfo; - this.render(); - }, - - /** - * Returns the file info. - * - * @return {OCA.Files.FileInfo} file info - */ - getFileInfo: function() { - return this.model; - } - }); - - OCA.Files.DetailFileInfoView = DetailFileInfoView; -})(); - diff --git a/apps/files/js/detailsview.js b/apps/files/js/detailsview.js deleted file mode 100644 index d82624256351f..0000000000000 --- a/apps/files/js/detailsview.js +++ /dev/null @@ -1,284 +0,0 @@ -/** - * SPDX-FileCopyrightText: 2017-2024 Nextcloud GmbH and Nextcloud contributors - * SPDX-FileCopyrightText: 2015 ownCloud, Inc. - * SPDX-License-Identifier: AGPL-3.0-or-later - */ - -(function() { - /** - * @class OCA.Files.DetailsView - * @classdesc - * - * The details view show details about a selected file. - * - */ - var DetailsView = OC.Backbone.View.extend({ - id: 'app-sidebar', - tabName: 'div', - className: 'detailsView scroll-container', - - /** - * List of detail tab views - * - * @type Array - */ - _tabViews: [], - - /** - * List of detail file info views - * - * @type Array - */ - _detailFileInfoViews: [], - - /** - * Id of the currently selected tab - * - * @type string - */ - _currentTabId: null, - - /** - * Dirty flag, whether the view needs to be rerendered - */ - _dirty: false, - - events: { - 'click a.close': '_onClose', - 'click .tabHeaders .tabHeader': '_onClickTab', - 'keyup .tabHeaders .tabHeader': '_onKeyboardActivateTab' - }, - - /** - * Initialize the details view - */ - initialize: function() { - this._tabViews = []; - this._detailFileInfoViews = []; - - this._dirty = true; - }, - - _onClose: function(event) { - OC.Apps.hideAppSidebar(this.$el); - event.preventDefault(); - }, - - _onClickTab: function(e) { - var $target = $(e.target); - e.preventDefault(); - if (!$target.hasClass('tabHeader')) { - $target = $target.closest('.tabHeader'); - } - var tabId = $target.attr('data-tabid'); - if (_.isUndefined(tabId)) { - return; - } - - this.selectTab(tabId); - }, - - _onKeyboardActivateTab: function (event) { - if (event.key === " " || event.key === "Enter") { - this._onClickTab(event); - } - }, - - template: function(vars) { - return OCA.Files.Templates['detailsview'](vars); - }, - - /** - * Renders this details view - */ - render: function() { - var templateVars = { - closeLabel: t('files', 'Close') - }; - - this._tabViews = this._tabViews.sort(function(tabA, tabB) { - var orderA = tabA.order || 0; - var orderB = tabB.order || 0; - if (orderA === orderB) { - return OC.Util.naturalSortCompare(tabA.getLabel(), tabB.getLabel()); - } - return orderA - orderB; - }); - - templateVars.tabHeaders = _.map(this._tabViews, function(tabView, i) { - return { - tabId: tabView.id, - label: tabView.getLabel(), - tabIcon: tabView.getIcon() - }; - }); - - this.$el.html(this.template(templateVars)); - - var $detailsContainer = this.$el.find('.detailFileInfoContainer'); - - // render details - _.each(this._detailFileInfoViews, function(detailView) { - $detailsContainer.append(detailView.get$()); - }); - - if (!this._currentTabId && this._tabViews.length > 0) { - this._currentTabId = this._tabViews[0].id; - } - - this.selectTab(this._currentTabId); - - this._updateTabVisibilities(); - - this._dirty = false; - }, - - /** - * Selects the given tab by id - * - * @param {string} tabId tab id - */ - selectTab: function(tabId) { - if (!tabId) { - return; - } - - var tabView = _.find(this._tabViews, function(tab) { - return tab.id === tabId; - }); - - if (!tabView) { - console.warn('Details view tab with id "' + tabId + '" not found'); - return; - } - - this._currentTabId = tabId; - - var $tabsContainer = this.$el.find('.tabsContainer'); - var $tabEl = $tabsContainer.find('#' + tabId); - - // hide other tabs - $tabsContainer.find('.tab').addClass('hidden'); - - $tabsContainer.attr('class', 'tabsContainer'); - $tabsContainer.addClass(tabView.getTabsContainerExtraClasses()); - - // tab already rendered ? - if (!$tabEl.length) { - // render tab - $tabsContainer.append(tabView.$el); - $tabEl = tabView.$el; - } - - // this should trigger tab rendering - tabView.setFileInfo(this.model); - - $tabEl.removeClass('hidden'); - - // update tab headers - var $tabHeaders = this.$el.find('.tabHeaders li'); - $tabHeaders.removeClass('selected'); - $tabHeaders.filterAttr('data-tabid', tabView.id).addClass('selected'); - }, - - /** - * Sets the file info to be displayed in the view - * - * @param {OCA.Files.FileInfoModel} fileInfo file info to set - */ - setFileInfo: function(fileInfo) { - this.model = fileInfo; - - if (this._dirty) { - this.render(); - } else { - this._updateTabVisibilities(); - } - - if (this._currentTabId) { - // only update current tab, others will be updated on-demand - var tabId = this._currentTabId; - var tabView = _.find(this._tabViews, function(tab) { - return tab.id === tabId; - }); - tabView.setFileInfo(fileInfo); - } - - _.each(this._detailFileInfoViews, function(detailView) { - detailView.setFileInfo(fileInfo); - }); - }, - - /** - * Update tab headers based on the current model - */ - _updateTabVisibilities: function() { - // update tab header visibilities - var self = this; - var deselect = false; - var countVisible = 0; - var $tabHeaders = this.$el.find('.tabHeaders li'); - _.each(this._tabViews, function(tabView) { - var isVisible = tabView.canDisplay(self.model); - if (isVisible) { - countVisible += 1; - } - if (!isVisible && self._currentTabId === tabView.id) { - deselect = true; - } - $tabHeaders.filterAttr('data-tabid', tabView.id).toggleClass('hidden', !isVisible); - }); - - // hide the whole container if there is only one tab - this.$el.find('.tabHeaders').toggleClass('hidden', countVisible <= 1); - - if (deselect) { - // select the first visible tab instead - var visibleTabId = this.$el.find('.tabHeader:not(.hidden):first').attr('data-tabid'); - this.selectTab(visibleTabId); - } - - }, - - /** - * Returns the file info. - * - * @return {OCA.Files.FileInfoModel} file info - */ - getFileInfo: function() { - return this.model; - }, - - /** - * Adds a tab in the tab view - * - * @param {OCA.Files.DetailTabView} tab view - */ - addTabView: function(tabView) { - this._tabViews.push(tabView); - this._dirty = true; - }, - - /** - * Adds a detail view for file info. - * - * @param {OCA.Files.DetailFileInfoView} detail view - */ - addDetailView: function(detailView) { - this._detailFileInfoViews.push(detailView); - this._dirty = true; - }, - - /** - * Returns an array with the added DetailFileInfoViews. - * - * @return Array an array with the added - * DetailFileInfoViews. - */ - getDetailViews: function() { - return [].concat(this._detailFileInfoViews); - } - }); - - OCA.Files.DetailsView = DetailsView; -})(); diff --git a/apps/files/js/detailtabview.js b/apps/files/js/detailtabview.js deleted file mode 100644 index 865b0e05f5e51..0000000000000 --- a/apps/files/js/detailtabview.js +++ /dev/null @@ -1,137 +0,0 @@ -/** - * SPDX-FileCopyrightText: 2018-2024 Nextcloud GmbH and Nextcloud contributors - * SPDX-FileCopyrightText: 2015 ownCloud, Inc. - * SPDX-License-Identifier: AGPL-3.0-or-later - */ - -(function() { - - /** - * @class OCA.Files.DetailTabView - * @classdesc - * - * Base class for tab views to display file information. - * - */ - var DetailTabView = OC.Backbone.View.extend({ - tag: 'div', - - className: 'tab', - - /** - * Tab label - */ - _label: null, - - _template: null, - - initialize: function(options) { - options = options || {}; - if (!this.id) { - this.id = 'detailTabView' + DetailTabView._TAB_COUNT; - DetailTabView._TAB_COUNT++; - } - if (options.order) { - this.order = options.order || 0; - } - }, - - /** - * Returns the extra CSS classes used by the tabs container when this - * tab is the selected one. - * - * In general you should not extend this method, as tabs should not - * modify the classes of its container; this is reserved as a last - * resort for very specific cases in which there is no other way to get - * the proper style or behaviour. - * - * @return {String} space-separated CSS classes - */ - getTabsContainerExtraClasses: function() { - return ''; - }, - - /** - * Returns the tab label - * - * @return {String} label - */ - getLabel: function() { - return 'Tab ' + this.id; - }, - - /** - * Returns the tab label - * - * @return {String}|{null} icon class - */ - getIcon: function() { - return null - }, - - /** - * returns the jQuery object for HTML output - * - * @returns {jQuery} - */ - get$: function() { - return this.$el; - }, - - /** - * Renders this details view - * - * @abstract - */ - render: function() { - // to be implemented in subclass - // FIXME: code is only for testing - this.$el.html('
    Hello ' + this.id + '
    '); - }, - - /** - * Sets the file info to be displayed in the view - * - * @param {OCA.Files.FileInfoModel} fileInfo file info to set - */ - setFileInfo: function(fileInfo) { - if (this.model !== fileInfo) { - this.model = fileInfo; - this.render(); - } - }, - - /** - * Returns the file info. - * - * @return {OCA.Files.FileInfoModel} file info - */ - getFileInfo: function() { - return this.model; - }, - - /** - * Load the next page of results - */ - nextPage: function() { - // load the next page, if applicable - }, - - /** - * Returns whether the current tab is able to display - * the given file info, for example based on mime type. - * - * @param {OCA.Files.FileInfoModel} fileInfo file info model - * @return {boolean} whether to display this tab - */ - canDisplay: function(fileInfo) { - return true; - } - }); - DetailTabView._TAB_COUNT = 0; - - OCA.Files = OCA.Files || {}; - - OCA.Files.DetailTabView = DetailTabView; -})(); - diff --git a/apps/files/js/file-upload.js b/apps/files/js/file-upload.js deleted file mode 100644 index 5014eccb3493c..0000000000000 --- a/apps/files/js/file-upload.js +++ /dev/null @@ -1,1448 +0,0 @@ -/** - * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors - * SPDX-FileCopyrightText: 2013-2016 ownCloud, Inc. - * SPDX-License-Identifier: AGPL-3.0-or-later - */ - -/** - * The file upload code uses several hooks to interact with blueimps jQuery file upload library: - * 1. the core upload handling hooks are added when initializing the plugin, - * 2. if the browser supports progress events they are added in a separate set after the initialization - * 3. every app can add its own triggers for fileupload - * - files adds d'n'd handlers and also reacts to done events to add new rows to the filelist - * - TODO pictures upload button - * - TODO music upload button - */ - -/* global jQuery, md5 */ - -/** - * File upload object - * - * @class OC.FileUpload - * @classdesc - * - * Represents a file upload - * - * @param {OC.Uploader} uploader uploader - * @param {Object} data blueimp data - */ -OC.FileUpload = function(uploader, data) { - this.uploader = uploader; - this.data = data; - var basePath = ''; - if (this.uploader.fileList) { - basePath = this.uploader.fileList.getCurrentDirectory(); - } - var path = OC.joinPaths(basePath, this.getFile().relativePath || '', this.getFile().name); - this.id = 'web-file-upload-' + md5(path) + '-' + (new Date()).getTime(); -}; -OC.FileUpload.CONFLICT_MODE_DETECT = 0; -OC.FileUpload.CONFLICT_MODE_OVERWRITE = 1; -OC.FileUpload.CONFLICT_MODE_AUTORENAME = 2; - -// IE11 polyfill -// TODO: nuke out of orbit as well as this legacy code -if (!FileReader.prototype.readAsBinaryString) { - FileReader.prototype.readAsBinaryString = function(fileData) { - var binary = '' - var pt = this - var reader = new FileReader() - reader.onload = function (e) { - var bytes = new Uint8Array(reader.result) - var length = bytes.byteLength - for (var i = 0; i < length; i++) { - binary += String.fromCharCode(bytes[i]) - } - // pt.result - readonly so assign binary - pt.content = binary - $(pt).trigger('onload') - } - reader.readAsArrayBuffer(fileData) - } -} - -OC.FileUpload.prototype = { - - /** - * Unique upload id - * - * @type string - */ - id: null, - - /** - * Upload data structure - */ - data: null, - - /** - * Upload element - * - * @type Object - */ - $uploadEl: null, - - /** - * Target folder - * - * @type string - */ - _targetFolder: '', - - /** - * @type int - */ - _conflictMode: OC.FileUpload.CONFLICT_MODE_DETECT, - - /** - * New name from server after autorename - * - * @type String - */ - _newName: null, - - /** - * Returns the unique upload id - * - * @return string - */ - getId: function() { - return this.id; - }, - - /** - * Returns the file to be uploaded - * - * @return {File} file - */ - getFile: function() { - return this.data.files[0]; - }, - - /** - * Return the final filename. - * - * @return {String} file name - */ - getFileName: function() { - // autorenamed name - if (this._newName) { - return this._newName; - } - return this.getFile().name; - }, - - setTargetFolder: function(targetFolder) { - this._targetFolder = targetFolder; - }, - - getTargetFolder: function() { - return this._targetFolder; - }, - - /** - * Get full path for the target file, including relative path, - * without the file name. - * - * @return {String} full path - */ - getFullPath: function() { - return OC.joinPaths(this._targetFolder, this.getFile().relativePath || ''); - }, - - /** - * Get full path for the target file, - * including relative path and file name. - * - * @return {String} full path - */ - getFullFilePath: function() { - return OC.joinPaths(this.getFullPath(), this.getFile().name); - }, - - /** - * Returns conflict resolution mode. - * - * @return {number} conflict mode - */ - getConflictMode: function() { - return this._conflictMode || OC.FileUpload.CONFLICT_MODE_DETECT; - }, - - /** - * Set conflict resolution mode. - * See CONFLICT_MODE_* constants. - * - * @param {number} mode conflict mode - */ - setConflictMode: function(mode) { - this._conflictMode = mode; - }, - - deleteUpload: function() { - delete this.data.jqXHR; - }, - - /** - * Trigger autorename and append "(2)". - * Multiple calls will increment the appended number. - */ - autoRename: function() { - var name = this.getFile().name; - if (!this._renameAttempt) { - this._renameAttempt = 1; - } - - var dotPos = name.lastIndexOf('.'); - var extPart = ''; - if (dotPos > 0) { - this._newName = name.substr(0, dotPos); - extPart = name.substr(dotPos); - } else { - this._newName = name; - } - - // generate new name - this._renameAttempt++; - this._newName = this._newName + ' (' + this._renameAttempt + ')' + extPart; - }, - - /** - * Submit the upload - */ - submit: function() { - var self = this; - var data = this.data; - var file = this.getFile(); - - // if file is a directory, just create it - // files are handled separately - if (file.isDirectory) { - return this.uploader.ensureFolderExists(OC.joinPaths(this._targetFolder, file.fullPath)); - } - - if (self.aborted === true) { - return $.Deferred().resolve().promise(); - } - // it was a folder upload, so make sure the parent directory exists already - var folderPromise; - if (file.relativePath) { - folderPromise = this.uploader.ensureFolderExists(this.getFullPath()); - } else { - folderPromise = $.Deferred().resolve().promise(); - } - - if (this.uploader.fileList) { - this.data.url = this.uploader.fileList.getUploadUrl(this.getFileName(), this.getFullPath()); - } - - if (!this.data.headers) { - this.data.headers = {}; - } - - // webdav without multipart - this.data.multipart = false; - this.data.type = 'PUT'; - - delete this.data.headers['If-None-Match']; - if (this._conflictMode === OC.FileUpload.CONFLICT_MODE_DETECT - || this._conflictMode === OC.FileUpload.CONFLICT_MODE_AUTORENAME) { - this.data.headers['If-None-Match'] = '*'; - } - - var userName = this.uploader.davClient.getUserName(); - var password = this.uploader.davClient.getPassword(); - if (userName) { - // copy username/password from DAV client - this.data.headers['Authorization'] = - 'Basic ' + btoa(userName + ':' + (password || '')); - } - - var chunkFolderPromise; - if ($.support.blobSlice - && this.uploader.fileUploadParam.maxChunkSize - && this.getFile().size > this.uploader.fileUploadParam.maxChunkSize - ) { - data.isChunked = true; - var headers = { - Destination: this.uploader.davClient._buildUrl(this.getTargetDestination()) - }; - - chunkFolderPromise = this.uploader.davClient.createDirectory( - 'uploads/' + OC.getCurrentUser().uid + '/' + this.getId(), headers - ); - // TODO: if fails, it means same id already existed, need to retry - } else { - chunkFolderPromise = $.Deferred().resolve().promise(); - var mtime = this.getFile().lastModified; - if (mtime) { - data.headers['X-OC-Mtime'] = mtime / 1000; - } - } - - // wait for creation of the required directory before uploading - return Promise.all([folderPromise, chunkFolderPromise]).then(function() { - if (self.aborted !== true) { - data.submit(); - } - }, function() { - self.abort(); - }); - - }, - - /** - * Process end of transfer - */ - done: function() { - if (!this.data.isChunked) { - return $.Deferred().resolve().promise(); - } - - var uid = OC.getCurrentUser().uid; - var mtime = this.getFile().lastModified; - var size = this.getFile().size; - var headers = {}; - if (mtime) { - headers['X-OC-Mtime'] = mtime / 1000; - } - if (size) { - headers['OC-Total-Length'] = size; - } - headers['Destination'] = this.uploader.davClient._buildUrl(this.getTargetDestination()); - - return this.uploader.davClient.move( - 'uploads/' + uid + '/' + this.getId() + '/.file', - this.getTargetDestination(), - true, - headers - ); - }, - - getTargetDestination: function() { - var uid = OC.getCurrentUser().uid; - return 'files/' + uid + '/' + OC.joinPaths(this.getFullPath(), this.getFileName()); - }, - - _deleteChunkFolder: function() { - // delete transfer directory for this upload - this.uploader.davClient.remove( - 'uploads/' + OC.getCurrentUser().uid + '/' + this.getId() - ); - }, - - _delete: function() { - if (this.data.isChunked) { - this._deleteChunkFolder() - } - this.deleteUpload(); - }, - - /** - * Abort the upload - */ - abort: function() { - if (this.aborted) { - return - } - this.aborted = true; - if (this.data) { - // abort running XHR - this.data.abort(); - } - this._delete(); - }, - - /** - * Fail the upload - */ - fail: function() { - if (this.aborted) { - return - } - this._delete(); - }, - - /** - * Returns the server response - * - * @return {Object} response - */ - getResponse: function() { - var response = this.data.response(); - if (response.errorThrown || response.textStatus === 'error') { - // attempt parsing Sabre exception is available - var xml = response.jqXHR.responseXML; - if (xml && xml.documentElement.localName === 'error' && xml.documentElement.namespaceURI === 'DAV:') { - var messages = xml.getElementsByTagNameNS('http://sabredav.org/ns', 'message'); - var exceptions = xml.getElementsByTagNameNS('http://sabredav.org/ns', 'exception'); - if (messages.length) { - response.message = messages[0].textContent; - } - if (exceptions.length) { - response.exception = exceptions[0].textContent; - } - return response; - } - } - - if (typeof response.result !== 'string' && response.result) { - //fetch response from iframe - response = $.parseJSON(response.result[0].body.innerText); - if (!response) { - // likely due to internal server error - response = {status: 500}; - } - } else { - response = response.result; - } - return response; - }, - - /** - * Returns the status code from the response - * - * @return {number} status code - */ - getResponseStatus: function() { - if (this.uploader.isXHRUpload()) { - var xhr = this.data.response().jqXHR; - if (xhr) { - return xhr.status; - } - return null; - } - return this.getResponse().status; - }, - - /** - * Returns the response header by name - * - * @param {String} headerName header name - * @return {Array|String} response header value(s) - */ - getResponseHeader: function(headerName) { - headerName = headerName.toLowerCase(); - if (this.uploader.isXHRUpload()) { - return this.data.response().jqXHR.getResponseHeader(headerName); - } - - var headers = this.getResponse().headers; - if (!headers) { - return null; - } - - var value = _.find(headers, function(value, key) { - return key.toLowerCase() === headerName; - }); - if (_.isArray(value) && value.length === 1) { - return value[0]; - } - return value; - } -}; - -/** - * keeps track of uploads in progress and implements callbacks for the conflicts dialog - * @namespace - */ - -OC.Uploader = function() { - this.init.apply(this, arguments); -}; - -OC.Uploader.prototype = _.extend({ - /** - * @type Array - */ - _uploads: {}, - - /** - * Count of upload done promises that have not finished yet. - * - * @type int - */ - _pendingUploadDoneCount: 0, - - /** - * Is it currently uploading? - * - * @type boolean - */ - _uploading: false, - - /** - * List of directories known to exist. - * - * Key is the fullpath and value is boolean, true meaning that the directory - * was already created so no need to create it again. - */ - _knownDirs: {}, - - /** - * @type OCA.Files.FileList - */ - fileList: null, - - /** - * @type OCA.Files.OperationProgressBar - */ - progressBar: null, - - /** - * @type OC.Files.Client - */ - filesClient: null, - - /** - * Webdav client pointing at the root "dav" endpoint - * - * @type OC.Files.Client - */ - davClient: null, - - /** - * Function that will allow us to know if Ajax uploads are supported - * @link https://github.com/New-Bamboo/example-ajax-upload/blob/master/public/index.html - * also see article @link http://blog.new-bamboo.co.uk/2012/01/10/ridiculously-simple-ajax-uploads-with-formdata - */ - _supportAjaxUploadWithProgress: function() { - if (window.TESTING) { - return true; - } - return supportFileAPI() && supportAjaxUploadProgressEvents() && supportFormData(); - - // Is the File API supported? - function supportFileAPI() { - var fi = document.createElement('INPUT'); - fi.type = 'file'; - return 'files' in fi; - } - - // Are progress events supported? - function supportAjaxUploadProgressEvents() { - var xhr = new XMLHttpRequest(); - return !! (xhr && ('upload' in xhr) && ('onprogress' in xhr.upload)); - } - - // Is FormData supported? - function supportFormData() { - return !! window.FormData; - } - }, - - /** - * Returns whether an XHR upload will be used - * - * @return {boolean} true if XHR upload will be used, - * false for iframe upload - */ - isXHRUpload: function () { - return !this.fileUploadParam.forceIframeTransport && - ((!this.fileUploadParam.multipart && $.support.xhrFileUpload) || - $.support.xhrFormDataFileUpload); - }, - - /** - * Makes sure that the upload folder and its parents exists - * - * @param {String} fullPath full path - * @return {Promise} promise that resolves when all parent folders - * were created - */ - ensureFolderExists: function(fullPath) { - if (!fullPath || fullPath === '/') { - return $.Deferred().resolve().promise(); - } - - // remove trailing slash - if (fullPath.charAt(fullPath.length - 1) === '/') { - fullPath = fullPath.substr(0, fullPath.length - 1); - } - - var self = this; - var promise = this._knownDirs[fullPath]; - - if (this.fileList) { - // assume the current folder exists - this._knownDirs[this.fileList.getCurrentDirectory()] = $.Deferred().resolve().promise(); - } - - if (!promise) { - var deferred = new $.Deferred(); - promise = deferred.promise(); - this._knownDirs[fullPath] = promise; - - // make sure all parents already exist - var parentPath = OC.dirname(fullPath); - var parentPromise = this._knownDirs[parentPath]; - if (!parentPromise) { - parentPromise = this.ensureFolderExists(parentPath); - } - - parentPromise.then(function() { - self.filesClient.createDirectory(fullPath).always(function(status) { - // 405 is expected if the folder already exists - if ((status >= 200 && status < 300) || status === 405) { - if (status !== 405) { - self.trigger('createdfolder', fullPath); - } - deferred.resolve(); - return; - } - OC.Notification.show(t('files', 'Could not create folder "{dir}"', {dir: fullPath}), {type: 'error'}); - deferred.reject(); - }); - }, function() { - deferred.reject(); - }); - } - - return promise; - }, - - /** - * Submit the given uploads - * - * @param {Array} array of uploads to start - */ - submitUploads: function(uploads) { - var self = this; - _.each(uploads, function(upload) { - self._uploads[upload.data.uploadId] = upload; - }); - if (!self._uploading) { - self.totalToUpload = 0; - self.totalUploadCount = 0; - } - self.totalToUpload += _.reduce(uploads, function(memo, upload) { return memo+upload.getFile().size; }, 0); - self.totalUploadCount += uploads.length; - var semaphore = new OCA.Files.Semaphore(5); - var promises = _.map(uploads, function(upload) { - return semaphore.acquire().then(function(){ - return upload.submit().then(function(){ - semaphore.release(); - }); - }); - }); - }, - - confirmBeforeUnload: function() { - if (this._uploading) { - return t('files', 'This will stop your current uploads.') - } - }, - - /** - * Show conflict for the given file object - * - * @param {OC.FileUpload} file upload object - */ - showConflict: function(fileUpload) { - //show "file already exists" dialog - var self = this; - var file = fileUpload.getFile(); - // already attempted autorename but the server said the file exists ? (concurrently added) - if (fileUpload.getConflictMode() === OC.FileUpload.CONFLICT_MODE_AUTORENAME) { - // attempt another autorename, defer to let the current callback finish - _.defer(function() { - self.onAutorename(fileUpload); - }); - return; - } - // retrieve more info about this file - this.filesClient.getFileInfo(fileUpload.getFullFilePath()).then(function(status, fileInfo) { - var original = fileInfo; - var replacement = file; - original.directory = original.path; - OC.dialogs.fileexists(fileUpload, original, replacement, self); - }); - }, - /** - * cancels all uploads - */ - cancelUploads:function() { - this.log('canceling uploads'); - jQuery.each(this._uploads, function(i, upload) { - upload.abort(); - }); - this.clear(); - }, - /** - * Clear uploads - */ - clear: function() { - this._knownDirs = {}; - }, - /** - * Returns an upload by id - * - * @param {number} data uploadId - * @return {OC.FileUpload} file upload - */ - getUpload: function(data) { - if (_.isString(data)) { - return this._uploads[data]; - } else if (data.uploadId && this._uploads[data.uploadId]) { - this._uploads[data.uploadId].data = data; - return this._uploads[data.uploadId]; - } - return null; - }, - - /** - * Removes an upload from the list of known uploads. - * - * @param {OC.FileUpload} upload the upload to remove. - */ - removeUpload: function(upload) { - if (!upload || !upload.data || !upload.data.uploadId) { - return; - } - - // defer as some calls/chunks might still be busy failing, so we need - // the upload info there still - var self = this; - var uploadId = upload.data.uploadId; - // mark as deleted for the progress bar - this._uploads[uploadId].deleted = true; - window.setTimeout(function() { - delete self._uploads[uploadId]; - }, 5000) - }, - - _activeUploadCount: function() { - var count = 0; - for (var key in this._uploads) { - if (!this._uploads[key].deleted) { - count++; - } - } - - return count; - }, - - showUploadCancelMessage: _.debounce(function() { - OC.Notification.show(t('files', 'Upload cancelled.'), { timeout : 7000, type: 'error' }); - }, 500), - - /** - * callback for the conflicts dialog - */ - onCancel:function() { - this.cancelUploads(); - }, - /** - * callback for the conflicts dialog - * calls onSkip, onReplace or onAutorename for each conflict - * @param {object} conflicts - list of conflict elements - */ - onContinue:function(conflicts) { - var self = this; - //iterate over all conflicts - jQuery.each(conflicts, function (i, conflict) { - conflict = $(conflict); - var keepOriginal = conflict.find('.original input[type="checkbox"]:checked').length === 1; - var keepReplacement = conflict.find('.replacement input[type="checkbox"]:checked').length === 1; - if (keepOriginal && keepReplacement) { - // when both selected -> autorename - self.onAutorename(conflict.data('data')); - } else if (keepReplacement) { - // when only replacement selected -> overwrite - self.onReplace(conflict.data('data')); - } else { - // when only original selected -> skip - // when none selected -> skip - self.onSkip(conflict.data('data')); - } - }); - }, - /** - * handle skipping an upload - * @param {OC.FileUpload} upload - */ - onSkip:function(upload) { - this.log('skip', null, upload); - upload.deleteUpload(); - }, - /** - * handle replacing a file on the server with an uploaded file - * @param {FileUpload} data - */ - onReplace:function(upload) { - this.log('replace', null, upload); - upload.setConflictMode(OC.FileUpload.CONFLICT_MODE_OVERWRITE); - this.submitUploads([upload]); - }, - /** - * handle uploading a file and letting the server decide a new name - * @param {object} upload - */ - onAutorename:function(upload) { - this.log('autorename', null, upload); - upload.setConflictMode(OC.FileUpload.CONFLICT_MODE_AUTORENAME); - - do { - upload.autoRename(); - // if file known to exist on the client side, retry - } while (this.fileList && this.fileList.inList(upload.getFileName())); - - // resubmit upload - this.submitUploads([upload]); - }, - _trace: false, //TODO implement log handler for JS per class? - log: function(caption, e, data) { - if (this._trace) { - console.log(caption); - console.log(data); - } - }, - /** - * checks the list of existing files prior to uploading and shows a simple dialog to choose - * skip all, replace all or choose which files to keep - * - * @param {array} selection of files to upload - * @param {object} callbacks - object with several callback methods - * @param {Function} callbacks.onNoConflicts - * @param {Function} callbacks.onSkipConflicts - * @param {Function} callbacks.onReplaceConflicts - * @param {Function} callbacks.onChooseConflicts - * @param {Function} callbacks.onCancel - */ - checkExistingFiles: function (selection, callbacks) { - var fileList = this.fileList; - var conflicts = []; - // only keep non-conflicting uploads - selection.uploads = _.filter(selection.uploads, function(upload) { - var file = upload.getFile(); - if (file.relativePath) { - // can't check in subfolder contents - return true; - } - if (!fileList) { - // no list to check against - return true; - } - if (upload.getTargetFolder() !== fileList.getCurrentDirectory()) { - // not uploading to the current folder - return true; - } - var fileInfo = fileList.findFile(file.name); - if (fileInfo) { - conflicts.push([ - // original - _.extend(fileInfo, { - directory: fileInfo.directory || fileInfo.path || fileList.getCurrentDirectory() - }), - // replacement (File object) - upload - ]); - return false; - } - return true; - }); - if (conflicts.length) { - // wait for template loading - OC.dialogs.fileexists(null, null, null, this).done(function() { - _.each(conflicts, function(conflictData) { - OC.dialogs.fileexists(conflictData[1], conflictData[0], conflictData[1].getFile(), this); - }); - }); - } - - // upload non-conflicting files - // note: when reaching the server they might still meet conflicts - // if the folder was concurrently modified, these will get added - // to the already visible dialog, if applicable - callbacks.onNoConflicts(selection); - }, - - _updateProgressBarOnUploadStop: function() { - if (this._pendingUploadDoneCount === 0) { - // All the uploads ended and there is no pending operation, so hide - // the progress bar. - // Note that this happens here only with non-chunked uploads; if the - // upload was chunked then this will have been executed after all - // the uploads ended but before the upload done handler that reduces - // the pending operation count was executed. - this._hideProgressBar(); - - return; - } - - this._setProgressBarText(t('files', 'Processing files …'), t('files', '…')); - - // Nothing is being uploaded at this point, and the pending operations - // can not be cancelled, so the cancel button should be hidden. - this._hideCancelButton(); - }, - - _hideProgressBar: function() { - this.progressBar.hideProgressBar(); - }, - - _hideCancelButton: function() { - this.progressBar.hideCancelButton(); - }, - - _showProgressBar: function() { - this.progressBar.showProgressBar(); - }, - - _setProgressBarValue: function(value) { - this.progressBar.setProgressBarValue(value); - }, - - _setProgressBarText: function(textDesktop, textMobile, title) { - this.progressBar.setProgressBarText(textDesktop, textMobile, title); - }, - - /** - * Returns whether the given file is known to be a received shared file - * - * @param {Object} file file - * @return {boolean} true if the file is a shared file - */ - _isReceivedSharedFile: function(file) { - if (!window.FileList) { - return false; - } - var $tr = window.FileList.findFileEl(file.name); - if (!$tr.length) { - return false; - } - - return ($tr.attr('data-mounttype') === 'shared-root' && $tr.attr('data-mime') !== 'httpd/unix-directory'); - }, - - /** - * Initialize the upload object - * - * @param {Object} $uploadEl upload element - * @param {Object} options - * @param {OCA.Files.FileList} [options.fileList] file list object - * @param {OC.Files.Client} [options.filesClient] files client object - * @param {Object} [options.dropZone] drop zone for drag and drop upload - */ - init: function($uploadEl, options) { - var self = this; - - options = options || {}; - - this.fileList = options.fileList; - this.progressBar = options.progressBar; - this.filesClient = options.filesClient || OC.Files.getClient(); - this.davClient = new OC.Files.Client({ - host: this.filesClient.getHost(), - root: OC.linkToRemoteBase('dav'), - useHTTPS: OC.getProtocol() === 'https', - userName: this.filesClient.getUserName(), - password: this.filesClient.getPassword() - }); - - $uploadEl = $($uploadEl); - this.$uploadEl = $uploadEl; - - if ($uploadEl.exists()) { - this.progressBar.on('cancel', function() { - self.cancelUploads(); - self.showUploadCancelMessage(); - }); - - this.fileUploadParam = { - type: 'PUT', - dropZone: options.dropZone, // restrict dropZone to content div - autoUpload: false, - progressInterval: 300, // increased from the default of 100ms for more stable behvaviour when predicting remaining time - sequentialUploads: false, - limitConcurrentUploads: 4, - /** - * on first add of every selection - * - check all files of originalFiles array with files in dir - * - on conflict show dialog - * - skip all -> remember as single skip action for all conflicting files - * - replace all -> remember as single replace action for all conflicting files - * - choose -> show choose dialog - * - mark files to keep - * - when only existing -> remember as single skip action - * - when only new -> remember as single replace action - * - when both -> remember as single autorename action - * - start uploading selection - * @param {object} e - * @param {object} data - * @returns {boolean} - */ - add: function(e, data) { - self.log('add', e, data); - var that = $(this), freeSpace = 0; - - var upload = new OC.FileUpload(self, data); - // can't link directly due to jQuery not liking cyclic deps on its ajax object - data.uploadId = upload.getId(); - - // create a container where we can store the data objects - if ( ! data.originalFiles.selection ) { - // initialize selection and remember number of files to upload - data.originalFiles.selection = { - uploads: [], - filesToUpload: data.originalFiles.length, - totalBytes: 0 - }; - } - // TODO: move originalFiles to a separate container, maybe inside OC.Upload - var selection = data.originalFiles.selection; - - // add uploads - if ( selection.uploads.length < selection.filesToUpload ) { - // remember upload - selection.uploads.push(upload); - } - - //examine file - var file = upload.getFile(); - try { - // FIXME: not so elegant... need to refactor that method to return a value - Files.isFileNameValid(file.name); - } - catch (errorMessage) { - data.textStatus = 'invalidcharacters'; - data.errorThrown = errorMessage; - } - - if (data.targetDir) { - upload.setTargetFolder(data.targetDir); - delete data.targetDir; - } - - // in case folder drag and drop is not supported file will point to a directory - // http://stackoverflow.com/a/20448357 - if ( !file.type && file.size % 4096 === 0 && file.size <= 102400) { - var dirUploadFailure = false; - try { - var reader = new FileReader(); - reader.readAsBinaryString(file); - } catch (error) { - console.log(reader, error) - //file is a directory - dirUploadFailure = true; - } - - if (dirUploadFailure) { - data.textStatus = 'dirorzero'; - data.errorThrown = t('files', - 'Unable to upload {filename} as it is a directory or has 0 bytes', - {filename: file.name} - ); - } - } - - // only count if we're not overwriting an existing shared file - if (self._isReceivedSharedFile(file)) { - file.isReceivedShare = true; - } else { - // add size - selection.totalBytes += file.size; - } - - // check free space - if (!self.fileList || upload.getTargetFolder() === self.fileList.getCurrentDirectory()) { - // Use global free space if there is no file list to check or the current directory is the target - freeSpace = $('input[name=free_space]').val() - } else if (upload.getTargetFolder().indexOf(self.fileList.getCurrentDirectory()) === 0) { - // Check subdirectory free space if file is uploaded there - // Retrieve the folder destination name - var targetSubdir = upload._targetFolder.split('/').pop() - freeSpace = parseInt(upload.uploader.fileList.getModelForFile(targetSubdir).get('quotaAvailableBytes')) - } - if (freeSpace >= 0 && selection.totalBytes > freeSpace) { - data.textStatus = 'notenoughspace'; - data.errorThrown = t('files', - 'Not enough free space, you are uploading {size1} but only {size2} is left', { - 'size1': OC.Util.humanFileSize(selection.totalBytes, false, false), - 'size2': OC.Util.humanFileSize(freeSpace, false, false) - }); - } - - // end upload for whole selection on error - if (data.errorThrown) { - // trigger fileupload fail handler - var fu = that.data('blueimp-fileupload') || that.data('fileupload'); - fu._trigger('fail', e, data); - return false; //don't upload anything - } - - // check existing files when all is collected - if ( selection.uploads.length >= selection.filesToUpload ) { - - //remove our selection hack: - delete data.originalFiles.selection; - - var callbacks = { - - onNoConflicts: function (selection) { - self.submitUploads(selection.uploads); - }, - onSkipConflicts: function (selection) { - //TODO mark conflicting files as toskip - }, - onReplaceConflicts: function (selection) { - //TODO mark conflicting files as toreplace - }, - onChooseConflicts: function (selection) { - //TODO mark conflicting files as chosen - }, - onCancel: function (selection) { - $.each(selection.uploads, function(i, upload) { - upload.abort(); - }); - } - }; - - self.checkExistingFiles(selection, callbacks); - - } - - return true; // continue adding files - }, - /** - * called after the first add, does NOT have the data param - * @param {object} e - */ - start: function(e) { - self.log('start', e, null); - self._uploading = true; - }, - fail: function(e, data) { - var upload = self.getUpload(data); - var status = null; - if (upload) { - if (upload.aborted) { - // uploads might fail with errors from the server when aborted - return - } - status = upload.getResponseStatus(); - } - self.log('fail', e, upload); - - self.removeUpload(upload); - - if (data.textStatus === 'abort' || data.errorThrown === 'abort') { - return - } else if (status === 412) { - // file already exists - self.showConflict(upload); - } else if (status === 404) { - // target folder does not exist any more - OC.Notification.show(t('files', 'Target folder "{dir}" does not exist any more', {dir: upload.getFullPath()} ), {type: 'error'}); - self.cancelUploads(); - } else if (data.textStatus === 'notenoughspace') { - // not enough space - OC.Notification.show(t('files', 'Not enough free space'), {type: 'error'}); - self.cancelUploads(); - } else { - // HTTP connection problem or other error - var message = t('files', 'An unknown error has occurred'); - if (upload) { - var response = upload.getResponse(); - if (response) { - message = response.message; - } - } - console.error(e, data, response) - OC.Notification.show(message || data.errorThrown || t('files', 'File could not be uploaded'), {type: 'error'}); - } - - if (upload) { - upload.fail(); - } - }, - /** - * called for every successful upload - * @param {object} e - * @param {object} data - */ - done:function(e, data) { - var upload = self.getUpload(data); - var that = $(this); - self.log('done', e, upload); - - self.removeUpload(upload); - - var status = upload.getResponseStatus(); - if (status < 200 || status >= 300) { - // trigger fail handler - var fu = that.data('blueimp-fileupload') || that.data('fileupload'); - fu._trigger('fail', e, data); - return; - } - }, - /** - * called after last upload - * @param {object} e - * @param {object} data - */ - stop: function(e, data) { - self.log('stop', e, data); - self._uploading = false; - } - }; - - if (options.maxChunkSize) { - this.fileUploadParam.maxChunkSize = options.maxChunkSize; - } - - // initialize jquery fileupload (blueimp) - var fileupload = this.$uploadEl.fileupload(this.fileUploadParam); - - if (this._supportAjaxUploadWithProgress()) { - //remaining time - var lastUpdate, lastSize, bufferSize, buffer, bufferIndex, bufferTotal, smoothRemainingSeconds, smoothBitrate; - - var dragging = false; - - // add progress handlers - fileupload.on('fileuploadadd', function(e, data) { - self.log('progress handle fileuploadadd', e, data); - self.trigger('add', e, data); - }); - // add progress handlers - fileupload.on('fileuploadstart', function(e, data) { - self.log('progress handle fileuploadstart', e, data); - self._setProgressBarText(t('files', 'Uploading …'), t('files', '…')); - self._setProgressBarValue(0); - self._showProgressBar(); - // initial remaining time variables - lastUpdate = new Date().getTime(); - lastSize = 0; - bufferSize = 20; // length of the ring buffer - buffer = []; - bufferIndex = 0; // index of the ring buffer, runs from 0 to bufferSize continuously - bufferTotal = 0; - newTotal = 0; - smoothing = 0.02; // smoothing factor for EMA - h = ''; - bufferFilled = false; - - for(var i = 0; i < bufferSize; i++){ - buffer[i] = 0; - } - self.trigger('start', e, data); - }); - fileupload.on('fileuploadprogress', function(e, data) { - self.log('progress handle fileuploadprogress', e, data); - //TODO progressbar in row - self.trigger('progress', e, data); - }); - fileupload.on('fileuploadprogressall', function(e, data) { - self.log('progress handle fileuploadprogressall', e, data); - var total = self.totalToUpload; - var progress = (data.loaded / total) * 100; - var thisUpdate = new Date().getTime(); - var diffUpdate = (thisUpdate - lastUpdate)/1000; // eg. 2s - lastUpdate = thisUpdate; - var diffSize = data.loaded - lastSize; - if (diffSize <= 0) { - diffSize = lastSize; - } - lastSize = data.loaded; - diffSize = diffSize / diffUpdate; // apply timing factor, eg. 1MiB/2s = 0.5MiB/s, unit is byte per second - var remainingSeconds = ((total - data.loaded) / diffSize); - - if(remainingSeconds >= 0) { - // bufferTotal holds the sum of all entries in the buffer, initially 0 like the entries itself - // substract current entry from total and add the current value to total - bufferTotal = bufferTotal - (buffer[bufferIndex]) + remainingSeconds; - // put current value to the entry - buffer[bufferIndex] = remainingSeconds; //buffer to make it smoother - - bufferIndex = (bufferIndex + 1) % bufferSize; - } - if (bufferIndex === bufferSize - 1) { - bufferFilled = true; - } - //console.log('#', ' idx: ',bufferIndex, ' Total: ', bufferTotal, ' remainSeconds: ', remainingSeconds, ' during: ', diffUpdate); - - if (smoothRemainingSeconds) { - smoothRemainingSeconds = smoothing * (bufferTotal / bufferSize) + ((1-smoothing) * smoothRemainingSeconds); - } else { - smoothRemainingSeconds = bufferTotal / bufferSize; - } - - // the number of currently running uploads - const runningUploads = Object.keys(self._uploads).length; - - // Only show remaining time if enough buffer information is available and debounce to 1/4 - if (bufferFilled && bufferIndex % 4 === 0) { - h = moment.duration(smoothRemainingSeconds, "seconds").humanize({m: 50, h: 50}); - if (self.totalUploadCount > 1) { - h = t('files', '{remainingTime} ({currentNumber}/{total})', { remainingTime: h, currentNumber: self.totalUploadCount - runningUploads + 1, total: self.totalUploadCount }); - } - } - - // wait for the buffer to be filled and also show "Uploading ..." for durations longer than 4 hours - if (!bufferFilled || !(smoothRemainingSeconds >= 0 && smoothRemainingSeconds < 14400)) { - // Do not show file index when there is just one - if (self.totalUploadCount > 1) { - h = t('files', 'Uploading … ({currentNumber}/{total})', { currentNumber: self.totalUploadCount - runningUploads + 1, total: self.totalUploadCount }); - } else { - h = t('files', 'Uploading …'); - } - } - - // smooth bitrate - if (smoothBitrate) { - smoothBitrate = smoothing * data.bitrate + ((1-smoothing) * smoothBitrate); - } else { - smoothBitrate = data.bitrate; - } - - self._setProgressBarText(h, h, t('files', '{loadedSize} of {totalSize} ({bitrate})' , { - loadedSize: OC.Util.humanFileSize(data.loaded, false, false), - totalSize: OC.Util.humanFileSize(total, false, false), - bitrate: OC.Util.humanFileSize(smoothBitrate / 8, false, false) + '/s' - })); - self._setProgressBarValue(progress); - self.trigger('progressall', e, data); - }); - fileupload.on('fileuploadstop', function(e, data) { - self.log('progress handle fileuploadstop', e, data); - - self.clear(); - self._updateProgressBarOnUploadStop(); - self.trigger('stop', e, data); - }); - fileupload.on('fileuploadfail', function(e, data) { - self.log('progress handle fileuploadfail', e, data); - self.trigger('fail', e, data); - }); - fileupload.on('fileuploaddragover', function(e){ - $('#app-content').addClass('file-drag'); - $('.emptyfilelist.emptycontent .icon-folder').addClass('icon-filetype-folder-drag-accept'); - - var filerow = $(e.delegatedEvent.target).closest('tr'); - - if(!filerow.hasClass('dropping-to-dir')){ - $('.dropping-to-dir .icon-filetype-folder-drag-accept').removeClass('icon-filetype-folder-drag-accept'); - $('.dropping-to-dir').removeClass('dropping-to-dir'); - $('.dir-drop').removeClass('dir-drop'); - } - - if(filerow.attr('data-type') === 'dir'){ - $('#app-content').addClass('dir-drop'); - filerow.addClass('dropping-to-dir'); - filerow.find('.thumbnail').addClass('icon-filetype-folder-drag-accept'); - } - - dragging = true; - }); - - var disableDropState = function() { - $('#app-content').removeClass('file-drag'); - $('.dropping-to-dir').removeClass('dropping-to-dir'); - $('.dir-drop').removeClass('dir-drop'); - $('.icon-filetype-folder-drag-accept').removeClass('icon-filetype-folder-drag-accept'); - - dragging = false; - }; - - fileupload.on('fileuploaddragleave fileuploaddrop', disableDropState); - - // In some browsers the "drop" event can be triggered with no - // files even if the "dragover" event seemed to suggest that a - // file was being dragged (and thus caused "fileuploaddragover" - // to be triggered). - fileupload.on('fileuploaddropnofiles', function() { - if (!dragging) { - return; - } - - disableDropState(); - - OC.Notification.show(t('files', 'Uploading that item is not supported'), {type: 'error'}); - }); - - fileupload.on('fileuploadchunksend', function(e, data) { - // modify the request to adjust it to our own chunking - var upload = self.getUpload(data); - if (!upload) { - // likely cancelled - return - } - var range = data.contentRange.split(' ')[1]; - var chunkId = range.split('/')[0].split('-')[0]; - // Use a numeric chunk id and set the Destination header on all request for ChunkingV2 - chunkId = Math.ceil((data.chunkSize+Number(chunkId)) / upload.uploader.fileUploadParam.maxChunkSize); - data.headers['Destination'] = self.davClient._buildUrl(upload.getTargetDestination()); - - data.url = OC.getRootPath() + - '/remote.php/dav/uploads' + - '/' + OC.getCurrentUser().uid + - '/' + upload.getId() + - '/' + chunkId; - delete data.contentRange; - delete data.headers['Content-Range']; - }); - fileupload.on('fileuploaddone', function(e, data) { - var upload = self.getUpload(data); - - self._pendingUploadDoneCount++; - - upload.done().always(function() { - self._pendingUploadDoneCount--; - if (self._activeUploadCount() === 0 && self._pendingUploadDoneCount === 0) { - // All the uploads ended and there is no pending - // operation, so hide the progress bar. - // Note that this happens here only with chunked - // uploads; if the upload was non-chunked then this - // handler is immediately executed, before the - // jQuery upload done handler that removes the - // upload from the list, and thus at this point - // there is still at least one upload that has not - // ended (although the upload stop handler is always - // executed after all the uploads have ended, which - // hides the progress bar in that case). - self._hideProgressBar(); - } - }).done(function() { - self.trigger('done', e, upload); - }).fail(function(status, response) { - if (upload.aborted) { - return - } - - var message = response.message; - if (status === 507) { - // not enough space - OC.Notification.show(message || t('files', 'Not enough free space'), {type: 'error'}); - self.cancelUploads(); - } else if (status === 409) { - OC.Notification.show(message || t('files', 'Target folder does not exist any more'), {type: 'error'}); - } else if (status === 403) { - OC.Notification.show(message || t('files', 'Operation is blocked by access control'), {type: 'error'}); - } else { - OC.Notification.show(message || t('files', 'Error when assembling chunks, status code {status}', {status: status}), {type: 'error'}); - } - self.trigger('fail', e, data); - }); - }); - fileupload.on('fileuploaddrop', function(e, data) { - self.trigger('drop', e, data); - if (e.isPropagationStopped()) { - return false; - } - }); - } - window.onbeforeunload = function() { - return self.confirmBeforeUnload(); - } - } - - //add multiply file upload attribute to all browsers except konqueror (which crashes when it's used) - if (navigator.userAgent.search(/konqueror/i) === -1) { - this.$uploadEl.attr('multiple', 'multiple'); - } - - return this.fileUploadParam; - } -}, OC.Backbone.Events); diff --git a/apps/files/js/fileactions.js b/apps/files/js/fileactions.js deleted file mode 100644 index 579040d8d60ab..0000000000000 --- a/apps/files/js/fileactions.js +++ /dev/null @@ -1,915 +0,0 @@ -/** - * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors - * SPDX-FileCopyrightText: 2012-2016 ownCloud, Inc. - * SPDX-License-Identifier: AGPL-3.0-or-later - */ - -(function() { - - /** - * Construct a new FileActions instance - * @constructs FileActions - * @memberof OCA.Files - */ - var FileActions = function() { - this.initialize(); - }; - FileActions.TYPE_DROPDOWN = 0; - FileActions.TYPE_INLINE = 1; - FileActions.prototype = { - /** @lends FileActions.prototype */ - actions: {}, - defaults: {}, - icons: {}, - - /** - * @deprecated - */ - currentFile: null, - - /** - * Dummy jquery element, for events - */ - $el: null, - - _fileActionTriggerTemplate: null, - - /** - * @private - */ - initialize: function() { - this.clear(); - // abusing jquery for events until we get a real event lib - this.$el = $(''); - $('body').append(this.$el); - - this._showMenuClosure = _.bind(this._showMenu, this); - }, - - /** - * Adds an event handler - * - * @param {String} eventName event name - * @param {Function} callback - */ - on: function(eventName, callback) { - this.$el.on(eventName, callback); - }, - - /** - * Removes an event handler - * - * @param {String} eventName event name - * @param {Function} callback - */ - off: function(eventName, callback) { - this.$el.off(eventName, callback); - }, - - /** - * Notifies the event handlers - * - * @param {String} eventName event name - * @param {Object} data data - */ - _notifyUpdateListeners: function(eventName, data) { - this.$el.trigger(new $.Event(eventName, data)); - }, - - /** - * Merges the actions from the given fileActions into - * this instance. - * - * @param {OCA.Files.FileActions} fileActions instance of OCA.Files.FileActions - */ - merge: function(fileActions) { - var self = this; - // merge first level to avoid unintended overwriting - _.each(fileActions.actions, function(sourceMimeData, mime) { - var targetMimeData = self.actions[mime]; - if (!targetMimeData) { - targetMimeData = {}; - } - self.actions[mime] = _.extend(targetMimeData, sourceMimeData); - }); - - this.defaults = _.extend(this.defaults, fileActions.defaults); - this.icons = _.extend(this.icons, fileActions.icons); - }, - /** - * @deprecated use #registerAction() instead - */ - register: function(mime, name, permissions, icon, action, displayName) { - return this.registerAction({ - name: name, - mime: mime, - permissions: permissions, - icon: icon, - actionHandler: action, - displayName: displayName || name - }); - }, - - /** - * Register action - * - * @param {OCA.Files.FileAction} action object - */ - registerAction: function (action) { - var mime = action.mime; - var name = action.name; - var actionSpec = { - action: function(fileName, context) { - // Actions registered in one FileAction may be executed on a - // different one (for example, due to the "merge" function), - // so the listeners have to be updated on the FileActions - // from the context instead of on the one in which it was - // originally registered. - if (context && context.fileActions) { - context.fileActions._notifyUpdateListeners('beforeTriggerAction', {action: actionSpec, fileName: fileName, context: context}); - } - - action.actionHandler(fileName, context); - - if (context && context.fileActions) { - context.fileActions._notifyUpdateListeners('afterTriggerAction', {action: actionSpec, fileName: fileName, context: context}); - } - }, - name: name, - displayName: action.displayName, - mime: mime, - filename: action.filename, - order: action.order || 0, - icon: action.icon, - iconClass: action.iconClass, - permissions: action.permissions, - type: action.type || FileActions.TYPE_DROPDOWN, - altText: action.altText || '' - }; - if (_.isUndefined(action.displayName)) { - actionSpec.displayName = t('files', name); - } - if (_.isFunction(action.render)) { - actionSpec.render = action.render; - } - if (_.isFunction(action.shouldRender)) { - actionSpec.shouldRender = action.shouldRender; - } - if (!this.actions[mime]) { - this.actions[mime] = {}; - } - this.actions[mime][name] = actionSpec; - this.icons[name] = action.icon; - this._notifyUpdateListeners('registerAction', {action: action}); - }, - /** - * Clears all registered file actions. - */ - clear: function() { - this.actions = {}; - this.defaults = {}; - this.icons = {}; - this.currentFile = null; - }, - /** - * Sets the default action for a given mime type. - * - * @param {String} mime mime type - * @param {String} name action name - */ - setDefault: function (mime, name) { - this.defaults[mime] = name; - this._notifyUpdateListeners('setDefault', {defaultAction: {mime: mime, name: name}}); - }, - - /** - * Returns a map of file actions handlers matching the given conditions - * - * @param {string} mime mime type - * @param {string} type "dir" or "file" - * @param {number} permissions permissions - * @param {string} filename filename - * - * @return {Object.} map of action name to action spec - */ - get: function(mime, type, permissions, filename) { - var actions = this.getActions(mime, type, permissions, filename); - var filteredActions = {}; - $.each(actions, function (name, action) { - filteredActions[name] = action.action; - }); - return filteredActions; - }, - - /** - * Returns an array of file actions matching the given conditions - * - * @param {string} mime mime type - * @param {string} type "dir" or "file" - * @param {number} permissions permissions - * @param {string} filename filename - * - * @return {Array.} array of action specs - */ - getActions: function(mime, type, permissions, filename) { - var actions = {}; - if (this.actions.all) { - actions = $.extend(actions, this.actions.all); - } - if (type) {//type is 'dir' or 'file' - if (this.actions[type]) { - actions = $.extend(actions, this.actions[type]); - } - } - if (mime) { - var mimePart = mime.substr(0, mime.indexOf('/')); - if (this.actions[mimePart]) { - actions = $.extend(actions, this.actions[mimePart]); - } - if (this.actions[mime]) { - actions = $.extend(actions, this.actions[mime]); - } - } - - var filteredActions = {}; - var self = this; - $.each(actions, function(name, action) { - if (self.allowedPermissions(action.permissions, permissions) && - self.allowedFilename(action.filename, filename)) { - filteredActions[name] = action; - } - }); - - return filteredActions; - }, - - - allowedPermissions: function(actionPermissions, permissions) { - return (actionPermissions === OC.PERMISSION_NONE || (actionPermissions & permissions)); - }, - - allowedFilename: function(actionFilename, filename) { - return (!filename || filename === '' || !actionFilename - || actionFilename === '' || actionFilename === filename); - }, - - /** - * Returns the default file action handler for the given conditions - * - * @param {string} mime mime type - * @param {string} type "dir" or "file" - * @param {number} permissions permissions - * - * @return {OCA.Files.FileActions~actionHandler} action handler - * - * @deprecated use getDefaultFileAction instead - */ - getDefault: function (mime, type, permissions) { - var defaultActionSpec = this.getDefaultFileAction(mime, type, permissions); - if (defaultActionSpec) { - return defaultActionSpec.action; - } - return undefined; - }, - - /** - * Returns the default file action handler for the current file - * - * @return {OCA.Files.FileActions~actionSpec} action spec - * @since 8.2 - */ - getCurrentDefaultFileAction: function() { - var mime = this.getCurrentMimeType(); - var type = this.getCurrentType(); - var permissions = this.getCurrentPermissions(); - return this.getDefaultFileAction(mime, type, permissions); - }, - - /** - * Returns the default file action handler for the given conditions - * - * @param {string} mime mime type - * @param {string} type "dir" or "file" - * @param {number} permissions permissions - * - * @return {OCA.Files.FileActions~actionSpec} action spec - * @since 8.2 - */ - getDefaultFileAction: function(mime, type, permissions) { - var mimePart; - if (mime) { - mimePart = mime.substr(0, mime.indexOf('/')); - } - var name = false; - if (mime && this.defaults[mime]) { - name = this.defaults[mime]; - } else if (mime && this.defaults[mimePart]) { - name = this.defaults[mimePart]; - } else if (type && this.defaults[type]) { - name = this.defaults[type]; - } else { - name = this.defaults.all; - } - var actions = this.getActions(mime, type, permissions); - return actions[name]; - }, - - /** - * Default function to render actions - * - * @param {OCA.Files.FileAction} actionSpec file action spec - * @param {boolean} isDefault true if the action is a default one, - * false otherwise - * @param {OCA.Files.FileActionContext} context action context - */ - _defaultRenderAction: function(actionSpec, isDefault, context) { - if (!isDefault) { - var params = { - name: actionSpec.name, - nameLowerCase: actionSpec.name.toLowerCase(), - displayName: actionSpec.displayName, - icon: actionSpec.icon, - iconClass: actionSpec.iconClass, - altText: actionSpec.altText, - hasDisplayName: !!actionSpec.displayName - }; - if (_.isFunction(actionSpec.icon)) { - params.icon = actionSpec.icon(context.$file.attr('data-file'), context); - } - if (_.isFunction(actionSpec.iconClass)) { - params.iconClass = actionSpec.iconClass(context.$file.attr('data-file'), context); - } - - var $actionLink = this._makeActionLink(params, context); - context.$file.find('a.name>span.fileactions').append($actionLink); - $actionLink.addClass('permanent'); - return $actionLink; - } - }, - - /** - * Renders the action link element - * - * @param {Object} params action params - */ - _makeActionLink: function(params) { - return $(OCA.Files.Templates['file_action_trigger'](params)); - }, - - /** - * Displays the file actions dropdown menu - * - * @param {string} fileName file name - * @param {OCA.Files.FileActionContext} context rendering context - */ - _showMenu: function(fileName, context) { - var menu; - var $trigger = context.$file.closest('tr').find('.fileactions .action-menu'); - $trigger.addClass('open'); - $trigger.attr('aria-expanded', 'true'); - - menu = new OCA.Files.FileActionsMenu(); - - context.$file.find('td.filename').append(menu.$el); - - menu.$el.on('afterHide', function() { - context.$file.removeClass('mouseOver'); - $trigger.removeClass('open'); - $trigger.attr('aria-expanded', 'false'); - menu.remove(); - }); - - context.$file.addClass('mouseOver'); - menu.show(context); - }, - - /** - * Renders the menu trigger on the given file list row - * - * @param {Object} $tr file list row element - * @param {OCA.Files.FileActionContext} context rendering context - */ - _renderMenuTrigger: function($tr, context) { - // remove previous - $tr.find('.action-menu').remove(); - - var $el = this._renderInlineAction({ - name: 'menu', - displayName: '', - iconClass: 'icon-more', - altText: t('files', 'Actions'), - action: this._showMenuClosure - }, false, context); - - $el.addClass('permanent'); - $el.attr('aria-expanded', 'false'); - - }, - - /** - * Renders the action element by calling actionSpec.render() and - * registers the click event to process the action. - * - * @param {OCA.Files.FileAction} actionSpec file action to render - * @param {boolean} isDefault true if the action is a default action, - * false otherwise - * @param {OCA.Files.FileActionContext} context rendering context - */ - _renderInlineAction: function(actionSpec, isDefault, context) { - if (actionSpec.shouldRender) { - if (!actionSpec.shouldRender(context)) { - return; - } - } - var renderFunc = actionSpec.render || _.bind(this._defaultRenderAction, this); - var $actionEl = renderFunc(actionSpec, isDefault, context); - if (!$actionEl || !$actionEl.length) { - return; - } - $actionEl.on( - 'click', { - a: null - }, - function(event) { - event.stopPropagation(); - event.preventDefault(); - - if ($actionEl.hasClass('open')) { - return; - } - - var $file = $(event.target).closest('tr'); - if ($file.hasClass('busy')) { - return; - } - var currentFile = $file.find('td.filename'); - var fileName = $file.attr('data-file'); - - context.fileActions.currentFile = currentFile; - - var callContext = _.extend({}, context); - - if (!context.dir && context.fileList) { - callContext.dir = $file.attr('data-path') || context.fileList.getCurrentDirectory(); - } - - if (!context.fileInfoModel && context.fileList) { - callContext.fileInfoModel = context.fileList.getModelForFile(fileName); - if (!callContext.fileInfoModel) { - console.warn('No file info model found for file "' + fileName + '"'); - } - } - - actionSpec.action( - fileName, - callContext - ); - } - ); - - return $actionEl; - }, - - /** - * Trigger the given action on the given file. - * - * @param {string} actionName action name - * @param {OCA.Files.FileInfoModel} fileInfoModel file info model - * @param {OCA.Files.FileList} [fileList] file list, for compatibility with older action handlers [DEPRECATED] - * - * @return {boolean} true if the action handler was called, false otherwise - * - * @since 8.2 - */ - triggerAction: function(actionName, fileInfoModel, fileList) { - var actionFunc; - var actions = this.get( - fileInfoModel.get('mimetype'), - fileInfoModel.isDirectory() ? 'dir' : 'file', - fileInfoModel.get('permissions'), - fileInfoModel.get('name') - ); - - if (actionName) { - actionFunc = actions[actionName]; - } else { - actionFunc = this.getDefault( - fileInfoModel.get('mimetype'), - fileInfoModel.isDirectory() ? 'dir' : 'file', - fileInfoModel.get('permissions') - ); - } - - if (!actionFunc) { - actionFunc = actions['Download']; - } - - if (!actionFunc) { - return false; - } - - var context = { - fileActions: this, - fileInfoModel: fileInfoModel, - dir: fileInfoModel.get('path') - }; - - var fileName = fileInfoModel.get('name'); - this.currentFile = fileName; - - if (fileList) { - // compatibility with action handlers that expect these - context.fileList = fileList; - context.$file = fileList.findFileEl(fileName); - } - - actionFunc(fileName, context); - }, - - /** - * Display file actions for the given element - * @param parent "td" element of the file for which to display actions - * @param triggerEvent if true, triggers the fileActionsReady on the file - * list afterwards (false by default) - * @param fileList OCA.Files.FileList instance on which the action is - * done, defaults to OCA.Files.App.fileList - */ - display: function (parent, triggerEvent, fileList) { - if (!fileList) { - console.warn('FileActions.display() MUST be called with a OCA.Files.FileList instance'); - return; - } - this.currentFile = parent; - var self = this; - var $tr = parent.closest('tr'); - var actions = this.getActions( - this.getCurrentMimeType(), - this.getCurrentType(), - this.getCurrentPermissions(), - this.getCurrentFile() - ); - var nameLinks; - if ($tr.data('renaming')) { - return; - } - - // recreate fileactions container - nameLinks = parent.children('a.name'); - nameLinks.find('.fileactions, .nametext .action').remove(); - nameLinks.append(''); - var defaultAction = this.getDefaultFileAction( - this.getCurrentMimeType(), - this.getCurrentType(), - this.getCurrentPermissions() - ); - - var context = { - $file: $tr, - fileActions: this, - fileList: fileList - }; - - $.each(actions, function (name, actionSpec) { - if (actionSpec.type === FileActions.TYPE_INLINE) { - self._renderInlineAction( - actionSpec, - defaultAction && actionSpec.name === defaultAction.name, - context - ); - } - }); - - function objectValues(obj) { - var res = []; - for (var i in obj) { - if (obj.hasOwnProperty(i)) { - res.push(obj[i]); - } - } - return res; - } - // polyfill - if (!Object.values) { - Object.values = objectValues; - } - - var menuActions = Object.values(actions).filter(function (action) { - return action.type !== OCA.Files.FileActions.TYPE_INLINE && (!defaultAction || action.name !== defaultAction.name) - }); - // do not render the menu if nothing is in it - if (menuActions.length > 0) { - this._renderMenuTrigger($tr, context); - } - - if (triggerEvent){ - fileList.$fileList.trigger(jQuery.Event("fileActionsReady", {fileList: fileList, $files: $tr})); - } - }, - getCurrentFile: function () { - return this.currentFile.parent().attr('data-file'); - }, - getCurrentMimeType: function () { - return this.currentFile.parent().attr('data-mime'); - }, - getCurrentType: function () { - return this.currentFile.parent().attr('data-type'); - }, - getCurrentPermissions: function () { - return this.currentFile.parent().data('permissions'); - }, - - /** - * Register the actions that are used by default for the files app. - */ - registerDefaultActions: function() { - this.registerAction({ - name: 'Download', - displayName: t('files', 'Download'), - order: -20, - mime: 'all', - permissions: OC.PERMISSION_READ, - iconClass: 'icon-download', - actionHandler: function (filename, context) { - var dir = context.dir || context.fileList.getCurrentDirectory(); - var isDir = context.$file.attr('data-type') === 'dir'; - var url = context.fileList.getDownloadUrl(filename, dir, isDir); - - var downloadFileaction = $(context.$file).find('.fileactions .action-download'); - - // don't allow a second click on the download action - if(downloadFileaction.hasClass('disabled')) { - return; - } - - if (url) { - var disableLoadingState = function() { - context.fileList.showFileBusyState(filename, false); - }; - - context.fileList.showFileBusyState(filename, true); - OCA.Files.Files.handleDownload(url, disableLoadingState); - } - } - }); - - this.registerAction({ - name: 'Rename', - displayName: t('files', 'Rename'), - mime: 'all', - order: -30, - permissions: OC.PERMISSION_UPDATE, - iconClass: 'icon-rename', - actionHandler: function (filename, context) { - context.fileList.rename(filename); - } - }); - - this.registerAction({ - name: 'MoveCopy', - displayName: function(context) { - var permissions = context.fileInfoModel.attributes.permissions; - if (permissions & OC.PERMISSION_UPDATE) { - if (!context.fileInfoModel.canDownload()) { - return t('files', 'Move'); - } - return t('files', 'Move or copy'); - } - return t('files', 'Copy'); - }, - mime: 'all', - order: -25, - permissions: $('#isPublic').val() ? OC.PERMISSION_UPDATE : OC.PERMISSION_READ, - iconClass: 'icon-external', - actionHandler: function (filename, context) { - var permissions = context.fileInfoModel.attributes.permissions; - var actions = OC.dialogs.FILEPICKER_TYPE_COPY; - if (permissions & OC.PERMISSION_UPDATE) { - if (!context.fileInfoModel.canDownload()) { - actions = OC.dialogs.FILEPICKER_TYPE_MOVE; - } else { - actions = OC.dialogs.FILEPICKER_TYPE_COPY_MOVE; - } - } - var dialogDir = context.dir; - if (typeof context.fileList.dirInfo.dirLastCopiedTo !== 'undefined') { - dialogDir = context.fileList.dirInfo.dirLastCopiedTo; - } - OC.dialogs.filepicker(t('files', 'Choose target folder'), function(targetPath, type) { - if (type === OC.dialogs.FILEPICKER_TYPE_COPY) { - context.fileList.copy(filename, targetPath, false, context.dir); - } - if (type === OC.dialogs.FILEPICKER_TYPE_MOVE) { - context.fileList.move(filename, targetPath, false, context.dir); - } - context.fileList.dirInfo.dirLastCopiedTo = targetPath; - }, false, "httpd/unix-directory", true, actions, dialogDir); - } - }); - - if (Boolean(OC.appswebroots.files_reminders) && Boolean(OC.appswebroots.notifications)) { - this.registerAction({ - name: 'SetReminder', - displayName: function(_context) { - return t('files', 'Set reminder'); - }, - mime: 'all', - order: -24, - icon: function(_filename, _context) { - return OC.imagePath('files_reminders', 'alarm.svg') - }, - permissions: $('#isPublic').val() ? null : OC.PERMISSION_READ, - actionHandler: function(_filename, _context) {}, - }); - } - - if (!/Android|iPhone|iPad|iPod/i.test(navigator.userAgent) && !!window.oc_current_user) { - this.registerAction({ - name: 'EditLocally', - displayName: function(context) { - var locked = context.$file.data('locked'); - if (!locked) { - return t('files', 'Edit locally'); - } - }, - mime: 'all', - order: -23, - icon: function(filename, context) { - var locked = context.$file.data('locked'); - if (!locked) { - return OC.imagePath('files', 'computer.svg') - } - }, - permissions: OC.PERMISSION_UPDATE, - actionHandler: function (filename, context) { - var dir = context.dir || context.fileList.getCurrentDirectory(); - var path = dir === '/' ? dir + filename : dir + '/' + filename; - context.fileList.openLocalClient(path); - }, - }); - } - - this.registerAction({ - name: 'Open', - mime: 'dir', - permissions: OC.PERMISSION_READ, - icon: '', - actionHandler: function (filename, context) { - let dir, id - if (context.$file) { - dir = context.$file.attr('data-path') - id = context.$file.attr('data-id') - } else { - dir = context.fileList.getCurrentDirectory() - id = context.fileId - } - if (OCA.Files.App && OCA.Files.App.getActiveView() !== 'files') { - OCA.Files.App.setActiveView('files', {silent: true}); - OCA.Files.App.fileList.changeDirectory(OC.joinPaths(dir, filename), true, true); - } else { - context.fileList.changeDirectory(OC.joinPaths(dir, filename), true, false, parseInt(id, 10)); - } - }, - displayName: t('files', 'Open') - }); - - this.registerAction({ - name: 'Delete', - displayName: function(context) { - var mountType = context.$file.attr('data-mounttype'); - var type = context.$file.attr('data-type'); - var deleteTitle = (type && type === 'file') - ? t('files', 'Delete file') - : t('files', 'Delete folder') - if (mountType === 'external-root') { - deleteTitle = t('files', 'Disconnect storage'); - } else if (mountType === 'shared-root') { - deleteTitle = t('files', 'Leave this share'); - } - return deleteTitle; - }, - mime: 'all', - order: 1000, - // permission is READ because we show a hint instead if there is no permission - permissions: OC.PERMISSION_DELETE, - iconClass: 'icon-delete', - actionHandler: function(fileName, context) { - // if there is no permission to delete do nothing - if((context.$file.data('permissions') & OC.PERMISSION_DELETE) === 0) { - return; - } - context.fileList.do_delete(fileName, context.dir); - $('.tipsy').remove(); - - // close sidebar on delete - const path = context.dir + '/' + fileName - if (OCA.Files.Sidebar && OCA.Files.Sidebar.file === path) { - OCA.Files.Sidebar.close() - } - } - }); - - this.setDefault('dir', 'Open'); - } - }; - - OCA.Files.FileActions = FileActions; - - /** - * Replaces the button icon with a loading spinner and vice versa - * - also adds the class disabled to the passed in element - * - * @param {jQuery} $buttonElement The button element - * @param {boolean} showIt whether to show the spinner(true) or to hide it(false) - */ - OCA.Files.FileActions.updateFileActionSpinner = function($buttonElement, showIt) { - var $icon = $buttonElement.find('.icon'); - if (showIt) { - var $loadingIcon = $(''); - $icon.after($loadingIcon); - $icon.addClass('hidden'); - } else { - $buttonElement.find('.icon-loading-small').remove(); - $buttonElement.find('.icon').removeClass('hidden'); - } - }; - - /** - * File action attributes. - * - * @todo make this a real class in the future - * @typedef {Object} OCA.Files.FileAction - * - * @property {String} name identifier of the action - * @property {(String|OCA.Files.FileActions~displayNameFunction)} displayName - * display name string for the action, or function that returns the display name. - * Defaults to the name given in name property - * @property {String} mime mime type - * @property {String} filename filename - * @property {number} permissions permissions - * @property {(Function|String)} icon icon path to the icon or function that returns it (deprecated, use iconClass instead) - * @property {(String|OCA.Files.FileActions~iconClassFunction)} iconClass class name of the icon (recommended for theming) - * @property {OCA.Files.FileActions~renderActionFunction} [render] optional rendering function - * @property {OCA.Files.FileActions~actionHandler} actionHandler action handler function - */ - - /** - * File action context attributes. - * - * @typedef {Object} OCA.Files.FileActionContext - * - * @property {Object} $file jQuery file row element - * @property {OCA.Files.FileActions} fileActions file actions object - * @property {OCA.Files.FileList} fileList file list object - */ - - /** - * Render function for actions. - * The function must render a link element somewhere in the DOM - * and return it. The function should NOT register the event handler - * as this will be done after the link was returned. - * - * @callback OCA.Files.FileActions~renderActionFunction - * @param {OCA.Files.FileAction} actionSpec action definition - * @param {Object} $row row container - * @param {boolean} isDefault true if the action is the default one, - * false otherwise - * @return {Object} jQuery link object - */ - - /** - * Display name function for actions. - * The function returns the display name of the action using - * the given context information.. - * - * @callback OCA.Files.FileActions~displayNameFunction - * @param {OCA.Files.FileActionContext} context action context - * @return {String} display name - */ - - /** - * Icon class function for actions. - * The function returns the icon class of the action using - * the given context information. - * - * @callback OCA.Files.FileActions~iconClassFunction - * @param {String} fileName name of the file on which the action must be performed - * @param {OCA.Files.FileActionContext} context action context - * @return {String} icon class - */ - - /** - * Action handler function for file actions - * - * @callback OCA.Files.FileActions~actionHandler - * @param {String} fileName name of the file on which the action must be performed - * @param context context - * @param {String} context.dir directory of the file - * @param {OCA.Files.FileInfoModel} fileInfoModel file info model - * @param {Object} [context.$file] jQuery element of the file [DEPRECATED] - * @param {OCA.Files.FileList} [context.fileList] the FileList instance on which the action occurred [DEPRECATED] - * @param {OCA.Files.FileActions} context.fileActions the FileActions instance on which the action occurred - */ - - // global file actions to be used by all lists - OCA.Files.fileActions = new OCA.Files.FileActions(); -})(); diff --git a/apps/files/js/fileactionsmenu.js b/apps/files/js/fileactionsmenu.js deleted file mode 100644 index 3d827615a4030..0000000000000 --- a/apps/files/js/fileactionsmenu.js +++ /dev/null @@ -1,143 +0,0 @@ -/** - * SPDX-FileCopyrightText: 2017-2024 Nextcloud GmbH and Nextcloud contributors - * SPDX-FileCopyrightText: 2015-2016 ownCloud, Inc. - * SPDX-License-Identifier: AGPL-3.0-or-later - */ - -(function() { - - /** - * Construct a new FileActionsMenu instance - * @constructs FileActionsMenu - * @memberof OCA.Files - */ - var FileActionsMenu = OC.Backbone.View.extend({ - tagName: 'div', - className: 'fileActionsMenu popovermenu bubble hidden open menu', - - /** - * Current context - * - * @type OCA.Files.FileActionContext - */ - _context: null, - - events: { - 'click a.action': '_onClickAction' - }, - - template: function(data) { - return OCA.Files.Templates['fileactionsmenu'](data); - }, - - /** - * Event handler whenever an action has been clicked within the menu - * - * @param {Object} event event object - */ - _onClickAction: function(event) { - var $target = $(event.target); - if (!$target.is('a')) { - $target = $target.closest('a'); - } - var fileActions = this._context.fileActions; - var actionName = $target.attr('data-action'); - var actions = fileActions.getActions( - fileActions.getCurrentMimeType(), - fileActions.getCurrentType(), - fileActions.getCurrentPermissions(), - fileActions.getCurrentFile() - ); - var actionSpec = actions[actionName]; - var fileName = this._context.$file.attr('data-file'); - - event.stopPropagation(); - event.preventDefault(); - - OC.hideMenus(); - - actionSpec.action( - fileName, - this._context - ); - }, - - /** - * Renders the menu with the currently set items - */ - render: function() { - var self = this; - var fileActions = this._context.fileActions; - var actions = fileActions.getActions( - fileActions.getCurrentMimeType(), - fileActions.getCurrentType(), - fileActions.getCurrentPermissions(), - fileActions.getCurrentFile() - ); - - var defaultAction = fileActions.getCurrentDefaultFileAction(); - - var items = _.filter(actions, function(actionSpec) { - return !defaultAction || actionSpec.name !== defaultAction.name; - }); - items = _.map(items, function(item) { - if (_.isFunction(item.displayName)) { - item = _.extend({}, item); - item.displayName = item.displayName(self._context); - } - if (_.isFunction(item.iconClass)) { - var fileName = self._context.$file.attr('data-file'); - item = _.extend({}, item); - item.iconClass = item.iconClass(fileName, self._context); - } - if (_.isFunction(item.icon)) { - var fileName = self._context.$file.attr('data-file'); - item = _.extend({}, item); - item.icon = item.icon(fileName, self._context); - } - item.inline = item.type === OCA.Files.FileActions.TYPE_INLINE - return item; - }); - items = items.sort(function(actionA, actionB) { - var orderA = actionA.order || 0; - var orderB = actionB.order || 0; - if (orderB === orderA) { - return OC.Util.naturalSortCompare(actionA.displayName, actionB.displayName); - } - return orderA - orderB; - }); - - items = _.map(items, function(item) { - item.nameLowerCase = item.name.toLowerCase(); - return item; - }); - - this.$el.html(this.template({ - items: items - })); - }, - - /** - * Displays the menu under the given element - * - * @param {OCA.Files.FileActionContext} context context - * @param {Object} $trigger trigger element - */ - show: function(context) { - this._context = context; - - this.render(); - this.$el.removeClass('hidden'); - - window._nc_event_bus.emit('files:action-menu:opened', { - el: this.$el[0], - context, - }) - - OC.showMenu(null, this.$el); - } - }); - - OCA.Files.FileActionsMenu = FileActionsMenu; - -})(); diff --git a/apps/files/js/fileinfomodel.js b/apps/files/js/fileinfomodel.js deleted file mode 100644 index 0c0061d4d138c..0000000000000 --- a/apps/files/js/fileinfomodel.js +++ /dev/null @@ -1,144 +0,0 @@ -/** - * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors - * SPDX-FileCopyrightText: 2015 ownCloud, Inc. - * SPDX-License-Identifier: AGPL-3.0-or-later - */ - -(function(OC, OCA) { - - /** - * @class OC.Files.FileInfo - * @classdesc File information - * - * @param {Object} attributes file data - * @param {number} attributes.id file id - * @param {string} attributes.name file name - * @param {string} attributes.path path leading to the file, - * without the file name and with a leading slash - * @param {number} attributes.size size - * @param {string} attributes.mimetype mime type - * @param {string} attributes.icon icon URL - * @param {number} attributes.permissions permissions - * @param {Date} attributes.mtime modification time - * @param {string} attributes.etag etag - * @param {string} mountType mount type - * - * @since 8.2 - */ - var FileInfoModel = OC.Backbone.Model.extend({ - - defaults: { - mimetype: 'application/octet-stream', - path: '' - }, - - _filesClient: null, - - initialize: function(data, options) { - if (!_.isUndefined(data.id)) { - data.id = parseInt(data.id, 10); - } - - if( options ){ - if (options.filesClient) { - this._filesClient = options.filesClient; - } - } - }, - - /** - * Returns whether this file is a directory - * - * @return {boolean} true if this is a directory, false otherwise - */ - isDirectory: function() { - return this.get('mimetype') === 'httpd/unix-directory'; - }, - - /** - * Returns whether this file is an image - * - * @return {boolean} true if this is an image, false otherwise - */ - isImage: function() { - if (!this.has('mimetype')) { - return false; - } - return this.get('mimetype').substr(0, 6) === 'image/' - || this.get('mimetype') === 'application/postscript' - || this.get('mimetype') === 'application/illustrator' - || this.get('mimetype') === 'application/x-photoshop'; - }, - - /** - * Returns the full path to this file - * - * @return {string} full path - */ - getFullPath: function() { - return OC.joinPaths(this.get('path'), this.get('name')); - }, - - /** - * Returns the mimetype of the file - * - * @return {string} mimetype - */ - getMimeType: function() { - return this.get('mimetype'); - }, - - /** - * Reloads missing properties from server and set them in the model. - * @param properties array of properties to be reloaded - * @return ajax call object - */ - reloadProperties: function(properties) { - if( !this._filesClient ){ - return; - } - - var self = this; - var deferred = $.Deferred(); - - var targetPath = OC.joinPaths(this.get('path') + '/', this.get('name')); - - this._filesClient.getFileInfo(targetPath, { - properties: properties - }) - .then(function(status, data) { - // the following lines should be extracted to a mapper - - if( properties.indexOf(OC.Files.Client.PROPERTY_GETCONTENTLENGTH) !== -1 - || properties.indexOf(OC.Files.Client.PROPERTY_SIZE) !== -1 ) { - self.set('size', data.size); - } - - deferred.resolve(status, data); - }) - .fail(function(status) { - OC.Notification.show(t('files', 'Could not load info for file "{file}"', {file: self.get('name')}), {type: 'error'}); - deferred.reject(status); - }); - - return deferred.promise(); - }, - - canDownload: function() { - for (const i in this.attributes.shareAttributes) { - const attr = this.attributes.shareAttributes[i] - if (attr.scope === 'permissions' && attr.key === 'download') { - return attr.value === true - } - } - - return true - }, - }); - - if (!OCA.Files) { - OCA.Files = {}; - } - OCA.Files.FileInfoModel = FileInfoModel; - -})(OC, OCA); diff --git a/apps/files/js/filelist.js b/apps/files/js/filelist.js deleted file mode 100644 index ab9c57bfd46fa..0000000000000 --- a/apps/files/js/filelist.js +++ /dev/null @@ -1,4038 +0,0 @@ -/** - * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors - * SPDX-FileCopyrightText: 2012-2016 ownCloud, Inc. - * SPDX-License-Identifier: AGPL-3.0-or-later - */ - -(function() { - - /** - * @class OCA.Files.FileList - * @classdesc - * - * The FileList class manages a file list view. - * A file list view consists of a controls bar and - * a file list table. - * - * @param $el container element with existing markup for the .files-controls - * and a table - * @param {Object} [options] map of options, see other parameters - * @param {Object} [options.scrollContainer] scrollable container, defaults to $(window) - * @param {Object} [options.dragOptions] drag options, disabled by default - * @param {Object} [options.folderDropOptions] folder drop options, disabled by default - * @param {boolean} [options.detailsViewEnabled=true] whether to enable details view - * @param {boolean} [options.enableUpload=false] whether to enable uploader - * @param {OC.Files.Client} [options.filesClient] files client to use - */ - var FileList = function($el, options) { - this.initialize($el, options); - }; - /** - * @memberof OCA.Files - */ - FileList.prototype = { - SORT_INDICATOR_ASC_CLASS: 'icon-triangle-n', - SORT_INDICATOR_DESC_CLASS: 'icon-triangle-s', - - id: 'files', - appName: t('files', 'Files'), - isEmpty: true, - useUndo:true, - - /** - * Top-level container with controls and file list - */ - $el: null, - - /** - * Files table - */ - $table: null, - - /** - * List of rows (table tbody) - */ - $fileList: null, - - $header: null, - headers: [], - - $footer: null, - footers: [], - - /** - * @type OCA.Files.BreadCrumb - */ - breadcrumb: null, - - /** - * @type OCA.Files.FileSummary - */ - fileSummary: null, - - /** - * @type OCA.Files.DetailsView - */ - _detailsView: null, - - /** - * Files client instance - * - * @type OC.Files.Client - */ - filesClient: null, - - /** - * Whether the file list was initialized already. - * @type boolean - */ - initialized: false, - - /** - * Wheater the file list was already shown once - * @type boolean - */ - shown: false, - - /** - * Number of files per page - * Always show a minimum of 1 - * - * @return {number} page size - */ - pageSize: function() { - var isGridView = this.$table.hasClass('view-grid'); - var columns = 1; - var rows = Math.ceil(this.$container.height() / 50); - if (isGridView) { - columns = Math.ceil(this.$container.width() / 160); - rows = Math.ceil(this.$container.height() / 160); - } - return Math.max(columns*rows, columns); - }, - - /** - * Array of files in the current folder. - * The entries are of file data. - * - * @type Array. - */ - files: [], - - /** - * Current directory entry - * - * @type OC.Files.FileInfo - */ - dirInfo: null, - - /** - * Whether to prevent or to execute the default file actions when the - * file name is clicked. - * - * @type boolean - */ - _defaultFileActionsDisabled: false, - - /** - * File actions handler, defaults to OCA.Files.FileActions - * @type OCA.Files.FileActions - */ - fileActions: null, - /** - * File selection menu, defaults to OCA.Files.FileSelectionMenu - * @type OCA.Files.FileSelectionMenu - */ - fileMultiSelectMenu: null, - /** - * Whether selection is allowed, checkboxes and selection overlay will - * be rendered - */ - _allowSelection: true, - - /** - * Map of file id to file data - * @type Object. - */ - _selectedFiles: {}, - - /** - * Summary of selected files. - * @type OCA.Files.FileSummary - */ - _selectionSummary: null, - - /** - * If not empty, only files containing this string will be shown - * @type String - */ - _filter: '', - - /** - * @type UserConfig - * @see /apps/files/lib/Service/UserConfig.php - */ - _filesConfig: undefined, - - /** - * Sort attribute - * @type String - */ - _sort: 'name', - - /** - * Sort direction: 'asc' or 'desc' - * @type String - */ - _sortDirection: 'asc', - - /** - * Sort comparator function for the current sort - * @type Function - */ - _sortComparator: null, - - /** - * Whether to do a client side sort. - * When false, clicking on a table header will call reload(). - * When true, clicking on a table header will simply resort the list. - */ - _clientSideSort: true, - - /** - * Whether or not users can change the sort attribute or direction - */ - _allowSorting: true, - - /** - * Current directory - * @type String - */ - _currentDirectory: null, - - _dragOptions: null, - _folderDropOptions: null, - - /** - * @type OC.Uploader - */ - _uploader: null, - - /** - * Initialize the file list and its components - * - * @param $el container element with existing markup for the .files-controls - * and a table - * @param options map of options, see other parameters - * @param options.scrollContainer scrollable container, defaults to $(window) - * @param options.dragOptions drag options, disabled by default - * @param options.folderDropOptions folder drop options, disabled by default - * @param options.scrollTo name of file to scroll to after the first load - * @param [options.dir='/'] current directory - * @param {OC.Files.Client} [options.filesClient] files API client - * @param {OC.Backbone.Model} [options.filesConfig] files app configuration - * @private - */ - initialize: function($el, options) { - var self = this; - options = options || {}; - if (this.initialized) { - return; - } - - if (options.shown) { - this.shown = options.shown; - } - - if (options.config) { - this._filesConfig = options.config; - } else if (!_.isUndefined(OCA.Files) && !_.isUndefined(OCA.Files.App)) { - this._filesConfig = OCA.Files.App.getFilesConfig(); - } else { - this._filesConfig = OCP.InitialState.loadState('files', 'config', {}) - } - - if (options.dragOptions) { - this._dragOptions = options.dragOptions; - } - if (options.folderDropOptions) { - this._folderDropOptions = options.folderDropOptions; - } - if (options.filesClient) { - this.filesClient = options.filesClient; - } else { - // default client if not specified - this.filesClient = OC.Files.getClient(); - } - - this.$el = $el; - if (options.id) { - this.id = options.id; - } - this.$container = options.scrollContainer || $('#app-content'); - this.$table = $el.find('table:first'); - this.$fileList = $el.find('.files-fileList'); - this.$header = $el.find('.filelist-header'); - this.$footer = $el.find('.filelist-footer'); - - // Legacy mapper for new vue components - window._nc_event_bus.subscribe('files:config:updated', ({ key, value }) => { - // Replace existing config with new one - Object.assign(this._filesConfig, { [key]: value }) - - if (key === 'show_hidden') { - self.$el.toggleClass('hide-hidden-files', !value); - self.updateSelectionSummary(); - - // hiding files could make the page too small, need to try rendering next page - if (!value) { - self._onScroll(); - } - } - if (key === 'crop_image_previews') { - self.reload(); - } - }) - - var config = OCP.InitialState.loadState('files', 'config', {}) - if (config.show_hidden === false) { - this.$el.addClass('hide-hidden-files'); - } - - if (_.isUndefined(options.detailsViewEnabled) || options.detailsViewEnabled) { - this._detailsView = new OCA.Files.DetailsView(); - this._detailsView.$el.addClass('disappear'); - } - - if (options && options.defaultFileActionsDisabled) { - this._defaultFileActionsDisabled = options.defaultFileActionsDisabled - } - - this._initFileActions(options.fileActions); - - if (this._detailsView) { - this._detailsView.addDetailView(new OCA.Files.MainFileInfoDetailView({fileList: this, fileActions: this.fileActions})); - } - - this.files = []; - this._selectedFiles = {}; - this._selectionSummary = new OCA.Files.FileSummary(undefined, {config: this._filesConfig}); - // dummy root dir info - this.dirInfo = new OC.Files.FileInfo({}); - - this.fileSummary = this._createSummary(); - - if (options.multiSelectMenu) { - this.multiSelectMenuItems = options.multiSelectMenu; - for (var i=0; i 0) { - $controls.prepend(this.breadcrumb.$el); - this.$table.addClass('has-controls'); - } - - this._renderNewButton(); - - this.$el.find('thead th .columntitle').click(_.bind(this._onClickHeader, this)); - - this._onResize = _.debounce(_.bind(this._onResize, this), 250); - $('#app-content').on('appresized', this._onResize); - $(window).resize(this._onResize); - - this.$el.on('show', this._onResize); - - // reload files list on share accept - $('body').on('OCA.Notification.Action', function(eventObject) { - if (eventObject.notification.app === 'files_sharing' && eventObject.action.type === 'POST') { - self.reload() - } - }); - - window._nc_event_bus.subscribe('files_sharing:share:created', () => { self.reload(true) }); - window._nc_event_bus.subscribe('files_sharing:share:deleted', () => { self.reload(true) }); - - this.$fileList.on('click','td.filename>a.name, td.filesize, td.date', _.bind(this._onClickFile, this)); - - this.$fileList.on("droppedOnFavorites", function (event, file) { - self.fileActions.triggerAction('Favorite', self.getModelForFile(file), self); - }); - - this.$fileList.on('droppedOnTrash', function (event, filename, directory) { - self.do_delete(filename, directory); - }); - - this.$fileList.on('change', 'td.selection>.selectCheckBox', _.bind(this._onClickFileCheckbox, this)); - this.$fileList.on('mouseover', 'td.selection', _.bind(this._onMouseOverCheckbox, this)); - this.$el.on('show', _.bind(this._onShow, this)); - this.$el.on('urlChanged', _.bind(this._onUrlChanged, this)); - this.$el.find('.select-all').click(_.bind(this._onClickSelectAll, this)); - this.$el.find('.actions-selected').click(function () { - self.fileMultiSelectMenu.show(self); - return false; - }); - - this.$container.on('scroll', _.bind(this._onScroll, this)); - - if (options.scrollTo) { - this.$fileList.one('updated', function() { - self.scrollTo(options.scrollTo); - }); - } - - if (!_.isUndefined(options.dir)) { - this._setCurrentDir(options.dir || '/', false); - } - - if (options.openFile) { - // Wait for some initialisation process to be over before triggering the default action. - _.defer(() => { - try { - var fileInfo = JSON.parse(atob($('#initial-state-files-openFileInfo').val())) - var spec = this.fileActions.getDefaultFileAction(fileInfo.mime, fileInfo.type, fileInfo.permissions) - if (spec && spec.action) { - spec.action(fileInfo.name, { - fileId: fileInfo.id, - fileList: this, - fileActions: this.fileActions, - dir: fileInfo.directory - }); - } else { - var url = this.getDownloadUrl(fileInfo.name, fileInfo.dir, true); - OCA.Files.Files.handleDownload(url); - } - - if (document.documentElement.clientWidth > 1024) { - OCA.Files.Sidebar.open(fileInfo.path); - } - } catch (error) { - console.error(`Failed to trigger default action on the file for URL: ${location.href}`, error) - } - }) - } - - this._operationProgressBar = new OCA.Files.OperationProgressBar(); - this._operationProgressBar.render(); - this.$el.find('#uploadprogresswrapper').replaceWith(this._operationProgressBar.$el); - - if (options.enableUpload) { - // TODO: auto-create this element - var $uploadEl = this.$el.find('#file_upload_start'); - if ($uploadEl.exists()) { - this._uploader = new OC.Uploader($uploadEl, { - progressBar: this._operationProgressBar, - fileList: this, - filesClient: this.filesClient, - dropZone: $('#content'), - maxChunkSize: options.maxChunkSize - }); - - this.setupUploadEvents(this._uploader); - } - } - this.triedActionOnce = false; - - OC.Plugins.attach('OCA.Files.FileList', this); - - OCA.Files.App && OCA.Files.App.updateCurrentFileList(this); - - this.initHeadersAndFooters() - }, - - initHeadersAndFooters: function() { - this.headers.sort(function(a, b) { - return a.order - b.order; - }) - this.footers.sort(function(a, b) { - return a.order - b.order; - }) - var uniqueIds = []; - var self = this; - this.headers.forEach(function(header) { - if (header.id) { - if (uniqueIds.indexOf(header.id) !== -1) { - return - } - uniqueIds.push(header.id) - } - self.$header.append(header.el) - - setTimeout(function() { - header.render(self) - }, 0) - }) - - uniqueIds = []; - this.footers.forEach(function(footer) { - if (footer.id) { - if (uniqueIds.indexOf(footer.id) !== -1) { - return - } - uniqueIds.push(footer.id) - } - self.$footer.append(footer.el) - setTimeout(function() { - footer.render(self) - }, 0) - }) - }, - - /** - * Destroy / uninitialize this instance. - */ - destroy: function() { - if (this._newFileMenu) { - this._newFileMenu.remove(); - } - if (this._newButton) { - this._newButton.remove(); - } - if (this._detailsView) { - this._detailsView.remove(); - } - // TODO: also unregister other event handlers - this.fileActions.off('registerAction', this._onFileActionsUpdated); - this.fileActions.off('setDefault', this._onFileActionsUpdated); - OC.Plugins.detach('OCA.Files.FileList', this); - $('#app-content').off('appresized', this._onResize); - }, - - _selectionMode: 'single', - _getCurrentSelectionMode: function () { - return this._selectionMode; - }, - _onClickToggleSelectionMode: function () { - this._selectionMode = (this._selectionMode === 'range') ? 'single' : 'range'; - if (this._selectionMode === 'single') { - this._removeHalfSelection(); - } - }, - - multiSelectMenuClick: function (ev, action) { - var actionFunction = _.find(this.multiSelectMenuItems, function (item) {return item.name === action;}).action; - if (actionFunction) { - actionFunction(this.getSelectedFiles()); - return; - } - switch (action) { - case 'delete': - this._onClickDeleteSelected(ev) - break; - case 'download': - this._onClickDownloadSelected(ev); - break; - case 'copyMove': - this._onClickCopyMoveSelected(ev); - break; - case 'restore': - this._onClickRestoreSelected(ev); - break; - case 'tags': - this._onClickTagSelected(ev); - break; - } - }, - /** - * Initializes the file actions, set up listeners. - * - * @param {OCA.Files.FileActions} fileActions file actions - */ - _initFileActions: function(fileActions) { - var self = this; - this.fileActions = fileActions; - if (!this.fileActions) { - this.fileActions = new OCA.Files.FileActions(); - this.fileActions.registerDefaultActions(); - } - - if (this._detailsView) { - this.fileActions.registerAction({ - name: 'Details', - displayName: t('files', 'Details'), - mime: 'all', - order: -50, - iconClass: 'icon-details', - permissions: OC.PERMISSION_NONE, - actionHandler: function(fileName, context) { - self._updateDetailsView(fileName); - } - }); - } - - this._onFileActionsUpdated = _.debounce(_.bind(this._onFileActionsUpdated, this), 100); - this.fileActions.on('registerAction', this._onFileActionsUpdated); - this.fileActions.on('setDefault', this._onFileActionsUpdated); - }, - - /** - * Returns a unique model for the given file name. - * - * @param {string|object} fileName file name or jquery row - * @return {OCA.Files.FileInfoModel} file info model - */ - getModelForFile: function(fileName) { - var self = this; - var $tr; - // jQuery object ? - if (fileName.is) { - $tr = fileName; - fileName = $tr.attr('data-file'); - } else { - $tr = this.findFileEl(fileName); - } - - if (!$tr || !$tr.length) { - return null; - } - - // if requesting the selected model, return it - if (this._currentFileModel && this._currentFileModel.get('name') === fileName) { - return this._currentFileModel; - } - - // TODO: note, this is a temporary model required for synchronising - // state between different views. - // In the future the FileList should work with Backbone.Collection - // and contain existing models that can be used. - // This method would in the future simply retrieve the matching model from the collection. - var model = new OCA.Files.FileInfoModel(this.elementToFile($tr), { - filesClient: this.filesClient - }); - if (!model.get('path')) { - model.set('path', this.getCurrentDirectory(), {silent: true}); - } - - model.on('change', function(model) { - // re-render row - var highlightState = $tr.hasClass('highlighted'); - $tr = self.updateRow( - $tr, - model.toJSON(), - {updateSummary: true, silent: false, animate: true} - ); - - // restore selection state - var selected = !!self._selectedFiles[$tr.data('id')]; - self._selectFileEl($tr, selected); - - $tr.toggleClass('highlighted', highlightState); - }); - model.on('busy', function(model, state) { - self.showFileBusyState($tr, state); - }); - - return model; - }, - - /** - * Displays the details view for the given file and - * selects the given tab - * - * @param {string|OCA.Files.FileInfoModel} fileName file name or FileInfoModel for which to show details - * @param {string} [tabId] optional tab id to select - */ - showDetailsView: function(fileName, tabId) { - OC.debug && console.warn('showDetailsView is deprecated! Use OCA.Files.Sidebar.activeTab. It will be removed in nextcloud 20.'); - this._updateDetailsView(fileName); - if (tabId) { - OCA.Files.Sidebar.setActiveTab(tabId); - } - }, - - /** - * Update the details view to display the given file - * - * @param {string|OCA.Files.FileInfoModel} fileName file name from the current list or a FileInfoModel object - * @param {boolean} [show=true] whether to open the sidebar if it was closed - */ - _updateDetailsView: function(fileName, show) { - if (!(OCA.Files && OCA.Files.Sidebar)) { - console.error('No sidebar available'); - return; - } - - if (!fileName && OCA.Files.Sidebar.close) { - OCA.Files.Sidebar.close() - return - } else if (typeof fileName !== 'string') { - fileName = '' - } - - // this is the old (terrible) way of getting the context. - // don't use it anywhere else. Just provide the full path - // of the file to the sidebar service - var tr = this.findFileEl(fileName) - var model = this.getModelForFile(tr) - var path = model.attributes.path + '/' + model.attributes.name - - // make sure the file list has the correct context available - if (this._currentFileModel) { - this._currentFileModel.off(); - } - this.$fileList.children().removeClass('highlighted'); - tr.addClass('highlighted'); - this._currentFileModel = model; - - const secondaryActionsOpen = Boolean(tr.find('.actions-secondary-vue').length) - - // open sidebar and set file - if (!secondaryActionsOpen && (typeof show === 'undefined' || !!show || (OCA.Files.Sidebar.file !== ''))) { - OCA.Files.Sidebar.open(path.replace('//', '/')) - } - }, - - /** - * Replaces the current details view element with the details view - * element of this file list. - * - * Each file list has its own DetailsView object, and each one has its - * own root element, but there can be just one details view/sidebar - * element in the document. This helper method replaces the current - * details view/sidebar element in the document with the element from - * the DetailsView object of this file list. - */ - _replaceDetailsViewElementIfNeeded: function() { - var $appSidebar = $('#app-sidebar'); - if ($appSidebar.length === 0) { - this._detailsView.$el.insertAfter($('#app-content')); - } else if ($appSidebar[0] !== this._detailsView.el) { - // "replaceWith()" can not be used here, as it removes the old - // element instead of just detaching it. - this._detailsView.$el.insertBefore($appSidebar); - $appSidebar.detach(); - } - }, - - /** - * Event handler for when the window size changed - */ - _onResize: function() { - var containerWidth = this.$el.width(); - var actionsWidth = 0; - $.each(this.$el.find('.files-controls .actions'), function(index, action) { - actionsWidth += $(action).outerWidth(); - }); - - this.breadcrumb._resize(); - }, - - setGridView: function(isGridView) { - this.$table.toggleClass('view-grid', isGridView); - if (isGridView) { - // If switching into grid view from list view, too few files might be displayed - // Try rendering the next page - this._onScroll(); - } - }, - - /** - * Event handler when leaving previously hidden state - */ - _onShow: function(e) { - OCA.Files.App && OCA.Files.App.updateCurrentFileList(this); - if (e.itemId === this.id) { - this._setCurrentDir('/', false); - } - // Only reload if we don't navigate to a different directory - if (typeof e.dir === 'undefined' || e.dir === this.getCurrentDirectory()) { - this.reload(); - } - }, - - /** - * Event handler for when the URL changed - */ - _onUrlChanged: function(e) { - if (e && _.isString(e.dir)) { - var currentDir = this.getCurrentDirectory(); - // this._currentDirectory is NULL when fileList is first initialised - if(this._currentDirectory && currentDir === e.dir) { - return; - } - this.changeDirectory(e.dir, true, true, undefined, true); - } - }, - - /** - * Selected/deselects the given file element and updated - * the internal selection cache. - * - * @param {Object} $tr single file row element - * @param {boolean} state true to select, false to deselect - */ - _selectFileEl: function($tr, state) { - var $checkbox = $tr.find('td.selection>.selectCheckBox'); - var oldData = !!this._selectedFiles[$tr.data('id')]; - var data; - $checkbox.prop('checked', state); - $tr.toggleClass('selected', state); - // already selected ? - if (state === oldData) { - return; - } - data = this.elementToFile($tr); - if (state) { - this._selectedFiles[$tr.data('id')] = data; - this._selectionSummary.add(data); - } - else { - delete this._selectedFiles[$tr.data('id')]; - this._selectionSummary.remove(data); - } - if (this._detailsView && !this._detailsView.$el.hasClass('disappear')) { - // hide sidebar - this._updateDetailsView(null); - } - this.$el.find('.select-all').prop('checked', this._selectionSummary.getTotal() === this.files.length); - }, - - _selectRange: function($tr) { - var checked = $tr.hasClass('selected'); - var $lastTr = $(this._lastChecked); - var lastIndex = $lastTr.index(); - var currentIndex = $tr.index(); - var $rows = this.$fileList.children('tr'); - - // last clicked checkbox below current one ? - if (lastIndex > currentIndex) { - var aux = lastIndex; - lastIndex = currentIndex; - currentIndex = aux; - } - - // auto-select everything in-between - for (var i = lastIndex; i <= currentIndex; i++) { - this._selectFileEl($rows.eq(i), !checked); - } - this._removeHalfSelection(); - this._selectionMode = 'single'; - }, - - _selectSingle: function($tr) { - var state = !$tr.hasClass('selected'); - this._selectFileEl($tr, state); - }, - - _onMouseOverCheckbox: function(e) { - if (this._getCurrentSelectionMode() !== 'range') { - return; - } - var $currentTr = $(e.target).closest('tr'); - - var $lastTr = $(this._lastChecked); - var lastIndex = $lastTr.index(); - var currentIndex = $currentTr.index(); - var $rows = this.$fileList.children('tr'); - - // last clicked checkbox below current one ? - if (lastIndex > currentIndex) { - var aux = lastIndex; - lastIndex = currentIndex; - currentIndex = aux; - } - - // auto-select everything in-between - this._removeHalfSelection(); - for (var i = 0; i <= $rows.length; i++) { - var $tr = $rows.eq(i); - var $checkbox = $tr.find('td.selection>.selectCheckBox'); - if(lastIndex <= i && i <= currentIndex) { - $tr.addClass('halfselected'); - $checkbox.prop('checked', true); - } - } - }, - - _removeHalfSelection: function() { - var $rows = this.$fileList.children('tr'); - for (var i = 0; i <= $rows.length; i++) { - var $tr = $rows.eq(i); - $tr.removeClass('halfselected'); - var $checkbox = $tr.find('td.selection>.selectCheckBox'); - $checkbox.prop('checked', !!this._selectedFiles[$tr.data('id')]); - } - }, - - /** - * Event handler for when clicking on files to select them - */ - _onClickFile: function(event) { - var $tr = $(event.target).closest('tr'); - if ($tr.hasClass('dragging')) { - return; - } - if (this._allowSelection && event.shiftKey) { - event.preventDefault(); - this._selectRange($tr); - this._lastChecked = $tr; - this.updateSelectionSummary(); - } else if (!event.ctrlKey) { - // clicked directly on the name - if (!this._detailsView || $(event.target).is('.nametext, .name, .thumbnail') || $(event.target).closest('.nametext').length) { - var filename = $tr.attr('data-file'); - var renaming = $tr.data('renaming'); - if (this._defaultFileActionsDisabled) { - event.preventDefault(); - } else if (!renaming) { - this.fileActions.currentFile = $tr.find('td'); - var spec = this.fileActions.getCurrentDefaultFileAction(); - if (spec && spec.action) { - event.preventDefault(); - spec.action(filename, { - $file: $tr, - fileList: this, - fileActions: this.fileActions, - dir: $tr.attr('data-path') || this.getCurrentDirectory() - }); - } - // deselect row - $(event.target).closest('a').blur(); - } - } else { - // Even if there is no Details action the default event - // handler is prevented for consistency (although there - // should always be a Details action); otherwise the link - // would be downloaded by the browser when the user expected - // the details to be shown. - event.preventDefault(); - var filename = $tr.attr('data-file'); - this.fileActions.currentFile = $tr.find('td'); - var mime = this.fileActions.getCurrentMimeType(); - var type = this.fileActions.getCurrentType(); - var permissions = this.fileActions.getCurrentPermissions(); - var action = this.fileActions.get(mime, type, permissions, filename)['Details']; - if (action) { - action(filename, { - $file: $tr, - fileList: this, - fileActions: this.fileActions, - dir: $tr.attr('data-path') || this.getCurrentDirectory() - }); - } - } - } - }, - - /** - * Event handler for when clicking on a file's checkbox - */ - _onClickFileCheckbox: function(e) { - var $tr = $(e.target).closest('tr'); - if(this._getCurrentSelectionMode() === 'range') { - this._selectRange($tr); - } else { - this._selectSingle($tr); - } - this._lastChecked = $tr; - this.updateSelectionSummary(); - if (this._detailsView && !this._detailsView.$el.hasClass('disappear')) { - // hide sidebar - this._updateDetailsView(null); - } - }, - - /** - * Event handler for when selecting/deselecting all files - */ - _onClickSelectAll: function(e) { - var hiddenFiles = this.$fileList.find('tr.hidden'); - var checked = e.target.checked; - - if (hiddenFiles.length > 0) { - // set indeterminate alongside checked - e.target.indeterminate = checked; - } else { - e.target.indeterminate = false - } - - // Select only visible checkboxes to filter out unmatched file in search - this.$fileList.find('td.selection > .selectCheckBox:visible').prop('checked', checked) - .closest('tr').toggleClass('selected', checked); - // For prevents the selection of encrypted folders when clicking on the "Select all" checkbox - this.$fileList.find('tr[data-e2eencrypted="true"]').find('td.selection > .selectCheckBox:visible').prop('checked', false).closest('tr').toggleClass('selected', false); - - if (checked) { - for (var i = 0; i < this.files.length; i++) { - // a search will automatically hide the unwanted rows - // let's only select the matches - var fileData = this.files[i]; - var fileRow = this.$fileList.find('tr[data-id=' + fileData.id + ']'); - // do not select already selected ones - if (!fileRow.hasClass('hidden') && _.isUndefined(this._selectedFiles[fileData.id]) && (!fileData.isEncrypted)) { - this._selectedFiles[fileData.id] = fileData; - this._selectionSummary.add(fileData); - } - } - } else { - // if we have some hidden row, then we're in a search - // Let's only deselect the visible ones - if (hiddenFiles.length > 0) { - var visibleFiles = this.$fileList.find('tr:not(.hidden)'); - var self = this; - visibleFiles.each(function() { - var id = parseInt($(this).data('id')); - // do not deselect already deselected ones - if (!_.isUndefined(self._selectedFiles[id])) { - // a search will automatically hide the unwanted rows - // let's only select the matches - var fileData = self._selectedFiles[id]; - delete self._selectedFiles[fileData.id]; - self._selectionSummary.remove(fileData); - } - }); - } else { - this._selectedFiles = {}; - this._selectionSummary.clear(); - } - } - this.updateSelectionSummary(); - if (this._detailsView && !this._detailsView.$el.hasClass('disappear')) { - // hide sidebar - this._updateDetailsView(null); - } - }, - - /** - * Event handler for when clicking on "Download" for the selected files - */ - _onClickDownloadSelected: function(event) { - var files; - var self = this; - var dir = this.getCurrentDirectory(); - - if (this.isAllSelected() && this.getSelectedFiles().length > 1) { - files = OC.basename(dir); - dir = OC.dirname(dir) || '/'; - } - else { - files = _.pluck(this.getSelectedFiles(), 'name'); - } - - // don't allow a second click on the download action - if(this.fileMultiSelectMenu.isDisabled('download')) { - return false; - } - - this.fileMultiSelectMenu.toggleLoading('download', true); - var disableLoadingState = function(){ - self.fileMultiSelectMenu.toggleLoading('download', false); - }; - - if(this.getSelectedFiles().length > 1) { - OCA.Files.Files.handleDownload(this.getDownloadUrl(files, dir, true), disableLoadingState); - } - else { - var first = this.getSelectedFiles()[0]; - OCA.Files.Files.handleDownload(this.getDownloadUrl(first.name, dir, true), disableLoadingState); - } - event.preventDefault(); - }, - - /** - * Event handler for when clicking on "Move" for the selected files - */ - _onClickCopyMoveSelected: function(event) { - var files; - var self = this; - - files = _.pluck(this.getSelectedFiles(), 'name'); - - // don't allow a second click on the download action - if(this.fileMultiSelectMenu.isDisabled('copyMove')) { - return false; - } - - var disableLoadingState = function(){ - self.fileMultiSelectMenu.toggleLoading('copyMove', false); - }; - - var actions = this.isSelectedMovable() ? OC.dialogs.FILEPICKER_TYPE_COPY_MOVE : OC.dialogs.FILEPICKER_TYPE_COPY; - var dialogDir = self.getCurrentDirectory(); - if (typeof self.dirInfo.dirLastCopiedTo !== 'undefined') { - dialogDir = self.dirInfo.dirLastCopiedTo; - } - OC.dialogs.filepicker(t('files', 'Choose target folder'), function(targetPath, type) { - self.fileMultiSelectMenu.toggleLoading('copyMove', true); - if (type === OC.dialogs.FILEPICKER_TYPE_COPY) { - self.copy(files, targetPath, disableLoadingState); - } - if (type === OC.dialogs.FILEPICKER_TYPE_MOVE) { - self.move(files, targetPath, disableLoadingState); - } - self.dirInfo.dirLastCopiedTo = targetPath; - }, false, "httpd/unix-directory", true, actions, dialogDir); - event.preventDefault(); - }, - - /** - * Event handler for when clicking on "Delete" for the selected files - */ - _onClickDeleteSelected: function(event) { - var files = null; - if (!this.isAllSelected()) { - files = _.pluck(this.getSelectedFiles(), 'name'); - } - this.do_delete(files); - event.preventDefault(); - }, - - /** - * CUSTOM CODE - * Event handler for when clicking on "Tags" for the selected files - */ - _onClickTagSelected: function(event) { - var self = this; - event.preventDefault(); - var commonTags = []; - - var selectedFiles = _.pluck(this.getSelectedFiles(), 'id') - var tagCollections = []; - var fetchTagPromises = []; - - - selectedFiles.forEach(function(fileId) { - var deferred = new $.Deferred(); - var tagCollection = new OC.SystemTags.SystemTagsMappingCollection([], { - objectType: 'files', - objectId: fileId}); - tagCollections.push(tagCollection); - tagCollection.fetch({ - success: function(){ - deferred.resolve('success'); - }, - error: function() { - deferred.resolve('failed'); - } - }) - fetchTagPromises.push(deferred); - }); - - if (!self._inputView) { - self._inputView = new OC.SystemTags.SystemTagsInputField({ - multiple: true, - allowActions: true, - allowCreate: true, - isAdmin: OC.isUserAdmin(), - }); - self._inputView.on('select', self._onSelectTag, self); - self._inputView.on('deselect', self._onDeselectTag, self); - self._inputView.render(); - - // Build dom - self.tagsTitle = $('

    '+ t('files', 'Please select tag(s) to add to the selection') +'

    '); - self.tagsSubmit = $(''); - self.tagsContainer = $(''); - self.tagsTitle.appendTo(self.tagsContainer) - self.tagsContainer.append(self._inputView.el); - self.tagsSubmit.appendTo(self.tagsContainer) - - // Inject everything - self.$table.find('thead').append(self.tagsContainer); - - self.tagsSubmit.on('click', function(ev){ - self._onClickDocument(ev); - }); - } - - self._inputView.$el.addClass('icon-loading'); - self.tagsContainer.show(); - - Promise.all(fetchTagPromises).then(function() { - //find tags which are common to all selected files - commonTags =_.intersection.apply(null, tagCollections.map(function (tagCollection) {return tagCollection.getTagIds();})); - self._inputView.setValues(commonTags); - self._inputView.$el.removeClass('icon-loading'); - $(document).on('click',function(ev){ - self._onClickDocument(ev); - }); - }); - }, - - _onClickDocument: function(ev) { - if(!$(ev.target).closest('#editor_container').length) { - this._inputView.setValues([]); - this.tagsContainer.hide(); - $(document).off('click', this._onClickDocument); - } - - }, - - /** - * Custom code - * Set tag for all selected files - * @param {any} tagModel - - * @private - */ - _onSelectTag: function(tagModel) { - var selectedFiles = _.pluck(this.getSelectedFiles(),'id') - if (!_.isArray(selectedFiles)) { - return; - } - selectedFiles.forEach(function(fileId) { - $.ajax({ - url: OC.linkToRemote('dav') + '/systemtags-relations/files/' + fileId + '/'+ tagModel.attributes.id, - type: 'PUT', - }); - }); - - }, - /** - * remove tag from all selected files - * @param {any} tagId - - * @private - */ - _onDeselectTag: function(tagId) { - var selectedFiles = _.pluck(this.getSelectedFiles(),'id'); - if (!_.isArray(selectedFiles)) { - return; - } - selectedFiles.forEach(function(fileId) { - $.ajax({ - url: OC.linkToRemote('dav') + '/systemtags-relations/files/' +fileId + '/'+ tagId, - type: 'DELETE' - }); - }); - }, - - /** - * Event handler when clicking on a table header - */ - _onClickHeader: function(e) { - if (this.$table.hasClass('multiselect')) { - return; - } - var $target = $(e.target); - var sort; - if (!$target.is('a')) { - $target = $target.closest('a'); - } - sort = $target.attr('data-sort'); - if (sort && this._allowSorting) { - if (this._sort === sort) { - this.setSort(sort, (this._sortDirection === 'desc')?'asc':'desc', true, true); - } - else { - if ( sort === 'name' ) { //default sorting of name is opposite to size and mtime - this.setSort(sort, 'asc', true, true); - } - else { - this.setSort(sort, 'desc', true, true); - } - } - } - }, - - /** - * Event handler when clicking on a bread crumb - */ - _onClickBreadCrumb: function(e) { - // Select a crumb or a crumb in the menu - var $el = $(e.target).closest('.crumb, .crumblist'), - $targetDir = $el.data('dir'); - - if ($targetDir !== undefined && e.which === 1) { - e.preventDefault(); - this.changeDirectory($targetDir, true, true); - } - }, - - /** - * Event handler for when scrolling the list container. - * This appends/renders the next page of entries when reaching the bottom. - */ - _onScroll: function(e) { - if (this.$container.scrollTop() + this.$container.height() > this.$el.height() - 300) { - this._nextPage(true); - } - }, - - /** - * Event handler when dropping on a breadcrumb - */ - _onDropOnBreadCrumb: function( event, ui ) { - var self = this; - var $target = $(event.target); - if (!$target.is('.crumb, .crumblist')) { - $target = $target.closest('.crumb, .crumblist'); - } - var targetPath = $(event.target).data('dir'); - var dir = this.getCurrentDirectory(); - while (dir.substr(0,1) === '/') {//remove extra leading /'s - dir = dir.substr(1); - } - dir = '/' + dir; - if (dir.substr(-1,1) !== '/') { - dir = dir + '/'; - } - // do nothing if dragged on current dir - if (targetPath === dir || targetPath + '/' === dir) { - return; - } - - var files = this.getSelectedFiles(); - if (files.length === 0) { - // single one selected without checkbox? - files = _.map(ui.helper.find('tr'), function(el) { - return self.elementToFile($(el)); - }); - } - - var movePromise = this.move(_.pluck(files, 'name'), targetPath); - - // re-enable td elements to be droppable - // sometimes the filename drop handler is still called after re-enable, - // it seems that waiting for a short time before re-enabling solves the problem - setTimeout(function() { - self.$el.find('td.filename.ui-droppable').droppable('enable'); - }, 10); - - return movePromise; - }, - - /** - * Sets a new page title - */ - setPageTitle: function(title){ - if (title) { - title += ' - '; - } else { - title = ''; - } - title += this.appName; - // Sets the page title with the " - Nextcloud" suffix as in templates - window.document.title = title + ' - ' + OC.theme.title; - - return true; - }, - /** - * Returns the file info for the given file name from the internal collection. - * - * @param {string} fileName file name - * @return {OCA.Files.FileInfo} file info or null if it was not found - * - * @since 8.2 - */ - findFile: function(fileName) { - return _.find(this.files, function(aFile) { - return (aFile.name === fileName); - }) || null; - }, - /** - * Returns the tr element for a given file name, but only if it was already rendered. - * - * @param {string} fileName file name - * @return {Object} jQuery object of the matching row - */ - findFileEl: function(fileName){ - // use filterAttr to avoid escaping issues - return this.$fileList.find('tr').filterAttr('data-file', fileName); - }, - - /** - * Returns the file data from a given file element. - * @param $el file tr element - * @return file data - */ - elementToFile: function($el){ - $el = $($el); - var data = { - id: parseInt($el.attr('data-id'), 10), - name: $el.attr('data-file'), - mimetype: $el.attr('data-mime'), - mtime: parseInt($el.attr('data-mtime'), 10), - type: $el.attr('data-type'), - etag: $el.attr('data-etag'), - quotaAvailableBytes: $el.attr('data-quota'), - permissions: parseInt($el.attr('data-permissions'), 10), - hasPreview: $el.attr('data-has-preview') === 'true', - isEncrypted: $el.attr('data-e2eencrypted') === 'true' - }; - var size = $el.attr('data-size'); - if (size) { - data.size = parseInt(size, 10); - } - var icon = $el.attr('data-icon'); - if (icon) { - data.icon = icon; - } - var mountType = $el.attr('data-mounttype'); - if (mountType) { - data.mountType = mountType; - } - var path = $el.attr('data-path'); - if (path) { - data.path = path; - } - return data; - }, - - /** - * Appends the next page of files into the table - * @param animate true to animate the new elements - * @return array of DOM elements of the newly added files - */ - _nextPage: function(animate) { - var index = this.$fileList.children().length, - count = this.pageSize(), - hidden, - tr, - fileData, - newTrs = [], - isAllSelected = this.isAllSelected(), - showHidden = this._filesConfig.show_hidden; - - if (index >= this.files.length) { - return false; - } - - while (count > 0 && index < this.files.length) { - fileData = this.files[index]; - if (this._filter) { - hidden = fileData.name.toLowerCase().indexOf(this._filter.toLowerCase()) === -1; - } else { - hidden = false; - } - tr = this._renderRow(fileData, {updateSummary: false, silent: true, hidden: hidden}); - this.$fileList.append(tr); - if (isAllSelected || this._selectedFiles[fileData.id]) { - tr.addClass('selected'); - tr.find('.selectCheckBox').prop('checked', true); - } - if (tr.attr('data-e2eencrypted') === 'true') { - tr.toggleClass('selected', false); - tr.find('td.selection > .selectCheckBox:visible').prop('checked', false); - } - if (animate) { - tr.addClass('appear transparent'); - } - newTrs.push(tr); - index++; - // only count visible rows - if (showHidden || !tr.hasClass('hidden-file')) { - count--; - } - } - - // trigger event for newly added rows - if (newTrs.length > 0) { - this.$fileList.trigger($.Event('fileActionsReady', {fileList: this, $files: newTrs})); - } - - if (animate) { - // defer, for animation - window.setTimeout(function() { - for (var i = 0; i < newTrs.length; i++ ) { - newTrs[i].removeClass('transparent'); - } - }, 0); - } - - return newTrs; - }, - - /** - * Event handler for when file actions were updated. - * This will refresh the file actions on the list. - */ - _onFileActionsUpdated: function() { - var self = this; - var $files = this.$fileList.find('tr'); - if (!$files.length) { - return; - } - - $files.each(function() { - self.fileActions.display($(this).find('td.filename'), false, self); - }); - this.$fileList.trigger($.Event('fileActionsReady', {fileList: this, $files: $files})); - - }, - - /** - * Register action for multiple selected files - * - * @param {OCA.Files.FileAction} fileAction object - * The callback of FileAction will be called with an array of files that are currently selected - */ - registerMultiSelectFileAction: function(fileAction) { - if (typeof this.multiSelectMenuItems === 'undefined') { - return; - } - this.multiSelectMenuItems.push(fileAction) - this._updateMultiSelectFileActions() - }, - - _updateMultiSelectFileActions: function() { - if (typeof this.multiSelectMenuItems === 'undefined') { - return; - } - this.fileMultiSelectMenu = new OCA.Files.FileMultiSelectMenu(this.multiSelectMenuItems.sort(function(a, b) { - return a.order - b.order - })); - this.fileMultiSelectMenu.render(); - this.$el.find('.selectedActions .filesSelectMenu').remove(); - this.$el.find('.selectedActions').append(this.fileMultiSelectMenu.$el); - }, - - /** - * Sets the files to be displayed in the list. - * This operation will re-render the list and update the summary. - * @param filesArray array of file data (map) - */ - setFiles: function(filesArray) { - var self = this; - - // detach to make adding multiple rows faster - this.files = filesArray; - - this.$fileList.empty(); - - if (this._allowSelection) { - // The results table, which has no selection column, checks - // whether the main table has a selection column or not in order - // to align its contents with those of the main table. - this.$el.addClass('has-selection'); - } - - // clear "Select all" checkbox - this.$el.find('.select-all').prop('checked', false); - - // Save full files list while rendering - - this.isEmpty = this.files.length === 0; - this._nextPage(); - - this.updateEmptyContent(); - - this.fileSummary.calculate(this.files); - - this._selectedFiles = {}; - this._selectionSummary.clear(); - this.updateSelectionSummary(); - $(window).scrollTop(0); - - this.$fileList.trigger(jQuery.Event('updated')); - _.defer(function() { - self.$el.closest('#app-content').trigger(jQuery.Event('apprendered')); - }); - }, - - /** - * Returns whether the given file info must be hidden - * - * @param {OC.Files.FileInfo} fileInfo file info - * - * @return {boolean} true if the file is a hidden file, false otherwise - */ - _isHiddenFile: function(file) { - return file.name && file.name.charAt(0) === '.'; - }, - - /** - * Returns the icon URL matching the given file info - * - * @param {OC.Files.FileInfo} fileInfo file info - * - * @return {string} icon URL - */ - _getIconUrl: function(fileInfo) { - var mimeType = fileInfo.mimetype || 'application/octet-stream'; - if (mimeType === 'httpd/unix-directory') { - // use default folder icon - if (fileInfo.mountType === 'shared' || fileInfo.mountType === 'shared-root') { - return OC.MimeType.getIconUrl('dir-shared'); - } else if (fileInfo.mountType === 'external-root') { - return OC.MimeType.getIconUrl('dir-external'); - } else if (fileInfo.mountType !== undefined && fileInfo.mountType !== '') { - return OC.MimeType.getIconUrl('dir-' + fileInfo.mountType); - } else if (fileInfo.shareTypes && ( - fileInfo.shareTypes.indexOf(OC.Share.SHARE_TYPE_LINK) > -1 - || fileInfo.shareTypes.indexOf(OC.Share.SHARE_TYPE_EMAIL) > -1) - ) { - return OC.MimeType.getIconUrl('dir-public') - } else if (fileInfo.shareTypes && fileInfo.shareTypes.length > 0) { - return OC.MimeType.getIconUrl('dir-shared') - } - return OC.MimeType.getIconUrl('dir'); - } - return OC.MimeType.getIconUrl(mimeType); - }, - - /** - * Creates a new table row element using the given file data. - * @param {OC.Files.FileInfo} fileData file info attributes - * @param options map of attributes - * @return new tr element (not appended to the table) - */ - _createRow: function(fileData, options) { - var td, simpleSize, basename, extension, sizeColor, - icon = fileData.icon || this._getIconUrl(fileData), - name = fileData.name, - // TODO: get rid of type, only use mime type - type = fileData.type || 'file', - mtime = parseInt(fileData.mtime, 10), - mime = fileData.mimetype, - path = fileData.path, - dataIcon = null, - linkUrl; - options = options || {}; - - if (isNaN(mtime)) { - mtime = new Date().getTime(); - } - - if (type === 'dir') { - mime = mime || 'httpd/unix-directory'; - - if (fileData.isEncrypted) { - icon = OC.MimeType.getIconUrl('dir-encrypted'); - dataIcon = icon; - } else if (fileData.mountType && fileData.mountType.indexOf('external') === 0) { - icon = OC.MimeType.getIconUrl('dir-external'); - dataIcon = icon; - } - } - - var permissions = fileData.permissions; - if (permissions === undefined || permissions === null) { - permissions = this.getDirectoryPermissions(); - } - - //containing tr - var tr = $('').attr({ - "data-id" : fileData.id, - "data-type": type, - "data-size": fileData.size, - "data-file": name, - "data-mime": mime, - "data-mtime": mtime, - "data-etag": fileData.etag, - "data-quota": fileData.quotaAvailableBytes, - "data-permissions": permissions, - "data-has-preview": fileData.hasPreview !== false, - "data-e2eencrypted": fileData.isEncrypted === true - }); - - if (dataIcon) { - // icon override - tr.attr('data-icon', dataIcon); - } - - if (fileData.mountType) { - // dirInfo (parent) only exist for the "real" file list - if (this.dirInfo.id) { - // FIXME: HACK: detect shared-root - if (fileData.mountType === 'shared' && this.dirInfo.mountType !== 'shared' && this.dirInfo.mountType !== 'shared-root') { - // if parent folder isn't share, assume the displayed folder is a share root - fileData.mountType = 'shared-root'; - } else if (fileData.mountType === 'external' && this.dirInfo.mountType !== 'external' && this.dirInfo.mountType !== 'external-root') { - // if parent folder isn't external, assume the displayed folder is the external storage root - fileData.mountType = 'external-root'; - } - } - tr.attr('data-mounttype', fileData.mountType); - } - - if (!_.isUndefined(path)) { - tr.attr('data-path', path); - } - else { - path = this.getCurrentDirectory(); - } - - // selection td - if (this._allowSelection) { - td = $(''); - - td.append( - '' - ); - - tr.append(td); - } - - // filename td - td = $(''); - - - var spec = this.fileActions.getDefaultFileAction(mime, type, permissions); - // linkUrl - if (mime === 'httpd/unix-directory') { - linkUrl = this.linkTo(path + '/' + name); - } - else if (spec && spec.action) { - linkUrl = this.getDefaultActionUrl(path, fileData.id); - } - else { - linkUrl = this.getDownloadUrl(name, path, type === 'dir'); - } - var linkElem = $('').attr({ - "class": "name", - "href": linkUrl - }); - if (this._defaultFileActionsDisabled) { - linkElem.addClass('disabled'); - } - - linkElem.append('
    '); - - // from here work on the display name - name = fileData.displayName || name; - - // show hidden files (starting with a dot) completely in gray - if(name.indexOf('.') === 0) { - basename = ''; - extension = name; - // split extension from filename for non dirs - } else if (mime !== 'httpd/unix-directory' && name.indexOf('.') !== -1) { - basename = name.substr(0, name.lastIndexOf('.')); - extension = name.substr(name.lastIndexOf('.')); - } else { - basename = name; - extension = false; - } - var nameSpan=$('').addClass('nametext') - - var innernameSpan = $('').addClass('innernametext').text(basename).prop('title', basename).prop('id', `innernametext_${fileData.id}`); - - - var conflictingItems = this.$fileList.find('tr[data-file="' + this._jqSelEscape(name) + '"]'); - if (conflictingItems.length !== 0) { - if (conflictingItems.length === 1) { - // Update the path on the first conflicting item - var $firstConflict = $(conflictingItems[0]), - firstConflictPath = $firstConflict.attr('data-path') + '/'; - if (firstConflictPath.charAt(0) === '/') { - firstConflictPath = firstConflictPath.substr(1); - } - if (firstConflictPath && firstConflictPath !== '/') { - $firstConflict.find('td.filename span.innernametext').prepend($('').addClass('conflict-path').text(firstConflictPath)); - } - } - - var conflictPath = path + '/'; - if (conflictPath.charAt(0) === '/') { - conflictPath = conflictPath.substr(1); - } - if (path && path !== '/') { - nameSpan.append($('').addClass('conflict-path').text(conflictPath)); - } - } - - nameSpan.append(innernameSpan); - linkElem.append(nameSpan); - if (extension) { - nameSpan.append($('').addClass('extension').text(extension)); - } - if (fileData.extraData) { - if (fileData.extraData.charAt(0) === '/') { - fileData.extraData = fileData.extraData.substr(1); - } - nameSpan.addClass('extra-data').attr('title', fileData.extraData); - } - // dirs can show the number of uploaded files - if (mime === 'httpd/unix-directory') { - linkElem.append($('').attr({ - 'class': 'uploadtext', - 'currentUploads': 0 - })); - } - td.append(linkElem); - tr.append(td); - - const enabledThemes = window.OCA?.Theming?.enabledThemes || [] - // Check enabled themes, if system default is selected check the browser - const isDarkTheme = (enabledThemes.length === 0 || enabledThemes[0] === 'default') - ? window.matchMedia('(prefers-color-scheme: dark)').matches - : enabledThemes.join('').indexOf('dark') !== -1 - - try { - var maxContrastHex = window.getComputedStyle(document.documentElement) - .getPropertyValue('--color-text-maxcontrast').trim() - if (maxContrastHex.length < 4) { - throw Error(); - } - var maxContrast = parseInt(maxContrastHex.substring(1, 3), 16) - } catch(error) { - var maxContrast = isDarkTheme ? 130 : 118 - } - - // size column - if (typeof(fileData.size) !== 'undefined' && fileData.size >= 0) { - simpleSize = OC.Util.humanFileSize(parseInt(fileData.size, 10), true, false); - // rgb(118, 118, 118) / #767676 - // min. color contrast for normal text on white background according to WCAG AA - sizeColor = Math.round(118-Math.pow((fileData.size/(1024*1024)), 2)); - - // ensure that the brightest color is still readable - // min. color contrast for normal text on white background according to WCAG AA - if (sizeColor >= maxContrast) { - sizeColor = maxContrast; - } - - if (isDarkTheme) { - sizeColor = Math.abs(sizeColor); - // ensure that the dimmest color is still readable - // min. color contrast for normal text on black background according to WCAG AA - if (sizeColor < maxContrast) { - sizeColor = maxContrast; - } - } - } else { - simpleSize = t('files', 'Pending'); - } - - td = $('').attr({ - "class": "filesize", - "style": 'color:rgb(' + sizeColor + ',' + sizeColor + ',' + sizeColor + ')' - }).text(simpleSize); - tr.append(td); - - // date column (1000 milliseconds to seconds, 60 seconds, 60 minutes, 24 hours) - // difference in days multiplied by 5 - brightest shade for files older than 32 days (160/5) - var modifiedColor = Math.round(((new Date()).getTime() - mtime )/1000/60/60/24*5 ); - - // ensure that the brightest color is still readable - // min. color contrast for normal text on white background according to WCAG AA - if (modifiedColor >= maxContrast) { - modifiedColor = maxContrast; - } - - if (isDarkTheme) { - modifiedColor = Math.abs(modifiedColor); - - // ensure that the dimmest color is still readable - // min. color contrast for normal text on black background according to WCAG AA - if (modifiedColor < maxContrast) { - modifiedColor = maxContrast; - } - } - - var formatted; - var text; - if (mtime > 0) { - formatted = OC.Util.formatDate(mtime); - text = OC.Util.relativeModifiedDate(mtime); - } else { - formatted = t('files', 'Unable to determine date'); - text = '?'; - } - td = $('').attr({ "class": "date" }); - td.append($('').attr({ - "class": "modified live-relative-timestamp", - "title": formatted, - "data-timestamp": mtime, - "style": 'color:rgb('+modifiedColor+','+modifiedColor+','+modifiedColor+')' - }).text(text)); - tr.find('.filesize').text(simpleSize); - tr.append(td); - return tr; - }, - - /* escape a selector expression for jQuery */ - _jqSelEscape: function (expression) { - if (expression) { - return expression.replace(/[!"#$%&'()*+,.\/:;<=>?@\[\\\]^`{|}~]/g, '\\$&'); - } - return null; - }, - - /** - * Adds an entry to the files array and also into the DOM - * in a sorted manner. - * - * @param {OC.Files.FileInfo} fileData map of file attributes - * @param {Object} [options] map of attributes - * @param {boolean} [options.updateSummary] true to update the summary - * after adding (default), false otherwise. Defaults to true. - * @param {boolean} [options.silent] true to prevent firing events like "fileActionsReady", - * defaults to false. - * @param {boolean} [options.animate] true to animate the thumbnail image after load - * defaults to true. - * @return new tr element (not appended to the table) - */ - add: function(fileData, options) { - var self = this; - var index; - var $tr; - var $rows; - var $insertionPoint; - options = _.extend({animate: true}, options || {}); - - // there are three situations to cover: - // 1) insertion point is visible on the current page - // 2) insertion point is on a not visible page (visible after scrolling) - // 3) insertion point is at the end of the list - - $rows = this.$fileList.children(); - index = this._findInsertionIndex(fileData); - if (index > this.files.length) { - index = this.files.length; - } - else { - $insertionPoint = $rows.eq(index); - } - - // is the insertion point visible ? - if ($insertionPoint.length) { - // only render if it will really be inserted - $tr = this._renderRow(fileData, options); - $insertionPoint.before($tr); - } - else { - // if insertion point is after the last visible - // entry, append - if (index === $rows.length) { - $tr = this._renderRow(fileData, options); - this.$fileList.append($tr); - } - } - - this.isEmpty = false; - this.files.splice(index, 0, fileData); - - if ($tr && options.animate) { - $tr.addClass('appear transparent'); - window.setTimeout(function() { - $tr.removeClass('transparent'); - self.$fileList.find('tr').removeClass('mouseOver'); - $tr.addClass('mouseOver'); - }); - } - - if (options.scrollTo) { - this.scrollTo(fileData.name); - } - - // defaults to true if not defined - if (typeof(options.updateSummary) === 'undefined' || !!options.updateSummary) { - this.fileSummary.add(fileData, true); - this.updateEmptyContent(); - } - - return $tr; - }, - - /** - * Creates a new row element based on the given attributes - * and returns it. - * - * @param {OC.Files.FileInfo} fileData map of file attributes - * @param {Object} [options] map of attributes - * @param {number} [options.index] index at which to insert the element - * @param {boolean} [options.updateSummary] true to update the summary - * after adding (default), false otherwise. Defaults to true. - * @param {boolean} [options.animate] true to animate the thumbnail image after load - * defaults to true. - * @return new tr element (not appended to the table) - */ - _renderRow: function(fileData, options) { - options = options || {}; - var type = fileData.type || 'file', - mime = fileData.mimetype, - path = fileData.path || this.getCurrentDirectory(), - permissions = parseInt(fileData.permissions, 10) || 0; - - var isEndToEndEncrypted = (type === 'dir' && fileData.isEncrypted); - - if (!isEndToEndEncrypted && fileData.isShareMountPoint) { - permissions = permissions | OC.PERMISSION_UPDATE; - } - - if (type === 'dir') { - mime = mime || 'httpd/unix-directory'; - } - var tr = this._createRow( - fileData, - options - ); - var filenameTd = tr.find('td.filename'); - - // TODO: move dragging to FileActions ? - // enable drag only for deletable files - if (this._dragOptions && permissions & OC.PERMISSION_DELETE) { - filenameTd.draggable(this._dragOptions); - } - // allow dropping on folders - if (this._folderDropOptions && mime === 'httpd/unix-directory') { - tr.droppable(this._folderDropOptions); - } - - if (options.hidden) { - tr.addClass('hidden'); - } - - if (this._isHiddenFile(fileData)) { - tr.addClass('hidden-file'); - } - - // display actions - this.fileActions.display(filenameTd, !options.silent, this); - - if (mime !== 'httpd/unix-directory' && fileData.hasPreview !== false) { - var iconDiv = filenameTd.find('.thumbnail'); - // lazy load / newly inserted td ? - // the typeof check ensures that the default value of animate is true - if (typeof(options.animate) === 'undefined' || !!options.animate) { - this.lazyLoadPreview({ - fileId: fileData.id, - path: path + '/' + fileData.name, - mime: mime, - etag: fileData.etag, - callback: function(url) { - iconDiv.css('background-image', 'url("' + url + '")'); - } - }); - } - else { - // set the preview URL directly - var urlSpec = { - file: path + '/' + fileData.name, - c: fileData.etag - }; - var previewUrl = this.generatePreviewUrl(urlSpec); - previewUrl = previewUrl.replace(/\(/g, '%28').replace(/\)/g, '%29'); - iconDiv.css('background-image', 'url("' + previewUrl + '")'); - } - } - return tr; - }, - /** - * Returns the current directory - * @method getCurrentDirectory - * @return current directory - */ - getCurrentDirectory: function(){ - return this._currentDirectory || '/'; - }, - /** - * Returns the directory permissions - * @return permission value as integer - */ - getDirectoryPermissions: function() { - return this && this.dirInfo && this.dirInfo.permissions ? this.dirInfo.permissions : parseInt(this.$el.find('#permissions').val(), 10); - }, - /** - * Changes the current directory and reload the file list. - * @param {string} targetDir target directory (non URL encoded) - * @param {boolean} [changeUrl=true] if the URL must not be changed (defaults to true) - * @param {boolean} [force=false] set to true to force changing directory - * @param {string} [fileId] optional file id, if known, to be appended in the URL - * @param {bool} [changedThroughUrl=false] true if the dir was set through a URL change - */ - changeDirectory: function(targetDir, changeUrl, force, fileId, changedThroughUrl) { - var self = this; - var currentDir = this.getCurrentDirectory(); - targetDir = targetDir || '/'; - if (!force && currentDir === targetDir) { - return; - } - this._setCurrentDir(targetDir, changeUrl, fileId, changedThroughUrl); - - // discard finished uploads list, we'll get it through a regular reload - this._uploads = {}; - return this.reload().then(function(success){ - if (!success) { - self.changeDirectory(currentDir, true); - } - }); - }, - linkTo: function(dir) { - return OC.linkTo('files', 'index.php')+"?dir="+ encodeURIComponent(dir).replace(/%2F/g, '/'); - }, - - /** - * @param {string} path - * @returns {boolean} - */ - _isValidPath: function(path) { - var sections = path.split('/'); - for (var i = 0; i < sections.length; i++) { - if (sections[i] === '..') { - return false; - } - } - - return path.toLowerCase().indexOf(decodeURI('%0a')) === -1 && - path.toLowerCase().indexOf(decodeURI('%00')) === -1; - }, - - /** - * Sets the current directory name and updates the breadcrumb. - * @param targetDir directory to display - * @param changeUrl true to also update the URL, false otherwise (default) - * @param {string} [fileId] file id - * @param {bool} changedThroughUrl true if the dir was set through a URL change - */ - _setCurrentDir: function(targetDir, changeUrl, fileId, changedThroughUrl) { - targetDir = targetDir.replace(/\\/g, '/'); - if (!this._isValidPath(targetDir)) { - targetDir = '/'; - changeUrl = true; - } - var previousDir = this.getCurrentDirectory(), - baseDir = OC.basename(targetDir); - - if (baseDir !== '') { - this.setPageTitle(baseDir); - } - else { - this.setPageTitle(); - } - - if (targetDir.length > 0 && targetDir[0] !== '/') { - targetDir = '/' + targetDir; - } - this._currentDirectory = targetDir; - - if (changeUrl !== false) { - var params = { - dir: targetDir, - previousDir: previousDir - }; - if (fileId) { - params.fileId = fileId; - } - params.changedThroughUrl = changedThroughUrl - this.$el.trigger(jQuery.Event('changeDirectory', params)); - } - this.breadcrumb.setDirectory(this.getCurrentDirectory()); - }, - /** - * Sets the current sorting and refreshes the list - * - * @param sort sort attribute name - * @param direction sort direction, one of "asc" or "desc" - * @param update true to update the list, false otherwise (default) - * @param persist true to save changes in the database (default) - */ - setSort: function(sort, direction, update, persist) { - var comparator = FileList.Comparators[sort] || FileList.Comparators.name; - this._sort = sort; - this._sortDirection = (direction === 'desc')?'desc':'asc'; - this._sortComparator = function(fileInfo1, fileInfo2) { - var isFavorite = function(fileInfo) { - return fileInfo.tags && fileInfo.tags.indexOf(OC.TAG_FAVORITE) >= 0; - }; - - if (isFavorite(fileInfo1) && !isFavorite(fileInfo2)) { - return -1; - } else if (!isFavorite(fileInfo1) && isFavorite(fileInfo2)) { - return 1; - } - - return direction === 'asc' ? comparator(fileInfo1, fileInfo2) : -comparator(fileInfo1, fileInfo2); - }; - - this.$el.find('thead th .sort-indicator') - .removeClass(this.SORT_INDICATOR_ASC_CLASS) - .removeClass(this.SORT_INDICATOR_DESC_CLASS) - .toggleClass('hidden', true) - .addClass(this.SORT_INDICATOR_DESC_CLASS); - - this.$el.find('thead th.column-' + sort + ' .sort-indicator') - .removeClass(this.SORT_INDICATOR_ASC_CLASS) - .removeClass(this.SORT_INDICATOR_DESC_CLASS) - .toggleClass('hidden', false) - .addClass(direction === 'desc' ? this.SORT_INDICATOR_DESC_CLASS : this.SORT_INDICATOR_ASC_CLASS); - if (update) { - if (this._clientSideSort) { - this.files.sort(this._sortComparator); - this.setFiles(this.files); - } - else { - this.reload(); - } - } - - if (persist && OC.getCurrentUser().uid) { - $.post(OC.generateUrl('/apps/files/api/v1/sorting'), { - // Compatibility with new files-to-vue API - mode: sort === 'name' ? 'basename' : sort, - direction: direction, - view: 'files' - }); - } - }, - - /** - * Returns list of webdav properties to request - */ - _getWebdavProperties: function() { - return [].concat(this.filesClient.getPropfindProperties()); - }, - - /** - * Reloads the file list using ajax call - * - * @return ajax call object - */ - reload: function(keepOpen) { - this._selectedFiles = {}; - this._selectionSummary.clear(); - if (this._currentFileModel) { - this._currentFileModel.off(); - } - this._currentFileModel = null; - this.$el.find('.select-all').prop('checked', false); - this.showMask(); - this._reloadCall = this.filesClient.getFolderContents( - this.getCurrentDirectory(), { - includeParent: true, - properties: this._getWebdavProperties() - } - ); - if (this._detailsView && !keepOpen) { - // close sidebar - this._updateDetailsView(null); - } - this._setCurrentDir(this.getCurrentDirectory(), false); - var callBack = this.reloadCallback.bind(this); - return this._reloadCall.then(callBack, callBack); - }, - reloadCallback: function(status, result) { - delete this._reloadCall; - this.hideMask(); - - if (status === 401) { - // We are not authentificated, so reload the page so that we get - // redirected to the login page while saving the current url. - location.reload(); - } - - // Firewall Blocked request? - if (status === 403) { - // Go home - this.changeDirectory('/'); - OC.Notification.show(t('files', 'This operation is forbidden'), {type: 'error'}); - return false; - } - - // Did share service die or something else fail? - if (status === 500) { - // Go home - this.changeDirectory('/'); - OC.Notification.show(t('files', 'This directory is unavailable, please check the logs or contact the administrator'), - {type: 'error'} - ); - return false; - } - - if (status === 503) { - // Go home - if (this.getCurrentDirectory() !== '/') { - this.changeDirectory('/'); - // TODO: read error message from exception - OC.Notification.show(t('files', 'Storage is temporarily not available'), - {type: 'error'} - ); - } - return false; - } - - if (status === 400 || status === 404 || status === 405) { - // go back home - this.changeDirectory('/'); - return false; - } - // aborted ? - if (status === 0){ - return true; - } - - this.updateStorageStatistics(true); - - // first entry is the root - this.dirInfo = result.shift(); - this.breadcrumb.setDirectoryInfo(this.dirInfo); - - if (this.dirInfo.permissions) { - this._updateDirectoryPermissions(); - } - - result.sort(this._sortComparator); - this.setFiles(result); - - if (this.dirInfo) { - // Make sure the currentFileList is the current one - // When navigating to the favorite or share with you virtual - // folder, this is not correctly set during the initialisation - // otherwise. - OCA.Files.App && OCA.Files.App.updateCurrentFileList(this); - - var newFileId = this.dirInfo.id; - // update fileid in URL - var params = { - dir: this.getCurrentDirectory() - }; - if (newFileId) { - params.fileId = newFileId; - } - this.$el.trigger(jQuery.Event('afterChangeDirectory', params)); - } - return true; - }, - - updateStorageStatistics: function(force) { - OCA.Files.Files.updateStorageStatistics(this.getCurrentDirectory(), force); - }, - - updateStorageQuotas: function() { - OCA.Files.Files.updateStorageQuotas(); - }, - - /** - * @deprecated do not use nor override - */ - getAjaxUrl: function(action, params) { - return OCA.Files.Files.getAjaxUrl(action, params); - }, - - getDownloadUrl: function(files, dir, isDir) { - return OCA.Files.Files.getDownloadUrl(files, dir || this.getCurrentDirectory(), isDir); - }, - - getDefaultActionUrl: function(path, id) { - return this.linkTo(path) + "&openfile="+id; - }, - - getUploadUrl: function(fileName, dir) { - if (_.isUndefined(dir)) { - dir = this.getCurrentDirectory(); - } - - var pathSections = dir.split('/'); - if (!_.isUndefined(fileName)) { - pathSections.push(fileName); - } - var encodedPath = ''; - _.each(pathSections, function(section) { - if (section !== '') { - encodedPath += '/' + encodeURIComponent(section); - } - }); - return OC.linkToRemoteBase('webdav') + encodedPath; - }, - - /** - * Generates a preview URL based on the URL space. - * @param urlSpec attributes for the URL - * @param {number} urlSpec.x width - * @param {number} urlSpec.y height - * @param {String} urlSpec.file path to the file - * @return preview URL - */ - generatePreviewUrl: function(urlSpec) { - urlSpec = urlSpec || {}; - if (!urlSpec.x) { - urlSpec.x = this.$table.data('preview-x') || 250; - } - if (!urlSpec.y) { - urlSpec.y = this.$table.data('preview-y') || 250; - } - urlSpec.x *= window.devicePixelRatio; - urlSpec.y *= window.devicePixelRatio; - urlSpec.x = Math.ceil(urlSpec.x); - urlSpec.y = Math.ceil(urlSpec.y); - urlSpec.forceIcon = 0; - - /** - * Images are cropped to a square by default. Append a=1 to the URL - * if the user wants to see images with original aspect ratio. - */ - urlSpec.a = this._filesConfig.crop_image_previews ? 0 : 1; - - if (typeof urlSpec.fileId !== 'undefined') { - delete urlSpec.file; - return OC.generateUrl('/core/preview?') + $.param(urlSpec); - } else { - delete urlSpec.fileId; - return OC.generateUrl('/core/preview.png?') + $.param(urlSpec); - } - - }, - - /** - * Lazy load a file's preview. - * - * @param path path of the file - * @param mime mime type - * @param callback callback function to call when the image was loaded - * @param etag file etag (for caching) - */ - lazyLoadPreview : function(options) { - var self = this; - var fileId = options.fileId; - var path = options.path; - var mime = options.mime; - var ready = options.callback; - var etag = options.etag; - - // get mime icon url - var iconURL = OC.MimeType.getIconUrl(mime); - var previewURL, - urlSpec = {}; - ready(iconURL); // set mimeicon URL - - urlSpec.fileId = fileId; - urlSpec.file = OCA.Files.Files.fixPath(path); - if (options.x) { - urlSpec.x = options.x; - } - if (options.y) { - urlSpec.y = options.y; - } - if (options.a) { - urlSpec.a = options.a; - } - if (options.mode) { - urlSpec.mode = options.mode; - } - - if (etag){ - // use etag as cache buster - urlSpec.c = etag; - } - - previewURL = self.generatePreviewUrl(urlSpec); - previewURL = previewURL.replace(/\(/g, '%28').replace(/\)/g, '%29'); - - // preload image to prevent delay - // this will make the browser cache the image - var img = new Image(); - img.onload = function(){ - // if loading the preview image failed (no preview for the mimetype) then img.width will < 5 - if (img.width > 5) { - ready(previewURL, img); - } else if (options.error) { - options.error(); - } - }; - if (options.error) { - img.onerror = options.error; - } - img.src = previewURL; - }, - - _updateDirectoryPermissions: function() { - var isCreatable = (this.dirInfo.permissions & OC.PERMISSION_CREATE) !== 0 && this.$el.find('#free_space').val() !== '0'; - this.$el.find('#permissions').val(this.dirInfo.permissions); - this.$el.find('.creatable').toggleClass('hidden', !isCreatable); - this.$el.find('.notCreatable').toggleClass('hidden', isCreatable); - }, - /** - * Shows/hides action buttons - * - * @param show true for enabling, false for disabling - */ - showActions: function(show){ - this.$el.find('.actions').toggleClass('hidden', !show); - if (show){ - // make sure to display according to permissions - var permissions = this.getDirectoryPermissions(); - var isCreatable = (permissions & OC.PERMISSION_CREATE) !== 0; - this.$el.find('.creatable').toggleClass('hidden', !isCreatable); - this.$el.find('.notCreatable').toggleClass('hidden', isCreatable); - // remove old style breadcrumbs (some apps might create them) - this.$el.find('.files-controls .crumb').remove(); - // refresh breadcrumbs in case it was replaced by an app - this.breadcrumb.render(); - } - else{ - this.$el.find('.creatable, .notCreatable').addClass('hidden'); - } - }, - /** - * Enables/disables viewer mode. - * In viewer mode, apps can embed themselves under the controls bar. - * In viewer mode, the actions of the file list will be hidden. - * @param show true for enabling, false for disabling - */ - setViewerMode: function(show){ - this.showActions(!show); - this.$el.find('.files-filestable').toggleClass('hidden', show); - this.$el.trigger(new $.Event('changeViewerMode', {viewerModeEnabled: show})); - }, - /** - * Removes a file entry from the list - * @param name name of the file to remove - * @param {Object} [options] map of attributes - * @param {boolean} [options.updateSummary] true to update the summary - * after removing, false otherwise. Defaults to true. - * @return deleted element - */ - remove: function(name, options){ - options = options || {}; - var fileEl = this.findFileEl(name); - var fileData = _.findWhere(this.files, {name: name}); - if (!fileData) { - return; - } - var fileId = fileData.id; - if (this._selectedFiles[fileId]) { - // remove from selection first - this._selectFileEl(fileEl, false); - this.updateSelectionSummary(); - } - if (this._selectedFiles[fileId]) { - delete this._selectedFiles[fileId]; - this._selectionSummary.remove(fileData); - this.updateSelectionSummary(); - } - var index = this.files.findIndex(function(el){return el.name==name;}); - this.files.splice(index, 1); - - // TODO: improve performance on batch update - this.isEmpty = !this.files.length; - if (typeof(options.updateSummary) === 'undefined' || !!options.updateSummary) { - this.updateEmptyContent(); - this.fileSummary.remove({type: fileData.type, size: fileData.size}, true); - } - - if (!fileEl.length) { - return null; - } - - if (this._dragOptions && (fileEl.data('permissions') & OC.PERMISSION_DELETE)) { - // file is only draggable when delete permissions are set - fileEl.find('td.filename').draggable('destroy'); - } - if (this._currentFileModel && this._currentFileModel.get('id') === fileId) { - // Note: in the future we should call destroy() directly on the model - // and the model will take care of the deletion. - // Here we only trigger the event to notify listeners that - // the file was removed. - this._currentFileModel.trigger('destroy'); - this._updateDetailsView(null); - } - fileEl.remove(); - - var lastIndex = this.$fileList.children().length; - // if there are less elements visible than one page - // but there are still pending elements in the array, - // then directly append the next page - if (lastIndex < this.files.length && lastIndex < this.pageSize()) { - this._nextPage(true); - } - - return fileEl; - }, - /** - * Finds the index of the row before which the given - * fileData should be inserted, considering the current - * sorting - * - * @param {OC.Files.FileInfo} fileData file info - */ - _findInsertionIndex: function(fileData) { - var index = 0; - while (index < this.files.length && this._sortComparator(fileData, this.files[index]) > 0) { - index++; - } - return index; - }, - - /** - * Moves a file to a given target folder. - * - * @param fileNames array of file names to move - * @param targetPath absolute target path - * @param callback function to call when movement is finished - * @param dir the dir path where fileNames are located (optional, will take current folder if undefined) - */ - move: function(fileNames, targetPath, callback, dir) { - var self = this; - - dir = typeof dir === 'string' ? dir : this.getCurrentDirectory(); - if (dir.charAt(dir.length - 1) !== '/') { - dir += '/'; - } - var target = OC.basename(targetPath); - if (!_.isArray(fileNames)) { - fileNames = [fileNames]; - } - - var moveFileFunction = function(fileName) { - var $tr = self.findFileEl(fileName); - self.showFileBusyState($tr, true); - if (targetPath.charAt(targetPath.length - 1) !== '/') { - // make sure we move the files into the target dir, - // not overwrite it - targetPath = targetPath + '/'; - } - return self.filesClient.move(dir + fileName, targetPath + fileName) - .done(function() { - // if still viewing the same directory - if (OC.joinPaths(self.getCurrentDirectory(), '/') === OC.joinPaths(dir, '/')) { - // recalculate folder size - var oldFile = self.findFileEl(target); - var newFile = self.findFileEl(fileName); - var oldSize = oldFile.data('size'); - var newSize = oldSize + newFile.data('size'); - oldFile.data('size', newSize); - oldFile.find('td.filesize').text(OC.Util.humanFileSize(newSize, false, false)); - - self.remove(fileName); - } - }) - .fail(function(status) { - if (status === 412) { - // TODO: some day here we should invoke the conflict dialog - OC.Notification.show(t('files', 'Could not move "{file}", target exists', - {file: fileName}), {type: 'error'} - ); - } else { - OC.Notification.show(t('files', 'Could not move "{file}"', - {file: fileName}), {type: 'error'} - ); - } - }) - .always(function() { - self.showFileBusyState($tr, false); - }); - }; - return this.reportOperationProgress(fileNames, moveFileFunction, callback).then(function() { - self.updateStorageStatistics(); - self.updateStorageQuotas(); - }); - }, - - _reflect: function (promise){ - return promise.then(function(v){ return {};}, function(e){ return {};}); - }, - - reportOperationProgress: function (fileNames, operationFunction, callback){ - var self = this; - self._operationProgressBar.showProgressBar(false); - var mcSemaphore = new OCA.Files.Semaphore(5); - var counter = 0; - var promises = _.map(fileNames, function(arg) { - return mcSemaphore.acquire().then(function(){ - return operationFunction(arg).always(function(){ - mcSemaphore.release(); - counter++; - self._operationProgressBar.setProgressBarValue(100.0*counter/fileNames.length); - }); - }); - }); - - return Promise.all(_.map(promises, self._reflect)).then(function(){ - if (callback) { - callback(); - } - self._operationProgressBar.hideProgressBar(); - }); - }, - - /** - * Copies a file to a given target folder. - * - * @param fileNames array of file names to copy - * @param targetPath absolute target path - * @param callback to call when copy is finished with success - * @param dir the dir path where fileNames are located (optional, will take current folder if undefined) - */ - copy: function(fileNames, targetPath, callback, dir) { - var self = this; - var filesToNotify = []; - var count = 0; - - dir = typeof dir === 'string' ? dir : this.getCurrentDirectory(); - if (dir.charAt(dir.length - 1) !== '/') { - dir += '/'; - } - var target = OC.basename(targetPath); - if (!_.isArray(fileNames)) { - fileNames = [fileNames]; - } - var copyFileFunction = function(fileName) { - var $tr = self.findFileEl(fileName); - self.showFileBusyState($tr, true); - if (targetPath.charAt(targetPath.length - 1) !== '/') { - // make sure we move the files into the target dir, - // not overwrite it - targetPath = targetPath + '/'; - } - var targetPathAndName = targetPath + fileName; - if ((dir + fileName) === targetPathAndName) { - var dotIndex = targetPathAndName.indexOf("."); - if ( dotIndex > 1) { - var leftPartOfName = targetPathAndName.substr(0, dotIndex); - var fileNumber = leftPartOfName.match(/\d+/); - // TRANSLATORS name that is appended to copied files with the same name, will be put in parenthesis and appended with a number if it is the second+ copy - var copyNameLocalized = t('files', 'copy'); - if (isNaN(fileNumber) ) { - fileNumber++; - targetPathAndName = targetPathAndName.replace(/(?=\.[^.]+$)/g, " (" + copyNameLocalized + " " + fileNumber + ")"); - } - else { - // Check if we have other files with 'copy X' and the same name - var maxNum = 1; - if (self.files !== null) { - leftPartOfName = leftPartOfName.replace("/", ""); - leftPartOfName = leftPartOfName.replace(new RegExp("\\(" + copyNameLocalized + "( \\d+)?\\)"),""); - // find the last file with the number extension and add one to the new name - for (var j = 0; j < self.files.length; j++) { - var cName = self.files[j].name; - if (cName.indexOf(leftPartOfName) > -1) { - if (cName.indexOf("(" + copyNameLocalized + ")") > 0) { - targetPathAndName = targetPathAndName.replace(new RegExp(" \\(" + copyNameLocalized + "\\)"),""); - if (maxNum == 1) { - maxNum = 2; - } - } - else { - var cFileNumber = cName.match(new RegExp("\\(" + copyNameLocalized + " (\\d+)\\)")); - if (cFileNumber && parseInt(cFileNumber[1]) >= maxNum) { - maxNum = parseInt(cFileNumber[1]) + 1; - } - } - } - } - targetPathAndName = targetPathAndName.replace(new RegExp(" \\(" + copyNameLocalized + " \\d+\\)"),""); - } - // Create the new file name with _x at the end - // Start from 2 per a special request of the 'standard' - var extensionName = " (" + copyNameLocalized + " " + maxNum +")"; - if (maxNum == 1) { - extensionName = " (" + copyNameLocalized + ")"; - } - targetPathAndName = targetPathAndName.replace(/(?=\.[^.]+$)/g, extensionName); - } - } - } - return self.filesClient.copy(dir + fileName, targetPathAndName) - .done(function () { - filesToNotify.push(fileName); - - // if still viewing the same directory - if (OC.joinPaths(self.getCurrentDirectory(), '/') === OC.joinPaths(dir, '/')) { - // recalculate folder size - var oldFile = self.findFileEl(target); - var newFile = self.findFileEl(fileName); - var oldSize = oldFile.data('size'); - var newSize = oldSize + newFile.data('size'); - oldFile.data('size', newSize); - oldFile.find('td.filesize').text(OC.Util.humanFileSize(newSize, false, false)); - } - self.reload(); - }) - .fail(function(status) { - if (status === 412) { - // TODO: some day here we should invoke the conflict dialog - OC.Notification.show(t('files', 'Could not copy "{file}", target exists', - {file: fileName}), {type: 'error'} - ); - } else { - OC.Notification.show(t('files', 'Could not copy "{file}"', - {file: fileName}), {type: 'error'} - ); - } - }) - .always(function() { - self.showFileBusyState($tr, false); - count++; - - /** - * We only show the notifications once the last file has been copied - */ - if (count === fileNames.length) { - // Remove leading and ending / - if (targetPath.slice(0, 1) === '/') { - targetPath = targetPath.slice(1, targetPath.length); - } - if (targetPath.slice(-1) === '/') { - targetPath = targetPath.slice(0, -1); - } - - if (filesToNotify.length > 0) { - // Since there's no visual indication that the files were copied, let's send some notifications ! - if (filesToNotify.length === 1) { - OC.Notification.show(t('files', 'Copied {origin} inside {destination}', - { - origin: filesToNotify[0], - destination: targetPath - } - ), {timeout: 10}); - } else if (filesToNotify.length > 0 && filesToNotify.length < 3) { - OC.Notification.show(t('files', 'Copied {origin} inside {destination}', - { - origin: filesToNotify.join(', '), - destination: targetPath - } - ), {timeout: 10}); - } else { - OC.Notification.show(t('files', 'Copied {origin} and {nbfiles} other files inside {destination}', - { - origin: filesToNotify[0], - nbfiles: filesToNotify.length - 1, - destination: targetPath - } - ), {timeout: 10}); - } - } - } - }); - }; - return this.reportOperationProgress(fileNames, copyFileFunction, callback).then(function() { - self.updateStorageStatistics(); - self.updateStorageQuotas(); - }); - }, - - openLocalClient: function(path) { - var link = OC.linkToOCS('apps/files/api/v1', 2) + 'openlocaleditor?format=json'; - - $.post(link, { - path - }) - .success(function(result) { - var scheme = 'nc://'; - var command = 'open'; - var uid = OC.getCurrentUser().uid; - var url = scheme + command + '/' + uid + '@' + window.location.host + OC.encodePath(path); - url += '?token=' + result.ocs.data.token; - - window.location.href = url; - }) - .fail(function() { - OC.Notification.show(t('files', 'Failed to redirect to client')) - }) - }, - - /** - * Updates the given row with the given file info - * - * @param {Object} $tr row element - * @param {OCA.Files.FileInfo} fileInfo file info - * @param {Object} options options - * - * @return {Object} new row element - */ - updateRow: function($tr, fileInfo, options) { - this.files.splice($tr.index(), 1); - $tr.remove(); - options = _.extend({silent: true}, options); - options = _.extend(options, {updateSummary: false}); - $tr = this.add(fileInfo, options); - this.$fileList.trigger($.Event('fileActionsReady', {fileList: this, $files: $tr})); - return $tr; - }, - - /** - * Triggers file rename input field for the given file name. - * If the user enters a new name, the file will be renamed. - * - * @param oldName file name of the file to rename - */ - rename: function(oldName) { - var self = this; - var tr, td, input, form; - tr = this.findFileEl(oldName); - var oldFileInfo = this.files[tr.index()]; - tr.data('renaming',true); - td = tr.children('td.filename'); - input = $('').val(oldName); - form = $('
    '); - form.append(input); - td.children('a.name').children(':not(.thumbnail-wrapper)').hide(); - td.append(form); - input.focus(); - //preselect input - var len = input.val().lastIndexOf('.'); - if ( len === -1 || - tr.data('type') === 'dir' ) { - len = input.val().length; - } - input.selectRange(0, len); - var checkInput = function () { - var filename = input.val(); - if (filename !== oldName) { - // Files.isFileNameValid(filename) throws an exception itself - OCA.Files.Files.isFileNameValid(filename); - if (self.inList(filename)) { - throw t('files', '{newName} already exists', {newName: filename}, undefined, { - escape: false - }); - } - } - return true; - }; - - function restore() { - tr.data('renaming',false); - form.remove(); - td.children('a.name').children(':not(.thumbnail-wrapper)').show(); - } - - function updateInList(fileInfo) { - self.updateRow(tr, fileInfo); - self._updateDetailsView(fileInfo.name, false); - } - - // TODO: too many nested blocks, move parts into functions - form.submit(function(event) { - event.stopPropagation(); - event.preventDefault(); - if (input.hasClass('error')) { - return; - } - - try { - var newName = input.val().trim(); - form.remove(); - - if (newName !== oldName) { - checkInput(); - // mark as loading (temp element) - self.showFileBusyState(tr, true); - tr.attr('data-file', newName); - var basename = newName; - if (newName.indexOf('.') > 0 && tr.data('type') !== 'dir') { - basename = newName.substr(0, newName.lastIndexOf('.')); - } - td.find('a.name span.nametext').text(basename); - td.children('a.name').children(':not(.thumbnail-wrapper)').show(); - - var path = tr.attr('data-path') || self.getCurrentDirectory(); - self.filesClient.move(OC.joinPaths(path, oldName), OC.joinPaths(path, newName)) - .done(function() { - oldFileInfo.name = newName; - updateInList(oldFileInfo); - }) - .fail(function(status) { - // TODO: 409 means current folder does not exist, redirect ? - if (status === 404) { - // source not found, so remove it from the list - OC.Notification.show(t('files', 'Could not rename "{fileName}", it does not exist any more', - {fileName: oldName}), {timeout: 7, type: 'error'} - ); - - self.remove(newName, {updateSummary: true}); - return; - } else if (status === 412) { - // target exists - OC.Notification.show( - t('files', 'The name "{targetName}" is already used in the folder "{dir}". Please choose a different name.', - { - targetName: newName, - dir: self.getCurrentDirectory(), - }), - { - type: 'error' - } - ); - } else { - // restore the item to its previous state - OC.Notification.show(t('files', 'Could not rename "{fileName}"', - {fileName: oldName}), {type: 'error'} - ); - } - updateInList(oldFileInfo); - }); - } else { - // add back the old file info when cancelled - self.files.splice(tr.index(), 1); - tr.remove(); - tr = self.add(oldFileInfo, {updateSummary: false, silent: true}); - self.$fileList.trigger($.Event('fileActionsReady', {fileList: self, $files: $(tr)})); - } - } catch (error) { - input.attr('title', error); - input.addClass('error'); - } - return false; - }); - input.keyup(function(event) { - // verify filename on typing - try { - checkInput(); - input.removeClass('error'); - } catch (error) { - input.attr('title', error); - input.addClass('error'); - } - if (event.keyCode === 27) { - restore(); - } - }); - input.click(function(event) { - event.stopPropagation(); - event.preventDefault(); - }); - input.blur(function() { - if(input.hasClass('error')) { - restore(); - } else { - form.trigger('submit'); - } - }); - }, - - /** - * Create an empty file inside the current directory. - * - * @param {string} name name of the file - * - * @return {Promise} promise that will be resolved after the - * file was created - * - * @since 8.2 - */ - createFile: function(name, options) { - var self = this; - var deferred = $.Deferred(); - var promise = deferred.promise(); - - OCA.Files.Files.isFileNameValid(name); - - if (this.lastAction) { - this.lastAction(); - } - - name = this.getUniqueName(name); - var targetPath = this.getCurrentDirectory() + '/' + name; - - self.filesClient.putFileContents( - targetPath, - ' ', // dont create empty files which fails on some storage backends - { - contentType: 'text/plain', - overwrite: true - } - ) - .done(function() { - // TODO: error handling / conflicts - options = _.extend({scrollTo: true}, options || {}); - self.addAndFetchFileInfo(targetPath, '', options).then(function(status, data) { - deferred.resolve(status, data); - }, function() { - OC.Notification.show(t('files', 'Could not create file "{file}"', - {file: name}), {type: 'error'} - ); - }); - }) - .fail(function(status) { - if (status === 412) { - OC.Notification.show(t('files', 'Could not create file "{file}" because it already exists', - {file: name}), {type: 'error'} - ); - } else { - OC.Notification.show(t('files', 'Could not create file "{file}"', - {file: name}), {type: 'error'} - ); - } - deferred.reject(status); - }); - - return promise; - }, - - /** - * Create a directory inside the current directory. - * - * @param {string} name name of the directory - * - * @return {Promise} promise that will be resolved after the - * directory was created - * - * @since 8.2 - */ - createDirectory: function(name) { - var self = this; - var deferred = $.Deferred(); - var promise = deferred.promise(); - - OCA.Files.Files.isFileNameValid(name); - - if (this.lastAction) { - this.lastAction(); - } - - name = this.getUniqueName(name); - var targetPath = this.getCurrentDirectory() + '/' + name; - - this.filesClient.createDirectory(targetPath) - .done(function() { - self.addAndFetchFileInfo(targetPath, '', {scrollTo:true}).then(function(status, data) { - deferred.resolve(status, data); - }, function() { - OC.Notification.show(t('files', 'Could not create folder "{dir}"', - {dir: name}), {type: 'error'} - ); - }); - }) - .fail(function(createStatus) { - // method not allowed, folder might exist already - if (createStatus === 405) { - // add it to the list, for completeness - self.addAndFetchFileInfo(targetPath, '', {scrollTo:true}) - .done(function(status, data) { - OC.Notification.show(t('files', 'Could not create folder "{dir}" because it already exists', - {dir: name}), {type: 'error'} - ); - // still consider a failure - deferred.reject(createStatus, data); - }) - .fail(function() { - OC.Notification.show(t('files', 'Could not create folder "{dir}"', - {dir: name}), {type: 'error'} - ); - deferred.reject(status); - }); - } else { - OC.Notification.show(t('files', 'Could not create folder "{dir}"', - {dir: name}), {type: 'error'} - ); - deferred.reject(createStatus); - } - }); - - return promise; - }, - - /** - * Add file into the list by fetching its information from the server first. - * - * If the given directory does not match the current directory, nothing will - * be fetched. - * - * @param {String} fileName file name - * @param {String} [dir] optional directory, defaults to the current one - * @param {Object} options same options as #add - * @return {Promise} promise that resolves with the file info, or an - * already resolved Promise if no info was fetched. The promise rejects - * if the file was not found or an error occurred. - * - * @since 9.0 - */ - addAndFetchFileInfo: function(fileName, dir, options) { - var self = this; - var deferred = $.Deferred(); - if (_.isUndefined(dir)) { - dir = this.getCurrentDirectory(); - } else { - dir = dir || '/'; - } - - var targetPath = OC.joinPaths(dir, fileName); - - if ((OC.dirname(targetPath) || '/') !== this.getCurrentDirectory()) { - // no need to fetch information - deferred.resolve(); - return deferred.promise(); - } - - var addOptions = _.extend({ - animate: true, - scrollTo: false - }, options || {}); - - this.filesClient.getFileInfo(targetPath, { - properties: this._getWebdavProperties() - }) - .then(function(status, data) { - // remove first to avoid duplicates - self.remove(data.name); - self.add(data, addOptions); - deferred.resolve(status, data); - }) - .fail(function(status) { - OCP.Toast.error( - t('files', 'Could not fetch file details "{file}"', { file: fileName }) - ); - deferred.reject(status); - }); - - return deferred.promise(); - }, - - /** - * Returns whether the given file name exists in the list - * - * @param {string} file file name - * - * @return {boolean} true if the file exists in the list, false otherwise - */ - inList:function(file) { - return this.findFile(file); - }, - - /** - * Shows busy state on a given file row or multiple - * - * @param {string|Array.} files file name or array of file names - * @param {boolean} [busy=true] busy state, true for busy, false to remove busy state - * - * @since 8.2 - */ - showFileBusyState: function(files, state) { - var self = this; - if (!_.isArray(files) && !files.is) { - files = [files]; - } - - if (_.isUndefined(state)) { - state = true; - } - - _.each(files, function(fileName) { - // jquery element already ? - var $tr; - if (_.isString(fileName)) { - $tr = self.findFileEl(fileName); - } else { - $tr = $(fileName); - } - - var $thumbEl = $tr.find('.thumbnail'); - $tr.toggleClass('busy', state); - - if (state) { - $thumbEl.parent().addClass('icon-loading-small'); - } else { - $thumbEl.parent().removeClass('icon-loading-small'); - } - }); - }, - - /** - * Delete the given files from the given dir - * @param files file names list (without path) - * @param dir directory in which to delete the files, defaults to the current - * directory - */ - do_delete:function(files, dir) { - var self = this; - if (files && files.substr) { - files=[files]; - } - if (!files) { - // delete all files in directory - files = _.pluck(this.files, 'name'); - } - // Finish any existing actions - if (this.lastAction) { - this.lastAction(); - } - - dir = dir || this.getCurrentDirectory(); - - var removeFunction = function(fileName) { - var $tr = self.findFileEl(fileName); - self.showFileBusyState($tr, true); - return self.filesClient.remove(dir + '/' + fileName) - .done(function() { - if (OC.joinPaths(self.getCurrentDirectory(), '/') === OC.joinPaths(dir, '/')) { - self.remove(fileName); - } - }) - .fail(function(status) { - if (status === 404) { - // the file already did not exist, remove it from the list - if (OC.joinPaths(self.getCurrentDirectory(), '/') === OC.joinPaths(dir, '/')) { - self.remove(fileName); - } - } else { - // only reset the spinner for that one file - OC.Notification.show(t('files', 'Error deleting file "{fileName}".', - {fileName: fileName}), {type: 'error'} - ); - } - }) - .always(function() { - self.showFileBusyState($tr, false); - }); - }; - return this.reportOperationProgress(files, removeFunction).then(function(){ - self.updateStorageStatistics(); - self.updateStorageQuotas(); - }); - }, - - /** - * Creates the file summary section - */ - _createSummary: function() { - var $tr = $(''); - - if (this._allowSelection) { - // Dummy column for selection, as all rows must have the same - // number of columns. - $tr.append(''); - } - - this.$el.find('tfoot').append($tr); - - return new OCA.Files.FileSummary($tr, { config: this._filesConfig }); - }, - updateEmptyContent: function() { - var permissions = this.getDirectoryPermissions(); - var isCreatable = (permissions & OC.PERMISSION_CREATE) !== 0; - this.$el.find('.emptyfilelist.emptycontent').toggleClass('hidden', !this.isEmpty); - this.$el.find('.emptyfilelist.emptycontent').toggleClass('hidden', !this.isEmpty); - this.$el.find('.emptyfilelist.emptycontent .uploadmessage').toggleClass('hidden', !isCreatable || !this.isEmpty); - this.$el.find('.files-filestable').toggleClass('hidden', this.isEmpty); - this.$el.find('.files-filestable thead th').toggleClass('hidden', this.isEmpty); - }, - /** - * Shows the loading mask. - * - * @see OCA.Files.FileList#hideMask - */ - showMask: function() { - // in case one was shown before - var $mask = this.$el.find('.mask'); - if ($mask.exists()) { - return; - } - - this.$table.addClass('hidden'); - this.$el.find('.emptyfilelist.emptycontent').addClass('hidden'); - - $mask = $('
    '); - - this.$el.append($mask); - - $mask.removeClass('transparent'); - }, - /** - * Hide the loading mask. - * @see OCA.Files.FileList#showMask - */ - hideMask: function() { - this.$el.find('.mask').remove(); - this.$table.removeClass('hidden'); - }, - scrollTo:function(file) { - if (!_.isArray(file)) { - file = [file]; - } - if (file.length === 1) { - _.defer(function() { - if (document.documentElement.clientWidth > 1024) { - this.showDetailsView(file[0]); - } - }.bind(this)); - } - this.highlightFiles(file, function($tr) { - $tr.addClass('searchresult'); - $tr.one('hover', function() { - $tr.removeClass('searchresult'); - }); - }); - }, - /** - * @deprecated use setFilter(filter) - */ - filter:function(query) { - this.setFilter(''); - }, - /** - * @deprecated use setFilter('') - */ - unfilter:function() { - this.setFilter(''); - }, - /** - * hide files matching the given filter - * @param {any} filter - - */ - setFilter:function(filter) { - var total = 0; - if (this._filter === filter) { - return; - } - this._filter = filter; - this.fileSummary.setFilter(filter, this.files); - total = this.fileSummary.getTotal(); - if (!this.$el.find('.mask').exists()) { - this.hideIrrelevantUIWhenNoFilesMatch(); - } - - var visibleCount = 0; - filter = filter.toLowerCase(); - - function filterRows(tr) { - var $e = $(tr); - if ($e.data('file').toString().toLowerCase().indexOf(filter) === -1) { - $e.addClass('hidden'); - } else { - visibleCount++; - $e.removeClass('hidden'); - } - } - - var $trs = this.$fileList.find('tr'); - do { - _.each($trs, filterRows); - if (visibleCount < total) { - $trs = this._nextPage(false); - } - } while (visibleCount < total && $trs.length > 0); - - this.$container.trigger('scroll'); - }, - hideIrrelevantUIWhenNoFilesMatch:function() { - if (this._filter && this.fileSummary.summary.totalDirs + this.fileSummary.summary.totalFiles === 0) { - this.$el.find('.files-filestable thead th').addClass('hidden'); - this.$el.find('.emptyfilelist.emptycontent').addClass('hidden'); - $('#searchresults').addClass('filter-empty'); - $('#searchresults .emptycontent').addClass('emptycontent-search'); - if ( $('#searchresults').length === 0 || $('#searchresults').hasClass('hidden') ) { - var error; - if (this._filter.length > 2) { - error = t('files', 'No search results in other folders for {tag}{filter}{endtag}', {filter:this._filter}); - } else { - error = t('files', 'Enter more than two characters to search in other folders'); - } - this.$el.find('.nofilterresults').removeClass('hidden'). - find('p').html(error.replace('{tag}', '').replace('{endtag}', '')); - } - } else { - $('#searchresults').removeClass('filter-empty'); - $('#searchresults .emptycontent').removeClass('emptycontent-search'); - this.$el.find('.files-filestable thead th').toggleClass('hidden', this.isEmpty); - if (!this.$el.find('.mask').exists()) { - this.$el.find('.emptyfilelist.emptycontent').toggleClass('hidden', !this.isEmpty); - } - this.$el.find('.nofilterresults').addClass('hidden'); - } - }, - /** - * get the current filter - * @param {any} filter - - */ - getFilter:function(filter) { - return this._filter; - }, - - /** - * Update UI based on the current selection - */ - updateSelectionSummary: function() { - var summary = this._selectionSummary.summary; - var selection; - - var showHidden = !!this._filesConfig.show_hidden; - if (summary.totalFiles === 0 && summary.totalDirs === 0) { - this.$el.find('.column-name a.name>span:first').text(t('files','Name')); - this.$el.find('.column-size a>span:first').text(t('files','Size')); - this.$el.find('.column-mtime a>span:first').text(t('files','Modified')); - this.$el.find('table').removeClass('multiselect'); - this.$el.find('.selectedActions').addClass('hidden'); - } - else { - this.$el.find('.selectedActions').removeClass('hidden'); - this.$el.find('.column-size a>span:first').text(OC.Util.humanFileSize(summary.totalSize, false, false)); - - var directoryInfo = n('files', '%n folder', '%n folders', summary.totalDirs); - var fileInfo = n('files', '%n file', '%n files', summary.totalFiles); - - if (summary.totalDirs > 0 && summary.totalFiles > 0) { - var selectionVars = { - dirs: directoryInfo, - files: fileInfo - }; - selection = t('files', '{dirs} and {files}', selectionVars); - } else if (summary.totalDirs > 0) { - selection = directoryInfo; - } else { - selection = fileInfo; - } - - if (!showHidden && summary.totalHidden > 0) { - var hiddenInfo = n('files', 'including %n hidden', 'including %n hidden', summary.totalHidden); - selection += ' (' + hiddenInfo + ')'; - } - - this.$el.find('.column-name a.name>span:first').text(selection); - this.$el.find('.column-mtime a>span:first').text(''); - this.$el.find('table').addClass('multiselect'); - - if (this.fileMultiSelectMenu) { - this.fileMultiSelectMenu.toggleItemVisibility('download', this.isSelectedDownloadable()); - this.fileMultiSelectMenu.toggleItemVisibility('delete', this.isSelectedDeletable()); - this.fileMultiSelectMenu.toggleItemVisibility('copyMove', this.isSelectedCopiable()); - if (this.isSelectedCopiable()) { - if (this.isSelectedMovable()) { - this.fileMultiSelectMenu.updateItemText('copyMove', t('files', 'Move or copy')); - } else { - this.fileMultiSelectMenu.updateItemText('copyMove', t('files', 'Copy')); - } - } else { - this.fileMultiSelectMenu.toggleItemVisibility('copyMove', false); - } - } - } - }, - - /** - * Check whether all selected files are copiable - */ - isSelectedCopiable: function() { - return _.reduce(this.getSelectedFiles(), function(copiable, file) { - var requiredPermission = $('#isPublic').val() ? OC.PERMISSION_UPDATE : OC.PERMISSION_READ; - return copiable && (file.permissions & requiredPermission); - }, true); - }, - - /** - * Check whether all selected files are movable - */ - isSelectedMovable: function() { - return _.reduce(this.getSelectedFiles(), function(movable, file) { - return movable && (file.permissions & OC.PERMISSION_UPDATE); - }, true); - }, - - /** - * Check whether all selected files are downloadable - */ - isSelectedDownloadable: function() { - return _.reduce(this.getSelectedFiles(), function(downloadable, file) { - return downloadable && (file.permissions & OC.PERMISSION_READ); - }, true); - }, - - /** - * Check whether all selected files are deletable - */ - isSelectedDeletable: function() { - return _.reduce(this.getSelectedFiles(), function(deletable, file) { - return deletable && (file.permissions & OC.PERMISSION_DELETE); - }, true); - }, - - /** - * Are all files selected? - * - * @returns {Boolean} all files are selected - */ - isAllSelected: function() { - var checkbox = this.$el.find('.select-all') - var checked = checkbox.prop('checked') - var indeterminate = checkbox.prop('indeterminate') - return checked && !indeterminate; - }, - - /** - * Returns the file info of the selected files - * - * @return array of file names - */ - getSelectedFiles: function() { - return _.values(this._selectedFiles); - }, - - getUniqueName: function(name) { - if (this.findFileEl(name).exists()) { - var numMatch; - var parts=name.split('.'); - var extension = ""; - if (parts.length > 1) { - extension=parts.pop(); - } - var base=parts.join('.'); - numMatch=base.match(/\((\d+)\)/); - var num=2; - if (numMatch && numMatch.length>0) { - num=parseInt(numMatch[numMatch.length-1], 10)+1; - base=base.split('('); - base.pop(); - base=$.trim(base.join('(')); - } - name=base+' ('+num+')'; - if (extension) { - name = name+'.'+extension; - } - // FIXME: ugly recursion - return this.getUniqueName(name); - } - return name; - }, - - /** - * Shows a "permission denied" notification - */ - _showPermissionDeniedNotification: function() { - var message = t('files', 'You do not have permission to upload or create files here'); - OC.Notification.show(message, {type: 'error'}); - }, - - /** - * Setup file upload events related to the file-upload plugin - * - * @param {OC.Uploader} uploader - */ - setupUploadEvents: function(uploader) { - var self = this; - - self._uploads = {}; - - // detect the progress bar resize - uploader.on('resized', this._onResize); - - uploader.on('drop', function(e, data) { - self._uploader.log('filelist handle fileuploaddrop', e, data); - - if (self.$el.hasClass('hidden')) { - // do not upload to invisible lists - e.preventDefault(); - return false; - } - - var dropTarget = $(e.delegatedEvent.target); - - // check if dropped inside this container and not another one - if (dropTarget.length - && !self.$el.is(dropTarget) // dropped on list directly - && !self.$el.has(dropTarget).length // dropped inside list - && !dropTarget.is(self.$container) // dropped on main container - && !self.$el.parent().is(dropTarget) // drop on the parent container (#app-content) since the main container might not have the full height - ) { - e.preventDefault(); - return false; - } - - // find the closest tr or crumb to use as target - dropTarget = dropTarget.closest('tr, .crumb'); - - // if dropping on tr or crumb, drag&drop upload to folder - if (dropTarget && (dropTarget.data('type') === 'dir' || - dropTarget.hasClass('crumb'))) { - - // remember as context - data.context = dropTarget; - - // if permissions are specified, only allow if create permission is there - var permissions = dropTarget.data('permissions'); - if (!_.isUndefined(permissions) && (permissions & OC.PERMISSION_CREATE) === 0) { - self._showPermissionDeniedNotification(); - return false; - } - var dir = dropTarget.data('file'); - // if from file list, need to prepend parent dir - if (dir) { - var parentDir = self.getCurrentDirectory(); - if (parentDir[parentDir.length - 1] !== '/') { - parentDir += '/'; - } - dir = parentDir + dir; - } - else{ - // read full path from crumb - dir = dropTarget.data('dir') || '/'; - } - - // add target dir - data.targetDir = dir; - } else { - // cancel uploads to current dir if no permission - var isCreatable = (self.getDirectoryPermissions() & OC.PERMISSION_CREATE) !== 0; - if (!isCreatable) { - self._showPermissionDeniedNotification(); - e.stopPropagation(); - return false; - } - - // we are dropping somewhere inside the file list, which will - // upload the file to the current directory - data.targetDir = self.getCurrentDirectory(); - } - }); - uploader.on('add', function(e, data) { - self._uploader.log('filelist handle fileuploadadd', e, data); - - // add ui visualization to existing folder - if (data.context && data.context.data('type') === 'dir') { - // add to existing folder - - // update upload counter ui - var uploadText = data.context.find('.uploadtext'); - var currentUploads = parseInt(uploadText.attr('currentUploads'), 10); - currentUploads += 1; - uploadText.attr('currentUploads', currentUploads); - - var translatedText = n('files', 'Uploading %n file', 'Uploading %n files', currentUploads); - if (currentUploads === 1) { - self.showFileBusyState(uploadText.closest('tr'), true); - uploadText.text(translatedText); - uploadText.show(); - } else { - uploadText.text(translatedText); - } - } - - if (!data.targetDir) { - data.targetDir = self.getCurrentDirectory(); - } - - }); - /* - * when file upload done successfully add row to filelist - * update counter when uploading to sub folder - */ - uploader.on('done', function(e, upload) { - var data = upload.data; - self._uploader.log('filelist handle fileuploaddone', e, data); - - var status = data.jqXHR.status; - if (status < 200 || status >= 300) { - // error was handled in OC.Uploads already - return; - } - - var fileName = upload.getFileName(); - var fetchInfoPromise = self.addAndFetchFileInfo(fileName, upload.getFullPath()); - if (!self._uploads) { - self._uploads = {}; - } - if (OC.isSamePath(OC.dirname(upload.getFullPath() + '/'), self.getCurrentDirectory())) { - self._uploads[fileName] = fetchInfoPromise; - } - - var uploadText = self.$fileList.find('tr .uploadtext'); - self.showFileBusyState(uploadText.closest('tr'), false); - uploadText.fadeOut(); - uploadText.attr('currentUploads', 0); - - self.updateStorageQuotas(); - }); - uploader.on('createdfolder', function(fullPath) { - self.addAndFetchFileInfo(OC.basename(fullPath), OC.dirname(fullPath)); - }); - uploader.on('stop', function() { - self._uploader.log('filelist handle fileuploadstop'); - - // prepare list of uploaded file names in the current directory - // and discard the other ones - var promises = _.values(self._uploads); - var fileNames = _.keys(self._uploads); - self._uploads = []; - - // as soon as all info is fetched - $.when.apply($, promises).then(function() { - // highlight uploaded files - self.highlightFiles(fileNames); - self.updateStorageStatistics(); - }); - - var uploadText = self.$fileList.find('tr .uploadtext'); - self.showFileBusyState(uploadText.closest('tr'), false); - uploadText.fadeOut(); - uploadText.attr('currentUploads', 0); - }); - uploader.on('fail', function(e, data) { - self._uploader.log('filelist handle fileuploadfail', e, data); - self._uploads = []; - - //if user pressed cancel hide upload chrome - //cleanup uploading to a dir - var uploadText = self.$fileList.find('tr .uploadtext'); - self.showFileBusyState(uploadText.closest('tr'), false); - uploadText.fadeOut(); - uploadText.attr('currentUploads', 0); - self.updateStorageStatistics(); - }); - - }, - - /** - * Scroll to the last file of the given list - * Highlight the list of files - * @param files array of filenames, - * @param {Function} [highlightFunction] optional function - * to be called after the scrolling is finished - */ - highlightFiles: function(files, highlightFunction) { - // Detection of the uploaded element - var filename = files[files.length - 1]; - var $fileRow = this.findFileEl(filename); - - while(!$fileRow.exists() && this._nextPage(false) !== false) { // Checking element existence - $fileRow = this.findFileEl(filename); - } - - if (!$fileRow.exists()) { // Element not present in the file list - return; - } - - var currentOffset = this.$container.scrollTop(); - var additionalOffset = this.$el.find(".files-controls").height()+this.$el.find(".files-controls").offset().top; - - // Animation - var _this = this; - var $scrollContainer = this.$container; - if ($scrollContainer[0] === window) { - // need to use "html" to animate scrolling - // when the scroll container is the window - $scrollContainer = $('html'); - } - $scrollContainer.animate({ - // Scrolling to the top of the new element - scrollTop: currentOffset + $fileRow.offset().top - $fileRow.height() * 2 - additionalOffset - }, { - duration: 500, - complete: function() { - // Highlighting function - var highlightRow = highlightFunction; - - if (!highlightRow) { - highlightRow = function($fileRow) { - $fileRow.addClass("highlightUploaded"); - setTimeout(function() { - $fileRow.removeClass("highlightUploaded"); - }, 2500); - }; - } - - // Loop over uploaded files - for(var i=0; i an array with the - * registered DetailFileInfoViews, or null if the details view - * is not enabled. - */ - getRegisteredDetailViews: function() { - if (this._detailsView) { - return this._detailsView.getDetailViews(); - } - - return null; - }, - - registerHeader: function(header) { - this.headers.push( - _.defaults(header, { order: 0 }) - ); - }, - - registerFooter: function(footer) { - this.footers.push( - _.defaults(footer, { order: 0 }) - ); - } - }; - - FileList.MultiSelectMenuActions = { - ToggleSelectionModeAction: function(fileList) { - return { - name: 'toggleSelectionMode', - displayName: function(context) { - return t('files', 'Select file range'); - }, - iconClass: 'icon-fullscreen', - order: 15, - action: function() { - fileList._onClickToggleSelectionMode(); - }, - }; - }, - }, - - /** - * Sort comparators. - * @namespace OCA.Files.FileList.Comparators - * @private - */ - FileList.Comparators = { - /** - * Compares two file infos by name, making directories appear - * first. - * - * @param {OC.Files.FileInfo} fileInfo1 file info - * @param {OC.Files.FileInfo} fileInfo2 file info - * @return {number} -1 if the first file must appear before the second one, - * 0 if they are identify, 1 otherwise. - */ - name: function(fileInfo1, fileInfo2) { - if (fileInfo1.type === 'dir' && fileInfo2.type !== 'dir') { - return -1; - } - if (fileInfo1.type !== 'dir' && fileInfo2.type === 'dir') { - return 1; - } - return OC.Util.naturalSortCompare(fileInfo1.name, fileInfo2.name); - }, - /** - * Compares two file infos by size. - * - * @param {OC.Files.FileInfo} fileInfo1 file info - * @param {OC.Files.FileInfo} fileInfo2 file info - * @return {number} -1 if the first file must appear before the second one, - * 0 if they are identify, 1 otherwise. - */ - size: function(fileInfo1, fileInfo2) { - return fileInfo1.size - fileInfo2.size; - }, - /** - * Compares two file infos by timestamp. - * - * @param {OC.Files.FileInfo} fileInfo1 file info - * @param {OC.Files.FileInfo} fileInfo2 file info - * @return {number} -1 if the first file must appear before the second one, - * 0 if they are identify, 1 otherwise. - */ - mtime: function(fileInfo1, fileInfo2) { - return fileInfo1.mtime - fileInfo2.mtime; - } - }; - - /** - * File info attributes. - * - * @typedef {Object} OC.Files.FileInfo - * - * @lends OC.Files.FileInfo - * - * @deprecated use OC.Files.FileInfo instead - * - */ - OCA.Files.FileInfo = OC.Files.FileInfo; - - OCA.Files.FileList = FileList; -})(); - -window.addEventListener('DOMContentLoaded', function() { - // FIXME: unused ? - OCA.Files.FileList.useUndo = (window.onbeforeunload)?true:false; - $(window).on('beforeunload', function () { - if (OCA.Files.FileList.lastAction) { - OCA.Files.FileList.lastAction(); - } - }); - -}); diff --git a/apps/files/js/filemultiselectmenu.js b/apps/files/js/filemultiselectmenu.js deleted file mode 100644 index 46e90bb9c0285..0000000000000 --- a/apps/files/js/filemultiselectmenu.js +++ /dev/null @@ -1,92 +0,0 @@ -/** - * SPDX-FileCopyrightText: 2018-2024 Nextcloud GmbH and Nextcloud contributors - * SPDX-License-Identifier: AGPL-3.0-or-later - */ - -(function() { - var FileMultiSelectMenu = OC.Backbone.View.extend({ - tagName: 'div', - className: 'filesSelectMenu popovermenu bubble menu-center', - _scopes: null, - initialize: function(menuItems) { - this._scopes = menuItems; - }, - events: { - 'click a.action': '_onClickAction' - }, - - /** - * Renders the menu with the currently set items - */ - render: function() { - this.$el.html(OCA.Files.Templates['filemultiselectmenu']({ - items: this._scopes - })); - }, - /** - * Displays the menu under the given element - * - * @param {OCA.Files.FileActionContext} context context - * @param {Object} $trigger trigger element - */ - show: function(context) { - this._context = context; - this.$el.removeClass('hidden'); - if (window.innerWidth < 480) { - this.$el.removeClass('menu-center').addClass('menu-right'); - } else { - this.$el.removeClass('menu-right').addClass('menu-center'); - } - OC.showMenu(null, this.$el); - return false; - }, - toggleItemVisibility: function (itemName, show) { - if (show) { - this.$el.find('.item-' + itemName).removeClass('hidden'); - } else { - this.$el.find('.item-' + itemName).addClass('hidden'); - } - }, - updateItemText: function (itemName, translation) { - this.$el.find('.item-' + itemName).find('.label').text(translation); - }, - toggleLoading: function (itemName, showLoading) { - var $actionElement = this.$el.find('.item-' + itemName); - if ($actionElement.length === 0) { - return; - } - var $icon = $actionElement.find('.icon'); - if (showLoading) { - var $loadingIcon = $(''); - $icon.after($loadingIcon); - $icon.addClass('hidden'); - $actionElement.addClass('disabled'); - } else { - $actionElement.find('.icon-loading-small').remove(); - $actionElement.find('.icon').removeClass('hidden'); - $actionElement.removeClass('disabled'); - } - }, - isDisabled: function (itemName) { - var $actionElement = this.$el.find('.item-' + itemName); - return $actionElement.hasClass('disabled'); - }, - /** - * Event handler whenever an action has been clicked within the menu - * - * @param {Object} event event object - */ - _onClickAction: function (event) { - var $target = $(event.currentTarget); - if (!$target.hasClass('menuitem')) { - $target = $target.closest('.menuitem'); - } - - OC.hideMenus(); - this._context.multiSelectMenuClick(event, $target.data('action')); - return false; - } - }); - - OCA.Files.FileMultiSelectMenu = FileMultiSelectMenu; -})(OC, OCA); diff --git a/apps/files/js/files.js b/apps/files/js/files.js deleted file mode 100644 index f1e20d9d0115a..0000000000000 --- a/apps/files/js/files.js +++ /dev/null @@ -1,543 +0,0 @@ -/** - * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors - * SPDX-FileCopyrightText: 2012-2016 ownCloud, Inc. - * SPDX-License-Identifier: AGPL-3.0-or-later - */ - -/* global getURLParameter */ -/** - * Utility class for file related operations - */ -(function() { - var Files = { - // file space size sync - _updateStorageStatistics: function(currentDir) { - var state = Files.updateStorageStatistics; - if (state.dir){ - if (state.dir === currentDir) { - return; - } - // cancel previous call, as it was for another dir - state.call.abort(); - } - state.dir = currentDir; - state.call = $.getJSON(OC.generateUrl('apps/files/api/v1/stats?dir={dir}', { - dir: currentDir, - }), function(response) { - state.dir = null; - state.call = null; - Files.updateMaxUploadFilesize(response); - }); - }, - // update quota - updateStorageQuotas: function() { - Files._updateStorageQuotasThrottled(); - }, - _updateStorageQuotas: function() { - var state = Files.updateStorageQuotas; - state.call = $.getJSON(OC.generateUrl('apps/files/api/v1/stats'), function(response) { - Files.updateQuota(response); - }); - }, - /** - * Update storage statistics such as free space, max upload, - * etc based on the given directory. - * - * Note this function is debounced to avoid making too - * many ajax calls in a row. - * - * @param dir directory - * @param force whether to force retrieving - */ - updateStorageStatistics: function(dir, force) { - if (!OC.currentUser) { - return; - } - - if (force) { - Files._updateStorageStatistics(dir); - } - else { - Files._updateStorageStatisticsDebounced(dir); - } - }, - - updateMaxUploadFilesize:function(response) { - if (response === undefined) { - return; - } - if (response.data !== undefined && response.data.uploadMaxFilesize !== undefined) { - $('#free_space').val(response.data.freeSpace); - $('#upload.button').attr('title', response.data.maxHumanFilesize); - $('#usedSpacePercent').val(response.data.usedSpacePercent); - $('#usedSpacePercent').data('mount-type', response.data.mountType); - $('#usedSpacePercent').data('mount-point', response.data.mountPoint); - $('#owner').val(response.data.owner); - $('#ownerDisplayName').val(response.data.ownerDisplayName); - Files.displayStorageWarnings(); - OCA.Files.App.fileList._updateDirectoryPermissions(); - } - if (response[0] === undefined) { - return; - } - if (response[0].uploadMaxFilesize !== undefined) { - $('#upload.button').attr('title', response[0].maxHumanFilesize); - $('#usedSpacePercent').val(response[0].usedSpacePercent); - Files.displayStorageWarnings(); - } - - }, - - updateQuota:function(response) { - if (response === undefined) { - return; - } - if (response.data !== undefined - && response.data.quota !== undefined - && response.data.total !== undefined - && response.data.used !== undefined - && response.data.usedSpacePercent !== undefined) { - var humanUsed = OC.Util.humanFileSize(response.data.used, true, false); - var humanTotal = OC.Util.humanFileSize(response.data.total, true, false); - if (response.data.quota > 0) { - $('#quota').attr('title', t('files', '{used}%', {used: Math.round(response.data.usedSpacePercent)})); - $('#quota progress').val(response.data.usedSpacePercent); - $('#quotatext').html(t('files', '{used} of {quota} used', {used: humanUsed, quota: humanTotal})); - } else { - $('#quotatext').html(t('files', '{used} used', {used: humanUsed})); - } - if (response.data.usedSpacePercent > 80) { - $('#quota progress').addClass('warn'); - } else { - $('#quota progress').removeClass('warn'); - } - } - - }, - - /** - * Fix path name by removing double slash at the beginning, if any - */ - fixPath: function(fileName) { - if (fileName.substr(0, 2) == '//') { - return fileName.substr(1); - } - return fileName; - }, - - /** - * Checks whether the given file name is valid. - * @param name file name to check - * @return true if the file name is valid. - * Throws a string exception with an error message if - * the file name is not valid - * - * NOTE: This function is duplicated in the filepicker inside core/src/OC/dialogs.js - */ - isFileNameValid: function (name) { - var trimmedName = name.trim(); - if (trimmedName === '.' || trimmedName === '..') - { - throw t('files', '"{name}" is an invalid file name.', {name: name}); - } else if (trimmedName.length === 0) { - throw t('files', 'File name cannot be empty.'); - } else if (trimmedName.indexOf('/') !== -1) { - throw t('files', '"/" is not allowed inside a file name.'); - } else if (!!(trimmedName.match(OC.config.blacklist_files_regex))) { - throw t('files', '"{name}" is not an allowed filetype', {name: name}); - } - - return true; - }, - displayStorageWarnings: function() { - if (!OC.Notification.isHidden()) { - return; - } - - var usedSpacePercent = $('#usedSpacePercent').val(), - owner = $('#owner').val(), - ownerDisplayName = $('#ownerDisplayName').val(), - mountType = $('#usedSpacePercent').data('mount-type'), - mountPoint = $('#usedSpacePercent').data('mount-point'); - if (usedSpacePercent > 98) { - if (owner !== OC.getCurrentUser().uid) { - OC.Notification.show(t('files', 'Storage of {owner} is full, files cannot be updated or synced anymore!', - {owner: ownerDisplayName}), {type: 'error'} - ); - } else if (mountType === 'group') { - OC.Notification.show(t('files', - 'Group folder "{mountPoint}" is full, files cannot be updated or synced anymore!', - {mountPoint: mountPoint}), - {type: 'error'} - ); - } else if (mountType === 'external') { - OC.Notification.show(t('files', - 'External storage "{mountPoint}" is full, files cannot be updated or synced anymore!', - {mountPoint: mountPoint}), - {type : 'error'} - ); - } else { - OC.Notification.show(t('files', - 'Your storage is full, files cannot be updated or synced anymore!'), - {type: 'error'} - ); - } - } else if (usedSpacePercent > 90) { - if (owner !== OC.getCurrentUser().uid) { - OC.Notification.show(t('files', 'Storage of {owner} is almost full ({usedSpacePercent}%).', - { - usedSpacePercent: usedSpacePercent, - owner: ownerDisplayName - }), - { - type: 'error' - } - ); - } else if (mountType === 'group') { - OC.Notification.show(t('files', - 'Group folder "{mountPoint}" is almost full ({usedSpacePercent}%).', - {mountPoint: mountPoint, usedSpacePercent: usedSpacePercent}), - {type : 'error'} - ); - } else if (mountType === 'external') { - OC.Notification.show(t('files', - 'External storage "{mountPoint}" is almost full ({usedSpacePercent}%).', - {mountPoint: mountPoint, usedSpacePercent: usedSpacePercent}), - {type : 'error'} - ); - } else { - OC.Notification.show(t('files', 'Your storage is almost full ({usedSpacePercent}%).', - {usedSpacePercent: usedSpacePercent}), - {type : 'error'} - ); - } - } - }, - - /** - * Returns the download URL of the given file(s) - * @param {string} filename string or array of file names to download - * @param {string} [dir] optional directory in which the file name is, defaults to the current directory - * @param {boolean} [isDir=false] whether the given filename is a directory and might need a special URL - */ - getDownloadUrl: function(filename, dir, isDir) { - if (!_.isArray(filename) && !isDir) { - var pathSections = dir.split('/'); - pathSections.push(filename); - var encodedPath = ''; - _.each(pathSections, function(section) { - if (section !== '') { - encodedPath += '/' + encodeURIComponent(section); - } - }); - return OC.linkToRemoteBase('webdav') + encodedPath; - } - - if (_.isArray(filename)) { - filename = JSON.stringify(filename); - } - - var params = { - dir: dir, - files: filename - }; - return this.getAjaxUrl('download', params); - }, - - /** - * Returns the ajax URL for a given action - * @param action action string - * @param params optional params map - */ - getAjaxUrl: function(action, params) { - var q = ''; - if (params) { - q = '?' + OC.buildQueryString(params); - } - return OC.filePath('files', 'ajax', action + '.php') + q; - }, - - /** - * Fetch the icon url for the mimetype - * @param {string} mime The mimetype - * @param {Files~mimeicon} ready Function to call when mimetype is retrieved - * @deprecated use OC.MimeType.getIconUrl(mime) - */ - getMimeIcon: function(mime, ready) { - ready(OC.MimeType.getIconUrl(mime)); - }, - - /** - * Generates a preview URL based on the URL space. - * @param urlSpec attributes for the URL - * @param {number} urlSpec.x width - * @param {number} urlSpec.y height - * @param {String} urlSpec.file path to the file - * @return preview URL - * @deprecated used OCA.Files.FileList.generatePreviewUrl instead - */ - generatePreviewUrl: function(urlSpec) { - OC.debug && console.warn('DEPRECATED: please use generatePreviewUrl() from an OCA.Files.FileList instance'); - return OCA.Files.App.fileList.generatePreviewUrl(urlSpec); - }, - - /** - * Lazy load preview - * @deprecated used OCA.Files.FileList.lazyLoadPreview instead - */ - lazyLoadPreview : function(path, mime, ready, width, height, etag) { - OC.debug && console.warn('DEPRECATED: please use lazyLoadPreview() from an OCA.Files.FileList instance'); - return FileList.lazyLoadPreview({ - path: path, - mime: mime, - callback: ready, - width: width, - height: height, - etag: etag - }); - }, - - /** - * Initialize the files view - */ - initialize: function() { - Files.bindKeyboardShortcuts(document, $); - - // drag&drop support using jquery.fileupload - // TODO use OC.dialogs - $(document).bind('drop dragover', function (e) { - e.preventDefault(); // prevent browser from doing anything, if file isn't dropped in dropZone - }); - - // display storage warnings - setTimeout(Files.displayStorageWarnings, 100); - - // only possible at the moment if user is logged in or the files app is loaded - if (OC.currentUser && OCA.Files.App && OC.config.session_keepalive) { - // start on load - we ask the server every 5 minutes - var func = _.bind(OCA.Files.App.fileList.updateStorageStatistics, OCA.Files.App.fileList); - var updateStorageStatisticsInterval = 5*60*1000; - var updateStorageStatisticsIntervalId = setInterval(func, updateStorageStatisticsInterval); - - // TODO: this should also stop when switching to another view - // Use jquery-visibility to de-/re-activate file stats sync - if ($.support.pageVisibility) { - $(document).on({ - 'show': function() { - if (!updateStorageStatisticsIntervalId) { - updateStorageStatisticsIntervalId = setInterval(func, updateStorageStatisticsInterval); - } - }, - 'hide': function() { - clearInterval(updateStorageStatisticsIntervalId); - updateStorageStatisticsIntervalId = 0; - } - }); - } - } - - - $('#webdavurl').on('click touchstart', function () { - this.focus(); - this.setSelectionRange(0, this.value.length); - }); - - //FIXME scroll to and highlight preselected file - /* - if (getURLParameter('scrollto')) { - FileList.scrollTo(getURLParameter('scrollto')); - } - */ - }, - - /** - * Handles the download and calls the callback function once the download has started - * - browser sends download request and adds parameter with a token - * - server notices this token and adds a set cookie to the download response - * - browser now adds this cookie for the domain - * - JS periodically checks for this cookie and then knows when the download has started to call the callback - * - * @param {string} url download URL - * @param {Function} callback function to call once the download has started - */ - handleDownload: function(url, callback) { - var randomToken = Math.random().toString(36).substring(2), - checkForDownloadCookie = function() { - if (!OC.Util.isCookieSetToValue('ocDownloadStarted', randomToken)){ - return false; - } else { - callback(); - return true; - } - }; - - if (url.indexOf('?') >= 0) { - url += '&'; - } else { - url += '?'; - } - OC.redirect(url + 'downloadStartSecret=' + randomToken); - OC.Util.waitFor(checkForDownloadCookie, 500); - } - }; - - Files._updateStorageStatisticsDebounced = _.debounce(Files._updateStorageStatistics, 250); - Files._updateStorageQuotasThrottled = _.throttle(Files._updateStorageQuotas, 30000); - OCA.Files.Files = Files; -})(); - -// TODO: move to FileList -var createDragShadow = function(event) { - // FIXME: inject file list instance somehow - /* global FileList, Files */ - - //select dragged file - var isDragSelected = $(event.target).parents('tr').find('td input:first').prop('checked'); - if (!isDragSelected) { - //select dragged file - FileList._selectFileEl($(event.target).parents('tr:first'), true, false); - } - - // do not show drag shadow for too many files - var selectedFiles = _.first(FileList.getSelectedFiles(), FileList.pageSize()); - selectedFiles = _.sortBy(selectedFiles, FileList._fileInfoCompare); - - if (!isDragSelected && selectedFiles.length === 1) { - //revert the selection - FileList._selectFileEl($(event.target).parents('tr:first'), false, false); - } - - // build dragshadow - var dragshadow = $('
    '); - var tbody = $(''); - dragshadow.append(tbody); - - var dir = FileList.getCurrentDirectory(); - - $(selectedFiles).each(function(i,elem) { - // TODO: refactor this with the table row creation code - var newtr = $('') - .attr('data-dir', dir) - .attr('data-file', elem.name) - .attr('data-origin', elem.origin); - newtr.append($('').text(elem.name).css('background-size', 32)); - newtr.append($('').text(OC.Util.humanFileSize(elem.size, false, false))); - tbody.append(newtr); - if (elem.type === 'dir') { - newtr.find('td.filename') - .css('background-image', 'url(' + OC.MimeType.getIconUrl('folder') + ')'); - } else { - var path = dir + '/' + elem.name; - Files.lazyLoadPreview(path, elem.mimetype, function(previewpath) { - newtr.find('td.filename') - .css('background-image', 'url(' + previewpath + ')'); - }, null, null, elem.etag); - } - }); - - return dragshadow; -}; - -//options for file drag/drop -//start&stop handlers needs some cleaning up -// TODO: move to FileList class -var dragOptions={ - revert: 'invalid', - revertDuration: 300, - opacity: 0.7, - cursorAt: { left: 24, top: 18 }, - helper: createDragShadow, - cursor: 'move', - - start: function(event, ui){ - var $selectedFiles = $('td.filename input:checkbox:checked'); - if (!$selectedFiles.length) { - $selectedFiles = $(this); - } - $selectedFiles.closest('tr').addClass('animate-opacity dragging'); - $selectedFiles.closest('tr').filter('.ui-droppable').droppable( 'disable' ); - // Show breadcrumbs menu - $('.crumbmenu').addClass('canDropChildren'); - - }, - stop: function(event, ui) { - var $selectedFiles = $('td.filename input:checkbox:checked'); - if (!$selectedFiles.length) { - $selectedFiles = $(this); - } - - var $tr = $selectedFiles.closest('tr'); - $tr.removeClass('dragging'); - $tr.filter('.ui-droppable').droppable( 'enable' ); - - setTimeout(function() { - $tr.removeClass('animate-opacity'); - }, 300); - // Hide breadcrumbs menu - $('.crumbmenu').removeClass('canDropChildren'); - }, - drag: function(event, ui) { - // Prevent scrolling when hovering .files-controls - if ($(event.originalEvent.target).parents('.files-controls').length > 0) { - return - } - - /** @type {JQuery} */ - const scrollingArea = FileList.$container; - - // Get the top and bottom scroll trigger y positions - const containerHeight = scrollingArea.innerHeight() ?? 0 - const scrollTriggerArea = Math.min(Math.floor(containerHeight / 2), 100); - const bottomTriggerY = containerHeight - scrollTriggerArea; - const topTriggerY = scrollTriggerArea; - - // Get the cursor position relative to the container - const containerOffset = scrollingArea.offset() ?? {left: 0, top: 0} - const cursorPositionY = event.pageY - containerOffset.top - - const currentScrollTop = scrollingArea.scrollTop() ?? 0 - - if (cursorPositionY < topTriggerY) { - scrollingArea.scrollTop(currentScrollTop - 10) - } else if (cursorPositionY > bottomTriggerY) { - scrollingArea.scrollTop(currentScrollTop + 10) - } - } -}; -// sane browsers support using the distance option -if ( $('html.ie').length === 0) { - dragOptions['distance'] = 20; -} - -// TODO: move to FileList class -var folderDropOptions = { - hoverClass: "canDrop", - drop: function( event, ui ) { - // don't allow moving a file into a selected folder - /* global FileList */ - if ($(event.target).parents('tr').find('td input:first').prop('checked') === true) { - return false; - } - - var $tr = $(this).closest('tr'); - if (($tr.data('permissions') & OC.PERMISSION_CREATE) === 0) { - FileList._showPermissionDeniedNotification(); - return false; - } - var targetPath = FileList.getCurrentDirectory() + '/' + $tr.data('file'); - - var files = FileList.getSelectedFiles(); - if (files.length === 0) { - // single one selected without checkbox? - files = _.map(ui.helper.find('tr'), function(el) { - return FileList.elementToFile($(el)); - }); - } - - FileList.move(_.pluck(files, 'name'), targetPath); - }, - tolerance: 'pointer' -}; - -// for backward compatibility -window.Files = OCA.Files.Files; diff --git a/apps/files/js/filesummary.js b/apps/files/js/filesummary.js deleted file mode 100644 index a4eef886969c4..0000000000000 --- a/apps/files/js/filesummary.js +++ /dev/null @@ -1,267 +0,0 @@ -/** - * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors - * SPDX-FileCopyrightText: 2014-2016 ownCloud, Inc. - * SPDX-License-Identifier: AGPL-3.0-or-later - */ - -(function() { - /** - * The FileSummary class encapsulates the file summary values and - * the logic to render it in the given container - * - * @constructs FileSummary - * @memberof OCA.Files - * - * @param $tr table row element - * @param {OC.Backbone.Model} [options.filesConfig] files app configuration - */ - var FileSummary = function($tr, options) { - options = options || {}; - var self = this; - this.$el = $tr; - var filesConfig = options.config; - if (filesConfig) { - this._showHidden = !!filesConfig.show_hidden; - window._nc_event_bus.subscribe('files:config:updated', ({ key, value }) => { - if (key === 'show_hidden') { - self._showHidden = !!value; - self.update(); - } - }); - } - this.clear(); - this.render(); - }; - - FileSummary.prototype = { - _showHidden: null, - - summary: { - totalFiles: 0, - totalDirs: 0, - totalHidden: 0, - totalSize: 0, - filter:'', - sumIsPending:false - }, - - /** - * Returns whether the given file info must be hidden - * - * @param {OC.Files.FileInfo} fileInfo file info - * - * @return {boolean} true if the file is a hidden file, false otherwise - */ - _isHiddenFile: function(file) { - return file.name && file.name.charAt(0) === '.'; - }, - - /** - * Adds file - * @param {OC.Files.FileInfo} file file to add - * @param {boolean} update whether to update the display - */ - add: function(file, update) { - if (file.name && file.name.toLowerCase().indexOf(this.summary.filter) === -1) { - return; - } - if (file.type === 'dir' || file.mime === 'httpd/unix-directory') { - this.summary.totalDirs++; - } - else { - this.summary.totalFiles++; - } - if (this._isHiddenFile(file)) { - this.summary.totalHidden++; - } - - var size = parseInt(file.size, 10) || 0; - if (size >=0) { - this.summary.totalSize += size; - } else { - this.summary.sumIsPending = true; - } - if (!!update) { - this.update(); - } - }, - /** - * Removes file - * @param {OC.Files.FileInfo} file file to remove - * @param {boolean} update whether to update the display - */ - remove: function(file, update) { - if (file.name && file.name.toLowerCase().indexOf(this.summary.filter) === -1) { - return; - } - if (file.type === 'dir' || file.mime === 'httpd/unix-directory') { - this.summary.totalDirs--; - } - else { - this.summary.totalFiles--; - } - if (this._isHiddenFile(file)) { - this.summary.totalHidden--; - } - var size = parseInt(file.size, 10) || 0; - if (size >=0) { - this.summary.totalSize -= size; - } - if (!!update) { - this.update(); - } - }, - setFilter: function(filter, files){ - this.summary.filter = filter.toLowerCase(); - this.calculate(files); - }, - /** - * Returns the total of files and directories - */ - getTotal: function() { - return this.summary.totalDirs + this.summary.totalFiles; - }, - /** - * Recalculates the summary based on the given files array - * @param files array of files - */ - calculate: function(files) { - var file; - var summary = { - totalDirs: 0, - totalFiles: 0, - totalHidden: 0, - totalSize: 0, - filter: this.summary.filter, - sumIsPending: false - }; - - for (var i = 0; i < files.length; i++) { - file = files[i]; - if (file.name && file.name.toLowerCase().indexOf(this.summary.filter) === -1) { - continue; - } - if (file.type === 'dir' || file.mime === 'httpd/unix-directory') { - summary.totalDirs++; - } - else { - summary.totalFiles++; - } - if (this._isHiddenFile(file)) { - summary.totalHidden++; - } - var size = parseInt(file.size, 10) || 0; - if (size >=0) { - summary.totalSize += size; - } else { - summary.sumIsPending = true; - } - } - this.setSummary(summary); - }, - /** - * Clears the summary - */ - clear: function() { - this.calculate([]); - }, - /** - * Sets the current summary values - * @param summary map - */ - setSummary: function(summary) { - this.summary = summary; - if (typeof this.summary.filter === 'undefined') { - this.summary.filter = ''; - } - this.update(); - }, - - _infoTemplate: function(data) { - /* NOTE: To update the template make changes in filesummary.handlebars - * and run: - * - * handlebars -n OCA.Files.FileSummary.Templates filesummary.handlebars -f filesummary_template.js - */ - return OCA.Files.Templates['filesummary'](_.extend({ - connectorLabel: t('files', '{dirs} and {files}', {dirs: '', files: ''}) - }, data)); - }, - - /** - * Renders the file summary element - */ - update: function() { - if (!this.$el) { - return; - } - if (!this.summary.totalFiles && !this.summary.totalDirs) { - this.$el.addClass('hidden'); - return; - } - // There's a summary and data -> Update the summary - this.$el.removeClass('hidden'); - var $dirInfo = this.$el.find('.dirinfo'); - var $fileInfo = this.$el.find('.fileinfo'); - var $connector = this.$el.find('.connector'); - var $filterInfo = this.$el.find('.filter'); - var $hiddenInfo = this.$el.find('.hiddeninfo'); - - // Substitute old content with new translations - $dirInfo.html(n('files', '%n folder', '%n folders', this.summary.totalDirs)); - $fileInfo.html(n('files', '%n file', '%n files', this.summary.totalFiles)); - $hiddenInfo.html(' (' + n('files', 'including %n hidden', 'including %n hidden', this.summary.totalHidden) + ')'); - var fileSize = this.summary.sumIsPending ? t('files', 'Pending') : OC.Util.humanFileSize(this.summary.totalSize, false, false); - this.$el.find('.filesize').html(fileSize); - - // Show only what's necessary (may be hidden) - if (this.summary.totalDirs === 0) { - $dirInfo.addClass('hidden'); - $connector.addClass('hidden'); - } else { - $dirInfo.removeClass('hidden'); - } - if (this.summary.totalFiles === 0) { - $fileInfo.addClass('hidden'); - $connector.addClass('hidden'); - } else { - $fileInfo.removeClass('hidden'); - } - if (this.summary.totalDirs > 0 && this.summary.totalFiles > 0) { - $connector.removeClass('hidden'); - } - $hiddenInfo.toggleClass('hidden', this.summary.totalHidden === 0 || this._showHidden) - if (this.summary.filter === '') { - $filterInfo.html(''); - $filterInfo.addClass('hidden'); - } else { - $filterInfo.html(' ' + n('files', 'matches "{filter}"', 'match "{filter}"', this.summary.totalDirs + this.summary.totalFiles, {filter: this.summary.filter})); - $filterInfo.removeClass('hidden'); - } - }, - render: function() { - if (!this.$el) { - return; - } - var summary = this.summary; - - // don't show the filesize column, if filesize is NaN (e.g. in trashbin) - var fileSize = ''; - if (!isNaN(summary.totalSize)) { - fileSize = summary.sumIsPending ? t('files', 'Pending') : OC.Util.humanFileSize(summary.totalSize, false, false); - fileSize = '' + fileSize + ''; - } - - var $summary = $( - ''+ this._infoTemplate() + '' + - fileSize + - '' - ); - this.$el.addClass('hidden'); - this.$el.append($summary); - this.update(); - } - }; - OCA.Files.FileSummary = FileSummary; -})(); - diff --git a/apps/files/js/gotoplugin.js b/apps/files/js/gotoplugin.js deleted file mode 100644 index 78935ac20bccf..0000000000000 --- a/apps/files/js/gotoplugin.js +++ /dev/null @@ -1,58 +0,0 @@ -/** - * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors - * SPDX-License-Identifier: AGPL-3.0-or-later - */ - -(function (OCA) { - - OCA.Files = OCA.Files || {}; - - /** - * @namespace OCA.Files.GotoPlugin - * - */ - OCA.Files.GotoPlugin = { - name: 'Goto', - - disallowedLists: [ - 'files', - 'trashbin' - ], - - attach: function (fileList) { - if (this.disallowedLists.indexOf(fileList.id) !== -1) { - return; - } - // lists where the "Open" default action is disabled should - // also have the goto action disabled - if (fileList._defaultFileActionsDisabled) { - return - } - var fileActions = fileList.fileActions; - - fileActions.registerAction({ - name: 'Goto', - displayName: t('files', 'View in folder'), - mime: 'all', - permissions: OC.PERMISSION_ALL, - iconClass: 'icon-goto nav-icon-extstoragemounts', - type: OCA.Files.FileActions.TYPE_DROPDOWN, - actionHandler: function (fileName, context) { - var fileModel = context.fileInfoModel; - OCA.Files.Sidebar.close(); - OCA.Files.App.setActiveView('files', { silent: true }); - OCA.Files.App.fileList.changeDirectory(fileModel.get('path'), true, true).then(function() { - OCA.Files.App.fileList.scrollTo(fileModel.get('name')); - }); - }, - render: function (actionSpec, isDefault, context) { - return fileActions._defaultRenderAction.call(fileActions, actionSpec, isDefault, context) - .removeClass('permanent'); - } - }); - } - }; -})(OCA); - -OC.Plugins.register('OCA.Files.FileList', OCA.Files.GotoPlugin); - diff --git a/apps/files/js/jquery-visibility.js b/apps/files/js/jquery-visibility.js deleted file mode 100644 index 67d96e5e0e7d3..0000000000000 --- a/apps/files/js/jquery-visibility.js +++ /dev/null @@ -1,91 +0,0 @@ -/*! - * jquery-visibility v1.0.11 - * Page visibility shim for jQuery. - * - * Project Website: http://mths.be/visibility - * - * @version 1.0.11 - * - * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors - * SPDX-FileCopyrightText: 2015 ownCloud, Inc. - * SPDX-FileCopyrightText: Mathias Bynens - * SPDX-FileCopyrightText: Jan Paepke - * SPDX-License-Identifier: MIT - */ -;(function (root, factory) { - if (typeof define === 'function' && define.amd) { - // AMD. Register as an anonymous module. - define(['jquery'], function ($) { - return factory(root, $); - }); - } else if (typeof exports === 'object') { - // Node/CommonJS - module.exports = factory(root, require('jquery')); - } else { - // Browser globals - factory(root, jQuery); - } -}(this, function(window, $, undefined) { - "use strict"; - - var - document = window.document, - property, // property name of document, that stores page visibility - vendorPrefixes = ['webkit', 'o', 'ms', 'moz', ''], - $support = $.support || {}, - // In Opera, `'onfocusin' in document == true`, hence the extra `hasFocus` check to detect IE-like behavior - eventName = 'onfocusin' in document && 'hasFocus' in document ? - 'focusin focusout' : - 'focus blur'; - - var prefix; - while ((prefix = vendorPrefixes.pop()) !== undefined) { - property = (prefix ? prefix + 'H': 'h') + 'idden'; - $support.pageVisibility = document[property] !== undefined; - if ($support.pageVisibility) { - eventName = prefix + 'visibilitychange'; - break; - } - } - - // normalize to and update document hidden property - function updateState() { - if (property !== 'hidden') { - document.hidden = $support.pageVisibility ? document[property] : undefined; - } - } - updateState(); - - $(/blur$/.test(eventName) ? window : document).on(eventName, function(event) { - var type = event.type; - var originalEvent = event.originalEvent; - - // Avoid errors from triggered native events for which `originalEvent` is - // not available. - if (!originalEvent) { - return; - } - - var toElement = originalEvent.toElement; - - // If it’s a `{focusin,focusout}` event (IE), `fromElement` and `toElement` - // should both be `null` or `undefined`; else, the page visibility hasn’t - // changed, but the user just clicked somewhere in the doc. In IE9, we need - // to check the `relatedTarget` property instead. - if ( - !/^focus./.test(type) || ( - toElement === undefined && - originalEvent.fromElement === undefined && - originalEvent.relatedTarget === undefined - ) - ) { - $(document).triggerHandler( - property && document[property] || /^(?:blur|focusout)$/.test(type) ? - 'hide' : - 'show' - ); - } - // and update the current state - updateState(); - }); -})); diff --git a/apps/files/js/jquery.fileupload.js b/apps/files/js/jquery.fileupload.js deleted file mode 100644 index eb3a491aa4cb8..0000000000000 --- a/apps/files/js/jquery.fileupload.js +++ /dev/null @@ -1,1504 +0,0 @@ -/* - * jQuery File Upload Plugin 9.12.5 - * https://github.com/blueimp/jQuery-File-Upload - * - * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors - * SPDX-FileCopyrightText: 2012-2016 ownCloud, Inc. - * SPDX-FileCopyrightText: 2010 Sebastian Tschan - * SPDX-License-Identifier: MIT - */ - -/* jshint nomen:false */ -/* global define, require, window, document, location, Blob, FormData */ - -;(function (factory) { - 'use strict'; - if (typeof define === 'function' && define.amd) { - // Register as an anonymous AMD module: - define([ - 'jquery', - 'jquery.ui.widget' - ], factory); - } else if (typeof exports === 'object') { - // Node/CommonJS: - factory( - require('jquery'), - require('./vendor/jquery.ui.widget') - ); - } else { - // Browser globals: - factory(window.jQuery); - } -}(function ($) { - 'use strict'; - - // Detect file input support, based on - // http://viljamis.com/blog/2012/file-upload-support-on-mobile/ - $.support.fileInput = !(new RegExp( - // Handle devices which give false positives for the feature detection: - '(Android (1\\.[0156]|2\\.[01]))' + - '|(Windows Phone (OS 7|8\\.0))|(XBLWP)|(ZuneWP)|(WPDesktop)' + - '|(w(eb)?OSBrowser)|(webOS)' + - '|(Kindle/(1\\.0|2\\.[05]|3\\.0))' - ).test(window.navigator.userAgent) || - // Feature detection for all other devices: - $('').prop('disabled')); - - // The FileReader API is not actually used, but works as feature detection, - // as some Safari versions (5?) support XHR file uploads via the FormData API, - // but not non-multipart XHR file uploads. - // window.XMLHttpRequestUpload is not available on IE10, so we check for - // window.ProgressEvent instead to detect XHR2 file upload capability: - $.support.xhrFileUpload = !!(window.ProgressEvent && window.FileReader); - $.support.xhrFormDataFileUpload = !!window.FormData; - - // Detect support for Blob slicing (required for chunked uploads): - $.support.blobSlice = window.Blob && (Blob.prototype.slice || - Blob.prototype.webkitSlice || Blob.prototype.mozSlice); - - // Helper function to create drag handlers for dragover/dragenter/dragleave: - function getDragHandler(type) { - var isDragOver = type === 'dragover'; - return function (e) { - e.dataTransfer = e.originalEvent && e.originalEvent.dataTransfer; - var dataTransfer = e.dataTransfer; - if (dataTransfer && $.inArray('Files', dataTransfer.types) !== -1 && - this._trigger( - type, - $.Event(type, {delegatedEvent: e}) - ) !== false) { - e.preventDefault(); - if (isDragOver) { - dataTransfer.dropEffect = 'copy'; - } - } - }; - } - - // The fileupload widget listens for change events on file input fields defined - // via fileInput setting and paste or drop events of the given dropZone. - // In addition to the default jQuery Widget methods, the fileupload widget - // exposes the "add" and "send" methods, to add or directly send files using - // the fileupload API. - // By default, files added via file input selection, paste, drag & drop or - // "add" method are uploaded immediately, but it is possible to override - // the "add" callback option to queue file uploads. - $.widget('blueimp.fileupload', { - - options: { - // The drop target element(s), by the default the complete document. - // Set to null to disable drag & drop support: - dropZone: $(document), - // The paste target element(s), by the default undefined. - // Set to a DOM node or jQuery object to enable file pasting: - pasteZone: undefined, - // The file input field(s), that are listened to for change events. - // If undefined, it is set to the file input fields inside - // of the widget element on plugin initialization. - // Set to null to disable the change listener. - fileInput: undefined, - // By default, the file input field is replaced with a clone after - // each input field change event. This is required for iframe transport - // queues and allows change events to be fired for the same file - // selection, but can be disabled by setting the following option to false: - replaceFileInput: true, - // The parameter name for the file form data (the request argument name). - // If undefined or empty, the name property of the file input field is - // used, or "files[]" if the file input name property is also empty, - // can be a string or an array of strings: - paramName: undefined, - // By default, each file of a selection is uploaded using an individual - // request for XHR type uploads. Set to false to upload file - // selections in one request each: - singleFileUploads: true, - // To limit the number of files uploaded with one XHR request, - // set the following option to an integer greater than 0: - limitMultiFileUploads: undefined, - // The following option limits the number of files uploaded with one - // XHR request to keep the request size under or equal to the defined - // limit in bytes: - limitMultiFileUploadSize: undefined, - // Multipart file uploads add a number of bytes to each uploaded file, - // therefore the following option adds an overhead for each file used - // in the limitMultiFileUploadSize configuration: - limitMultiFileUploadSizeOverhead: 512, - // Set the following option to true to issue all file upload requests - // in a sequential order: - sequentialUploads: false, - // To limit the number of concurrent uploads, - // set the following option to an integer greater than 0: - limitConcurrentUploads: undefined, - // Set the following option to true to force iframe transport uploads: - forceIframeTransport: false, - // Set the following option to the location of a redirect url on the - // origin server, for cross-domain iframe transport uploads: - redirect: undefined, - // The parameter name for the redirect url, sent as part of the form - // data and set to 'redirect' if this option is empty: - redirectParamName: undefined, - // Set the following option to the location of a postMessage window, - // to enable postMessage transport uploads: - postMessage: undefined, - // By default, XHR file uploads are sent as multipart/form-data. - // The iframe transport is always using multipart/form-data. - // Set to false to enable non-multipart XHR uploads: - multipart: true, - // To upload large files in smaller chunks, set the following option - // to a preferred maximum chunk size. If set to 0, null or undefined, - // or the browser does not support the required Blob API, files will - // be uploaded as a whole. - maxChunkSize: undefined, - // When a non-multipart upload or a chunked multipart upload has been - // aborted, this option can be used to resume the upload by setting - // it to the size of the already uploaded bytes. This option is most - // useful when modifying the options object inside of the "add" or - // "send" callbacks, as the options are cloned for each file upload. - uploadedBytes: undefined, - // By default, failed (abort or error) file uploads are removed from the - // global progress calculation. Set the following option to false to - // prevent recalculating the global progress data: - recalculateProgress: true, - // Interval in milliseconds to calculate and trigger progress events: - progressInterval: 100, - // Interval in milliseconds to calculate progress bitrate: - bitrateInterval: 500, - // By default, uploads are started automatically when adding files: - autoUpload: true, - - // Error and info messages: - messages: { - uploadedBytes: 'Uploaded bytes exceed file size' - }, - - // Translation function, gets the message key to be translated - // and an object with context specific data as arguments: - i18n: function (message, context) { - message = this.messages[message] || message.toString(); - if (context) { - $.each(context, function (key, value) { - message = message.replace('{' + key + '}', value); - }); - } - return message; - }, - - // Additional form data to be sent along with the file uploads can be set - // using this option, which accepts an array of objects with name and - // value properties, a function returning such an array, a FormData - // object (for XHR file uploads), or a simple object. - // The form of the first fileInput is given as parameter to the function: - formData: function (form) { - return form.serializeArray(); - }, - - // The add callback is invoked as soon as files are added to the fileupload - // widget (via file input selection, drag & drop, paste or add API call). - // If the singleFileUploads option is enabled, this callback will be - // called once for each file in the selection for XHR file uploads, else - // once for each file selection. - // - // The upload starts when the submit method is invoked on the data parameter. - // The data object contains a files property holding the added files - // and allows you to override plugin options as well as define ajax settings. - // - // Listeners for this callback can also be bound the following way: - // .bind('fileuploadadd', func); - // - // data.submit() returns a Promise object and allows to attach additional - // handlers using jQuery's Deferred callbacks: - // data.submit().done(func).fail(func).always(func); - add: function (e, data) { - if (e.isDefaultPrevented()) { - return false; - } - if (data.autoUpload || (data.autoUpload !== false && - $(this).fileupload('option', 'autoUpload'))) { - data.process().done(function () { - data.submit(); - }); - } - }, - - // Other callbacks: - - // Callback for the submit event of each file upload: - // submit: function (e, data) {}, // .bind('fileuploadsubmit', func); - - // Callback for the start of each file upload request: - // send: function (e, data) {}, // .bind('fileuploadsend', func); - - // Callback for successful uploads: - // done: function (e, data) {}, // .bind('fileuploaddone', func); - - // Callback for failed (abort or error) uploads: - // fail: function (e, data) {}, // .bind('fileuploadfail', func); - - // Callback for completed (success, abort or error) requests: - // always: function (e, data) {}, // .bind('fileuploadalways', func); - - // Callback for upload progress events: - // progress: function (e, data) {}, // .bind('fileuploadprogress', func); - - // Callback for global upload progress events: - // progressall: function (e, data) {}, // .bind('fileuploadprogressall', func); - - // Callback for uploads start, equivalent to the global ajaxStart event: - // start: function (e) {}, // .bind('fileuploadstart', func); - - // Callback for uploads stop, equivalent to the global ajaxStop event: - // stop: function (e) {}, // .bind('fileuploadstop', func); - - // Callback for change events of the fileInput(s): - // change: function (e, data) {}, // .bind('fileuploadchange', func); - - // Callback for paste events to the pasteZone(s): - // paste: function (e, data) {}, // .bind('fileuploadpaste', func); - - // Callback for drop events of the dropZone(s): - // drop: function (e, data) {}, // .bind('fileuploaddrop', func); - - // Callback for drop events of the dropZone(s) when there are no files: - // dropnofiles: function (e) {}, // .bind('fileuploaddropnofiles', func); - - // Callback for dragover events of the dropZone(s): - // dragover: function (e) {}, // .bind('fileuploaddragover', func); - - // Callback for the start of each chunk upload request: - // chunksend: function (e, data) {}, // .bind('fileuploadchunksend', func); - - // Callback for successful chunk uploads: - // chunkdone: function (e, data) {}, // .bind('fileuploadchunkdone', func); - - // Callback for failed (abort or error) chunk uploads: - // chunkfail: function (e, data) {}, // .bind('fileuploadchunkfail', func); - - // Callback for completed (success, abort or error) chunk upload requests: - // chunkalways: function (e, data) {}, // .bind('fileuploadchunkalways', func); - - // The plugin options are used as settings object for the ajax calls. - // The following are jQuery ajax settings required for the file uploads: - processData: false, - contentType: false, - cache: false, - timeout: 0 - }, - - // A list of options that require reinitializing event listeners and/or - // special initialization code: - _specialOptions: [ - 'fileInput', - 'dropZone', - 'pasteZone', - 'multipart', - 'forceIframeTransport' - ], - - _blobSlice: $.support.blobSlice && function () { - var slice = this.slice || this.webkitSlice || this.mozSlice; - return slice.apply(this, arguments); - }, - - _BitrateTimer: function () { - this.timestamp = ((Date.now) ? Date.now() : (new Date()).getTime()); - this.loaded = 0; - this.bitrate = 0; - this.getBitrate = function (now, loaded, interval) { - var timeDiff = now - this.timestamp; - if (!this.bitrate || !interval || timeDiff > interval) { - this.bitrate = (loaded - this.loaded) * (1000 / timeDiff) * 8; - this.loaded = loaded; - this.timestamp = now; - } - return this.bitrate; - }; - }, - - _isXHRUpload: function (options) { - return !options.forceIframeTransport && - ((!options.multipart && $.support.xhrFileUpload) || - $.support.xhrFormDataFileUpload); - }, - - _getFormData: function (options) { - var formData; - if ($.type(options.formData) === 'function') { - return options.formData(options.form); - } - if ($.isArray(options.formData)) { - return options.formData; - } - if ($.type(options.formData) === 'object') { - formData = []; - $.each(options.formData, function (name, value) { - formData.push({name: name, value: value}); - }); - return formData; - } - return []; - }, - - _getTotal: function (files) { - var total = 0; - $.each(files, function (index, file) { - total += file.size || 1; - }); - return total; - }, - - _initProgressObject: function (obj) { - var progress = { - loaded: 0, - total: 0, - bitrate: 0 - }; - if (obj._progress) { - $.extend(obj._progress, progress); - } else { - obj._progress = progress; - } - }, - - _initResponseObject: function (obj) { - var prop; - if (obj._response) { - for (prop in obj._response) { - if (obj._response.hasOwnProperty(prop)) { - delete obj._response[prop]; - } - } - } else { - obj._response = {}; - } - }, - - _onProgress: function (e, data) { - if (e.lengthComputable) { - var now = ((Date.now) ? Date.now() : (new Date()).getTime()), - loaded; - if (data._time && data.progressInterval && - (now - data._time < data.progressInterval) && - e.loaded !== e.total) { - return; - } - data._time = now; - loaded = Math.floor( - e.loaded / e.total * (data.chunkSize || data._progress.total) - ) + (data.uploadedBytes || 0); - // Add the difference from the previously loaded state - // to the global loaded counter: - this._progress.loaded += (loaded - data._progress.loaded); - this._progress.bitrate = this._bitrateTimer.getBitrate( - now, - this._progress.loaded, - data.bitrateInterval - ); - data._progress.loaded = data.loaded = loaded; - data._progress.bitrate = data.bitrate = data._bitrateTimer.getBitrate( - now, - loaded, - data.bitrateInterval - ); - // Trigger a custom progress event with a total data property set - // to the file size(s) of the current upload and a loaded data - // property calculated accordingly: - this._trigger( - 'progress', - $.Event('progress', {delegatedEvent: e}), - data - ); - // Trigger a global progress event for all current file uploads, - // including ajax calls queued for sequential file uploads: - this._trigger( - 'progressall', - $.Event('progressall', {delegatedEvent: e}), - this._progress - ); - } - }, - - _initProgressListener: function (options) { - var that = this, - xhr = options.xhr ? options.xhr() : $.ajaxSettings.xhr(); - // Access to the native XHR object is required to add event listeners - // for the upload progress event: - if (xhr.upload) { - $(xhr.upload).bind('progress', function (e) { - var oe = e.originalEvent; - // Make sure the progress event properties get copied over: - e.lengthComputable = oe.lengthComputable; - e.loaded = oe.loaded; - e.total = oe.total; - that._onProgress(e, options); - }); - options.xhr = function () { - return xhr; - }; - } - }, - - _isInstanceOf: function (type, obj) { - // Cross-frame instanceof check - return Object.prototype.toString.call(obj) === '[object ' + type + ']'; - }, - - _initXHRData: function (options) { - var that = this, - formData, - file = options.files[0], - // Ignore non-multipart setting if not supported: - multipart = options.multipart || !$.support.xhrFileUpload, - paramName = $.type(options.paramName) === 'array' ? - options.paramName[0] : options.paramName; - options.headers = $.extend({}, options.headers); - if (options.contentRange) { - options.headers['Content-Range'] = options.contentRange; - } - if (!multipart || options.blob || !this._isInstanceOf('File', file)) { - options.headers['Content-Disposition'] = 'attachment; filename="' + - encodeURI(file.name) + '"'; - } - if (!multipart) { - options.contentType = file.type || 'application/octet-stream'; - options.data = options.blob || file; - } else if ($.support.xhrFormDataFileUpload) { - if (options.postMessage) { - // window.postMessage does not allow sending FormData - // objects, so we just add the File/Blob objects to - // the formData array and let the postMessage window - // create the FormData object out of this array: - formData = this._getFormData(options); - if (options.blob) { - formData.push({ - name: paramName, - value: options.blob - }); - } else { - $.each(options.files, function (index, file) { - formData.push({ - name: ($.type(options.paramName) === 'array' && - options.paramName[index]) || paramName, - value: file - }); - }); - } - } else { - if (that._isInstanceOf('FormData', options.formData)) { - formData = options.formData; - } else { - formData = new FormData(); - $.each(this._getFormData(options), function (index, field) { - formData.append(field.name, field.value); - }); - } - if (options.blob) { - formData.append(paramName, options.blob, file.name); - } else { - $.each(options.files, function (index, file) { - // This check allows the tests to run with - // dummy objects: - if (that._isInstanceOf('File', file) || - that._isInstanceOf('Blob', file)) { - formData.append( - ($.type(options.paramName) === 'array' && - options.paramName[index]) || paramName, - file, - file.uploadName || file.name - ); - } - }); - } - } - options.data = formData; - } - // Blob reference is not needed anymore, free memory: - options.blob = null; - }, - - _initIframeSettings: function (options) { - var targetHost = $('').prop('href', options.url).prop('host'); - // Setting the dataType to iframe enables the iframe transport: - options.dataType = 'iframe ' + (options.dataType || ''); - // The iframe transport accepts a serialized array as form data: - options.formData = this._getFormData(options); - // Add redirect url to form data on cross-domain uploads: - if (options.redirect && targetHost && targetHost !== location.host) { - options.formData.push({ - name: options.redirectParamName || 'redirect', - value: options.redirect - }); - } - }, - - _initDataSettings: function (options) { - if (this._isXHRUpload(options)) { - if (!this._chunkedUpload(options, true)) { - if (!options.data) { - this._initXHRData(options); - } - this._initProgressListener(options); - } - if (options.postMessage) { - // Setting the dataType to postmessage enables the - // postMessage transport: - options.dataType = 'postmessage ' + (options.dataType || ''); - } - } else { - this._initIframeSettings(options); - } - }, - - _getParamName: function (options) { - var fileInput = $(options.fileInput), - paramName = options.paramName; - if (!paramName) { - paramName = []; - fileInput.each(function () { - var input = $(this), - name = input.prop('name') || 'files[]', - i = (input.prop('files') || [1]).length; - while (i) { - paramName.push(name); - i -= 1; - } - }); - if (!paramName.length) { - paramName = [fileInput.prop('name') || 'files[]']; - } - } else if (!$.isArray(paramName)) { - paramName = [paramName]; - } - return paramName; - }, - - _initFormSettings: function (options) { - // Retrieve missing options from the input field and the - // associated form, if available: - if (!options.form || !options.form.length) { - options.form = $(options.fileInput.prop('form')); - // If the given file input doesn't have an associated form, - // use the default widget file input's form: - if (!options.form.length) { - options.form = $(this.options.fileInput.prop('form')); - } - } - options.paramName = this._getParamName(options); - if (!options.url) { - options.url = options.form.prop('action') || location.href; - } - // The HTTP request method must be "POST" or "PUT": - options.type = (options.type || - ($.type(options.form.prop('method')) === 'string' && - options.form.prop('method')) || '' - ).toUpperCase(); - if (options.type !== 'POST' && options.type !== 'PUT' && - options.type !== 'PATCH') { - options.type = 'POST'; - } - if (!options.formAcceptCharset) { - options.formAcceptCharset = options.form.attr('accept-charset'); - } - }, - - _getAJAXSettings: function (data) { - var options = $.extend({}, this.options, data); - this._initFormSettings(options); - this._initDataSettings(options); - return options; - }, - - // jQuery 1.6 doesn't provide .state(), - // while jQuery 1.8+ removed .isRejected() and .isResolved(): - _getDeferredState: function (deferred) { - if (deferred.state) { - return deferred.state(); - } - if (deferred.isResolved()) { - return 'resolved'; - } - if (deferred.isRejected()) { - return 'rejected'; - } - return 'pending'; - }, - - // Maps jqXHR callbacks to the equivalent - // methods of the given Promise object: - _enhancePromise: function (promise) { - promise.success = promise.done; - promise.error = promise.fail; - promise.complete = promise.always; - return promise; - }, - - // Creates and returns a Promise object enhanced with - // the jqXHR methods abort, success, error and complete: - _getXHRPromise: function (resolveOrReject, context, args) { - var dfd = $.Deferred(), - promise = dfd.promise(); - context = context || this.options.context || promise; - if (resolveOrReject === true) { - dfd.resolveWith(context, args); - } else if (resolveOrReject === false) { - dfd.rejectWith(context, args); - } - promise.abort = dfd.promise; - return this._enhancePromise(promise); - }, - - // Adds convenience methods to the data callback argument: - _addConvenienceMethods: function (e, data) { - var that = this, - getPromise = function (args) { - return $.Deferred().resolveWith(that, args).promise(); - }; - data.process = function (resolveFunc, rejectFunc) { - if (resolveFunc || rejectFunc) { - data._processQueue = this._processQueue = - (this._processQueue || getPromise([this])).then( - function () { - if (data.errorThrown) { - return $.Deferred() - .rejectWith(that, [data]).promise(); - } - return getPromise(arguments); - } - ).then(resolveFunc, rejectFunc); - } - return this._processQueue || getPromise([this]); - }; - data.submit = function () { - if (this.state() !== 'pending') { - data.jqXHR = this.jqXHR = - (that._trigger( - 'submit', - $.Event('submit', {delegatedEvent: e}), - this - ) !== false) && that._onSend(e, this); - } - return this.jqXHR || that._getXHRPromise(); - }; - data.abort = function () { - if (this.jqXHR) { - return this.jqXHR.abort(); - } - this.errorThrown = 'abort'; - that._trigger('fail', null, this); - return that._getXHRPromise(false); - }; - data.state = function () { - if (this.jqXHR) { - return that._getDeferredState(this.jqXHR); - } - if (this._processQueue) { - return that._getDeferredState(this._processQueue); - } - }; - data.processing = function () { - return !this.jqXHR && this._processQueue && that - ._getDeferredState(this._processQueue) === 'pending'; - }; - data.progress = function () { - return this._progress; - }; - data.response = function () { - return this._response; - }; - }, - - // Parses the Range header from the server response - // and returns the uploaded bytes: - _getUploadedBytes: function (jqXHR) { - var range = jqXHR.getResponseHeader('Range'), - parts = range && range.split('-'), - upperBytesPos = parts && parts.length > 1 && - parseInt(parts[1], 10); - return upperBytesPos && upperBytesPos + 1; - }, - - // Uploads a file in multiple, sequential requests - // by splitting the file up in multiple blob chunks. - // If the second parameter is true, only tests if the file - // should be uploaded in chunks, but does not invoke any - // upload requests: - _chunkedUpload: function (options, testOnly) { - options.uploadedBytes = options.uploadedBytes || 0; - var that = this, - file = options.files[0], - fs = file.size, - ub = options.uploadedBytes, - mcs = options.maxChunkSize || fs, - slice = this._blobSlice, - dfd = $.Deferred(), - promise = dfd.promise(), - jqXHR, - upload; - - // Dynamically adjust the chunk size for Chunking V2 to fit into the 10000 chunk limit - if (file.size/mcs > 10000) { - mcs = Math.ceil(file.size/10000) - } - - if (!(this._isXHRUpload(options) && slice && (ub || mcs < fs)) || - options.data) { - return false; - } - if (testOnly) { - return true; - } - if (ub >= fs) { - file.error = options.i18n('uploadedBytes'); - return this._getXHRPromise( - false, - options.context, - [null, 'error', file.error] - ); - } - // The chunk upload method: - upload = function () { - // Clone the options object for each chunk upload: - var o = $.extend({}, options), - currentLoaded = o._progress.loaded; - o.blob = slice.call( - file, - ub, - ub + mcs, - file.type - ); - // Store the current chunk size, as the blob itself - // will be dereferenced after data processing: - o.chunkSize = o.blob.size; - // Expose the chunk bytes position range: - o.contentRange = 'bytes ' + ub + '-' + - (ub + o.chunkSize - 1) + '/' + fs; - // Process the upload data (the blob and potential form data): - that._initXHRData(o); - // Add progress listeners for this chunk upload: - that._initProgressListener(o); - jqXHR = ((that._trigger('chunksend', null, o) !== false && $.ajax(o)) || - that._getXHRPromise(false, o.context)) - .done(function (result, textStatus, jqXHR) { - ub = that._getUploadedBytes(jqXHR) || - (ub + o.chunkSize); - // Create a progress event if no final progress event - // with loaded equaling total has been triggered - // for this chunk: - if (currentLoaded + o.chunkSize - o._progress.loaded) { - that._onProgress($.Event('progress', { - lengthComputable: true, - loaded: ub - o.uploadedBytes, - total: ub - o.uploadedBytes - }), o); - } - options.uploadedBytes = o.uploadedBytes = ub; - o.result = result; - o.textStatus = textStatus; - o.jqXHR = jqXHR; - that._trigger('chunkdone', null, o); - that._trigger('chunkalways', null, o); - if (ub < fs) { - // File upload not yet complete, - // continue with the next chunk: - upload(); - } else { - dfd.resolveWith( - o.context, - [result, textStatus, jqXHR] - ); - } - }) - .fail(function (jqXHR, textStatus, errorThrown) { - o.jqXHR = jqXHR; - o.textStatus = textStatus; - o.errorThrown = errorThrown; - that._trigger('chunkfail', null, o); - that._trigger('chunkalways', null, o); - dfd.rejectWith( - o.context, - [jqXHR, textStatus, errorThrown] - ); - }); - }; - this._enhancePromise(promise); - promise.abort = function () { - return jqXHR.abort(); - }; - upload(); - return promise; - }, - - _beforeSend: function (e, data) { - if (this._active === 0) { - // the start callback is triggered when an upload starts - // and no other uploads are currently running, - // equivalent to the global ajaxStart event: - this._trigger('start'); - // Set timer for global bitrate progress calculation: - this._bitrateTimer = new this._BitrateTimer(); - // Reset the global progress values: - this._progress.loaded = this._progress.total = 0; - this._progress.bitrate = 0; - } - // Make sure the container objects for the .response() and - // .progress() methods on the data object are available - // and reset to their initial state: - this._initResponseObject(data); - this._initProgressObject(data); - data._progress.loaded = data.loaded = data.uploadedBytes || 0; - data._progress.total = data.total = this._getTotal(data.files) || 1; - data._progress.bitrate = data.bitrate = 0; - this._active += 1; - // Initialize the global progress values: - this._progress.loaded += data.loaded; - this._progress.total += data.total; - }, - - _onDone: function (result, textStatus, jqXHR, options) { - var total = options._progress.total, - response = options._response; - if (options._progress.loaded < total) { - // Create a progress event if no final progress event - // with loaded equaling total has been triggered: - this._onProgress($.Event('progress', { - lengthComputable: true, - loaded: total, - total: total - }), options); - } - response.result = options.result = result; - response.textStatus = options.textStatus = textStatus; - response.jqXHR = options.jqXHR = jqXHR; - this._trigger('done', null, options); - }, - - _onFail: function (jqXHR, textStatus, errorThrown, options) { - var response = options._response; - if (options.recalculateProgress) { - // Remove the failed (error or abort) file upload from - // the global progress calculation: - this._progress.loaded -= options._progress.loaded; - this._progress.total -= options._progress.total; - } - response.jqXHR = options.jqXHR = jqXHR; - response.textStatus = options.textStatus = textStatus; - response.errorThrown = options.errorThrown = errorThrown; - this._trigger('fail', null, options); - }, - - _onAlways: function (jqXHRorResult, textStatus, jqXHRorError, options) { - // jqXHRorResult, textStatus and jqXHRorError are added to the - // options object via done and fail callbacks - this._trigger('always', null, options); - }, - - _onSend: function (e, data) { - if (!data.submit) { - this._addConvenienceMethods(e, data); - } - var that = this, - jqXHR, - aborted, - slot, - pipe, - options = that._getAJAXSettings(data), - send = function () { - that._sending += 1; - // Set timer for bitrate progress calculation: - options._bitrateTimer = new that._BitrateTimer(); - jqXHR = jqXHR || ( - ((aborted || that._trigger( - 'send', - $.Event('send', {delegatedEvent: e}), - options - ) === false) && - that._getXHRPromise(false, options.context, aborted)) || - that._chunkedUpload(options) || $.ajax(options) - ).done(function (result, textStatus, jqXHR) { - that._onDone(result, textStatus, jqXHR, options); - }).fail(function (jqXHR, textStatus, errorThrown) { - that._onFail(jqXHR, textStatus, errorThrown, options); - }).always(function (jqXHRorResult, textStatus, jqXHRorError) { - that._onAlways( - jqXHRorResult, - textStatus, - jqXHRorError, - options - ); - that._sending -= 1; - that._active -= 1; - if (options.limitConcurrentUploads && - options.limitConcurrentUploads > that._sending) { - // Start the next queued upload, - // that has not been aborted: - var nextSlot = that._slots.shift(); - while (nextSlot) { - if (that._getDeferredState(nextSlot) === 'pending') { - nextSlot.resolve(); - break; - } - nextSlot = that._slots.shift(); - } - } - if (that._active === 0) { - // The stop callback is triggered when all uploads have - // been completed, equivalent to the global ajaxStop event: - that._trigger('stop'); - } - }); - return jqXHR; - }; - this._beforeSend(e, options); - if (this.options.sequentialUploads || - (this.options.limitConcurrentUploads && - this.options.limitConcurrentUploads <= this._sending)) { - if (this.options.limitConcurrentUploads > 1) { - slot = $.Deferred(); - this._slots.push(slot); - pipe = slot.then(send); - } else { - this._sequence = this._sequence.then(send, send); - pipe = this._sequence; - } - // Return the piped Promise object, enhanced with an abort method, - // which is delegated to the jqXHR object of the current upload, - // and jqXHR callbacks mapped to the equivalent Promise methods: - pipe.abort = function () { - aborted = [undefined, 'abort', 'abort']; - if (!jqXHR) { - if (slot) { - slot.rejectWith(options.context, aborted); - } - return send(); - } - return jqXHR.abort(); - }; - return this._enhancePromise(pipe); - } - return send(); - }, - - _onAdd: function (e, data) { - var that = this, - result = true, - options = $.extend({}, this.options, data), - files = data.files, - filesLength = files.length, - limit = options.limitMultiFileUploads, - limitSize = options.limitMultiFileUploadSize, - overhead = options.limitMultiFileUploadSizeOverhead, - batchSize = 0, - paramName = this._getParamName(options), - paramNameSet, - paramNameSlice, - fileSet, - i, - j = 0; - if (!filesLength) { - return false; - } - if (limitSize && files[0].size === undefined) { - limitSize = undefined; - } - if (!(options.singleFileUploads || limit || limitSize) || - !this._isXHRUpload(options)) { - fileSet = [files]; - paramNameSet = [paramName]; - } else if (!(options.singleFileUploads || limitSize) && limit) { - fileSet = []; - paramNameSet = []; - for (i = 0; i < filesLength; i += limit) { - fileSet.push(files.slice(i, i + limit)); - paramNameSlice = paramName.slice(i, i + limit); - if (!paramNameSlice.length) { - paramNameSlice = paramName; - } - paramNameSet.push(paramNameSlice); - } - } else if (!options.singleFileUploads && limitSize) { - fileSet = []; - paramNameSet = []; - for (i = 0; i < filesLength; i = i + 1) { - batchSize += files[i].size + overhead; - if (i + 1 === filesLength || - ((batchSize + files[i + 1].size + overhead) > limitSize) || - (limit && i + 1 - j >= limit)) { - fileSet.push(files.slice(j, i + 1)); - paramNameSlice = paramName.slice(j, i + 1); - if (!paramNameSlice.length) { - paramNameSlice = paramName; - } - paramNameSet.push(paramNameSlice); - j = i + 1; - batchSize = 0; - } - } - } else { - paramNameSet = paramName; - } - data.originalFiles = []; - $.each(files, function (file) { - if (!file.isDirectory) { - data.originalFiles.push(file); - } - }); - $.each(fileSet || files, function (index, element) { - var newData = $.extend({}, data); - newData.files = fileSet ? element : [element]; - newData.paramName = paramNameSet[index]; - that._initResponseObject(newData); - that._initProgressObject(newData); - that._addConvenienceMethods(e, newData); - result = that._trigger( - 'add', - $.Event('add', {delegatedEvent: e}), - newData - ); - return result; - }); - return result; - }, - - _replaceFileInput: function (data) { - var input = data.fileInput, - inputClone = input.clone(true), - restoreFocus = input.is(document.activeElement); - // Add a reference for the new cloned file input to the data argument: - data.fileInputClone = inputClone; - $('
    ').append(inputClone)[0].reset(); - // Detaching allows to insert the fileInput on another form - // without losing the file input value: - input.after(inputClone).detach(); - // If the fileInput had focus before it was detached, - // restore focus to the inputClone. - if (restoreFocus) { - inputClone.focus(); - } - // Avoid memory leaks with the detached file input: - $.cleanData(input.unbind('remove')); - // Replace the original file input element in the fileInput - // elements set with the clone, which has been copied including - // event handlers: - this.options.fileInput = this.options.fileInput.map(function (i, el) { - if (el === input[0]) { - return inputClone[0]; - } - return el; - }); - // If the widget has been initialized on the file input itself, - // override this.element with the file input clone: - if (input[0] === this.element[0]) { - this.element = inputClone; - } - }, - - _handleFileTreeEntry: function (entry, path) { - var that = this, - dfd = $.Deferred(), - errorHandler = function (e) { - if (e && !e.entry) { - e.entry = entry; - } - // Since $.when returns immediately if one - // Deferred is rejected, we use resolve instead. - // This allows valid files and invalid items - // to be returned together in one set: - dfd.resolve([e]); - }, - successHandler = function (entries) { - that._handleFileTreeEntries( - entries, - path + entry.name + '/' - ).done(function (files) { - // empty folder - if (!files.length && entry.isDirectory) { - dfd.resolve(entry); - } else { - dfd.resolve(files); - } - }).fail(errorHandler); - }, - readEntries = function () { - dirReader.readEntries(function (results) { - if (!results.length) { - successHandler(entries); - } else { - entries = entries.concat(results); - readEntries(); - } - }, errorHandler); - }, - dirReader, entries = []; - path = path || ''; - if (entry.isFile) { - if (entry._file) { - // Workaround for Chrome bug #149735 - entry._file.relativePath = path; - dfd.resolve(entry._file); - } else { - entry.file(function (file) { - file.relativePath = path; - dfd.resolve(file); - }, errorHandler); - } - } else if (entry.isDirectory) { - dirReader = entry.createReader(); - readEntries(); - } else { - // Return an empty list for file system items - // other than files or directories: - dfd.resolve([]); - } - return dfd.promise(); - }, - - _handleFileTreeEntries: function (entries, path) { - var that = this; - return $.when.apply( - $, - $.map(entries, function (entry) { - return that._handleFileTreeEntry(entry, path); - }) - ).then(function () { - return Array.prototype.concat.apply( - [], - arguments - ); - }); - }, - - _getDroppedFiles: function (dataTransfer) { - dataTransfer = dataTransfer || {}; - var items = dataTransfer.items; - if (items && items.length && (items[0].webkitGetAsEntry || - items[0].getAsEntry)) { - return this._handleFileTreeEntries( - $.map(items, function (item) { - var entry; - if (item.webkitGetAsEntry) { - entry = item.webkitGetAsEntry(); - if (entry) { - // Workaround for Chrome bug #149735: - entry._file = item.getAsFile(); - } - return entry; - } - return item.getAsEntry(); - }) - ); - } - return $.Deferred().resolve( - $.makeArray(dataTransfer.files) - ).promise(); - }, - - _getSingleFileInputFiles: function (fileInput) { - fileInput = $(fileInput); - var entries = fileInput.prop('webkitEntries') || - fileInput.prop('entries'), - files, - value; - if (entries && entries.length) { - return this._handleFileTreeEntries(entries); - } - files = $.makeArray(fileInput.prop('files')); - if (!files.length) { - value = fileInput.prop('value'); - if (!value) { - return $.Deferred().resolve([]).promise(); - } - // If the files property is not available, the browser does not - // support the File API and we add a pseudo File object with - // the input value as name with path information removed: - files = [{name: value.replace(/^.*\\/, '')}]; - } else if (files[0].name === undefined && files[0].fileName) { - // File normalization for Safari 4 and Firefox 3: - $.each(files, function (index, file) { - file.name = file.fileName; - file.size = file.fileSize; - }); - } - return $.Deferred().resolve(files).promise(); - }, - - _getFileInputFiles: function (fileInput) { - if (!(fileInput instanceof $) || fileInput.length === 1) { - return this._getSingleFileInputFiles(fileInput); - } - return $.when.apply( - $, - $.map(fileInput, this._getSingleFileInputFiles) - ).then(function () { - return Array.prototype.concat.apply( - [], - arguments - ); - }); - }, - - _onChange: function (e) { - var that = this, - data = { - fileInput: $(e.target), - form: $(e.target.form) - }; - this._getFileInputFiles(data.fileInput).always(function (files) { - data.files = files; - if (that.options.replaceFileInput) { - that._replaceFileInput(data); - } - if (that._trigger( - 'change', - $.Event('change', {delegatedEvent: e}), - data - ) !== false) { - that._onAdd(e, data); - } - }); - }, - - _onPaste: function (e) { - var items = e.originalEvent && e.originalEvent.clipboardData && - e.originalEvent.clipboardData.items, - data = {files: []}; - if (items && items.length) { - $.each(items, function (index, item) { - var file = item.getAsFile && item.getAsFile(); - if (file) { - data.files.push(file); - } - }); - if (this._trigger( - 'paste', - $.Event('paste', {delegatedEvent: e}), - data - ) !== false) { - this._onAdd(e, data); - } - } - }, - - _onDrop: function (e) { - e.dataTransfer = e.originalEvent && e.originalEvent.dataTransfer; - var that = this, - dataTransfer = e.dataTransfer, - data = {}; - if (dataTransfer && dataTransfer.files && dataTransfer.files.length) { - e.preventDefault(); - this._getDroppedFiles(dataTransfer).always(function (files) { - data.files = files; - if (that._trigger( - 'drop', - $.Event('drop', {delegatedEvent: e}), - data - ) !== false) { - that._onAdd(e, data); - } - }); - } else { - // "dropnofiles" is triggered to allow proper cleanup of the - // drag and drop operation, as some browsers trigger "drop" - // events that have no files even if the "DataTransfer.types" of - // the "dragover" event included a "Files" item. - this._trigger( - 'dropnofiles', - $.Event('drop', {delegatedEvent: e}) - ); - } - }, - - _onDragOver: getDragHandler('dragover'), - - _onDragEnter: getDragHandler('dragenter'), - - _onDragLeave: getDragHandler('dragleave'), - - _initEventHandlers: function () { - if (this._isXHRUpload(this.options)) { - this._on(this.options.dropZone, { - dragover: this._onDragOver, - drop: this._onDrop, - // event.preventDefault() on dragenter is required for IE10+: - dragenter: this._onDragEnter, - // dragleave is not required, but added for completeness: - dragleave: this._onDragLeave - }); - this._on(this.options.pasteZone, { - paste: this._onPaste - }); - } - if ($.support.fileInput) { - this._on(this.options.fileInput, { - change: this._onChange - }); - } - }, - - _destroyEventHandlers: function () { - this._off(this.options.dropZone, 'dragenter dragleave dragover drop'); - this._off(this.options.pasteZone, 'paste'); - this._off(this.options.fileInput, 'change'); - }, - - _setOption: function (key, value) { - var reinit = $.inArray(key, this._specialOptions) !== -1; - if (reinit) { - this._destroyEventHandlers(); - } - this._super(key, value); - if (reinit) { - this._initSpecialOptions(); - this._initEventHandlers(); - } - }, - - _initSpecialOptions: function () { - var options = this.options; - if (options.fileInput === undefined) { - options.fileInput = this.element.is('input[type="file"]') ? - this.element : this.element.find('input[type="file"]'); - } else if (!(options.fileInput instanceof $)) { - options.fileInput = $(options.fileInput); - } - if (!(options.dropZone instanceof $)) { - options.dropZone = $(options.dropZone); - } - if (!(options.pasteZone instanceof $)) { - options.pasteZone = $(options.pasteZone); - } - }, - - _getRegExp: function (str) { - var parts = str.split('/'), - modifiers = parts.pop(); - parts.shift(); - return new RegExp(parts.join('/'), modifiers); - }, - - _isRegExpOption: function (key, value) { - return key !== 'url' && $.type(value) === 'string' && - /^\/.*\/[igm]{0,3}$/.test(value); - }, - - _initDataAttributes: function () { - var that = this, - options = this.options, - data = this.element.data(); - // Initialize options set via HTML5 data-attributes: - $.each( - this.element[0].attributes, - function (index, attr) { - var key = attr.name.toLowerCase(), - value; - if (/^data-/.test(key)) { - // Convert hyphen-ated key to camelCase: - key = key.slice(5).replace(/-[a-z]/g, function (str) { - return str.charAt(1).toUpperCase(); - }); - value = data[key]; - if (that._isRegExpOption(key, value)) { - value = that._getRegExp(value); - } - options[key] = value; - } - } - ); - }, - - _create: function () { - this._initDataAttributes(); - this._initSpecialOptions(); - this._slots = []; - this._sequence = this._getXHRPromise(true); - this._sending = this._active = 0; - this._initProgressObject(this); - this._initEventHandlers(); - }, - - // This method is exposed to the widget API and allows to query - // the number of active uploads: - active: function () { - return this._active; - }, - - // This method is exposed to the widget API and allows to query - // the widget upload progress. - // It returns an object with loaded, total and bitrate properties - // for the running uploads: - progress: function () { - return this._progress; - }, - - // This method is exposed to the widget API and allows adding files - // using the fileupload API. The data parameter accepts an object which - // must have a files property and can contain additional options: - // .fileupload('add', {files: filesList}); - add: function (data) { - var that = this; - if (!data || this.options.disabled) { - return; - } - if (data.fileInput && !data.files) { - this._getFileInputFiles(data.fileInput).always(function (files) { - data.files = files; - that._onAdd(null, data); - }); - } else { - data.files = $.makeArray(data.files); - this._onAdd(null, data); - } - }, - - // This method is exposed to the widget API and allows sending files - // using the fileupload API. The data parameter accepts an object which - // must have a files or fileInput property and can contain additional options: - // .fileupload('send', {files: filesList}); - // The method returns a Promise object for the file upload call. - send: function (data) { - if (data && !this.options.disabled) { - if (data.fileInput && !data.files) { - var that = this, - dfd = $.Deferred(), - promise = dfd.promise(), - jqXHR, - aborted; - promise.abort = function () { - aborted = true; - if (jqXHR) { - return jqXHR.abort(); - } - dfd.reject(null, 'abort', 'abort'); - return promise; - }; - this._getFileInputFiles(data.fileInput).always( - function (files) { - if (aborted) { - return; - } - if (!files.length) { - dfd.reject(); - return; - } - data.files = files; - jqXHR = that._onSend(null, data); - jqXHR.then( - function (result, textStatus, jqXHR) { - dfd.resolve(result, textStatus, jqXHR); - }, - function (jqXHR, textStatus, errorThrown) { - dfd.reject(jqXHR, textStatus, errorThrown); - } - ); - } - ); - return this._enhancePromise(promise); - } - data.files = $.makeArray(data.files); - if (data.files.length) { - return this._onSend(null, data); - } - } - return this._getXHRPromise(false, data && data.context); - } - - }); - -})); diff --git a/apps/files/js/keyboardshortcuts.js b/apps/files/js/keyboardshortcuts.js deleted file mode 100644 index ebf6232d15980..0000000000000 --- a/apps/files/js/keyboardshortcuts.js +++ /dev/null @@ -1,170 +0,0 @@ -/** - * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors - * SPDX-FileCopyrightText: 2012-2014 ownCloud, Inc. - * SPDX-FileCopyrightText: 2012 Erik Sargent - * SPDX-License-Identifier: AGPL-3.0-or-later - */ -/***************************** - * Keyboard shortcuts for Files app - * ctrl/cmd+n: new folder - * ctrl/cmd+shift+n: new file - * esc (while new file context menu is open): close menu - * up/down: select file/folder - * enter: open file/folder - * delete/backspace: delete file/folder - *****************************/ -(function(Files) { - var keys = []; - var keyCodes = { - shift: 16, - n: 78, - cmdFirefox: 224, - cmdOpera: 17, - leftCmdWebKit: 91, - rightCmdWebKit: 93, - ctrl: 17, - esc: 27, - downArrow: 40, - upArrow: 38, - enter: 13, - del: 46 - }; - - function removeA(arr) { - var what, a = arguments, - L = a.length, - ax; - while (L > 1 && arr.length) { - what = a[--L]; - while ((ax = arr.indexOf(what)) !== -1) { - arr.splice(ax, 1); - } - } - return arr; - } - - function newFile() { - $("#new").addClass("active"); - $(".popup.popupTop").toggle(true); - $('#new li[data-type="file"]').trigger('click'); - removeA(keys, keyCodes.n); - } - - function newFolder() { - $("#new").addClass("active"); - $(".popup.popupTop").toggle(true); - $('#new li[data-type="folder"]').trigger('click'); - removeA(keys, keyCodes.n); - } - - function esc() { - $(".files-controls").trigger('click'); - } - - function down() { - var select = -1; - $(".files-fileList tr").each(function(index) { - if ($(this).hasClass("mouseOver")) { - select = index + 1; - $(this).removeClass("mouseOver"); - } - }); - if (select === -1) { - $(".files-fileList tr:first").addClass("mouseOver"); - } else { - $(".files-fileList tr").each(function(index) { - if (index === select) { - $(this).addClass("mouseOver"); - } - }); - } - } - - function up() { - var select = -1; - $(".files-fileList tr").each(function(index) { - if ($(this).hasClass("mouseOver")) { - select = index - 1; - $(this).removeClass("mouseOver"); - } - }); - if (select === -1) { - $(".files-fileList tr:last").addClass("mouseOver"); - } else { - $(".files-fileList tr").each(function(index) { - if (index === select) { - $(this).addClass("mouseOver"); - } - }); - } - } - - function enter() { - $(".files-fileList tr").each(function(index) { - if ($(this).hasClass("mouseOver")) { - $(this).removeClass("mouseOver"); - $(this).find("span.nametext").trigger('click'); - } - }); - } - - function del() { - $(".files-fileList tr").each(function(index) { - if ($(this).hasClass("mouseOver")) { - $(this).removeClass("mouseOver"); - $(this).find("a.action.delete").trigger('click'); - } - }); - } - - function rename() { - $(".files-fileList tr").each(function(index) { - if ($(this).hasClass("mouseOver")) { - $(this).removeClass("mouseOver"); - $(this).find("a[data-action='Rename']").trigger('click'); - } - }); - } - Files.bindKeyboardShortcuts = function(document, $) { - $(document).keydown(function(event) { //check for modifier keys - if(!$(event.target).is('body')) { - return; - } - var preventDefault = false; - if ($.inArray(event.keyCode, keys) === -1) { - keys.push(event.keyCode); - } - if ( - $.inArray(keyCodes.n, keys) !== -1 && ($.inArray(keyCodes.cmdFirefox, keys) !== -1 || $.inArray(keyCodes.cmdOpera, keys) !== -1 || $.inArray(keyCodes.leftCmdWebKit, keys) !== -1 || $.inArray(keyCodes.rightCmdWebKit, keys) !== -1 || $.inArray(keyCodes.ctrl, keys) !== -1 || event.ctrlKey)) { - preventDefault = true; //new file/folder prevent browser from responding - } - if (preventDefault) { - event.preventDefault(); //Prevent web browser from responding - event.stopPropagation(); - return false; - } - }); - $(document).keyup(function(event) { - // do your event.keyCode checks in here - if ( - $.inArray(keyCodes.n, keys) !== -1 && ($.inArray(keyCodes.cmdFirefox, keys) !== -1 || $.inArray(keyCodes.cmdOpera, keys) !== -1 || $.inArray(keyCodes.leftCmdWebKit, keys) !== -1 || $.inArray(keyCodes.rightCmdWebKit, keys) !== -1 || $.inArray(keyCodes.ctrl, keys) !== -1 || event.ctrlKey)) { - if ($.inArray(keyCodes.shift, keys) !== -1) { //16=shift, New File - newFile(); - } else { //New Folder - newFolder(); - } - } else if ($("#new").hasClass("active") && $.inArray(keyCodes.esc, keys) !== -1) { //close new window - esc(); - } else if ($.inArray(keyCodes.downArrow, keys) !== -1) { //select file - down(); - } else if ($.inArray(keyCodes.upArrow, keys) !== -1) { //select file - up(); - } else if (!$("#new").hasClass("active") && $.inArray(keyCodes.enter, keys) !== -1) { //open file - enter(); - } else if (!$("#new").hasClass("active") && $.inArray(keyCodes.del, keys) !== -1) { //delete file - del(); - } - removeA(keys, event.keyCode); - }); - }; -})((OCA.Files && OCA.Files.Files) || {}); diff --git a/apps/files/js/mainfileinfodetailview.js b/apps/files/js/mainfileinfodetailview.js deleted file mode 100644 index 458a532daaf3f..0000000000000 --- a/apps/files/js/mainfileinfodetailview.js +++ /dev/null @@ -1,191 +0,0 @@ -/** - * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors - * SPDX-FileCopyrightText: 2015-2016 ownCloud, Inc. - * SPDX-License-Identifier: AGPL-3.0-or-later - */ - -(function() { - /** - * @class OCA.Files.MainFileInfoDetailView - * @classdesc - * - * Displays main details about a file - * - */ - var MainFileInfoDetailView = OCA.Files.DetailFileInfoView.extend( - /** @lends OCA.Files.MainFileInfoDetailView.prototype */ { - - className: 'mainFileInfoView', - - /** - * Associated file list instance, for file actions - * - * @type {OCA.Files.FileList} - */ - _fileList: null, - - /** - * File actions - * - * @type {OCA.Files.FileActions} - */ - _fileActions: null, - - /** - * @type {OCA.Files.SidebarPreviewManager} - */ - _previewManager: null, - - events: { - 'click a.action-favorite': '_onClickFavorite', - 'click a.action-default': '_onClickDefaultAction', - 'click a.permalink': '_onClickPermalink', - 'focus .permalink-field>input': '_onFocusPermalink' - }, - - template: function(data) { - return OCA.Files.Templates['mainfileinfodetailsview'](data); - }, - - initialize: function(options) { - options = options || {}; - this._fileList = options.fileList; - this._fileActions = options.fileActions; - if (!this._fileList) { - throw 'Missing required parameter "fileList"'; - } - if (!this._fileActions) { - throw 'Missing required parameter "fileActions"'; - } - this._previewManager = new OCA.Files.SidebarPreviewManager(this._fileList); - - this._setupClipboard(); - }, - - _setupClipboard: function() { - var clipboard = new Clipboard('.permalink'); - clipboard.on('success', function(e) { - OC.Notification.show(t('files', 'Direct link was copied (only works for people who have access to this file/folder)'), {type: 'success'}); - }); - clipboard.on('error', function(e) { - var $row = this.$('.permalink-field'); - $row.toggleClass('hidden'); - if (!$row.hasClass('hidden')) { - $row.find('>input').focus(); - } - }); - }, - - _onClickPermalink: function(e) { - e.preventDefault(); - return; - }, - - _onFocusPermalink: function() { - this.$('.permalink-field>input').select(); - }, - - _onClickFavorite: function(event) { - event.preventDefault(); - this._fileActions.triggerAction('Favorite', this.model, this._fileList); - }, - - _onClickDefaultAction: function(event) { - event.preventDefault(); - this._fileActions.triggerAction(null, this.model, this._fileList); - }, - - _onModelChanged: function() { - // simply re-render - this.render(); - }, - - _makePermalink: function(fileId) { - var baseUrl = OC.getProtocol() + '://' + OC.getHost(); - return baseUrl + OC.generateUrl('/f/{fileId}', {fileId: fileId}); - }, - - setFileInfo: function(fileInfo) { - if (this.model) { - this.model.off('change', this._onModelChanged, this); - } - this.model = fileInfo; - if (this.model) { - this.model.on('change', this._onModelChanged, this); - } - - if (this.model) { - var properties = []; - if( !this.model.has('size') ) { - properties.push(OC.Files.Client.PROPERTY_SIZE); - properties.push(OC.Files.Client.PROPERTY_GETCONTENTLENGTH); - } - - if( properties.length > 0){ - this.model.reloadProperties(properties); - } - } - - this.render(); - }, - - /** - * Renders this details view - */ - render: function() { - this.trigger('pre-render'); - - if (this.model) { - var isFavorite = (this.model.get('tags') || []).indexOf(OC.TAG_FAVORITE) >= 0; - var availableActions = this._fileActions.get( - this.model.get('mimetype'), - this.model.get('type'), - this.model.get('permissions'), - this.model.get('name') - ); - var hasFavoriteAction = 'Favorite' in availableActions; - this.$el.html(this.template({ - type: this.model.isImage()? 'image': '', - nameLabel: t('files', 'Name'), - name: this.model.get('displayName') || this.model.get('name'), - pathLabel: t('files', 'Path'), - path: this.model.get('path'), - hasSize: this.model.has('size'), - sizeLabel: t('files', 'Size'), - size: OC.Util.humanFileSize(this.model.get('size'), true, false), - altSize: n('files', '%n byte', '%n bytes', this.model.get('size')), - dateLabel: t('files', 'Modified'), - altDate: OC.Util.formatDate(this.model.get('mtime')), - timestamp: this.model.get('mtime'), - date: OC.Util.relativeModifiedDate(this.model.get('mtime')), - hasFavoriteAction: hasFavoriteAction, - starAltText: isFavorite ? t('files', 'Favorited') : t('files', 'Favorite'), - starClass: isFavorite ? 'icon-starred' : 'icon-star', - permalink: this._makePermalink(this.model.get('id')), - permalinkTitle: t('files', 'Copy direct link (only works for people who have access to this file/folder)') - })); - - // TODO: we really need OC.Previews - var $iconDiv = this.$el.find('.thumbnail'); - var $container = this.$el.find('.thumbnailContainer'); - if (!this.model.isDirectory()) { - $iconDiv.addClass('icon-loading icon-32'); - this._previewManager.loadPreview(this.model, $iconDiv, $container); - } else { - var iconUrl = this.model.get('icon') || OC.MimeType.getIconUrl('dir'); - if (typeof this.model.get('mountType') !== 'undefined') { - iconUrl = OC.MimeType.getIconUrl('dir-' + this.model.get('mountType')) - } - $iconDiv.css('background-image', 'url("' + iconUrl + '")'); - } - } else { - this.$el.empty(); - } - this.delegateEvents(); - - this.trigger('post-render'); - } - }); - - OCA.Files.MainFileInfoDetailView = MainFileInfoDetailView; -})(); diff --git a/apps/files/js/merged-index.json b/apps/files/js/merged-index.json deleted file mode 100644 index 870a807f71814..0000000000000 --- a/apps/files/js/merged-index.json +++ /dev/null @@ -1,28 +0,0 @@ -[ - "app.js", - "breadcrumb.js", - "detailfileinfoview.js", - "detailsview.js", - "detailtabview.js", - "file-upload.js", - "fileactions.js", - "fileactionsmenu.js", - "fileinfomodel.js", - "filelist.js", - "filemultiselectmenu.js", - "files.js", - "filesummary.js", - "gotoplugin.js", - "jquery-visibility.js", - "jquery.fileupload.js", - "keyboardshortcuts.js", - "mainfileinfodetailview.js", - "newfilemenu.js", - "operationprogressbar.js", - "recentfilelist.js", - "semaphore.js", - "sidebarpreviewmanager.js", - "sidebarpreviewtext.js", - "tagsplugin.js", - "templates.js" -] diff --git a/apps/files/js/merged-index.json.license b/apps/files/js/merged-index.json.license deleted file mode 100644 index 878633bd1b7ca..0000000000000 --- a/apps/files/js/merged-index.json.license +++ /dev/null @@ -1,2 +0,0 @@ -SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors -SPDX-License-Identifier: AGPL-3.0-or-later \ No newline at end of file diff --git a/apps/files/js/newfilemenu.js b/apps/files/js/newfilemenu.js deleted file mode 100644 index 7a0d1be555d1c..0000000000000 --- a/apps/files/js/newfilemenu.js +++ /dev/null @@ -1,261 +0,0 @@ -/** - * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors - * SPDX-FileCopyrightText: 2015-2016 ownCloud, Inc. - * SPDX-License-Identifier: AGPL-3.0-or-later - */ - -/* global Files */ - -(function() { - - /** - * Construct a new NewFileMenu instance - * @constructs NewFileMenu - * - * @memberof OCA.Files - */ - var NewFileMenu = OC.Backbone.View.extend({ - tagName: 'div', - // Menu is opened by default because it's rendered on "add-button" click - className: 'newFileMenu popovermenu bubble menu open menu-left', - - events: { - 'click .menuitem': '_onClickAction' - }, - - /** - * @type OCA.Files.FileList - */ - fileList: null, - - initialize: function(options) { - var self = this; - var $uploadEl = $('#file_upload_start'); - if ($uploadEl.length) { - $uploadEl.on('fileuploadstart', function() { - self.trigger('actionPerformed', 'upload'); - }); - } else { - console.warn('Missing upload element "file_upload_start"'); - } - - this.fileList = options && options.fileList; - - this._menuItems = [{ - id: 'folder', - displayName: t('files', 'New folder'), - templateName: t('files', 'New folder'), - iconClass: 'icon-folder', - fileType: 'folder', - actionLabel: t('files', 'Create new folder'), - actionHandler: function(name) { - self.fileList.createDirectory(name); - } - }]; - - OC.Plugins.attach('OCA.Files.NewFileMenu', this); - }, - - template: function(data) { - return OCA.Files.Templates['newfilemenu'](data); - }, - - /** - * Event handler whenever an action has been clicked within the menu - * - * @param {Object} event event object - */ - _onClickAction: function(event) { - var $target = $(event.target); - if (!$target.hasClass('menuitem')) { - $target = $target.closest('.menuitem'); - } - var action = $target.attr('data-action'); - // note: clicking the upload label will automatically - // set the focus on the "file_upload_start" hidden field - // which itself triggers the upload dialog. - // Currently the upload logic is still in file-upload.js and filelist.js - if (action === 'upload') { - OC.hideMenus(); - } else { - var actionItem = _.filter(this._menuItems, function(item) { - return item.id === action - }).pop(); - if (typeof actionItem.useInput === 'undefined' || actionItem.useInput === true) { - event.preventDefault(); - this.$el.find('.menuitem.active').removeClass('active'); - $target.addClass('active'); - this._promptFileName($target); - } else { - actionItem.actionHandler(); - OC.hideMenus(); - } - } - }, - - _promptFileName: function($target) { - var self = this; - - if ($target.find('form').length) { - $target.find('input[type=\'text\']').focus(); - return; - } - - // discard other forms - this.$el.find('form').remove(); - this.$el.find('.displayname').removeClass('hidden'); - - $target.find('.displayname').addClass('hidden'); - - var newName = $target.attr('data-templatename'); - var fileType = $target.attr('data-filetype'); - var actionLabel = $target.attr('data-action-label'); - var $form = $(OCA.Files.Templates['newfilemenu_filename_form']({ - fileName: newName, - cid: this.cid, - fileType: fileType, - actionLabel, - })); - - //this.trigger('actionPerformed', action); - $target.append($form); - - // here comes the OLD code - var $input = $form.find('input[type=\'text\']'); - var $submit = $form.find('input[type=\'submit\']'); - - var lastPos; - var checkInput = function () { - // Special handling for the setup template directory - if ($target.attr('data-action') === 'template-init') { - return true; - } - - var filename = $input.val(); - try { - if (!Files.isFileNameValid(filename)) { - // Files.isFileNameValid(filename) throws an exception itself - } else if (self.fileList.inList(filename)) { - throw t('files', '{newName} already exists', {newName: filename}, undefined, { - escape: false - }); - } else { - return true; - } - } catch (error) { - $input.attr('title', error); - $input.addClass('error'); - } - return false; - }; - - // verify filename on typing - $input.keyup(function() { - if (checkInput()) { - $input.removeClass('error'); - } - }); - - $submit.click(function(event) { - event.stopPropagation(); - event.preventDefault(); - $form.submit(); - }); - - $input.focus(); - // pre select name up to the extension - lastPos = newName.lastIndexOf('.'); - if (lastPos === -1) { - lastPos = newName.length; - } - $input.selectRange(0, lastPos); - - $form.submit(function(event) { - event.stopPropagation(); - event.preventDefault(); - - if (checkInput()) { - var newname = $input.val().trim(); - - /* Find the right actionHandler that should be called. - * Actions is retrieved by using `actionSpec.id` */ - var action = _.filter(self._menuItems, function(item) { - return item.id == $target.attr('data-action'); - }).pop(); - action.actionHandler(newname); - - $form.remove(); - $target.find('.displayname').removeClass('hidden'); - OC.hideMenus(); - } - }); - }, - - /** - * Add a new item menu entry in the “New” file menu (in - * last position). By clicking on the item, the - * `actionHandler` function is called. - * - * @param {Object} actionSpec item’s properties - */ - addMenuEntry: function(actionSpec) { - this._menuItems.push({ - id: actionSpec.id, - displayName: actionSpec.displayName, - templateName: actionSpec.templateName, - iconClass: actionSpec.iconClass, - fileType: actionSpec.fileType, - useInput: actionSpec.useInput, - actionLabel: actionSpec.actionLabel, - actionHandler: actionSpec.actionHandler, - checkFilename: actionSpec.checkFilename, - shouldShow: actionSpec.shouldShow, - }); - }, - - /** - * Remove a menu item from the "New" file menu - * @param {string} actionId - */ - removeMenuEntry: function(actionId) { - var index = this._menuItems.findIndex(function (actionSpec) { - return actionSpec.id === actionId; - }); - if (index > -1) { - this._menuItems.splice(index, 1); - } - }, - - /** - * Renders the menu with the currently set items - */ - render: function() { - const menuItems = this._menuItems.filter(item => !item.shouldShow || (item.shouldShow instanceof Function && item.shouldShow() === true)) - this.$el.html(this.template({ - uploadMaxHumanFileSize: 'TODO', - uploadLabel: t('files', 'Upload file'), - items: menuItems - })); - - // Trigger upload action also with keyboard navigation on enter - this.$el.find('[for="file_upload_start"]').on('keyup', function(event) { - if (event.key === " " || event.key === "Enter") { - $('#file_upload_start').trigger('click'); - } - }); - }, - - /** - * Displays the menu under the given element - * - * @param {Object} $target target element - */ - showAt: function($target) { - this.render(); - OC.showMenu($target, this.$el); - } - }); - - OCA.Files.NewFileMenu = NewFileMenu; - -})(); diff --git a/apps/files/js/operationprogressbar.js b/apps/files/js/operationprogressbar.js deleted file mode 100755 index 8f43937b85733..0000000000000 --- a/apps/files/js/operationprogressbar.js +++ /dev/null @@ -1,77 +0,0 @@ -/** - * SPDX-FileCopyrightText: 2018-2024 Nextcloud GmbH and Nextcloud contributors - * SPDX-License-Identifier: AGPL-3.0-or-later - */ - -(function() { - var OperationProgressBar = OC.Backbone.View.extend({ - tagName: 'div', - id: 'uploadprogresswrapper', - events: { - 'click button.stop': '_onClickCancel' - }, - - render: function() { - this.$el.html(OCA.Files.Templates['operationprogressbar']({ - textCancelButton: t('Cancel operation') - })); - this.setProgressBarText(t('Uploading …'), t('…')); - }, - - hideProgressBar: function() { - var self = this; - $('#uploadprogresswrapper .stop').fadeOut(); - $('#uploadprogressbar').fadeOut(function() { - self.$el.trigger(new $.Event('resized')); - }); - }, - - hideCancelButton: function() { - var self = this; - $('#uploadprogresswrapper .stop').fadeOut(function() { - self.$el.trigger(new $.Event('resized')); - }); - }, - - showProgressBar: function(showCancelButton) { - if (showCancelButton) { - showCancelButton = true; - } - $('#uploadprogressbar').progressbar({value: 0}); - if(showCancelButton) { - $('#uploadprogresswrapper .stop').show(); - } else { - $('#uploadprogresswrapper .stop').hide(); - } - $('#uploadprogresswrapper .label').show(); - $('#uploadprogressbar').fadeIn(); - this.$el.trigger(new $.Event('resized')); - }, - - setProgressBarValue: function(value) { - $('#uploadprogressbar').progressbar({value: value}); - }, - - setProgressBarText: function(textDesktop, textMobile, title) { - var labelHtml = OCA.Files.Templates['operationprogressbarlabel']({textDesktop: textDesktop, textMobile: textMobile}); - $('#uploadprogressbar .ui-progressbar-value').html(labelHtml); - $('#uploadprogressbar .ui-progressbar-value>em').addClass('inner'); - $('#uploadprogressbar>em').replaceWith(labelHtml); - $('#uploadprogressbar>em').addClass('outer'); - if (title) { - $('#uploadprogressbar').attr('title', title); - $('#uploadprogresswrapper .tooltip-inner').text(title); - } - if(textDesktop || textMobile) { - $('#uploadprogresswrapper .stop').show(); - } - }, - - _onClickCancel: function (event) { - this.trigger('cancel'); - return false; - } - }); - - OCA.Files.OperationProgressBar = OperationProgressBar; -})(OC, OCA); diff --git a/apps/files/js/recentfilelist.js b/apps/files/js/recentfilelist.js deleted file mode 100644 index 248f1c11c626a..0000000000000 --- a/apps/files/js/recentfilelist.js +++ /dev/null @@ -1,102 +0,0 @@ -/** - * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors - * SPDX-FileCopyrightText: 2014-2016 ownCloud, Inc. - * SPDX-License-Identifier: AGPL-3.0-or-later - */ - -// HACK: this piece needs to be loaded AFTER the files app (for unit tests) -window.addEventListener('DOMContentLoaded', function () { - (function (OCA) { - /** - * @class OCA.Files.RecentFileList - * @augments OCA.Files.RecentFileList - * - * @classdesc Recent file list. - * Displays the list of recently modified files - * - * @param $el container element with existing markup for the .files-controls - * and a table - * @param [options] map of options, see other parameters - */ - var RecentFileList = function ($el, options) { - options.sorting = { - mode: 'mtime', - direction: 'desc' - }; - this.initialize($el, options); - this._allowSorting = false; - }; - RecentFileList.prototype = _.extend({}, OCA.Files.FileList.prototype, - /** @lends OCA.Files.RecentFileList.prototype */ { - id: 'recent', - appName: t('files', 'Recent'), - - _clientSideSort: true, - _allowSelection: false, - - /** - * @private - */ - initialize: function () { - OCA.Files.FileList.prototype.initialize.apply(this, arguments); - if (this.initialized) { - return; - } - OC.Plugins.attach('OCA.Files.RecentFileList', this); - }, - - updateEmptyContent: function () { - var dir = this.getCurrentDirectory(); - if (dir === '/') { - // root has special permissions - this.$el.find('.emptyfilelist.emptycontent').toggleClass('hidden', !this.isEmpty); - this.$el.find('.files-filestable thead th').toggleClass('hidden', this.isEmpty); - } - else { - OCA.Files.FileList.prototype.updateEmptyContent.apply(this, arguments); - } - }, - - getDirectoryPermissions: function () { - return OC.PERMISSION_READ | OC.PERMISSION_DELETE; - }, - - updateStorageStatistics: function () { - // no op because it doesn't have - // storage info like free space / used space - }, - - reload: function () { - this.showMask(); - if (this._reloadCall?.abort) { - this._reloadCall.abort(); - } - - // there is only root - this._setCurrentDir('/', false); - - this._reloadCall = $.ajax({ - url: OC.generateUrl('/apps/files/api/v1/recent'), - type: 'GET', - dataType: 'json' - }); - var callBack = this.reloadCallback.bind(this); - return this._reloadCall.then(callBack, callBack); - }, - - reloadCallback: function (result) { - delete this._reloadCall; - this.hideMask(); - - if (result.files) { - this.setFiles(result.files.sort(this._sortComparator)); - return true; - } - return false; - } - }); - - OCA.Files.RecentFileList = RecentFileList; - })(OCA); -}); - diff --git a/apps/files/js/semaphore.js b/apps/files/js/semaphore.js deleted file mode 100644 index 3e0d61e922a09..0000000000000 --- a/apps/files/js/semaphore.js +++ /dev/null @@ -1,36 +0,0 @@ -/** - * SPDX-FileCopyrightText: 2018-2024 Nextcloud GmbH and Nextcloud contributors - * SPDX-License-Identifier: AGPL-3.0-or-later - */ - -(function(){ - var Semaphore = function(max) { - var counter = 0; - var waiting = []; - - this.acquire = function() { - if(counter < max) { - counter++; - return new Promise(function(resolve) { resolve(); }); - } else { - return new Promise(function(resolve) { waiting.push(resolve); }); - } - }; - - this.release = function() { - counter--; - if (waiting.length > 0 && counter < max) { - counter++; - var promise = waiting.shift(); - promise(); - } - }; - }; - - // needed on public share page to properly register this - if (!OCA.Files) { - OCA.Files = {}; - } - OCA.Files.Semaphore = Semaphore; - -})(); diff --git a/apps/files/js/sidebarpreviewmanager.js b/apps/files/js/sidebarpreviewmanager.js deleted file mode 100644 index de1d1293074ef..0000000000000 --- a/apps/files/js/sidebarpreviewmanager.js +++ /dev/null @@ -1,130 +0,0 @@ -/** - * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors - * SPDX-License-Identifier: AGPL-3.0-or-later - */ - -(function () { - var SidebarPreviewManager = function (fileList) { - this._fileList = fileList; - this._previewHandlers = {}; - OC.Plugins.attach('OCA.Files.SidebarPreviewManager', this); - }; - - SidebarPreviewManager.prototype = { - addPreviewHandler: function (mime, handler) { - this._previewHandlers[mime] = handler; - }, - - getMimeTypePreviewHandler: function(mime) { - var mimePart = mime.split('/').shift(); - if (this._previewHandlers[mime]) { - return this._previewHandlers[mime]; - } else if (this._previewHandlers[mimePart]) { - return this._previewHandlers[mimePart]; - } else { - return null; - } - }, - - getPreviewHandler: function (mime) { - var mimetypeHandler = this.getMimeTypePreviewHandler(mime); - if (mimetypeHandler) { - return mimetypeHandler; - } else { - return this.fallbackPreview.bind(this); - } - }, - - loadPreview: function (model, $thumbnailDiv, $thumbnailContainer) { - if (model.get('hasPreview') === false && this.getMimeTypePreviewHandler(model.get('mimetype')) === null) { - var mimeIcon = OC.MimeType.getIconUrl(model.get('mimetype')); - $thumbnailDiv.removeClass('icon-loading icon-32'); - $thumbnailContainer.removeClass('image'); //fall back to regular view - $thumbnailDiv.css({ - 'background-image': 'url("' + mimeIcon + '")' - }); - } else { - var handler = this.getPreviewHandler(model.get('mimetype')); - var fallback = this.fallbackPreview.bind(this, model, $thumbnailDiv, $thumbnailContainer); - handler(model, $thumbnailDiv, $thumbnailContainer, fallback); - } - }, - - // previews for images and mimetype icons - fallbackPreview: function (model, $thumbnailDiv, $thumbnailContainer) { - var isImage = model.isImage(); - var maxImageWidth = $thumbnailContainer.parent().width() + 50; // 50px for negative margins - var maxImageHeight = maxImageWidth / (16 / 9); - - var isLandscape = function (img) { - return img.width > (img.height * 1.2); - }; - - var isSmall = function (img) { - return (img.width * 1.1) < (maxImageWidth * window.devicePixelRatio); - }; - - var getTargetHeight = function (img) { - var targetHeight = img.height / window.devicePixelRatio; - if (targetHeight <= maxImageHeight) { - targetHeight = maxImageHeight; - } - return targetHeight; - }; - - var getTargetRatio = function (img) { - var ratio = img.width / img.height; - if (ratio > 16 / 9) { - return ratio; - } else { - return 16 / 9; - } - }; - - this._fileList.lazyLoadPreview({ - fileId: model.get('id'), - path: model.getFullPath(), - mime: model.get('mimetype'), - etag: model.get('etag'), - y: maxImageHeight, - x: maxImageWidth, - a: 1, - mode: 'cover', - callback: function (previewUrl, img) { - $thumbnailDiv.previewImg = previewUrl; - - // as long as we only have the mimetype icon, we only save it in case there is no preview - if (!img) { - return; - } - $thumbnailDiv.removeClass('icon-loading icon-32'); - var targetHeight = getTargetHeight(img); - $thumbnailContainer.addClass((isLandscape(img) && !isSmall(img)) ? 'landscape' : 'portrait'); - $thumbnailContainer.addClass('large'); - - // only set background when we have an actual preview - // when we don't have a preview we show the mime icon in the error handler - $thumbnailDiv.css({ - 'background-image': 'url("' + previewUrl + '")', - height: (targetHeight > maxImageHeight) ? 'auto' : targetHeight, - 'max-height': isSmall(img) ? targetHeight : null - }); - - var targetRatio = getTargetRatio(img); - $thumbnailDiv.find('.stretcher').css({ - 'padding-bottom': (100 / targetRatio) + '%' - }); - }, - error: function () { - $thumbnailDiv.removeClass('icon-loading icon-32'); - $thumbnailContainer.removeClass('image'); //fall back to regular view - $thumbnailDiv.css({ - 'background-image': 'url("' + $thumbnailDiv.previewImg + '")' - }); - } - }); - } - }; - - OCA.Files.SidebarPreviewManager = SidebarPreviewManager; -})(); diff --git a/apps/files/js/sidebarpreviewtext.js b/apps/files/js/sidebarpreviewtext.js deleted file mode 100644 index 55b9153aefe82..0000000000000 --- a/apps/files/js/sidebarpreviewtext.js +++ /dev/null @@ -1,43 +0,0 @@ -/** - * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors - * SPDX-License-Identifier: AGPL-3.0-or-later - */ - -(function () { - var SidebarPreview = function () { - }; - - SidebarPreview.prototype = { - attach: function (manager) { - manager.addPreviewHandler('text', this.handlePreview.bind(this)); - }, - - handlePreview: function (model, $thumbnailDiv, $thumbnailContainer, fallback) { - var previewWidth = $thumbnailContainer.parent().width() + 50; // 50px for negative margins - var previewHeight = previewWidth / (16 / 9); - - this.getFileContent(model.getFullPath()).then(function (content) { - $thumbnailDiv.removeClass('icon-loading icon-32'); - $thumbnailContainer.addClass('large'); - $thumbnailContainer.addClass('text'); - var $textPreview = $('
    ').text(content);
    -				$thumbnailDiv.children('.stretcher').remove();
    -				$thumbnailDiv.append($textPreview);
    -				$thumbnailContainer.css("max-height", previewHeight);
    -			}, function () {
    -				fallback();
    -			});
    -		},
    -
    -		getFileContent: function (path) {
    -			return $.ajax({
    -				url: OC.linkToRemoteBase('files' + path),
    -				headers: {
    -					'Range': 'bytes=0-10240'
    -				}
    -			});
    -		}
    -	};
    -
    -	OC.Plugins.register('OCA.Files.SidebarPreviewManager', new SidebarPreview());
    -})();
    diff --git a/apps/files/js/tagsplugin.js b/apps/files/js/tagsplugin.js
    deleted file mode 100644
    index 6b4acaaef96d6..0000000000000
    --- a/apps/files/js/tagsplugin.js
    +++ /dev/null
    @@ -1,267 +0,0 @@
    -/**
    - * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors
    - * SPDX-FileCopyrightText: 2014-2016 ownCloud, Inc.
    - * SPDX-License-Identifier: AGPL-3.0-or-later
    - */
    -
    -/* global Handlebars */
    -
    -(function (OCA) {
    -
    -	_.extend(OC.Files.Client, {
    -		PROPERTY_TAGS: '{' + OC.Files.Client.NS_OWNCLOUD + '}tags',
    -		PROPERTY_FAVORITE: '{' + OC.Files.Client.NS_OWNCLOUD + '}favorite'
    -	});
    -
    -	/**
    -	 * Returns the icon class for the matching state
    -	 *
    -	 * @param {boolean} state true if starred, false otherwise
    -	 * @return {string} icon class for star image
    -	 */
    -	function getStarIconClass (state) {
    -		return state ? 'icon-starred' : 'icon-star';
    -	}
    -
    -	/**
    -	 * Render the star icon with the given state
    -	 *
    -	 * @param {boolean} state true if starred, false otherwise
    -	 * @return {Object} jQuery object
    -	 */
    -	function renderStar (state) {
    -		return OCA.Files.Templates['favorite_mark']({
    -			isFavorite: state,
    -			altText: state ? t('files', 'Favorited') : t('files', 'Not favorited'),
    -			iconClass: getStarIconClass(state)
    -		});
    -	}
    -
    -	/**
    -	 * Toggle star icon on favorite mark element
    -	 *
    -	 * @param {Object} $favoriteMarkEl favorite mark element
    -	 * @param {boolean} state true if starred, false otherwise
    -	 */
    -	function toggleStar ($favoriteMarkEl, state) {
    -		$favoriteMarkEl.removeClass('icon-star icon-starred').addClass(getStarIconClass(state));
    -		$favoriteMarkEl.toggleClass('permanent', state);
    -	}
    -
    -	OCA.Files = OCA.Files || {};
    -
    -	/**
    -	 * Extends the file actions and file list to include a favorite mark icon
    -	 * and a favorite action in the file actions menu; it also adds "data-tags"
    -	 * and "data-favorite" attributes to file elements.
    -	 *
    -	 * @namespace OCA.Files.TagsPlugin
    -	 */
    -	OCA.Files.TagsPlugin = {
    -		name: 'Tags',
    -
    -		allowedLists: [
    -			'files',
    -			'favorites',
    -			'systemtags',
    -			'shares.self',
    -			'shares.others',
    -			'shares.link'
    -		],
    -
    -		_extendFileActions: function (fileActions) {
    -			var self = this;
    -
    -			fileActions.registerAction({
    -				name: 'Favorite',
    -				displayName: function (context) {
    -					var $file = context.$file;
    -					var isFavorite = $file.data('favorite') === true;
    -
    -					if (isFavorite) {
    -						return t('files', 'Remove from favorites');
    -					}
    -
    -					// As it is currently not possible to provide a context for
    -					// the i18n strings "Add to favorites" was used instead of
    -					// "Favorite" to remove the ambiguity between verb and noun
    -					// when it is translated.
    -					return t('files', 'Add to favorites');
    -				},
    -				mime: 'all',
    -				order: -100,
    -				permissions: OC.PERMISSION_NONE,
    -				iconClass: function (fileName, context) {
    -					var $file = context.$file;
    -					var isFavorite = $file.data('favorite') === true;
    -
    -					if (isFavorite) {
    -						return 'icon-favorite';
    -					}
    -
    -					return 'icon-starred';
    -				},
    -				actionHandler: function (fileName, context) {
    -					var $favoriteMarkEl = context.$file.find('.favorite-mark');
    -					var $file = context.$file;
    -					var fileInfo = context.fileList.files[$file.index()];
    -					var dir = context.dir || context.fileList.getCurrentDirectory();
    -					var tags = $file.attr('data-tags');
    -					var isFile = $file.attr('data-type') === 'file';
    -
    -					if (_.isUndefined(tags)) {
    -						tags = '';
    -					}
    -					tags = tags.split('|');
    -					tags = _.without(tags, '');
    -					var isFavorite = tags.indexOf(OC.TAG_FAVORITE) >= 0;
    -
    -					// Fake Node object for vue compatibility
    -					const node = {
    -						type: isFile ? 'file' : 'folder',
    -						path: (dir + '/' + fileName).replace(/\/\/+/g, '/'),
    -						root: '/files/' + OC.getCurrentUser().uid
    -					}
    -
    -					if (isFavorite) {
    -						// remove tag from list
    -						tags = _.without(tags, OC.TAG_FAVORITE);
    -						// vue compatibility
    -						window._nc_event_bus.emit('files:favorites:removed', node)
    -					} else {
    -						tags.push(OC.TAG_FAVORITE);
    -						// vue compatibility
    -						window._nc_event_bus.emit('files:favorites:added', node)
    -					}
    -
    -					// pre-toggle the star
    -					toggleStar($favoriteMarkEl, !isFavorite);
    -
    -					context.fileInfoModel.trigger('busy', context.fileInfoModel, true);
    -
    -					self.applyFileTags(
    -						dir + '/' + fileName,
    -						tags,
    -						$favoriteMarkEl,
    -						isFavorite
    -					).then(function (result) {
    -						context.fileInfoModel.trigger('busy', context.fileInfoModel, false);
    -						// response from server should contain updated tags
    -						var newTags = result.tags;
    -						if (_.isUndefined(newTags)) {
    -							newTags = tags;
    -						}
    -						context.fileInfoModel.set({
    -							'tags': newTags,
    -							'favorite': !isFavorite
    -						});
    -					});
    -				}
    -			});
    -		},
    -
    -		_extendFileList: function (fileList) {
    -			// extend row prototype
    -			var oldCreateRow = fileList._createRow;
    -			fileList._createRow = function (fileData) {
    -				var $tr = oldCreateRow.apply(this, arguments);
    -				var isFavorite = false;
    -				if (fileData.tags) {
    -					$tr.attr('data-tags', fileData.tags.join('|'));
    -					if (fileData.tags.indexOf(OC.TAG_FAVORITE) >= 0) {
    -						$tr.attr('data-favorite', true);
    -						isFavorite = true;
    -					}
    -				}
    -				var $icon = $(renderStar(isFavorite));
    -				$tr.find('td.filename .thumbnail').append($icon);
    -				return $tr;
    -			};
    -			var oldElementToFile = fileList.elementToFile;
    -			fileList.elementToFile = function ($el) {
    -				var fileInfo = oldElementToFile.apply(this, arguments);
    -				var tags = $el.attr('data-tags');
    -				if (_.isUndefined(tags)) {
    -					tags = '';
    -				}
    -				tags = tags.split('|');
    -				tags = _.without(tags, '');
    -				fileInfo.tags = tags;
    -				return fileInfo;
    -			};
    -
    -			var oldGetWebdavProperties = fileList._getWebdavProperties;
    -			fileList._getWebdavProperties = function () {
    -				var props = oldGetWebdavProperties.apply(this, arguments);
    -				props.push(OC.Files.Client.PROPERTY_TAGS);
    -				props.push(OC.Files.Client.PROPERTY_FAVORITE);
    -				return props;
    -			};
    -
    -			fileList.filesClient.addFileInfoParser(function (response) {
    -				var data = {};
    -				var props = response.propStat[0].properties;
    -				var tags = props[OC.Files.Client.PROPERTY_TAGS];
    -				var favorite = props[OC.Files.Client.PROPERTY_FAVORITE];
    -				if (tags && tags.length) {
    -					tags = _.chain(tags).filter(function (xmlvalue) {
    -						return (xmlvalue.namespaceURI === OC.Files.Client.NS_OWNCLOUD && xmlvalue.nodeName.split(':')[1] === 'tag');
    -					}).map(function (xmlvalue) {
    -						return xmlvalue.textContent || xmlvalue.text;
    -					}).value();
    -				}
    -				if (tags) {
    -					data.tags = tags;
    -				}
    -				if (favorite && parseInt(favorite, 10) !== 0) {
    -					data.tags = data.tags || [];
    -					data.tags.push(OC.TAG_FAVORITE);
    -				}
    -				return data;
    -			});
    -		},
    -
    -		attach: function (fileList) {
    -			if (this.allowedLists.indexOf(fileList.id) < 0) {
    -				return;
    -			}
    -			this._extendFileActions(fileList.fileActions);
    -			this._extendFileList(fileList);
    -		},
    -
    -		/**
    -		 * Replaces the given files' tags with the specified ones.
    -		 *
    -		 * @param {String} fileName path to the file or folder to tag
    -		 * @param {Array.} tagNames array of tag names
    -		 * @param {Object} $favoriteMarkEl favorite mark element
    -		 * @param {boolean} isFavorite Was the item favorited before
    -		 */
    -		applyFileTags: function (fileName, tagNames, $favoriteMarkEl, isFavorite) {
    -			var encodedPath = OC.encodePath(fileName);
    -			while (encodedPath[0] === '/') {
    -				encodedPath = encodedPath.substr(1);
    -			}
    -			return $.ajax({
    -				url: OC.generateUrl('/apps/files/api/v1/files/') + encodedPath,
    -				contentType: 'application/json',
    -				data: JSON.stringify({
    -					tags: tagNames || []
    -				}),
    -				dataType: 'json',
    -				type: 'POST'
    -			}).fail(function (response) {
    -				var message = '';
    -				// show message if it is available
    -				if (response.responseJSON && response.responseJSON.message) {
    -					message = ': ' + response.responseJSON.message;
    -				}
    -				OC.Notification.show(t('files', 'An error occurred while trying to update the tags' + message), {type: 'error'});
    -				toggleStar($favoriteMarkEl, isFavorite);
    -			});
    -		}
    -	};
    -})
    -(OCA);
    -
    -OC.Plugins.register('OCA.Files.FileList', OCA.Files.TagsPlugin);
    diff --git a/apps/files/js/templates.js b/apps/files/js/templates.js
    deleted file mode 100644
    index 3b0aec46ccb13..0000000000000
    --- a/apps/files/js/templates.js
    +++ /dev/null
    @@ -1,430 +0,0 @@
    -(function() {
    -  var template = Handlebars.template, templates = OCA.Files.Templates = OCA.Files.Templates || {};
    -templates['detailsview'] = template({"1":function(container,depth0,helpers,partials,data) {
    -    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {
    -        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
    -          return parent[propertyName];
    -        }
    -        return undefined
    -    };
    -
    -  return "
      \n" - + ((stack1 = lookupProperty(helpers,"each").call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? lookupProperty(depth0,"tabHeaders") : depth0),{"name":"each","hash":{},"fn":container.program(2, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":4,"column":1},"end":{"line":9,"column":10}}})) != null ? stack1 : "") - + "
    \n"; -},"2":function(container,depth0,helpers,partials,data) { - var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) { - if (Object.prototype.hasOwnProperty.call(parent, propertyName)) { - return parent[propertyName]; - } - return undefined - }; - - return "
  • \n " - + ((stack1 = lookupProperty(helpers,"if").call(alias1,(depth0 != null ? lookupProperty(depth0,"tabIcon") : depth0),{"name":"if","hash":{},"fn":container.program(3, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":6,"column":5},"end":{"line":6,"column":65}}})) != null ? stack1 : "") - + "\n " - + alias4(((helper = (helper = lookupProperty(helpers,"label") || (depth0 != null ? lookupProperty(depth0,"label") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"label","hash":{},"data":data,"loc":{"start":{"line":7,"column":28},"end":{"line":7,"column":37}}}) : helper))) - + "\n
  • \n"; -},"3":function(container,depth0,helpers,partials,data) { - var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) { - if (Object.prototype.hasOwnProperty.call(parent, propertyName)) { - return parent[propertyName]; - } - return undefined - }; - - return ""; -},"compiler":[8,">= 4.3.0"],"main":function(container,depth0,helpers,partials,data) { - var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), lookupProperty = container.lookupProperty || function(parent, propertyName) { - if (Object.prototype.hasOwnProperty.call(parent, propertyName)) { - return parent[propertyName]; - } - return undefined - }; - - return "
    \n" - + ((stack1 = lookupProperty(helpers,"if").call(alias1,(depth0 != null ? lookupProperty(depth0,"tabHeaders") : depth0),{"name":"if","hash":{},"fn":container.program(1, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":2,"column":0},"end":{"line":11,"column":7}}})) != null ? stack1 : "") - + "
    \n" - + container.escapeExpression(((helper = (helper = lookupProperty(helpers,"closeLabel") || (depth0 != null ? lookupProperty(depth0,"closeLabel") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === "function" ? helper.call(alias1,{"name":"closeLabel","hash":{},"data":data,"loc":{"start":{"line":13,"column":67},"end":{"line":13,"column":81}}}) : helper))) - + "\n"; -},"useData":true}); -templates['favorite_mark'] = template({"1":function(container,depth0,helpers,partials,data) { - return "permanent"; -},"compiler":[8,">= 4.3.0"],"main":function(container,depth0,helpers,partials,data) { - var stack1, helper, options, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) { - if (Object.prototype.hasOwnProperty.call(parent, propertyName)) { - return parent[propertyName]; - } - return undefined - }, buffer = - "
    \n \n " - + alias4(((helper = (helper = lookupProperty(helpers,"altText") || (depth0 != null ? lookupProperty(depth0,"altText") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"altText","hash":{},"data":data,"loc":{"start":{"line":3,"column":31},"end":{"line":3,"column":42}}}) : helper))) - + "\n
    \n"; -},"useData":true}); -templates['file_action_trigger'] = template({"1":function(container,depth0,helpers,partials,data) { - var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) { - if (Object.prototype.hasOwnProperty.call(parent, propertyName)) { - return parent[propertyName]; - } - return undefined - }; - - return " \""\n"; -},"3":function(container,depth0,helpers,partials,data) { - var stack1, alias1=depth0 != null ? depth0 : (container.nullContext || {}), lookupProperty = container.lookupProperty || function(parent, propertyName) { - if (Object.prototype.hasOwnProperty.call(parent, propertyName)) { - return parent[propertyName]; - } - return undefined - }; - - return ((stack1 = lookupProperty(helpers,"if").call(alias1,(depth0 != null ? lookupProperty(depth0,"iconClass") : depth0),{"name":"if","hash":{},"fn":container.program(4, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":5,"column":2},"end":{"line":7,"column":9}}})) != null ? stack1 : "") - + ((stack1 = lookupProperty(helpers,"unless").call(alias1,(depth0 != null ? lookupProperty(depth0,"hasDisplayName") : depth0),{"name":"unless","hash":{},"fn":container.program(6, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":8,"column":2},"end":{"line":10,"column":13}}})) != null ? stack1 : ""); -},"4":function(container,depth0,helpers,partials,data) { - var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) { - if (Object.prototype.hasOwnProperty.call(parent, propertyName)) { - return parent[propertyName]; - } - return undefined - }; - - return " \n"; -},"6":function(container,depth0,helpers,partials,data) { - var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) { - if (Object.prototype.hasOwnProperty.call(parent, propertyName)) { - return parent[propertyName]; - } - return undefined - }; - - return " " - + container.escapeExpression(((helper = (helper = lookupProperty(helpers,"altText") || (depth0 != null ? lookupProperty(depth0,"altText") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{"name":"altText","hash":{},"data":data,"loc":{"start":{"line":9,"column":33},"end":{"line":9,"column":44}}}) : helper))) - + "\n"; -},"8":function(container,depth0,helpers,partials,data) { - var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) { - if (Object.prototype.hasOwnProperty.call(parent, propertyName)) { - return parent[propertyName]; - } - return undefined - }; - - return " " - + container.escapeExpression(((helper = (helper = lookupProperty(helpers,"displayName") || (depth0 != null ? lookupProperty(depth0,"displayName") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{"name":"displayName","hash":{},"data":data,"loc":{"start":{"line":12,"column":27},"end":{"line":12,"column":42}}}) : helper))) - + ""; -},"compiler":[8,">= 4.3.0"],"main":function(container,depth0,helpers,partials,data) { - var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) { - if (Object.prototype.hasOwnProperty.call(parent, propertyName)) { - return parent[propertyName]; - } - return undefined - }; - - return "\n" - + ((stack1 = lookupProperty(helpers,"if").call(alias1,(depth0 != null ? lookupProperty(depth0,"icon") : depth0),{"name":"if","hash":{},"fn":container.program(1, data, 0),"inverse":container.program(3, data, 0),"data":data,"loc":{"start":{"line":2,"column":1},"end":{"line":11,"column":8}}})) != null ? stack1 : "") - + " " - + ((stack1 = lookupProperty(helpers,"if").call(alias1,(depth0 != null ? lookupProperty(depth0,"displayName") : depth0),{"name":"if","hash":{},"fn":container.program(8, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":12,"column":1},"end":{"line":12,"column":56}}})) != null ? stack1 : "") - + "\n\n"; -},"useData":true}); -templates['fileactionsmenu'] = template({"1":function(container,depth0,helpers,partials,data) { - var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) { - if (Object.prototype.hasOwnProperty.call(parent, propertyName)) { - return parent[propertyName]; - } - return undefined - }; - - return "
  • \n \n " - + ((stack1 = lookupProperty(helpers,"if").call(alias1,(depth0 != null ? lookupProperty(depth0,"icon") : depth0),{"name":"if","hash":{},"fn":container.program(4, data, 0),"inverse":container.program(6, data, 0),"data":data,"loc":{"start":{"line":5,"column":4},"end":{"line":12,"column":11}}})) != null ? stack1 : "") - + " " - + alias4(((helper = (helper = lookupProperty(helpers,"displayName") || (depth0 != null ? lookupProperty(depth0,"displayName") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"displayName","hash":{},"data":data,"loc":{"start":{"line":13,"column":10},"end":{"line":13,"column":25}}}) : helper))) - + "\n \n
  • \n"; -},"2":function(container,depth0,helpers,partials,data) { - return "hidden"; -},"4":function(container,depth0,helpers,partials,data) { - var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) { - if (Object.prototype.hasOwnProperty.call(parent, propertyName)) { - return parent[propertyName]; - } - return undefined - }; - - return "\n"; -},"6":function(container,depth0,helpers,partials,data) { - var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) { - if (Object.prototype.hasOwnProperty.call(parent, propertyName)) { - return parent[propertyName]; - } - return undefined - }; - - return ((stack1 = lookupProperty(helpers,"if").call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? lookupProperty(depth0,"iconClass") : depth0),{"name":"if","hash":{},"fn":container.program(7, data, 0),"inverse":container.program(9, data, 0),"data":data,"loc":{"start":{"line":7,"column":5},"end":{"line":11,"column":12}}})) != null ? stack1 : ""); -},"7":function(container,depth0,helpers,partials,data) { - var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) { - if (Object.prototype.hasOwnProperty.call(parent, propertyName)) { - return parent[propertyName]; - } - return undefined - }; - - return " \n"; -},"9":function(container,depth0,helpers,partials,data) { - return " \n"; -},"compiler":[8,">= 4.3.0"],"main":function(container,depth0,helpers,partials,data) { - var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) { - if (Object.prototype.hasOwnProperty.call(parent, propertyName)) { - return parent[propertyName]; - } - return undefined - }; - - return "
      \n" - + ((stack1 = lookupProperty(helpers,"each").call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? lookupProperty(depth0,"items") : depth0),{"name":"each","hash":{},"fn":container.program(1, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":2,"column":1},"end":{"line":16,"column":10}}})) != null ? stack1 : "") - + "
    \n"; -},"useData":true}); -templates['filemultiselectmenu'] = template({"1":function(container,depth0,helpers,partials,data) { - var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) { - if (Object.prototype.hasOwnProperty.call(parent, propertyName)) { - return parent[propertyName]; - } - return undefined - }; - - return "
  • \n \n" - + ((stack1 = lookupProperty(helpers,"if").call(alias1,(depth0 != null ? lookupProperty(depth0,"iconClass") : depth0),{"name":"if","hash":{},"fn":container.program(2, data, 0),"inverse":container.program(4, data, 0),"data":data,"loc":{"start":{"line":5,"column":4},"end":{"line":9,"column":11}}})) != null ? stack1 : "") - + " " - + alias4(((helper = (helper = lookupProperty(helpers,"displayName") || (depth0 != null ? lookupProperty(depth0,"displayName") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"displayName","hash":{},"data":data,"loc":{"start":{"line":10,"column":24},"end":{"line":10,"column":39}}}) : helper))) - + "\n \n
  • \n"; -},"2":function(container,depth0,helpers,partials,data) { - var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) { - if (Object.prototype.hasOwnProperty.call(parent, propertyName)) { - return parent[propertyName]; - } - return undefined - }; - - return " \n"; -},"4":function(container,depth0,helpers,partials,data) { - return " \n"; -},"compiler":[8,">= 4.3.0"],"main":function(container,depth0,helpers,partials,data) { - var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) { - if (Object.prototype.hasOwnProperty.call(parent, propertyName)) { - return parent[propertyName]; - } - return undefined - }; - - return "
      \n" - + ((stack1 = lookupProperty(helpers,"each").call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? lookupProperty(depth0,"items") : depth0),{"name":"each","hash":{},"fn":container.program(1, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":2,"column":1},"end":{"line":13,"column":10}}})) != null ? stack1 : "") - + "
    \n"; -},"useData":true}); -templates['filesummary'] = template({"compiler":[8,">= 4.3.0"],"main":function(container,depth0,helpers,partials,data) { - var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) { - if (Object.prototype.hasOwnProperty.call(parent, propertyName)) { - return parent[propertyName]; - } - return undefined - }; - - return "\n \n " - + container.escapeExpression(((helper = (helper = lookupProperty(helpers,"connectorLabel") || (depth0 != null ? lookupProperty(depth0,"connectorLabel") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{"name":"connectorLabel","hash":{},"data":data,"loc":{"start":{"line":3,"column":25},"end":{"line":3,"column":43}}}) : helper))) - + "\n \n \n \n\n"; -},"useData":true}); -templates['mainfileinfodetailsview'] = template({"1":function(container,depth0,helpers,partials,data) { - var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) { - if (Object.prototype.hasOwnProperty.call(parent, propertyName)) { - return parent[propertyName]; - } - return undefined - }; - - return " \n \n \n"; -},"3":function(container,depth0,helpers,partials,data) { - var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) { - if (Object.prototype.hasOwnProperty.call(parent, propertyName)) { - return parent[propertyName]; - } - return undefined - }; - - return "" - + alias4(((helper = (helper = lookupProperty(helpers,"size") || (depth0 != null ? lookupProperty(depth0,"size") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"size","hash":{},"data":data,"loc":{"start":{"line":16,"column":56},"end":{"line":16,"column":64}}}) : helper))) - + ", "; -},"compiler":[8,">= 4.3.0"],"main":function(container,depth0,helpers,partials,data) { - var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) { - if (Object.prototype.hasOwnProperty.call(parent, propertyName)) { - return parent[propertyName]; - } - return undefined - }; - - return "
    \n
    \n
    \n

    " - + alias4(((helper = (helper = lookupProperty(helpers,"name") || (depth0 != null ? lookupProperty(depth0,"name") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"name","hash":{},"data":data,"loc":{"start":{"line":4,"column":40},"end":{"line":4,"column":48}}}) : helper))) - + "

    \n \n \n " - + alias4(((helper = (helper = lookupProperty(helpers,"permalinkTitle") || (depth0 != null ? lookupProperty(depth0,"permalinkTitle") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"permalinkTitle","hash":{},"data":data,"loc":{"start":{"line":7,"column":33},"end":{"line":7,"column":51}}}) : helper))) - + "\n \n
    \n
    \n" - + ((stack1 = lookupProperty(helpers,"if").call(alias1,(depth0 != null ? lookupProperty(depth0,"hasFavoriteAction") : depth0),{"name":"if","hash":{},"fn":container.program(1, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":11,"column":2},"end":{"line":15,"column":9}}})) != null ? stack1 : "") - + " " - + ((stack1 = lookupProperty(helpers,"if").call(alias1,(depth0 != null ? lookupProperty(depth0,"hasSize") : depth0),{"name":"if","hash":{},"fn":container.program(3, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":16,"column":2},"end":{"line":16,"column":80}}})) != null ? stack1 : "") - + "" - + alias4(((helper = (helper = lookupProperty(helpers,"date") || (depth0 != null ? lookupProperty(depth0,"date") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"date","hash":{},"data":data,"loc":{"start":{"line":16,"column":174},"end":{"line":16,"column":182}}}) : helper))) - + "\n
    \n
    \n
    \n \n
    \n"; -},"useData":true}); -templates['newfilemenu'] = template({"1":function(container,depth0,helpers,partials,data) { - var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) { - if (Object.prototype.hasOwnProperty.call(parent, propertyName)) { - return parent[propertyName]; - } - return undefined - }; - - return "
  • \n " - + alias4(((helper = (helper = lookupProperty(helpers,"displayName") || (depth0 != null ? lookupProperty(depth0,"displayName") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"displayName","hash":{},"data":data,"loc":{"start":{"line":7,"column":225},"end":{"line":7,"column":240}}}) : helper))) - + "\n
  • \n"; -},"compiler":[8,">= 4.3.0"],"main":function(container,depth0,helpers,partials,data) { - var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) { - if (Object.prototype.hasOwnProperty.call(parent, propertyName)) { - return parent[propertyName]; - } - return undefined - }; - - return "
      \n
    • \n \n
    • \n" - + ((stack1 = lookupProperty(helpers,"each").call(alias1,(depth0 != null ? lookupProperty(depth0,"items") : depth0),{"name":"each","hash":{},"fn":container.program(1, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":5,"column":1},"end":{"line":9,"column":10}}})) != null ? stack1 : "") - + "
    \n"; -},"useData":true}); -templates['newfilemenu_filename_form'] = template({"compiler":[8,">= 4.3.0"],"main":function(container,depth0,helpers,partials,data) { - var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) { - if (Object.prototype.hasOwnProperty.call(parent, propertyName)) { - return parent[propertyName]; - } - return undefined - }; - - return "
    \n \n \n
    \n"; -},"useData":true}); -templates['operationprogressbar'] = template({"compiler":[8,">= 4.3.0"],"main":function(container,depth0,helpers,partials,data) { - var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) { - if (Object.prototype.hasOwnProperty.call(parent, propertyName)) { - return parent[propertyName]; - } - return undefined - }; - - return "
    \n \n
    \n\n"; -},"useData":true}); -templates['operationprogressbarlabel'] = template({"compiler":[8,">= 4.3.0"],"main":function(container,depth0,helpers,partials,data) { - var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) { - if (Object.prototype.hasOwnProperty.call(parent, propertyName)) { - return parent[propertyName]; - } - return undefined - }; - - return "\n " - + alias4(((helper = (helper = lookupProperty(helpers,"textDesktop") || (depth0 != null ? lookupProperty(depth0,"textDesktop") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"textDesktop","hash":{},"data":data,"loc":{"start":{"line":2,"column":23},"end":{"line":2,"column":38}}}) : helper))) - + "\n " - + alias4(((helper = (helper = lookupProperty(helpers,"textMobile") || (depth0 != null ? lookupProperty(depth0,"textMobile") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"textMobile","hash":{},"data":data,"loc":{"start":{"line":3,"column":22},"end":{"line":3,"column":36}}}) : helper))) - + "\n\n"; -},"useData":true}); -templates['template_addbutton'] = template({"compiler":[8,">= 4.3.0"],"main":function(container,depth0,helpers,partials,data) { - var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) { - if (Object.prototype.hasOwnProperty.call(parent, propertyName)) { - return parent[propertyName]; - } - return undefined - }; - - return "\n \n " - + alias4(((helper = (helper = lookupProperty(helpers,"addText") || (depth0 != null ? lookupProperty(depth0,"addText") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"addText","hash":{},"data":data,"loc":{"start":{"line":3,"column":7},"end":{"line":3,"column":18}}}) : helper))) - + "\n\n"; -},"useData":true}); -})(); \ No newline at end of file diff --git a/apps/files/js/templates/detailsview.handlebars b/apps/files/js/templates/detailsview.handlebars deleted file mode 100644 index 4d489e4fa0daa..0000000000000 --- a/apps/files/js/templates/detailsview.handlebars +++ /dev/null @@ -1,13 +0,0 @@ -
    -{{#if tabHeaders}} -
      - {{#each tabHeaders}} -
    • - {{#if tabIcon}}{{/if}} - {{label}} -
    • - {{/each}} -
    -{{/if}} -
    -{{closeLabel}} diff --git a/apps/files/js/templates/favorite_mark.handlebars b/apps/files/js/templates/favorite_mark.handlebars deleted file mode 100644 index 7e0cb4385a85d..0000000000000 --- a/apps/files/js/templates/favorite_mark.handlebars +++ /dev/null @@ -1,4 +0,0 @@ -
    - - {{altText}} -
    diff --git a/apps/files/js/templates/file_action_trigger.handlebars b/apps/files/js/templates/file_action_trigger.handlebars deleted file mode 100644 index e74b3717c923a..0000000000000 --- a/apps/files/js/templates/file_action_trigger.handlebars +++ /dev/null @@ -1,13 +0,0 @@ - - {{#if icon}} - {{altText}} - {{else}} - {{#if iconClass}} - - {{/if}} - {{#unless hasDisplayName}} - {{altText}} - {{/unless}} - {{/if}} - {{#if displayName}} {{displayName}}{{/if}} - diff --git a/apps/files/js/templates/fileactionsmenu.handlebars b/apps/files/js/templates/fileactionsmenu.handlebars deleted file mode 100644 index b14ec02e5b9a7..0000000000000 --- a/apps/files/js/templates/fileactionsmenu.handlebars +++ /dev/null @@ -1,17 +0,0 @@ - diff --git a/apps/files/js/templates/filemultiselectmenu.handlebars b/apps/files/js/templates/filemultiselectmenu.handlebars deleted file mode 100644 index 9a723920db9ba..0000000000000 --- a/apps/files/js/templates/filemultiselectmenu.handlebars +++ /dev/null @@ -1,14 +0,0 @@ - diff --git a/apps/files/js/templates/filesummary.handlebars b/apps/files/js/templates/filesummary.handlebars deleted file mode 100644 index f975a2a77378b..0000000000000 --- a/apps/files/js/templates/filesummary.handlebars +++ /dev/null @@ -1,7 +0,0 @@ - - - {{connectorLabel}} - - - - diff --git a/apps/files/js/templates/mainfileinfodetailsview.handlebars b/apps/files/js/templates/mainfileinfodetailsview.handlebars deleted file mode 100644 index db836ca59917d..0000000000000 --- a/apps/files/js/templates/mainfileinfodetailsview.handlebars +++ /dev/null @@ -1,21 +0,0 @@ -
    -
    - -
    - {{#if hasFavoriteAction}} - - - - {{/if}} - {{#if hasSize}}{{size}}, {{/if}}{{date}} -
    -
    - diff --git a/apps/files/js/templates/newfilemenu.handlebars b/apps/files/js/templates/newfilemenu.handlebars deleted file mode 100644 index 756595212d936..0000000000000 --- a/apps/files/js/templates/newfilemenu.handlebars +++ /dev/null @@ -1,10 +0,0 @@ -
      -
    • - -
    • - {{#each items}} -
    • - {{displayName}} -
    • - {{/each}} -
    diff --git a/apps/files/js/templates/newfilemenu_filename_form.handlebars b/apps/files/js/templates/newfilemenu_filename_form.handlebars deleted file mode 100644 index 2d5af97ee76c0..0000000000000 --- a/apps/files/js/templates/newfilemenu_filename_form.handlebars +++ /dev/null @@ -1,4 +0,0 @@ -
    - - -
    diff --git a/apps/files/js/templates/operationprogressbar.handlebars b/apps/files/js/templates/operationprogressbar.handlebars deleted file mode 100644 index c02ac623fabc7..0000000000000 --- a/apps/files/js/templates/operationprogressbar.handlebars +++ /dev/null @@ -1,6 +0,0 @@ -
    - -
    - diff --git a/apps/files/js/templates/operationprogressbarlabel.handlebars b/apps/files/js/templates/operationprogressbarlabel.handlebars deleted file mode 100644 index 24ac66994da46..0000000000000 --- a/apps/files/js/templates/operationprogressbarlabel.handlebars +++ /dev/null @@ -1,4 +0,0 @@ - - {{textDesktop}} - {{textMobile}} - diff --git a/apps/files/js/templates/template_addbutton.handlebars b/apps/files/js/templates/template_addbutton.handlebars deleted file mode 100644 index 478465d93aa99..0000000000000 --- a/apps/files/js/templates/template_addbutton.handlebars +++ /dev/null @@ -1,4 +0,0 @@ - - - {{addText}} - diff --git a/apps/files/js/upload.js b/apps/files/js/upload.js deleted file mode 100644 index 90020e3dbabe1..0000000000000 --- a/apps/files/js/upload.js +++ /dev/null @@ -1,13 +0,0 @@ -/** - * SPDX-FileCopyrightText: 2013-2014 ownCloud, Inc. - * SPDX-License-Identifier: AGPL-3.0-or-later - */ - -function Upload(fileSelector) { - if ($.support.xhrFileUpload) { - return new XHRUpload(fileSelector.target.files); - } else { - return new FormUpload(fileSelector); - } -} -Upload.target = OC.filePath('files', 'ajax', 'upload.php'); diff --git a/apps/files/lib/Controller/ViewController.php b/apps/files/lib/Controller/ViewController.php index c402a4c5bedd3..b5c61aaa5f4e4 100644 --- a/apps/files/lib/Controller/ViewController.php +++ b/apps/files/lib/Controller/ViewController.php @@ -139,7 +139,6 @@ public function index($dir = '', $view = '', $fileid = null, $fileNotFound = fal // Load the files we need \OCP\Util::addInitScript('files', 'init'); - \OCP\Util::addStyle('files', 'merged'); \OCP\Util::addScript('files', 'main'); $userId = $this->userSession->getUser()->getUID(); diff --git a/apps/files/lib/Listener/LoadSidebarListener.php b/apps/files/lib/Listener/LoadSidebarListener.php index 4113e3f9f9d26..78b48ab1ce0f1 100644 --- a/apps/files/lib/Listener/LoadSidebarListener.php +++ b/apps/files/lib/Listener/LoadSidebarListener.php @@ -22,8 +22,5 @@ public function handle(Event $event): void { } Util::addScript(Application::APP_ID, 'sidebar'); - // needed by the Sidebar legacy tabs - // TODO: remove when all tabs migrated to the new api - Util::addScript('files', 'fileinfomodel'); } } diff --git a/apps/files/src/main-personal-settings.js b/apps/files/src/main-personal-settings.js index 63221b3ceb04a..dce190f01604f 100644 --- a/apps/files/src/main-personal-settings.js +++ b/apps/files/src/main-personal-settings.js @@ -12,8 +12,6 @@ import PersonalSettings from './components/PersonalSettings.vue' __webpack_nonce__ = getCSPNonce() Vue.prototype.t = t - -if (!window.TESTING) { - const View = Vue.extend(PersonalSettings) - new View().$mount('#files-personal-settings') -} +const View = Vue.extend(PersonalSettings) +const instance = new View() +instance.$mount('#files-personal-settings') diff --git a/apps/files/tests/js/breadcrumbSpec.js b/apps/files/tests/js/breadcrumbSpec.js deleted file mode 100644 index 5633cbd99c26b..0000000000000 --- a/apps/files/tests/js/breadcrumbSpec.js +++ /dev/null @@ -1,648 +0,0 @@ -/** - * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors - * SPDX-FileCopyrightText: 2015 ownCloud, Inc. - * SPDX-License-Identifier: AGPL-3.0-or-later - */ - -describe('OCA.Files.BreadCrumb tests', function() { - var BreadCrumb = OCA.Files.BreadCrumb; - - describe('Rendering', function() { - var bc; - beforeEach(function() { - bc = new BreadCrumb({ - getCrumbUrl: function(part, index) { - // for testing purposes - return part.dir + '#' + index; - } - }); - }); - afterEach(function() { - bc = null; - }); - it('Renders its own container', function() { - bc.render(); - expect(bc.$el.find("ul").hasClass('breadcrumb')).toEqual(true); - }); - it('Renders root by default', function() { - var $crumbs; - bc.render(); - $crumbs = bc.$el.find('.crumb'); - // menu and home - expect($crumbs.length).toEqual(2); - expect($crumbs.eq(0).find('a').hasClass('icon-more')).toEqual(true); - expect($crumbs.eq(0).find('div.popovermenu').length).toEqual(1); - expect($crumbs.eq(0).data('dir')).not.toBeDefined(); - expect($crumbs.eq(1).find('a').attr('href')).toEqual('/#1'); - expect($crumbs.eq(1).find('a').hasClass('icon-home')).toEqual(true); - expect($crumbs.eq(1).data('dir')).toEqual('/'); - }); - it('Renders root when switching to root', function() { - var $crumbs; - bc.setDirectory('/somedir'); - bc.setDirectory('/'); - $crumbs = bc.$el.find('.crumb'); - expect($crumbs.length).toEqual(2); - expect($crumbs.eq(1).data('dir')).toEqual('/'); - }); - it('Renders single path section', function() { - var $crumbs; - bc.setDirectory('/somedir'); - $crumbs = bc.$el.find('.crumb'); - expect($crumbs.length).toEqual(3); - expect($crumbs.eq(0).find('a').hasClass('icon-more')).toEqual(true); - expect($crumbs.eq(0).find('div.popovermenu').length).toEqual(1); - expect($crumbs.eq(0).data('dir')).not.toBeDefined(); - - expect($crumbs.eq(1).find('a').attr('href')).toEqual('/#1'); - expect($crumbs.eq(1).find('a').hasClass('icon-home')).toEqual(true); - expect($crumbs.eq(1).data('dir')).toEqual('/'); - - expect($crumbs.eq(2).find('a').attr('href')).toEqual('/somedir#2'); - expect($crumbs.eq(2).find('img').length).toEqual(0); - expect($crumbs.eq(2).data('dir')).toEqual('/somedir'); - }); - it('Renders multiple path sections and special chars', function() { - var $crumbs; - bc.setDirectory('/somedir/with space/abc'); - $crumbs = bc.$el.find('.crumb'); - expect($crumbs.length).toEqual(5); - expect($crumbs.eq(0).find('a').hasClass('icon-more')).toEqual(true); - expect($crumbs.eq(0).find('div.popovermenu').length).toEqual(1); - expect($crumbs.eq(0).data('dir')).not.toBeDefined(); - - expect($crumbs.eq(1).find('a').attr('href')).toEqual('/#1'); - expect($crumbs.eq(1).find('a').hasClass('icon-home')).toEqual(true); - expect($crumbs.eq(1).data('dir')).toEqual('/'); - - expect($crumbs.eq(2).find('a').attr('href')).toEqual('/somedir#2'); - expect($crumbs.eq(2).find('img').length).toEqual(0); - expect($crumbs.eq(2).data('dir')).toEqual('/somedir'); - - expect($crumbs.eq(3).find('a').attr('href')).toEqual('/somedir/with space#3'); - expect($crumbs.eq(3).find('img').length).toEqual(0); - expect($crumbs.eq(3).data('dir')).toEqual('/somedir/with space'); - - expect($crumbs.eq(4).find('a').attr('href')).toEqual('/somedir/with space/abc#4'); - expect($crumbs.eq(4).find('img').length).toEqual(0); - expect($crumbs.eq(4).data('dir')).toEqual('/somedir/with space/abc'); - }); - it('Renders backslashes as regular directory separator', function() { - var $crumbs; - bc.setDirectory('/somedir\\with/mixed\\separators'); - $crumbs = bc.$el.find('.crumb'); - expect($crumbs.length).toEqual(6); - expect($crumbs.eq(0).find('a').hasClass('icon-more')).toEqual(true); - expect($crumbs.eq(0).find('div.popovermenu').length).toEqual(1); - expect($crumbs.eq(0).data('dir')).not.toBeDefined(); - - expect($crumbs.eq(1).find('a').attr('href')).toEqual('/#1'); - expect($crumbs.eq(1).find('a').hasClass('icon-home')).toEqual(true); - expect($crumbs.eq(1).data('dir')).toEqual('/'); - - expect($crumbs.eq(2).find('a').attr('href')).toEqual('/somedir#2'); - expect($crumbs.eq(2).find('img').length).toEqual(0); - expect($crumbs.eq(2).data('dir')).toEqual('/somedir'); - - expect($crumbs.eq(3).find('a').attr('href')).toEqual('/somedir/with#3'); - expect($crumbs.eq(3).find('img').length).toEqual(0); - expect($crumbs.eq(3).data('dir')).toEqual('/somedir/with'); - - expect($crumbs.eq(4).find('a').attr('href')).toEqual('/somedir/with/mixed#4'); - expect($crumbs.eq(4).find('img').length).toEqual(0); - expect($crumbs.eq(4).data('dir')).toEqual('/somedir/with/mixed'); - - expect($crumbs.eq(5).find('a').attr('href')).toEqual('/somedir/with/mixed/separators#5'); - expect($crumbs.eq(5).find('img').length).toEqual(0); - expect($crumbs.eq(5).data('dir')).toEqual('/somedir/with/mixed/separators'); - }); - }); - describe('Events', function() { - it('Calls onClick handler when clicking on a crumb', function() { - var handler = sinon.stub(); - var bc = new BreadCrumb({ - onClick: handler - }); - bc.setDirectory('/one/two/three/four'); - // Click on crumb does not work, only link - bc.$el.find('.crumb:eq(4)').click(); - expect(handler.calledOnce).toEqual(false); - - handler.reset(); - // Click on crumb link works - bc.$el.find('.crumb:eq(1) a').click(); - expect(handler.calledOnce).toEqual(true); - expect(handler.getCall(0).thisValue).toEqual(bc.$el.find('.crumb > a').get(1)); - }); - it('Calls onDrop handler when dropping on a crumb', function() { - var droppableStub = sinon.stub($.fn, 'droppable'); - var handler = sinon.stub(); - var bc = new BreadCrumb({ - onDrop: handler - }); - bc.setDirectory('/one/two/three/four'); - expect(droppableStub.calledOnce).toEqual(true); - - expect(droppableStub.getCall(0).args[0].drop).toBeDefined(); - // simulate drop - droppableStub.getCall(0).args[0].drop({dummy: true}); - - expect(handler.calledOnce).toEqual(true); - expect(handler.getCall(0).args[0]).toEqual({dummy: true}); - - droppableStub.restore(); - }); - }); - - describe('Menu tests', function() { - var bc, dummyDir, $crumbmenuLink, $popovermenu; - - beforeEach(function() { - dummyDir = '/one/two/three/four/five' - - bc = new BreadCrumb(); - // append dummy navigation and controls - // as they are currently used for measurements - $('#testArea').append( - '
    ' - ); - $('.files-controls').append(bc.$el); - - bc.setDirectory(dummyDir); - - $('li.crumb').each(function(index){ - $(this).css('width', 50); - $(this).css('padding', 0); - $(this).css('margin', 0); - }); - $('div.crumbhome').css('width', 51); - $('div.crumbmenu').css('width', 51); - - $('.files-controls').width(1000); - bc._resize(); - - // Shrink to show popovermenu - $('.files-controls').width(300); - bc._resize(); - - $crumbmenuLink = bc.$el.find('.crumbmenu > a'); - $popovermenu = $crumbmenuLink.next('.popovermenu'); - }); - afterEach(function() { - bc = null; - }); - - it('Shows only items not in the breadcrumb', function() { - var hiddenCrumbs = bc.$el.find('.crumb:not(.crumbmenu).hidden'); - expect($popovermenu.find('li:not(.in-breadcrumb)').length).toEqual(hiddenCrumbs.length); - }); - }); - - describe('Resizing', function() { - var bc, dummyDir, widths, paddings, margins; - - // cit() will skip tests if running on PhantomJS because it does not - // have proper support for flexboxes. - var cit = window.isPhantom?xit:it; - - beforeEach(function() { - dummyDir = '/short name/longer name/looooooooooooonger/' + - 'even longer long long long longer long/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/last one'; - - bc = new BreadCrumb(); - // append dummy navigation and controls - // as they are currently used for measurements - $('#testArea').append( - '
    ' - ); - $('.files-controls').append(bc.$el); - - // triggers resize implicitly - bc.setDirectory(dummyDir); - - // using hard-coded widths (pre-measured) to avoid getting different - // results on different browsers due to font engine differences - // 51px is default size for menu and home - widths = [51, 51, 106, 112, 160, 257, 251, 91]; - // using hard-coded paddings and margins to avoid depending on the - // current CSS values used in the server - paddings = [0, 0, 0, 0, 0, 0, 0, 0]; - margins = [0, 0, 0, 0, 0, 0, 0, 0]; - - $('li.crumb').each(function(index){ - $(this).css('width', widths[index]); - $(this).css('padding', paddings[index]); - $(this).css('margin', margins[index]); - }); - }); - afterEach(function() { - bc = null; - }); - it('Hides breadcrumbs to fit available width', function() { - var $crumbs; - - $('.files-controls').width(500); - bc._resize(); - - $crumbs = bc.$el.find('.crumb'); - - // Second, third, fourth and fifth crumb are hidden and everything - // else is visible - expect($crumbs.eq(0).hasClass('hidden')).toEqual(false); - expect($crumbs.eq(1).hasClass('hidden')).toEqual(false); - - expect($crumbs.eq(2).hasClass('hidden')).toEqual(false); - expect($crumbs.eq(3).hasClass('hidden')).toEqual(true); - expect($crumbs.eq(4).hasClass('hidden')).toEqual(true); - expect($crumbs.eq(5).hasClass('hidden')).toEqual(true); - expect($crumbs.eq(6).hasClass('hidden')).toEqual(true); - expect($crumbs.eq(7).hasClass('hidden')).toEqual(false); - }); - it('Hides breadcrumbs to fit available width', function() { - var $crumbs; - - $('.files-controls').width(700); - bc._resize(); - - $crumbs = bc.$el.find('.crumb'); - - // Third and fourth crumb are hidden and everything else is visible - expect($crumbs.eq(0).hasClass('hidden')).toEqual(false); - expect($crumbs.eq(1).hasClass('hidden')).toEqual(false); - - expect($crumbs.eq(2).hasClass('hidden')).toEqual(false); - expect($crumbs.eq(3).hasClass('hidden')).toEqual(false); - expect($crumbs.eq(4).hasClass('hidden')).toEqual(true); - expect($crumbs.eq(5).hasClass('hidden')).toEqual(true); - expect($crumbs.eq(6).hasClass('hidden')).toEqual(false); - expect($crumbs.eq(7).hasClass('hidden')).toEqual(false); - }); - it('Hides breadcrumbs to fit available width taking paddings into account', function() { - var $crumbs; - - // Each element is 20px wider - paddings = [10, 10, 10, 10, 10, 10, 10, 10]; - - $('li.crumb').each(function(index){ - $(this).css('padding', paddings[index]); - }); - - $('.files-controls').width(700); - bc._resize(); - - $crumbs = bc.$el.find('.crumb'); - - // Second, third and fourth crumb are hidden and everything else is - // visible - expect($crumbs.eq(0).hasClass('hidden')).toEqual(false); - expect($crumbs.eq(1).hasClass('hidden')).toEqual(false); - - expect($crumbs.eq(2).hasClass('hidden')).toEqual(false); - expect($crumbs.eq(3).hasClass('hidden')).toEqual(true); - expect($crumbs.eq(4).hasClass('hidden')).toEqual(true); - expect($crumbs.eq(5).hasClass('hidden')).toEqual(true); - expect($crumbs.eq(6).hasClass('hidden')).toEqual(false); - expect($crumbs.eq(7).hasClass('hidden')).toEqual(false); - }); - it('Hides breadcrumbs to fit available width taking margins into account', function() { - var $crumbs; - - // Each element is 20px wider - margins = [10, 10, 10, 10, 10, 10, 10, 10]; - - $('li.crumb').each(function(index){ - $(this).css('margin', margins[index]); - }); - - $('.files-controls').width(700); - bc._resize(); - - $crumbs = bc.$el.find('.crumb'); - - // Second, third and fourth crumb are hidden and everything else is - // visible - expect($crumbs.eq(0).hasClass('hidden')).toEqual(false); - expect($crumbs.eq(1).hasClass('hidden')).toEqual(false); - - expect($crumbs.eq(2).hasClass('hidden')).toEqual(false); - expect($crumbs.eq(3).hasClass('hidden')).toEqual(true); - expect($crumbs.eq(4).hasClass('hidden')).toEqual(true); - expect($crumbs.eq(5).hasClass('hidden')).toEqual(true); - expect($crumbs.eq(6).hasClass('hidden')).toEqual(false); - expect($crumbs.eq(7).hasClass('hidden')).toEqual(false); - }); - it('Hides breadcrumbs to fit available width left by siblings', function() { - var $crumbs; - - $('.files-controls').width(700); - bc._resize(); - - $crumbs = bc.$el.find('.crumb'); - - // Third and fourth crumb are hidden and everything else is visible - expect($crumbs.eq(0).hasClass('hidden')).toEqual(false); - expect($crumbs.eq(1).hasClass('hidden')).toEqual(false); - - expect($crumbs.eq(2).hasClass('hidden')).toEqual(false); - expect($crumbs.eq(3).hasClass('hidden')).toEqual(false); - expect($crumbs.eq(4).hasClass('hidden')).toEqual(true); - expect($crumbs.eq(5).hasClass('hidden')).toEqual(true); - expect($crumbs.eq(6).hasClass('hidden')).toEqual(false); - expect($crumbs.eq(7).hasClass('hidden')).toEqual(false); - - // Visible sibling widths add up to 200px - var $previousSibling = $('
    '); - // Set both the width and the min-width to even differences in width - // handling in the browsers used to run the tests. - $previousSibling.css('width', '50px'); - $previousSibling.css('min-width', '50px'); - $('.files-controls').prepend($previousSibling); - - var $creatableActions = $('
    '); - // Set both the width and the min-width to even differences in width - // handling in the browsers used to run the tests. - $creatableActions.css('width', '100px'); - $creatableActions.css('min-width', '100px'); - $('.files-controls').append($creatableActions); - - var $nextHiddenSibling = $(''); - // Set both the width and the min-width to even differences in width - // handling in the browsers used to run the tests. - $nextHiddenSibling.css('width', '200px'); - $nextHiddenSibling.css('min-width', '200px'); - $('.files-controls').append($nextHiddenSibling); - - var $nextSibling = $('
    '); - // Set both the width and the min-width to even differences in width - // handling in the browsers used to run the tests. - $nextSibling.css('width', '50px'); - $nextSibling.css('min-width', '50px'); - $('.files-controls').append($nextSibling); - - bc._resize(); - - // Second, third, fourth and fifth crumb are hidden and everything - // else is visible - expect($crumbs.eq(0).hasClass('hidden')).toEqual(false); - expect($crumbs.eq(1).hasClass('hidden')).toEqual(false); - - expect($crumbs.eq(2).hasClass('hidden')).toEqual(false); - expect($crumbs.eq(3).hasClass('hidden')).toEqual(true); - expect($crumbs.eq(4).hasClass('hidden')).toEqual(true); - expect($crumbs.eq(5).hasClass('hidden')).toEqual(true); - expect($crumbs.eq(6).hasClass('hidden')).toEqual(true); - expect($crumbs.eq(7).hasClass('hidden')).toEqual(false); - }); - it('Hides breadcrumbs to fit available width left by siblings with paddings and margins', function() { - var $crumbs; - - $('.files-controls').width(700); - bc._resize(); - - $crumbs = bc.$el.find('.crumb'); - - // Third and fourth crumb are hidden and everything else is visible - expect($crumbs.eq(0).hasClass('hidden')).toEqual(false); - expect($crumbs.eq(1).hasClass('hidden')).toEqual(false); - - expect($crumbs.eq(2).hasClass('hidden')).toEqual(false); - expect($crumbs.eq(3).hasClass('hidden')).toEqual(false); - expect($crumbs.eq(4).hasClass('hidden')).toEqual(true); - expect($crumbs.eq(5).hasClass('hidden')).toEqual(true); - expect($crumbs.eq(6).hasClass('hidden')).toEqual(false); - expect($crumbs.eq(7).hasClass('hidden')).toEqual(false); - - // Visible sibling widths add up to 200px - var $previousSibling = $('
    '); - // Set both the width and the min-width to even differences in width - // handling in the browsers used to run the tests. - $previousSibling.css('width', '10px'); - $previousSibling.css('min-width', '10px'); - $previousSibling.css('margin', '20px'); - $('.files-controls').prepend($previousSibling); - - var $creatableActions = $('
    '); - // Set both the width and the min-width to even differences in width - // handling in the browsers used to run the tests. - $creatableActions.css('width', '20px'); - $creatableActions.css('min-width', '20px'); - $creatableActions.css('margin-left', '40px'); - $creatableActions.css('padding-right', '40px'); - $('.files-controls').append($creatableActions); - - var $nextHiddenSibling = $(''); - // Set both the width and the min-width to even differences in width - // handling in the browsers used to run the tests. - $nextHiddenSibling.css('width', '200px'); - $nextHiddenSibling.css('min-width', '200px'); - $('.files-controls').append($nextHiddenSibling); - - var $nextSibling = $('
    '); - // Set both the width and the min-width to even differences in width - // handling in the browsers used to run the tests. - $nextSibling.css('width', '10px'); - $nextSibling.css('min-width', '10px'); - $nextSibling.css('padding', '20px'); - $('.files-controls').append($nextSibling); - - bc._resize(); - - // Second, third, fourth and fifth crumb are hidden and everything - // else is visible - expect($crumbs.eq(0).hasClass('hidden')).toEqual(false); - expect($crumbs.eq(1).hasClass('hidden')).toEqual(false); - - expect($crumbs.eq(2).hasClass('hidden')).toEqual(false); - expect($crumbs.eq(3).hasClass('hidden')).toEqual(true); - expect($crumbs.eq(4).hasClass('hidden')).toEqual(true); - expect($crumbs.eq(5).hasClass('hidden')).toEqual(true); - expect($crumbs.eq(6).hasClass('hidden')).toEqual(true); - expect($crumbs.eq(7).hasClass('hidden')).toEqual(false); - }); - it('Updates the breadcrumbs when reducing available width', function() { - var $crumbs; - - // enough space - $('.files-controls').width(1800); - bc._resize(); - - $crumbs = bc.$el.find('.crumb'); - - // Menu is hidden - expect($crumbs.eq(0).hasClass('hidden')).toEqual(true); - - // simulate decrease - $('.files-controls').width(950); - bc._resize(); - - // Third crumb is hidden and everything else is visible - expect($crumbs.eq(0).hasClass('hidden')).toEqual(false); - expect($crumbs.eq(1).hasClass('hidden')).toEqual(false); - - expect($crumbs.eq(2).hasClass('hidden')).toEqual(false); - expect($crumbs.eq(3).hasClass('hidden')).toEqual(false); - expect($crumbs.eq(4).hasClass('hidden')).toEqual(true); - expect($crumbs.eq(5).hasClass('hidden')).toEqual(false); - expect($crumbs.eq(6).hasClass('hidden')).toEqual(false); - expect($crumbs.eq(7).hasClass('hidden')).toEqual(false); - }); - it('Updates the breadcrumbs when reducing available width taking into account the menu width', function() { - var $crumbs; - - // enough space - $('.files-controls').width(1800); - bc._resize(); - - $crumbs = bc.$el.find('.crumb'); - - // Menu is hidden - expect($crumbs.eq(0).hasClass('hidden')).toEqual(true); - expect($crumbs.eq(1).hasClass('hidden')).toEqual(false); - - expect($crumbs.eq(2).hasClass('hidden')).toEqual(false); - expect($crumbs.eq(3).hasClass('hidden')).toEqual(false); - expect($crumbs.eq(4).hasClass('hidden')).toEqual(false); - expect($crumbs.eq(5).hasClass('hidden')).toEqual(false); - expect($crumbs.eq(6).hasClass('hidden')).toEqual(false); - expect($crumbs.eq(7).hasClass('hidden')).toEqual(false); - - // simulate decrease - // 650 is enough for all the crumbs except the third and fourth - // ones, but not enough for the menu and all the crumbs except the - // third and fourth ones; the second one has to be hidden too. - $('.files-controls').width(650); - bc._resize(); - - // Second, third and fourth crumb are hidden and everything else is - // visible - expect($crumbs.eq(0).hasClass('hidden')).toEqual(false); - expect($crumbs.eq(1).hasClass('hidden')).toEqual(false); - - expect($crumbs.eq(2).hasClass('hidden')).toEqual(false); - expect($crumbs.eq(3).hasClass('hidden')).toEqual(true); - expect($crumbs.eq(4).hasClass('hidden')).toEqual(true); - expect($crumbs.eq(5).hasClass('hidden')).toEqual(true); - expect($crumbs.eq(6).hasClass('hidden')).toEqual(false); - expect($crumbs.eq(7).hasClass('hidden')).toEqual(false); - }); - it('Updates the breadcrumbs when increasing available width', function() { - var $crumbs; - - // limited space - $('.files-controls').width(850); - bc._resize(); - - $crumbs = bc.$el.find('.crumb'); - - // Third and fourth crumb are hidden and everything else is visible - expect($crumbs.eq(0).hasClass('hidden')).toEqual(false); - expect($crumbs.eq(1).hasClass('hidden')).toEqual(false); - - expect($crumbs.eq(2).hasClass('hidden')).toEqual(false); - expect($crumbs.eq(3).hasClass('hidden')).toEqual(false); - expect($crumbs.eq(4).hasClass('hidden')).toEqual(true); - expect($crumbs.eq(5).hasClass('hidden')).toEqual(true); - expect($crumbs.eq(6).hasClass('hidden')).toEqual(false); - expect($crumbs.eq(7).hasClass('hidden')).toEqual(false); - - // simulate increase - $('.files-controls').width(1000); - bc._resize(); - - // Third crumb is hidden and everything else is visible - expect($crumbs.eq(0).hasClass('hidden')).toEqual(false); - expect($crumbs.eq(1).hasClass('hidden')).toEqual(false); - - expect($crumbs.eq(2).hasClass('hidden')).toEqual(false); - expect($crumbs.eq(3).hasClass('hidden')).toEqual(false); - expect($crumbs.eq(4).hasClass('hidden')).toEqual(true); - expect($crumbs.eq(5).hasClass('hidden')).toEqual(false); - expect($crumbs.eq(6).hasClass('hidden')).toEqual(false); - expect($crumbs.eq(7).hasClass('hidden')).toEqual(false); - }); - it('Updates the breadcrumbs when increasing available width taking into account the menu width', function() { - var $crumbs; - - // limited space - $('.files-controls').width(850); - bc._resize(); - - $crumbs = bc.$el.find('.crumb'); - - // Third and fourth crumb are hidden and everything else is visible - expect($crumbs.eq(0).hasClass('hidden')).toEqual(false); - expect($crumbs.eq(1).hasClass('hidden')).toEqual(false); - - expect($crumbs.eq(2).hasClass('hidden')).toEqual(false); - expect($crumbs.eq(3).hasClass('hidden')).toEqual(false); - expect($crumbs.eq(4).hasClass('hidden')).toEqual(true); - expect($crumbs.eq(5).hasClass('hidden')).toEqual(true); - expect($crumbs.eq(6).hasClass('hidden')).toEqual(false); - expect($crumbs.eq(7).hasClass('hidden')).toEqual(false); - - // simulate increase - // 1030 is enough for all the crumbs if the menu is hidden. - $('.files-controls').width(1030); - bc._resize(); - - // Menu is hidden and everything else is visible - expect($crumbs.eq(0).hasClass('hidden')).toEqual(true); - expect($crumbs.eq(1).hasClass('hidden')).toEqual(false); - - expect($crumbs.eq(2).hasClass('hidden')).toEqual(false); - expect($crumbs.eq(3).hasClass('hidden')).toEqual(false); - expect($crumbs.eq(4).hasClass('hidden')).toEqual(false); - expect($crumbs.eq(5).hasClass('hidden')).toEqual(false); - expect($crumbs.eq(6).hasClass('hidden')).toEqual(false); - expect($crumbs.eq(7).hasClass('hidden')).toEqual(false); - }); - cit('Updates the breadcrumbs when increasing available width with an expanding sibling', function() { - var $crumbs; - - // The sibling expands to fill all the width left by the breadcrumbs - var $nextSibling = $('
    '); - // Set both the width and the min-width to even differences in width - // handling in the browsers used to run the tests. - $nextSibling.css('width', '10px'); - $nextSibling.css('min-width', '10px'); - $nextSibling.css('display', 'flex'); - $nextSibling.css('flex', '1 1'); - var $nextSiblingChild = $('
    '); - $nextSiblingChild.css('margin-left', 'auto'); - $nextSibling.append($nextSiblingChild); - $('.files-controls').append($nextSibling); - - // limited space - $('.files-controls').width(850); - bc._resize(); - - $crumbs = bc.$el.find('.crumb'); - - // Third and fourth crumb are hidden and everything else is visible - expect($crumbs.eq(0).hasClass('hidden')).toEqual(false); - expect($crumbs.eq(1).hasClass('hidden')).toEqual(false); - - expect($crumbs.eq(2).hasClass('hidden')).toEqual(false); - expect($crumbs.eq(3).hasClass('hidden')).toEqual(false); - expect($crumbs.eq(4).hasClass('hidden')).toEqual(true); - expect($crumbs.eq(5).hasClass('hidden')).toEqual(true); - expect($crumbs.eq(6).hasClass('hidden')).toEqual(false); - expect($crumbs.eq(7).hasClass('hidden')).toEqual(false); - - // simulate increase - $('.files-controls').width(1000); - bc._resize(); - - // Third crumb is hidden and everything else is visible - expect($crumbs.eq(0).hasClass('hidden')).toEqual(false); - expect($crumbs.eq(1).hasClass('hidden')).toEqual(false); - - expect($crumbs.eq(2).hasClass('hidden')).toEqual(false); - expect($crumbs.eq(3).hasClass('hidden')).toEqual(false); - expect($crumbs.eq(4).hasClass('hidden')).toEqual(true); - expect($crumbs.eq(5).hasClass('hidden')).toEqual(false); - expect($crumbs.eq(6).hasClass('hidden')).toEqual(false); - expect($crumbs.eq(7).hasClass('hidden')).toEqual(false); - }); - }); -}); diff --git a/apps/files/tests/js/detailsviewSpec.js b/apps/files/tests/js/detailsviewSpec.js deleted file mode 100644 index 2ade0876e8ee1..0000000000000 --- a/apps/files/tests/js/detailsviewSpec.js +++ /dev/null @@ -1,240 +0,0 @@ -/** - * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors - * SPDX-FileCopyrightText: 2015 ownCloud, Inc. - * SPDX-License-Identifier: AGPL-3.0-or-later - */ - -describe('OCA.Files.DetailsView tests', function() { - var detailsView; - - beforeEach(function() { - detailsView = new OCA.Files.DetailsView(); - }); - afterEach(function() { - detailsView.remove(); - detailsView = undefined; - }); - it('renders itself empty when nothing registered', function() { - detailsView.render(); - expect(detailsView.$el.find('.detailFileInfoContainer').length).toEqual(1); - expect(detailsView.$el.find('.tabsContainer').length).toEqual(1); - }); - describe('file info detail view', function() { - it('returns registered view', function() { - var testView = new OCA.Files.DetailFileInfoView(); - var testView2 = new OCA.Files.DetailFileInfoView(); - detailsView.addDetailView(testView); - detailsView.addDetailView(testView2); - - detailViews = detailsView.getDetailViews(); - - expect(detailViews).toContain(testView); - expect(detailViews).toContain(testView2); - - // Modify array and check that registered detail views are not - // modified - detailViews.pop(); - detailViews.pop(); - - detailViews = detailsView.getDetailViews(); - - expect(detailViews).toContain(testView); - expect(detailViews).toContain(testView2); - }); - it('renders registered view', function() { - var testView = new OCA.Files.DetailFileInfoView(); - var testView2 = new OCA.Files.DetailFileInfoView(); - detailsView.addDetailView(testView); - detailsView.addDetailView(testView2); - detailsView.render(); - - expect(detailsView.$el.find('.detailFileInfoContainer .detailFileInfoView').length).toEqual(2); - }); - it('updates registered tabs when fileinfo is updated', function() { - var viewRenderStub = sinon.stub(OCA.Files.DetailFileInfoView.prototype, 'render'); - var testView = new OCA.Files.DetailFileInfoView(); - var testView2 = new OCA.Files.DetailFileInfoView(); - detailsView.addDetailView(testView); - detailsView.addDetailView(testView2); - detailsView.render(); - - var fileInfo = {id: 5, name: 'test.txt'}; - viewRenderStub.reset(); - detailsView.setFileInfo(fileInfo); - - expect(testView.getFileInfo()).toEqual(fileInfo); - expect(testView2.getFileInfo()).toEqual(fileInfo); - - expect(viewRenderStub.callCount).toEqual(2); - viewRenderStub.restore(); - }); - }); - describe('tabs', function() { - var testView, testView2; - - beforeEach(function() { - testView = new OCA.Files.DetailTabView({id: 'test1'}); - testView2 = new OCA.Files.DetailTabView({id: 'test2'}); - detailsView.addTabView(testView); - detailsView.addTabView(testView2); - detailsView.render(); - }); - it('initially renders only the selected tab', function() { - expect(detailsView.$el.find('.tab').length).toEqual(1); - expect(detailsView.$el.find('.tab').attr('id')).toEqual('test1'); - }); - it('updates tab model and rerenders on-demand as soon as it gets selected', function() { - var tab1RenderStub = sinon.stub(testView, 'render'); - var tab2RenderStub = sinon.stub(testView2, 'render'); - var fileInfo1 = new OCA.Files.FileInfoModel({id: 5, name: 'test.txt'}); - var fileInfo2 = new OCA.Files.FileInfoModel({id: 8, name: 'test2.txt'}); - - detailsView.setFileInfo(fileInfo1); - - // first tab renders, not the second one - expect(tab1RenderStub.calledOnce).toEqual(true); - expect(tab2RenderStub.notCalled).toEqual(true); - - // info got set only to the first visible tab - expect(testView.getFileInfo()).toEqual(fileInfo1); - expect(testView2.getFileInfo()).toBeUndefined(); - - // select second tab for first render - detailsView.$el.find('.tabHeader').eq(1).click(); - - // second tab got rendered - expect(tab2RenderStub.calledOnce).toEqual(true); - expect(testView2.getFileInfo()).toEqual(fileInfo1); - - // select the first tab again - detailsView.$el.find('.tabHeader').eq(0).click(); - - // no re-render - expect(tab1RenderStub.calledOnce).toEqual(true); - expect(tab2RenderStub.calledOnce).toEqual(true); - - tab1RenderStub.reset(); - tab2RenderStub.reset(); - - // switch to another file - detailsView.setFileInfo(fileInfo2); - - // only the visible tab was updated and rerendered - expect(tab1RenderStub.calledOnce).toEqual(true); - expect(testView.getFileInfo()).toEqual(fileInfo2); - - // second/invisible tab still has old info, not rerendered - expect(tab2RenderStub.notCalled).toEqual(true); - expect(testView2.getFileInfo()).toEqual(fileInfo1); - - // reselect the second one - detailsView.$el.find('.tabHeader').eq(1).click(); - - // second tab becomes visible, updated and rendered - expect(testView2.getFileInfo()).toEqual(fileInfo2); - expect(tab2RenderStub.calledOnce).toEqual(true); - - tab1RenderStub.restore(); - tab2RenderStub.restore(); - }); - it('selects the first tab by default', function() { - expect(detailsView.$el.find('.tabHeader').eq(0).hasClass('selected')).toEqual(true); - expect(detailsView.$el.find('.tabHeader').eq(1).hasClass('selected')).toEqual(false); - expect(detailsView.$el.find('.tab').eq(0).hasClass('hidden')).toEqual(false); - expect(detailsView.$el.find('.tab').eq(1).length).toEqual(0); - }); - it('switches the current tab when clicking on tab header', function() { - detailsView.$el.find('.tabHeader').eq(1).click(); - expect(detailsView.$el.find('.tabHeader').eq(0).hasClass('selected')).toEqual(false); - expect(detailsView.$el.find('.tabHeader').eq(1).hasClass('selected')).toEqual(true); - expect(detailsView.$el.find('.tab').eq(0).hasClass('hidden')).toEqual(true); - expect(detailsView.$el.find('.tab').eq(1).hasClass('hidden')).toEqual(false); - }); - describe('tab visibility', function() { - beforeEach(function() { - detailsView.remove(); - detailsView = new OCA.Files.DetailsView(); - }); - it('does not display tab headers when only one tab exists', function() { - testView = new OCA.Files.DetailTabView({id: 'test1'}); - detailsView.addTabView(testView); - detailsView.render(); - - expect(detailsView.$el.find('.tabHeaders').hasClass('hidden')).toEqual(true); - expect(detailsView.$el.find('.tabHeader').length).toEqual(1); - }); - it('does not display tab that do not pass visibility check', function() { - testView = new OCA.Files.DetailTabView({id: 'test1'}); - testView.canDisplay = sinon.stub().returns(false); - testView2 = new OCA.Files.DetailTabView({id: 'test2'}); - var testView3 = new OCA.Files.DetailTabView({id: 'test3'}); - detailsView.addTabView(testView); - detailsView.addTabView(testView2); - detailsView.addTabView(testView3); - - var fileInfo = {id: 5, name: 'test.txt'}; - detailsView.setFileInfo(fileInfo); - - expect(testView.canDisplay.calledOnce).toEqual(true); - expect(testView.canDisplay.calledWith(fileInfo)).toEqual(true); - - expect(detailsView.$el.find('.tabHeaders').hasClass('hidden')).toEqual(false); - expect(detailsView.$el.find('.tabHeader[data-tabid=test1]').hasClass('hidden')).toEqual(true); - expect(detailsView.$el.find('.tabHeader[data-tabid=test2]').hasClass('hidden')).toEqual(false); - expect(detailsView.$el.find('.tabHeader[data-tabid=test3]').hasClass('hidden')).toEqual(false); - }); - it('does not show tab headers if only one header is visible due to visibility check', function() { - testView = new OCA.Files.DetailTabView({id: 'test1'}); - testView.canDisplay = sinon.stub().returns(false); - testView2 = new OCA.Files.DetailTabView({id: 'test2'}); - detailsView.addTabView(testView); - detailsView.addTabView(testView2); - - var fileInfo = {id: 5, name: 'test.txt'}; - detailsView.setFileInfo(fileInfo); - - expect(testView.canDisplay.calledOnce).toEqual(true); - expect(testView.canDisplay.calledWith(fileInfo)).toEqual(true); - - expect(detailsView.$el.find('.tabHeaders').hasClass('hidden')).toEqual(true); - expect(detailsView.$el.find('.tabHeader[data-tabid=test1]').hasClass('hidden')).toEqual(true); - expect(detailsView.$el.find('.tabHeader[data-tabid=test2]').hasClass('hidden')).toEqual(false); - }); - it('deselects the current tab if a model update does not pass the visibility check', function() { - testView = new OCA.Files.DetailTabView({id: 'test1'}); - testView.canDisplay = function(fileInfo) { - return fileInfo.mimetype !== 'httpd/unix-directory'; - }; - testView2 = new OCA.Files.DetailTabView({id: 'test2'}); - detailsView.addTabView(testView); - detailsView.addTabView(testView2); - - var fileInfo = {id: 5, name: 'test.txt', mimetype: 'text/plain'}; - detailsView.setFileInfo(fileInfo); - - expect(detailsView.$el.find('.tabHeader[data-tabid=test1]').hasClass('selected')).toEqual(true); - expect(detailsView.$el.find('.tabHeader[data-tabid=test2]').hasClass('selected')).toEqual(false); - - detailsView.setFileInfo({id: 10, name: 'folder', mimetype: 'httpd/unix-directory'}); - - expect(detailsView.$el.find('.tabHeader[data-tabid=test1]').hasClass('selected')).toEqual(false); - expect(detailsView.$el.find('.tabHeader[data-tabid=test2]').hasClass('selected')).toEqual(true); - }); - }); - it('sorts by order and then label', function() { - detailsView.remove(); - detailsView = new OCA.Files.DetailsView(); - detailsView.addTabView(new OCA.Files.DetailTabView({id: 'abc', order: 20})); - detailsView.addTabView(new OCA.Files.DetailTabView({id: 'def', order: 10})); - detailsView.addTabView(new OCA.Files.DetailTabView({id: 'jkl'})); - detailsView.addTabView(new OCA.Files.DetailTabView({id: 'ghi'})); - detailsView.render(); - - var tabs = detailsView.$el.find('.tabHeader').map(function() { - return $(this).attr('data-tabid'); - }).toArray(); - - expect(tabs).toEqual(['ghi', 'jkl', 'def', 'abc']); - }); - }); -}); diff --git a/apps/files/tests/js/fileactionsSpec.js b/apps/files/tests/js/fileactionsSpec.js deleted file mode 100644 index 4a95bb7aeb5db..0000000000000 --- a/apps/files/tests/js/fileactionsSpec.js +++ /dev/null @@ -1,739 +0,0 @@ -/** - * SPDX-FileCopyrightText: 2017-2024 Nextcloud GmbH and Nextcloud contributors - * SPDX-FileCopyrightText: 2016 ownCloud, Inc. - * SPDX-License-Identifier: AGPL-3.0-or-later - */ - -describe('OCA.Files.FileActions tests', function() { - var fileList, fileActions, clock; - - beforeEach(function() { - clock = sinon.useFakeTimers(); - // init horrible parameters - var $body = $('#testArea'); - $body.append(''); - $body.append('
    '); - // dummy files table - fileActions = new OCA.Files.FileActions(); - fileActions.registerAction({ - name: 'Testdropdown', - displayName: 'Testdropdowndisplay', - mime: 'all', - permissions: OC.PERMISSION_READ, - icon: function () { - return OC.imagePath('core', 'actions/download'); - } - }); - - fileActions.registerAction({ - name: 'Testinline', - displayName: 'Testinlinedisplay', - type: OCA.Files.FileActions.TYPE_INLINE, - mime: 'all', - permissions: OC.PERMISSION_READ - }); - - fileActions.registerAction({ - name: 'Testdefault', - displayName: 'Testdefaultdisplay', - mime: 'all', - permissions: OC.PERMISSION_READ - }); - fileActions.setDefault('all', 'Testdefault'); - fileList = new OCA.Files.FileList($body, { - fileActions: fileActions - }); - fileList.changeDirectory('/subdir', false, true); - }); - afterEach(function() { - fileActions = null; - fileList.destroy(); - fileList = undefined; - clock.restore(); - $('#permissions, .files-filestable').remove(); - }); - it('calling clear() clears file actions', function() { - fileActions.clear(); - expect(fileActions.actions).toEqual({}); - expect(fileActions.defaults).toEqual({}); - expect(fileActions.icons).toEqual({}); - expect(fileActions.currentFile).toBe(null); - }); - describe('displaying actions', function() { - var $tr; - - beforeEach(function() { - var fileData = { - id: 18, - type: 'file', - name: 'testName.txt', - mimetype: 'text/plain', - size: '1234', - etag: 'a01234c', - mtime: '123456', - permissions: OC.PERMISSION_READ | OC.PERMISSION_UPDATE - }; - - // note: FileActions.display() is called implicitly - $tr = fileList.add(fileData); - }); - it('renders inline file actions', function() { - // actions defined after call - expect($tr.find('.action.action-testinline').length).toEqual(1); - expect($tr.find('.action.action-testinline').attr('data-action')).toEqual('Testinline'); - }); - it('does not render dropdown actions', function() { - expect($tr.find('.action.action-testdropdown').length).toEqual(0); - }); - it('does not render default action', function() { - expect($tr.find('.action.action-testdefault').length).toEqual(0); - }); - it('replaces file actions when displayed twice', function() { - fileActions.display($tr.find('td.filename'), true, fileList); - fileActions.display($tr.find('td.filename'), true, fileList); - - expect($tr.find('.action.action-testinline').length).toEqual(1); - }); - it('renders actions menu trigger', function() { - expect($tr.find('.action.action-menu').length).toEqual(1); - expect($tr.find('.action.action-menu').attr('data-action')).toEqual('menu'); - }); - it('only renders actions relevant to the mime type', function() { - fileActions.registerAction({ - name: 'Match', - displayName: 'MatchDisplay', - type: OCA.Files.FileActions.TYPE_INLINE, - mime: 'text/plain', - permissions: OC.PERMISSION_READ - }); - fileActions.registerAction({ - name: 'Nomatch', - displayName: 'NoMatchDisplay', - type: OCA.Files.FileActions.TYPE_INLINE, - mime: 'application/octet-stream', - permissions: OC.PERMISSION_READ - }); - - fileActions.display($tr.find('td.filename'), true, fileList); - expect($tr.find('.action.action-match').length).toEqual(1); - expect($tr.find('.action.action-nomatch').length).toEqual(0); - }); - it('only renders actions relevant to the permissions', function() { - fileActions.registerAction({ - name: 'Match', - displayName: 'MatchDisplay', - type: OCA.Files.FileActions.TYPE_INLINE, - mime: 'text/plain', - permissions: OC.PERMISSION_UPDATE - }); - fileActions.registerAction({ - name: 'Nomatch', - displayName: 'NoMatchDisplay', - type: OCA.Files.FileActions.TYPE_INLINE, - mime: 'text/plain', - permissions: OC.PERMISSION_DELETE - }); - - fileActions.display($tr.find('td.filename'), true, fileList); - expect($tr.find('.action.action-match').length).toEqual(1); - expect($tr.find('.action.action-nomatch').length).toEqual(0); - }); - it('display inline icon with image path', function() { - fileActions.registerAction({ - name: 'Icon', - displayName: 'IconDisplay', - type: OCA.Files.FileActions.TYPE_INLINE, - mime: 'all', - icon: OC.imagePath('core', 'actions/icon'), - permissions: OC.PERMISSION_READ - }); - fileActions.registerAction({ - name: 'NoIcon', - displayName: 'NoIconDisplay', - type: OCA.Files.FileActions.TYPE_INLINE, - mime: 'all', - permissions: OC.PERMISSION_READ - }); - - fileActions.display($tr.find('td.filename'), true, fileList); - - expect($tr.find('.action.action-icon').length).toEqual(1); - expect($tr.find('.action.action-icon').find('img').length).toEqual(1); - expect($tr.find('.action.action-icon').find('img').eq(0).attr('src')).toEqual(OC.imagePath('core', 'actions/icon')); - - expect($tr.find('.action.action-noicon').length).toEqual(1); - expect($tr.find('.action.action-noicon').find('img').length).toEqual(0); - }); - it('display alt text on inline icon with image path', function() { - fileActions.registerAction({ - name: 'IconAltText', - displayName: 'IconAltTextDisplay', - type: OCA.Files.FileActions.TYPE_INLINE, - mime: 'all', - icon: OC.imagePath('core', 'actions/iconAltText'), - altText: 'alt icon text', - permissions: OC.PERMISSION_READ - }); - - fileActions.registerAction({ - name: 'IconNoAltText', - displayName: 'IconNoAltTextDisplay', - type: OCA.Files.FileActions.TYPE_INLINE, - mime: 'all', - icon: OC.imagePath('core', 'actions/iconNoAltText'), - permissions: OC.PERMISSION_READ - }); - - fileActions.display($tr.find('td.filename'), true, fileList); - - expect($tr.find('.action.action-iconalttext').length).toEqual(1); - expect($tr.find('.action.action-iconalttext').find('img').length).toEqual(1); - expect($tr.find('.action.action-iconalttext').find('img').eq(0).attr('alt')).toEqual('alt icon text'); - - expect($tr.find('.action.action-iconnoalttext').length).toEqual(1); - expect($tr.find('.action.action-iconnoalttext').find('img').length).toEqual(1); - expect($tr.find('.action.action-iconnoalttext').find('img').eq(0).attr('alt')).toEqual(''); - }); - it('display inline icon with iconClass', function() { - fileActions.registerAction({ - name: 'Icon', - displayName: 'IconDisplay', - type: OCA.Files.FileActions.TYPE_INLINE, - mime: 'all', - iconClass: 'icon-test', - permissions: OC.PERMISSION_READ - }); - fileActions.registerAction({ - name: 'NoIcon', - displayName: 'NoIconDisplay', - type: OCA.Files.FileActions.TYPE_INLINE, - mime: 'all', - permissions: OC.PERMISSION_READ - }); - - fileActions.display($tr.find('td.filename'), true, fileList); - - expect($tr.find('.action.action-icon').length).toEqual(1); - expect($tr.find('.action.action-icon').find('.icon').length).toEqual(1); - expect($tr.find('.action.action-icon').find('.icon').hasClass('icon-test')).toEqual(true); - - expect($tr.find('.action.action-noicon').length).toEqual(1); - expect($tr.find('.action.action-noicon').find('.icon').length).toEqual(0); - }); - it('display alt text on inline icon with iconClass when no display name exists', function() { - fileActions.registerAction({ - name: 'IconAltText', - displayName: '', - type: OCA.Files.FileActions.TYPE_INLINE, - mime: 'all', - iconClass: 'icon-alttext', - altText: 'alt icon text', - permissions: OC.PERMISSION_READ - }); - - fileActions.registerAction({ - name: 'IconNoAltText', - displayName: 'IconNoAltTextDisplay', - type: OCA.Files.FileActions.TYPE_INLINE, - mime: 'all', - altText: 'useless alt text', - iconClass: 'icon-noalttext', - permissions: OC.PERMISSION_READ - }); - - fileActions.display($tr.find('td.filename'), true, fileList); - - expect($tr.find('.action.action-iconalttext').length).toEqual(1); - expect($tr.find('.action.action-iconalttext').find('.icon').length).toEqual(1); - expect($tr.find('.action.action-iconalttext').find('.hidden-visually').text()).toEqual('alt icon text'); - - expect($tr.find('.action.action-iconnoalttext').length).toEqual(1); - expect($tr.find('.action.action-iconnoalttext').find('.icon').length).toEqual(1); - expect($tr.find('.action.action-iconnoalttext').find('.hidden-visually').length).toEqual(0); - }); - }); - describe('action handler', function() { - var actionStub, $tr, clock; - - beforeEach(function() { - clock = sinon.useFakeTimers(); - var fileData = { - id: 18, - type: 'file', - name: 'testName.txt', - mimetype: 'text/plain', - size: '1234', - etag: 'a01234c', - mtime: '123456' - }; - actionStub = sinon.stub(); - fileActions.registerAction({ - name: 'Test', - type: OCA.Files.FileActions.TYPE_INLINE, - mime: 'all', - icon: OC.imagePath('core', 'actions/test'), - permissions: OC.PERMISSION_READ, - actionHandler: actionStub - }); - $tr = fileList.add(fileData); - }); - afterEach(function() { - OC.hideMenus(); - // jump past animations - clock.tick(1000); - clock.restore(); - }); - it('passes context to action handler', function() { - var notifyUpdateListenersSpy = sinon.spy(fileList.fileActions, '_notifyUpdateListeners'); - expect($tr.length).toEqual(1); - expect($tr.find('.action-test').length).toEqual(1); - $tr.find('.action-test').click(); - expect(actionStub.calledOnce).toEqual(true); - expect(actionStub.getCall(0).args[0]).toEqual('testName.txt'); - var context = actionStub.getCall(0).args[1]; - expect(context.$file.is($tr)).toEqual(true); - expect(context.fileList).toBeDefined(); - expect(context.fileActions).toBeDefined(); - expect(context.dir).toEqual('/subdir'); - expect(context.fileInfoModel.get('name')).toEqual('testName.txt'); - - expect(notifyUpdateListenersSpy.calledTwice).toEqual(true); - expect(notifyUpdateListenersSpy.calledBefore(actionStub)).toEqual(true); - expect(notifyUpdateListenersSpy.calledAfter(actionStub)).toEqual(true); - expect(notifyUpdateListenersSpy.getCall(0).args[0]).toEqual('beforeTriggerAction'); - expect(notifyUpdateListenersSpy.getCall(0).args[1]).toEqual({ - action: fileActions.getActions('all', OCA.Files.FileActions.TYPE_INLINE, OC.PERMISSION_READ)['Test'], - fileName: 'testName.txt', - context: context - }); - expect(notifyUpdateListenersSpy.getCall(1).args[0]).toEqual('afterTriggerAction'); - expect(notifyUpdateListenersSpy.getCall(1).args[1]).toEqual({ - action: fileActions.getActions('all', OCA.Files.FileActions.TYPE_INLINE, OC.PERMISSION_READ)['Test'], - fileName: 'testName.txt', - context: context - }); - - // when data-path is defined - actionStub.reset(); - $tr.attr('data-path', '/somepath'); - $tr.find('.action-test').click(); - context = actionStub.getCall(0).args[1]; - expect(context.dir).toEqual('/somepath'); - }); - it('also triggers action handler when calling triggerAction()', function() { - var notifyUpdateListenersSpy = sinon.spy(fileList.fileActions, '_notifyUpdateListeners'); - var model = new OCA.Files.FileInfoModel({ - id: 1, - name: 'Test.txt', - path: '/subdir', - mime: 'text/plain', - permissions: 31 - }); - fileActions.triggerAction('Test', model, fileList); - - expect(actionStub.calledOnce).toEqual(true); - expect(actionStub.getCall(0).args[0]).toEqual('Test.txt'); - expect(actionStub.getCall(0).args[1].fileList).toEqual(fileList); - expect(actionStub.getCall(0).args[1].fileActions).toEqual(fileActions); - expect(actionStub.getCall(0).args[1].fileInfoModel).toEqual(model); - - expect(notifyUpdateListenersSpy.calledTwice).toEqual(true); - expect(notifyUpdateListenersSpy.calledBefore(actionStub)).toEqual(true); - expect(notifyUpdateListenersSpy.calledAfter(actionStub)).toEqual(true); - expect(notifyUpdateListenersSpy.getCall(0).args[0]).toEqual('beforeTriggerAction'); - expect(notifyUpdateListenersSpy.getCall(0).args[1]).toEqual({ - action: fileActions.getActions('all', OCA.Files.FileActions.TYPE_INLINE, OC.PERMISSION_READ)['Test'], - fileName: 'Test.txt', - context: { - fileActions: fileActions, - fileInfoModel: model, - dir: '/subdir', - fileList: fileList, - $file: fileList.findFileEl('Test.txt') - } - }); - expect(notifyUpdateListenersSpy.getCall(1).args[0]).toEqual('afterTriggerAction'); - expect(notifyUpdateListenersSpy.getCall(1).args[1]).toEqual({ - action: fileActions.getActions('all', OCA.Files.FileActions.TYPE_INLINE, OC.PERMISSION_READ)['Test'], - fileName: 'Test.txt', - context: { - fileActions: fileActions, - fileInfoModel: model, - dir: '/subdir', - fileList: fileList, - $file: fileList.findFileEl('Test.txt') - } - }); - }); - it('triggers listener events when invoked directly', function() { - var context = {fileActions: new OCA.Files.FileActions()} - var notifyUpdateListenersSpy = sinon.spy(context.fileActions, '_notifyUpdateListeners'); - var testAction = fileActions.get('all', OCA.Files.FileActions.TYPE_INLINE, OC.PERMISSION_READ)['Test']; - - testAction('Test.txt', context); - - expect(actionStub.calledOnce).toEqual(true); - expect(actionStub.getCall(0).args[0]).toEqual('Test.txt'); - expect(actionStub.getCall(0).args[1]).toBe(context); - - expect(notifyUpdateListenersSpy.calledTwice).toEqual(true); - expect(notifyUpdateListenersSpy.calledBefore(actionStub)).toEqual(true); - expect(notifyUpdateListenersSpy.calledAfter(actionStub)).toEqual(true); - expect(notifyUpdateListenersSpy.getCall(0).args[0]).toEqual('beforeTriggerAction'); - expect(notifyUpdateListenersSpy.getCall(0).args[1]).toEqual({ - action: fileActions.getActions('all', OCA.Files.FileActions.TYPE_INLINE, OC.PERMISSION_READ)['Test'], - fileName: 'Test.txt', - context: context - }); - expect(notifyUpdateListenersSpy.getCall(1).args[0]).toEqual('afterTriggerAction'); - expect(notifyUpdateListenersSpy.getCall(1).args[1]).toEqual({ - action: fileActions.getActions('all', OCA.Files.FileActions.TYPE_INLINE, OC.PERMISSION_READ)['Test'], - fileName: 'Test.txt', - context: context - }); - }), - describe('actions menu', function() { - it('shows actions menu inside row when clicking the menu trigger', function() { - expect($tr.find('td.filename .fileActionsMenu').length).toEqual(0); - $tr.find('.action-menu').click(); - expect($tr.find('td.filename .fileActionsMenu').length).toEqual(1); - }); - it('shows highlight on current row', function() { - $tr.find('.action-menu').click(); - expect($tr.hasClass('mouseOver')).toEqual(true); - }); - it('cleans up after hiding', function() { - var slideUpStub = sinon.stub($.fn, 'slideUp'); - $tr.find('.action-menu').click(); - expect($tr.find('.fileActionsMenu').length).toEqual(1); - OC.hideMenus(); - // sliding animation - expect(slideUpStub.calledOnce).toEqual(true); - slideUpStub.getCall(0).args[1](); - expect($tr.hasClass('mouseOver')).toEqual(false); - expect($tr.find('.fileActionsMenu').length).toEqual(0); - }); - }); - }); - describe('custom rendering', function() { - var $tr; - beforeEach(function() { - var fileData = { - id: 18, - type: 'file', - name: 'testName.txt', - mimetype: 'text/plain', - size: '1234', - etag: 'a01234c', - mtime: '123456' - }; - $tr = fileList.add(fileData); - }); - it('regular function', function() { - var actionStub = sinon.stub(); - fileActions.registerAction({ - name: 'Test', - displayName: '', - mime: 'all', - type: OCA.Files.FileActions.TYPE_INLINE, - permissions: OC.PERMISSION_READ, - render: function(actionSpec, isDefault, context) { - expect(actionSpec.name).toEqual('Test'); - expect(actionSpec.displayName).toEqual(''); - expect(actionSpec.permissions).toEqual(OC.PERMISSION_READ); - expect(actionSpec.mime).toEqual('all'); - expect(isDefault).toEqual(false); - - expect(context.fileList).toEqual(fileList); - expect(context.$file[0]).toEqual($tr[0]); - - var $customEl = $('blabliblabla'); - $tr.find('td:first').append($customEl); - return $customEl; - }, - actionHandler: actionStub - }); - fileActions.display($tr.find('td.filename'), true, fileList); - - var $actionEl = $tr.find('td:first .action-test'); - expect($actionEl.length).toEqual(1); - expect($actionEl.hasClass('action')).toEqual(true); - - $actionEl.click(); - expect(actionStub.calledOnce).toEqual(true); - expect(actionStub.getCall(0).args[0]).toEqual('testName.txt'); - }); - }); - describe('merging', function() { - var $tr; - beforeEach(function() { - var fileData = { - id: 18, - type: 'file', - name: 'testName.txt', - path: '/anotherpath/there', - mimetype: 'text/plain', - size: '1234', - etag: 'a01234c', - mtime: '123456' - }; - $tr = fileList.add(fileData); - }); - afterEach(function() { - $tr = null; - }); - it('copies all actions to target file actions', function() { - var actions1 = new OCA.Files.FileActions(); - var actions2 = new OCA.Files.FileActions(); - var actionStub1 = sinon.stub(); - var actionStub2 = sinon.stub(); - actions1.registerAction({ - name: 'Test', - type: OCA.Files.FileActions.TYPE_INLINE, - mime: 'all', - permissions: OC.PERMISSION_READ, - icon: OC.imagePath('core', 'actions/test'), - actionHandler: actionStub1 - }); - actions2.registerAction({ - name: 'Test2', - type: OCA.Files.FileActions.TYPE_INLINE, - mime: 'all', - permissions: OC.PERMISSION_READ, - icon: OC.imagePath('core', 'actions/test'), - actionHandler: actionStub2 - }); - actions2.merge(actions1); - - actions2.display($tr.find('td.filename'), true, fileList); - - expect($tr.find('.action-test').length).toEqual(1); - expect($tr.find('.action-test2').length).toEqual(1); - - $tr.find('.action-test').click(); - expect(actionStub1.calledOnce).toEqual(true); - expect(actionStub2.notCalled).toEqual(true); - - actionStub1.reset(); - - $tr.find('.action-test2').click(); - expect(actionStub1.notCalled).toEqual(true); - expect(actionStub2.calledOnce).toEqual(true); - }); - it('overrides existing actions on merge', function() { - var actions1 = new OCA.Files.FileActions(); - var actions2 = new OCA.Files.FileActions(); - var actionStub1 = sinon.stub(); - var actionStub2 = sinon.stub(); - actions1.registerAction({ - name: 'Test', - type: OCA.Files.FileActions.TYPE_INLINE, - mime: 'all', - permissions: OC.PERMISSION_READ, - icon: OC.imagePath('core', 'actions/test'), - actionHandler: actionStub1 - }); - actions2.registerAction({ - name: 'Test', // override - mime: 'all', - type: OCA.Files.FileActions.TYPE_INLINE, - permissions: OC.PERMISSION_READ, - icon: OC.imagePath('core', 'actions/test'), - actionHandler: actionStub2 - }); - actions1.merge(actions2); - - actions1.display($tr.find('td.filename'), true, fileList); - - expect($tr.find('.action-test').length).toEqual(1); - - $tr.find('.action-test').click(); - expect(actionStub1.notCalled).toEqual(true); - expect(actionStub2.calledOnce).toEqual(true); - }); - it('overrides existing action when calling register after merge', function() { - var actions1 = new OCA.Files.FileActions(); - var actions2 = new OCA.Files.FileActions(); - var actionStub1 = sinon.stub(); - var actionStub2 = sinon.stub(); - actions1.registerAction({ - mime: 'all', - name: 'Test', - type: OCA.Files.FileActions.TYPE_INLINE, - permissions: OC.PERMISSION_READ, - icon: OC.imagePath('core', 'actions/test'), - actionHandler: actionStub1 - }); - - actions1.merge(actions2); - - // late override - actions1.registerAction({ - mime: 'all', - name: 'Test', // override - type: OCA.Files.FileActions.TYPE_INLINE, - permissions: OC.PERMISSION_READ, - icon: OC.imagePath('core', 'actions/test'), - actionHandler: actionStub2 - }); - - actions1.display($tr.find('td.filename'), true, fileList); - - expect($tr.find('.action-test').length).toEqual(1); - - $tr.find('.action-test').click(); - expect(actionStub1.notCalled).toEqual(true); - expect(actionStub2.calledOnce).toEqual(true); - }); - it('leaves original file actions untouched (clean copy)', function() { - var actions1 = new OCA.Files.FileActions(); - var actions2 = new OCA.Files.FileActions(); - var actionStub1 = sinon.stub(); - var actionStub2 = sinon.stub(); - actions1.registerAction({ - mime: 'all', - name: 'Test', - type: OCA.Files.FileActions.TYPE_INLINE, - permissions: OC.PERMISSION_READ, - icon: OC.imagePath('core', 'actions/test'), - actionHandler: actionStub1 - }); - - // copy the Test action to actions2 - actions2.merge(actions1); - - // late override - actions2.registerAction({ - mime: 'all', - name: 'Test', // override - type: OCA.Files.FileActions.TYPE_INLINE, - permissions: OC.PERMISSION_READ, - icon: OC.imagePath('core', 'actions/test'), - actionHandler: actionStub2 - }); - - // check if original actions still call the correct handler - actions1.display($tr.find('td.filename'), true, fileList); - - expect($tr.find('.action-test').length).toEqual(1); - - $tr.find('.action-test').click(); - expect(actionStub1.calledOnce).toEqual(true); - expect(actionStub2.notCalled).toEqual(true); - }); - }); - describe('events', function() { - var clock; - beforeEach(function() { - clock = sinon.useFakeTimers(); - }); - afterEach(function() { - clock.restore(); - }); - it('notifies update event handlers once after multiple changes', function() { - var actionStub = sinon.stub(); - var handler = sinon.stub(); - fileActions.on('registerAction', handler); - fileActions.registerAction({ - mime: 'all', - name: 'Test', - type: OCA.Files.FileActions.TYPE_INLINE, - permissions: OC.PERMISSION_READ, - icon: OC.imagePath('core', 'actions/test'), - actionHandler: actionStub - }); - fileActions.registerAction({ - mime: 'all', - name: 'Test2', - permissions: OC.PERMISSION_READ, - icon: OC.imagePath('core', 'actions/test'), - actionHandler: actionStub - }); - expect(handler.calledTwice).toEqual(true); - }); - it('does not notifies update event handlers after unregistering', function() { - var actionStub = sinon.stub(); - var handler = sinon.stub(); - fileActions.on('registerAction', handler); - fileActions.off('registerAction', handler); - fileActions.registerAction({ - mime: 'all', - name: 'Test', - type: OCA.Files.FileActions.TYPE_INLINE, - permissions: OC.PERMISSION_READ, - icon: OC.imagePath('core', 'actions/test'), - actionHandler: actionStub - }); - fileActions.registerAction({ - mime: 'all', - name: 'Test2', - type: OCA.Files.FileActions.TYPE_INLINE, - permissions: OC.PERMISSION_READ, - icon: OC.imagePath('core', 'actions/test'), - actionHandler: actionStub - }); - expect(handler.notCalled).toEqual(true); - }); - }); - describe('default actions', function() { - describe('download', function() { - it('redirects to URL and sets busy state to list', function() { - var handleDownloadStub = sinon.stub(OCA.Files.Files, 'handleDownload'); - var busyStub = sinon.stub(fileList, 'showFileBusyState'); - var fileData = { - id: 18, - type: 'file', - name: 'testName.txt', - mimetype: 'text/plain', - size: '1234', - etag: 'a01234c', - mtime: '123456', - permissions: OC.PERMISSION_READ | OC.PERMISSION_UPDATE - }; - - // note: FileActions.display() is called implicitly - fileList.add(fileData); - - var model = fileList.getModelForFile('testName.txt'); - - fileActions.registerDefaultActions(); - fileActions.triggerAction('Download', model, fileList); - - expect(busyStub.calledOnce).toEqual(true); - expect(busyStub.calledWith('testName.txt', true)).toEqual(true); - expect(handleDownloadStub.calledOnce).toEqual(true); - expect(handleDownloadStub.getCall(0).args[0]).toEqual( - OC.getRootPath() + '/remote.php/webdav/subdir/testName.txt' - ); - busyStub.reset(); - handleDownloadStub.yield(); - - expect(busyStub.calledOnce).toEqual(true); - expect(busyStub.calledWith('testName.txt', false)).toEqual(true); - - busyStub.restore(); - handleDownloadStub.restore(); - }); - }); - }); - describe('download spinner', function() { - var FileActions = OCA.Files.FileActions; - var $el; - - beforeEach(function() { - $el = $('Download'); - }); - - it('replaces download icon with spinner', function() { - FileActions.updateFileActionSpinner($el, true); - expect($el.find('.icon.icon-loading-small').length).toEqual(1); - expect($el.find('.icon.icon-download').hasClass('hidden')).toEqual(true); - }); - it('replaces spinner back with download icon with spinner', function() { - FileActions.updateFileActionSpinner($el, true); - FileActions.updateFileActionSpinner($el, false); - expect($el.find('.icon.icon-loading-small').length).toEqual(0); - expect($el.find('.icon.icon-download').hasClass('hidden')).toEqual(false); - }); - }); -}); diff --git a/apps/files/tests/js/fileactionsmenuSpec.js b/apps/files/tests/js/fileactionsmenuSpec.js deleted file mode 100644 index 1ed8dc15a98d6..0000000000000 --- a/apps/files/tests/js/fileactionsmenuSpec.js +++ /dev/null @@ -1,344 +0,0 @@ -/** - * SPDX-FileCopyrightText: 2017-2024 Nextcloud GmbH and Nextcloud contributors - * SPDX-FileCopyrightText: 2015 ownCloud, Inc. - * SPDX-License-Identifier: AGPL-3.0-or-later - */ - -describe('OCA.Files.FileActionsMenu tests', function() { - var fileList, fileActions, menu, actionStub, menuContext, $tr; - - beforeEach(function() { - // init horrible parameters - var $body = $('#testArea'); - $body.append(''); - // dummy files table - actionStub = sinon.stub(); - fileActions = new OCA.Files.FileActions(); - fileList = new OCA.Files.FileList($body, { - fileActions: fileActions - }); - fileList.changeDirectory('/subdir', false, true); - - fileActions.registerAction({ - name: 'Testdropdown', - displayName: 'Testdropdowndisplay', - mime: 'all', - permissions: OC.PERMISSION_READ, - icon: function () { - return OC.imagePath('core', 'actions/download'); - }, - actionHandler: actionStub - }); - - fileActions.registerAction({ - name: 'Testdropdownnoicon', - displayName: 'Testdropdowndisplaynoicon', - mime: 'all', - permissions: OC.PERMISSION_READ, - actionHandler: actionStub - }); - - fileActions.registerAction({ - name: 'Testinline', - displayName: 'Testinlinedisplay', - type: OCA.Files.FileActions.TYPE_INLINE, - mime: 'all', - permissions: OC.PERMISSION_READ - }); - - fileActions.registerAction({ - name: 'Testdefault', - displayName: 'Testdefaultdisplay', - mime: 'all', - permissions: OC.PERMISSION_READ - }); - fileActions.setDefault('all', 'Testdefault'); - - var fileData = { - id: 18, - type: 'file', - name: 'testName.txt', - mimetype: 'text/plain', - size: '1234', - etag: 'a01234c', - mtime: '123456' - }; - $tr = fileList.add(fileData); - - menuContext = { - $file: $tr, - fileList: fileList, - fileActions: fileActions, - dir: fileList.getCurrentDirectory() - }; - menu = new OCA.Files.FileActionsMenu(); - menu.show(menuContext); - }); - afterEach(function() { - fileActions = null; - fileList.destroy(); - fileList = undefined; - menu.remove(); - $('#permissions, .files-filestable').remove(); - }); - - describe('rendering', function() { - it('renders dropdown actions in menu', function() { - var $action = menu.$el.find('a[data-action=Testdropdown]'); - expect($action.length).toEqual(1); - expect($action.find('img').attr('src')) - .toEqual(OC.imagePath('core', 'actions/download')); - expect($action.find('.no-icon').length).toEqual(0); - - $action = menu.$el.find('a[data-action=Testdropdownnoicon]'); - expect($action.length).toEqual(1); - expect($action.find('img').length).toEqual(0); - expect($action.find('.no-icon').length).toEqual(1); - }); - it('does not render default actions', function() { - expect(menu.$el.find('a[data-action=Testdefault]').length).toEqual(0); - }); - it('render inline actions', function() { - expect(menu.$el.find('a[data-action=Testinline]').length).toEqual(1); - }); - it('render inline actions but it is hidden', function() { - expect(menu.$el.find('a[data-action=Testinline]').parent().hasClass('hidden')).toEqual(true); - }); - it('only renders actions relevant to the mime type', function() { - fileActions.registerAction({ - name: 'Match', - displayName: 'MatchDisplay', - mime: 'text/plain', - permissions: OC.PERMISSION_READ - }); - fileActions.registerAction({ - name: 'Nomatch', - displayName: 'NoMatchDisplay', - mime: 'application/octet-stream', - permissions: OC.PERMISSION_READ - }); - - menu.render(); - expect(menu.$el.find('a[data-action=Match]').length).toEqual(1); - expect(menu.$el.find('a[data-action=NoMatch]').length).toEqual(0); - }); - it('only renders actions relevant to the permissions', function() { - fileActions.registerAction({ - name: 'Match', - displayName: 'MatchDisplay', - mime: 'text/plain', - permissions: OC.PERMISSION_UPDATE - }); - fileActions.registerAction({ - name: 'Nomatch', - displayName: 'NoMatchDisplay', - mime: 'text/plain', - permissions: OC.PERMISSION_DELETE - }); - - menu.render(); - expect(menu.$el.find('a[data-action=Match]').length).toEqual(1); - expect(menu.$el.find('a[data-action=NoMatch]').length).toEqual(0); - }); - it('sorts by order attribute, then name', function() { - fileActions.registerAction({ - name: 'Baction', - displayName: 'Baction', - order: 2, - mime: 'text/plain', - permissions: OC.PERMISSION_ALL - }); - fileActions.registerAction({ - name: 'Zaction', - displayName: 'Zaction', - order: 1, - mime: 'text/plain', - permissions: OC.PERMISSION_ALL - }); - fileActions.registerAction({ - name: 'Yaction', - displayName: 'Yaction', - mime: 'text/plain', - permissions: OC.PERMISSION_ALL - }); - fileActions.registerAction({ - name: 'Waction', - displayName: 'Waction', - mime: 'text/plain', - permissions: OC.PERMISSION_ALL - }); - - menu.render(); - var zactionIndex = menu.$el.find('a[data-action=Zaction]').closest('li').index(); - var bactionIndex = menu.$el.find('a[data-action=Baction]').closest('li').index(); - expect(zactionIndex).toBeLessThan(bactionIndex); - - var wactionIndex = menu.$el.find('a[data-action=Waction]').closest('li').index(); - var yactionIndex = menu.$el.find('a[data-action=Yaction]').closest('li').index(); - expect(wactionIndex).toBeLessThan(yactionIndex); - }); - it('calls displayName function', function() { - var displayNameStub = sinon.stub().returns('Test'); - - fileActions.registerAction({ - name: 'Something', - displayName: displayNameStub, - mime: 'text/plain', - permissions: OC.PERMISSION_ALL - }); - - menu.render(); - - expect(displayNameStub.calledOnce).toEqual(true); - expect(displayNameStub.calledWith(menuContext)).toEqual(true); - expect(menu.$el.find('a[data-action=Something] span:not(.icon)').text()).toEqual('Test'); - }); - it('uses plain iconClass', function() { - fileActions.registerAction({ - name: 'Something', - mime: 'text/plain', - permissions: OC.PERMISSION_ALL, - iconClass: 'test' - }); - - menu.render(); - - expect(menu.$el.find('a[data-action=Something]').children('span.icon').hasClass('test')).toEqual(true); - }); - it('calls iconClass function', function() { - var iconClassStub = sinon.stub().returns('test'); - - fileActions.registerAction({ - name: 'Something', - mime: 'text/plain', - permissions: OC.PERMISSION_ALL, - iconClass: iconClassStub - }); - - menu.render(); - - expect(iconClassStub.calledOnce).toEqual(true); - expect(iconClassStub.calledWith(menuContext.$file.attr('data-file'), menuContext)).toEqual(true); - expect(menu.$el.find('a[data-action=Something]').children('span.icon').hasClass('test')).toEqual(true); - }); - }); - - describe('action handler', function() { - it('calls action handler when clicking menu item', function() { - var $action = menu.$el.find('a[data-action=Testdropdown]'); - $action.click(); - - expect(actionStub.calledOnce).toEqual(true); - expect(actionStub.getCall(0).args[0]).toEqual('testName.txt'); - expect(actionStub.getCall(0).args[1].$file[0]).toEqual($tr[0]); - expect(actionStub.getCall(0).args[1].fileList).toEqual(fileList); - expect(actionStub.getCall(0).args[1].fileActions).toEqual(fileActions); - expect(actionStub.getCall(0).args[1].dir).toEqual('/subdir'); - }); - }); - describe('default actions from registerDefaultActions', function() { - beforeEach(function() { - fileActions.clear(); - fileActions.registerDefaultActions(); - }); - it('redirects to download URL when clicking download', function() { - var redirectStub = sinon.stub(OC, 'redirect'); - var fileData = { - id: 18, - type: 'file', - name: 'testName.txt', - mimetype: 'text/plain', - size: '1234', - etag: 'a01234c', - mtime: '123456' - }; - var $tr = fileList.add(fileData); - fileActions.display($tr.find('td.filename'), true, fileList); - - var menuContext = { - $file: $tr, - fileList: fileList, - fileActions: fileActions, - fileInfoModel: new OCA.Files.FileInfoModel(fileData), - dir: fileList.getCurrentDirectory() - }; - menu = new OCA.Files.FileActionsMenu(); - menu.show(menuContext); - - menu.$el.find('.action-download').click(); - - expect(redirectStub.calledOnce).toEqual(true); - expect(redirectStub.getCall(0).args[0]).toContain( - OC.getRootPath() + - '/remote.php/webdav/subdir/testName.txt' - ); - redirectStub.restore(); - }); - it('takes the file\'s path into account when clicking download', function() { - var redirectStub = sinon.stub(OC, 'redirect'); - var fileData = { - id: 18, - type: 'file', - name: 'testName.txt', - path: '/anotherpath/there', - mimetype: 'text/plain', - size: '1234', - etag: 'a01234c', - mtime: '123456' - }; - var $tr = fileList.add(fileData); - fileActions.display($tr.find('td.filename'), true, fileList); - - var menuContext = { - $file: $tr, - fileList: fileList, - fileActions: fileActions, - fileInfoModel: new OCA.Files.FileInfoModel(fileData), - dir: '/anotherpath/there' - }; - menu = new OCA.Files.FileActionsMenu(); - menu.show(menuContext); - - menu.$el.find('.action-download').click(); - - expect(redirectStub.calledOnce).toEqual(true); - expect(redirectStub.getCall(0).args[0]).toContain( - OC.getRootPath() + '/remote.php/webdav/anotherpath/there/testName.txt' - ); - redirectStub.restore(); - }); - it('deletes file when clicking delete', function() { - var deleteStub = sinon.stub(fileList, 'do_delete'); - var fileData = { - id: 18, - type: 'file', - name: 'testName.txt', - path: '/somepath/dir', - mimetype: 'text/plain', - size: '1234', - etag: 'a01234c', - mtime: '123456' - }; - var $tr = fileList.add(fileData); - fileActions.display($tr.find('td.filename'), true, fileList); - - var menuContext = { - $file: $tr, - fileList: fileList, - fileActions: fileActions, - fileInfoModel: new OCA.Files.FileInfoModel(fileData), - dir: '/somepath/dir' - }; - menu = new OCA.Files.FileActionsMenu(); - menu.show(menuContext); - - menu.$el.find('.action-delete').click(); - - expect(deleteStub.calledOnce).toEqual(true); - expect(deleteStub.getCall(0).args[0]).toEqual('testName.txt'); - expect(deleteStub.getCall(0).args[1]).toEqual('/somepath/dir'); - deleteStub.restore(); - }); - }); -}); - diff --git a/apps/files/tests/js/filelistSpec.js b/apps/files/tests/js/filelistSpec.js deleted file mode 100644 index 4a2a7b7941ddf..0000000000000 --- a/apps/files/tests/js/filelistSpec.js +++ /dev/null @@ -1,3405 +0,0 @@ -/** - * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors - * SPDX-FileCopyrightText: 2016 ownCloud, Inc. - * SPDX-License-Identifier: AGPL-3.0-or-later - */ - -describe('OCA.Files.FileList tests', function() { - var FileInfo = OC.Files.FileInfo; - var testFiles, testRoot, notificationStub, fileList, pageSizeStub; - var bcResizeStub; - var filesClient; - var filesConfig; - var redirectStub; - - /** - * Generate test file data - */ - function generateFiles(startIndex, endIndex) { - var files = []; - var name; - for (var i = startIndex; i <= endIndex; i++) { - name = 'File with index '; - if (i < 10) { - // do not rely on localeCompare here - // and make the sorting predictable - // cross-browser - name += '0'; - } - name += i + '.txt'; - files.push(new FileInfo({ - id: i, - type: 'file', - name: name, - mimetype: 'text/plain', - size: i * 2, - etag: 'abc' - })); - } - return files; - } - - beforeEach(function() { - filesConfig = new OC.Backbone.Model({ - showhidden: true - }); - - filesClient = new OC.Files.Client({ - host: 'localhost', - port: 80, - // FIXME: uncomment after fixing the test OC.getRootPath() - //root: OC.getRootPath() + '/remote.php/webdav', - root: '/remote.php/webdav', - useHTTPS: false - }); - redirectStub = sinon.stub(OC, 'redirect'); - notificationStub = sinon.stub(OC.Notification, 'show'); - // prevent resize algo to mess up breadcrumb order while - // testing - bcResizeStub = sinon.stub(OCA.Files.BreadCrumb.prototype, '_resize'); - - // init parameters and test table elements - $('#testArea').append( - '
    ' + - // init horrible parameters - '' + - // dummy controls - '
    ' + - '
    ' + - '
    ' + - '
    ' + - // uploader - '' + - // dummy table - // TODO: at some point this will be rendered by the fileList class itself! - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '
    ' + - // TODO: move to handlebars template - '

    Empty content message

    Upload message

    ' + - '' + - '
    ' - ); - - testRoot = new FileInfo({ - // root entry - id: 99, - type: 'dir', - name: '/subdir', - mimetype: 'httpd/unix-directory', - size: 1200000, - etag: 'a0b0c0d0', - permissions: OC.PERMISSION_ALL - }); - testFiles = [new FileInfo({ - id: 1, - type: 'file', - name: 'One.txt', - mimetype: 'text/plain', - mtime: 123456789, - size: 12, - etag: 'abc', - permissions: OC.PERMISSION_ALL - }), new FileInfo({ - id: 2, - type: 'file', - name: 'Two.jpg', - mimetype: 'image/jpeg', - mtime: 234567890, - size: 12049, - etag: 'def', - permissions: OC.PERMISSION_ALL - }), new FileInfo({ - id: 3, - type: 'file', - name: 'Three.pdf', - mimetype: 'application/pdf', - mtime: 234560000, - size: 58009, - etag: '123', - permissions: OC.PERMISSION_ALL - }), new FileInfo({ - id: 4, - type: 'dir', - name: 'somedir', - mimetype: 'httpd/unix-directory', - mtime: 134560000, - size: 250, - etag: '456', - permissions: OC.PERMISSION_ALL - })]; - pageSizeStub = sinon.stub(OCA.Files.FileList.prototype, 'pageSize').returns(20); - fileList = new OCA.Files.FileList($('#app-content-files'), { - filesClient: filesClient, - config: filesConfig, - dir: '/subdir', - enableUpload: true, - multiSelectMenu: [{ - name: 'copyMove', - displayName: t('files', 'Move or copy'), - iconClass: 'icon-external', - }, - { - name: 'download', - displayName: t('files', 'Download'), - iconClass: 'icon-download', - }, - { - name: 'delete', - displayName: t('files', 'Delete'), - iconClass: 'icon-delete', - }] - }); - }); - afterEach(function() { - testFiles = undefined; - if (fileList) { - fileList.destroy(); - } - fileList = undefined; - - notificationStub.restore(); - bcResizeStub.restore(); - pageSizeStub.restore(); - redirectStub.restore(); - }); - describe('Getters', function() { - it('Returns the current directory', function() { - fileList.changeDirectory('/one/two/three', false, true); - expect(fileList.getCurrentDirectory()).toEqual('/one/two/three'); - }); - it('Returns the directory permissions as int', function() { - $('#permissions').val('23'); - expect(fileList.getDirectoryPermissions()).toEqual(23); - }); - }); - describe('Adding files', function() { - it('generates file element with correct attributes when calling add() with file data', function() { - var fileData = new FileInfo({ - id: 18, - name: 'testName.txt', - mimetype: 'text/plain', - size: 1234, - etag: 'a01234c', - mtime: 123456 - }); - var $tr = fileList.add(fileData); - - expect($tr).toBeDefined(); - expect($tr[0].tagName.toLowerCase()).toEqual('tr'); - expect($tr.attr('data-id')).toEqual('18'); - expect($tr.attr('data-type')).toEqual('file'); - expect($tr.attr('data-file')).toEqual('testName.txt'); - expect($tr.attr('data-size')).toEqual('1234'); - expect($tr.attr('data-etag')).toEqual('a01234c'); - expect($tr.attr('data-permissions')).toEqual('31'); - expect($tr.attr('data-mime')).toEqual('text/plain'); - expect($tr.attr('data-mtime')).toEqual('123456'); - expect($tr.attr('data-e2eencrypted')).toEqual('false'); - expect($tr.find('a.name').attr('href')) - .toEqual(OC.getRootPath() + '/remote.php/webdav/subdir/testName.txt'); - expect($tr.find('.nametext').text().trim()).toEqual('testName.txt'); - - expect($tr.find('.filesize').text()).toEqual('1 KB'); - expect($tr.find('.date').text()).not.toEqual('?'); - expect(fileList.findFileEl('testName.txt')[0]).toEqual($tr[0]); - }); - it('generates file element with url for default action when one is defined', function() { - var actionStub = sinon.stub(); - fileList.setFiles(testFiles); - fileList.fileActions.registerAction({ - mime: 'text/plain', - name: 'Test', - type: OCA.Files.FileActions.TYPE_INLINE, - permissions: OC.PERMISSION_ALL, - icon: function() { - // Specify icon for history button - return OC.imagePath('core','actions/history'); - }, - actionHandler: actionStub - }); - fileList.fileActions.setDefault('text/plain', 'Test'); - var fileData = new FileInfo({ - id: 18, - name: 'testName.txt', - mimetype: 'text/plain', - size: 1234, - etag: 'a01234c', - mtime: 123456 - }); - var $tr = fileList.add(fileData); - expect($tr.find('a.name').attr('href')) - .toEqual(OC.getRootPath() + '/index.php/apps/files?dir=&openfile=18'); - }); - it('generates dir element with correct attributes when calling add() with dir data', function() { - var fileData = new FileInfo({ - id: 19, - name: 'testFolder', - mimetype: 'httpd/unix-directory', - size: 1234, - etag: 'a01234c', - mtime: 123456 - }); - var $tr = fileList.add(fileData); - - expect($tr).toBeDefined(); - expect($tr[0].tagName.toLowerCase()).toEqual('tr'); - expect($tr.attr('data-id')).toEqual('19'); - expect($tr.attr('data-type')).toEqual('dir'); - expect($tr.attr('data-file')).toEqual('testFolder'); - expect($tr.attr('data-size')).toEqual('1234'); - expect($tr.attr('data-etag')).toEqual('a01234c'); - expect($tr.attr('data-permissions')).toEqual('31'); - expect($tr.attr('data-mime')).toEqual('httpd/unix-directory'); - expect($tr.attr('data-mtime')).toEqual('123456'); - expect($tr.attr('data-e2eencrypted')).toEqual('false'); - - expect($tr.find('.filesize').text()).toEqual('1 KB'); - expect($tr.find('.date').text()).not.toEqual('?'); - - expect(fileList.findFileEl('testFolder')[0]).toEqual($tr[0]); - }); - it('generates file element with default attributes when calling add() with minimal data', function() { - var fileData = { - type: 'file', - name: 'testFile.txt' - }; - - var $tr = fileList.add(fileData); - - expect($tr).toBeDefined(); - expect($tr[0].tagName.toLowerCase()).toEqual('tr'); - expect($tr.attr('data-id')).toBeUndefined(); - expect($tr.attr('data-type')).toEqual('file'); - expect($tr.attr('data-file')).toEqual('testFile.txt'); - expect($tr.attr('data-size')).toBeUndefined(); - expect($tr.attr('data-etag')).toBeUndefined(); - expect($tr.attr('data-permissions')).toEqual('31'); - expect($tr.attr('data-mime')).toBeUndefined(); - expect($tr.attr('data-e2eencrypted')).toEqual('false'); - - expect($tr.find('.filesize').text()).toEqual('Pending'); - expect($tr.find('.date').text()).not.toEqual('?'); - }); - it('generates dir element with default attributes when calling add() with minimal data', function() { - var fileData = { - type: 'dir', - name: 'testFolder' - }; - var $tr = fileList.add(fileData); - - expect($tr).toBeDefined(); - expect($tr[0].tagName.toLowerCase()).toEqual('tr'); - expect($tr.attr('data-id')).toBeUndefined(); - expect($tr.attr('data-type')).toEqual('dir'); - expect($tr.attr('data-file')).toEqual('testFolder'); - expect($tr.attr('data-size')).toBeUndefined(); - expect($tr.attr('data-etag')).toBeUndefined(); - expect($tr.attr('data-permissions')).toEqual('31'); - expect($tr.attr('data-mime')).toEqual('httpd/unix-directory'); - expect($tr.attr('data-e2eencrypted')).toEqual('false'); - - expect($tr.find('.filesize').text()).toEqual('Pending'); - expect($tr.find('.date').text()).not.toEqual('?'); - }); - it('generates dir element with true e2eencrypted attribute when calling add() with minimal data including isEncrypted', function() { - var fileData = { - type: 'dir', - name: 'testFolder', - isEncrypted: true - }; - var $tr = fileList.add(fileData); - expect($tr.attr('data-e2eencrypted')).toEqual('true'); - }); - it('generates file element with no permissions when permissions are explicitly none', function() { - var fileData = { - type: 'dir', - name: 'testFolder', - permissions: OC.PERMISSION_NONE - }; - var $tr = fileList.add(fileData); - expect($tr.attr('data-permissions')).toEqual('0'); - }); - it('generates file element with zero size when size is explicitly zero', function() { - var fileData = { - type: 'dir', - name: 'testFolder', - size: '0' - }; - var $tr = fileList.add(fileData); - expect($tr.find('.filesize').text()).toEqual('0 KB'); - }); - it('generates file element with unknown date when mtime invalid', function() { - var fileData = { - type: 'dir', - name: 'testFolder', - mtime: -1 - }; - var $tr = fileList.add(fileData); - expect($tr.find('.date .modified').text()).toEqual('?'); - }); - it('adds new file to the end of the list', function() { - var $tr; - var fileData = { - type: 'file', - name: 'ZZZ.txt' - }; - fileList.setFiles(testFiles); - $tr = fileList.add(fileData); - expect($tr.index()).toEqual(4); - }); - it('inserts files in a sorted manner when insert option is enabled', function() { - for (var i = 0; i < testFiles.length; i++) { - fileList.add(testFiles[i]); - } - expect(fileList.files[0].name).toEqual('somedir'); - expect(fileList.files[1].name).toEqual('One.txt'); - expect(fileList.files[2].name).toEqual('Three.pdf'); - expect(fileList.files[3].name).toEqual('Two.jpg'); - }); - it('inserts new file at correct position', function() { - var $tr; - var fileData = { - type: 'file', - name: 'P comes after O.txt' - }; - for (var i = 0; i < testFiles.length; i++) { - fileList.add(testFiles[i]); - } - $tr = fileList.add(fileData); - // after "One.txt" - expect($tr.index()).toEqual(2); - expect(fileList.files[2]).toEqual(fileData); - }); - it('inserts new folder at correct position in insert mode', function() { - var $tr; - var fileData = { - type: 'dir', - name: 'somedir2 comes after somedir' - }; - for (var i = 0; i < testFiles.length; i++) { - fileList.add(testFiles[i]); - } - $tr = fileList.add(fileData); - expect($tr.index()).toEqual(1); - expect(fileList.files[1]).toEqual(fileData); - }); - it('inserts new file at the end correctly', function() { - var $tr; - var fileData = { - type: 'file', - name: 'zzz.txt' - }; - for (var i = 0; i < testFiles.length; i++) { - fileList.add(testFiles[i]); - } - $tr = fileList.add(fileData); - expect($tr.index()).toEqual(4); - expect(fileList.files[4]).toEqual(fileData); - }); - it('removes empty content message and shows summary when adding first file', function() { - var $summary; - var fileData = { - type: 'file', - name: 'first file.txt', - size: 12 - }; - fileList.setFiles([]); - expect(fileList.isEmpty).toEqual(true); - fileList.add(fileData); - $summary = $('.files-filestable .summary'); - expect($summary.hasClass('hidden')).toEqual(false); - // yes, ugly... - expect($summary.find('.fileinfo').text()).toEqual('1 file'); - expect($summary.find('.dirinfo').hasClass('hidden')).toEqual(true); - expect($summary.find('.connector').hasClass('hidden')).toEqual(true); - expect($summary.find('.fileinfo').hasClass('hidden')).toEqual(false); - expect($summary.find('.filesize').text()).toEqual('12 B'); - expect($('.files-filestable thead th').hasClass('hidden')).toEqual(false); - expect($('.emptyfilelist.emptycontent').hasClass('hidden')).toEqual(true); - expect(fileList.isEmpty).toEqual(false); - }); - it('correctly adds the extension markup and show hidden files completely in gray', function() { - var $tr; - var testDataAndExpectedResult = [ - {file: {type: 'file', name: 'ZZZ.txt'}, extension: '.txt'}, - {file: {type: 'file', name: 'ZZZ.tar.gz'}, extension: '.gz'}, - {file: {type: 'file', name: 'test.with.some.dots.in.it.txt'}, extension: '.txt'}, - // we render hidden files completely in gray - {file: {type: 'file', name: '.test.with.some.dots.in.it.txt'}, extension: '.test.with.some.dots.in.it.txt'}, - {file: {type: 'file', name: '.hidden'}, extension: '.hidden'}, - ]; - fileList.setFiles(testFiles); - - for(var i = 0; i < testDataAndExpectedResult.length; i++) { - var testSet = testDataAndExpectedResult[i]; - var fileData = testSet['file']; - $tr = fileList.add(fileData); - expect($tr.find('.nametext .extension').text()).toEqual(testSet['extension']); - } - }); - }); - describe('Hidden files', function() { - it('sets the class hidden-file for hidden files', function() { - var fileData = { - type: 'dir', - name: '.testFolder' - }; - var $tr = fileList.add(fileData); - - expect($tr).toBeDefined(); - expect($tr.hasClass('hidden-file')).toEqual(true); - }); - it('does not set the class hidden-file for visible files', function() { - var fileData = { - type: 'dir', - name: 'testFolder' - }; - var $tr = fileList.add(fileData); - - expect($tr).toBeDefined(); - expect($tr.hasClass('hidden-file')).toEqual(false); - }); - it('toggles the list\'s class when toggling hidden files', function() { - expect(fileList.$el.hasClass('hide-hidden-files')).toEqual(false); - window._nc_event_bus.emit('files:config:updated', { key: 'show_hidden', value: false }); - expect(fileList.$el.hasClass('hide-hidden-files')).toEqual(true); - window._nc_event_bus.emit('files:config:updated', { key: 'show_hidden', value: true }) - expect(fileList.$el.hasClass('hide-hidden-files')).toEqual(false); - }); - }); - describe('Removing files from the list', function() { - it('Removes file from list when calling remove() and updates summary', function() { - var $summary; - var $removedEl; - fileList.setFiles(testFiles); - $removedEl = fileList.remove('One.txt'); - expect($removedEl).toBeDefined(); - expect($removedEl.attr('data-file')).toEqual('One.txt'); - expect($('.files-fileList tr').length).toEqual(3); - expect(fileList.files.length).toEqual(3); - expect(fileList.findFileEl('One.txt').length).toEqual(0); - - $summary = $('.files-filestable .summary'); - expect($summary.hasClass('hidden')).toEqual(false); - expect($summary.find('.dirinfo').text()).toEqual('1 folder'); - expect($summary.find('.fileinfo').text()).toEqual('2 files'); - expect($summary.find('.dirinfo').hasClass('hidden')).toEqual(false); - expect($summary.find('.fileinfo').hasClass('hidden')).toEqual(false); - expect($summary.find('.filesize').text()).toEqual('69 KB'); - expect(fileList.isEmpty).toEqual(false); - }); - it('Shows empty content when removing last file', function() { - var $summary; - fileList.setFiles([testFiles[0]]); - fileList.remove('One.txt'); - expect($('.files-fileList tr').length).toEqual(0); - expect(fileList.files.length).toEqual(0); - expect(fileList.findFileEl('One.txt').length).toEqual(0); - - $summary = $('.files-filestable .summary'); - expect($summary.hasClass('hidden')).toEqual(true); - expect($('.files-filestable thead th').hasClass('hidden')).toEqual(true); - expect($('.emptyfilelist.emptycontent').hasClass('hidden')).toEqual(false); - expect(fileList.isEmpty).toEqual(true); - }); - }); - describe('Deleting files', function() { - var deferredDelete; - var deleteStub; - - beforeEach(function() { - deferredDelete = $.Deferred(); - deleteStub = sinon.stub(filesClient, 'remove'); - }); - afterEach(function() { - deleteStub.restore(); - }); - - function doDelete() { - // note: normally called from FileActions - return fileList.do_delete(['One.txt', 'Two.jpg']).then(function(){ - - expect(deleteStub.calledTwice).toEqual(true); - expect(deleteStub.getCall(0).args[0]).toEqual('/subdir/One.txt'); - expect(deleteStub.getCall(1).args[0]).toEqual('/subdir/Two.jpg'); - }); - } - it('calls delete.php, removes the deleted entries and updates summary', function(done) { - var $summary; - fileList.setFiles(testFiles); - deferredDelete1 = $.Deferred(); - deferredDelete2 = $.Deferred(); - deleteStub.onCall(0).callsFake(function(src){ - expect(deleteStub.calledOnce).toEqual(true); - expect(src).toEqual('/subdir/One.txt'); - return deferredDelete1.promise(); - }); - deleteStub.onCall(1).callsFake(function(src){ - expect(deleteStub.calledTwice).toEqual(true); - expect(src).toEqual('/subdir/Two.jpg'); - return deferredDelete2.promise(); - }); - - var promise = fileList.do_delete(['One.txt', 'Two.jpg']); - deferredDelete1.resolve(200); - deferredDelete2.resolve(200); - return promise.then(function(){ - expect(fileList.findFileEl('One.txt').length).toEqual(0); - expect(fileList.findFileEl('Two.jpg').length).toEqual(0); - expect(fileList.findFileEl('Three.pdf').length).toEqual(1); - expect(fileList.$fileList.find('tr').length).toEqual(2); - - $summary = $('.files-filestable .summary'); - expect($summary.hasClass('hidden')).toEqual(false); - expect($summary.find('.dirinfo').text()).toEqual('1 folder'); - expect($summary.find('.fileinfo').text()).toEqual('1 file'); - expect($summary.find('.dirinfo').hasClass('hidden')).toEqual(false); - expect($summary.find('.fileinfo').hasClass('hidden')).toEqual(false); - expect($summary.find('.filesize').text()).toEqual('57 KB'); - expect(fileList.isEmpty).toEqual(false); - expect($('.files-filestable thead th').hasClass('hidden')).toEqual(false); - expect($('.emptyfilelist.emptycontent').hasClass('hidden')).toEqual(true); - - expect(notificationStub.notCalled).toEqual(true); - }).then(done, done); - }); - it('shows busy state on files to be deleted', function(done) { - fileList.setFiles(testFiles); - deferredDelete1 = $.Deferred(); - deferredDelete2 = $.Deferred(); - deleteStub.onCall(0).callsFake(function(src){ - expect(fileList.findFileEl('One.txt').hasClass('busy')).toEqual(true); - expect(fileList.findFileEl('Three.pdf').hasClass('busy')).toEqual(false); - - expect(deleteStub.calledOnce).toEqual(true); - expect(src).toEqual('/subdir/One.txt'); - return deferredDelete1.promise(); - }); - deleteStub.onCall(1).callsFake(function(src){ - expect(fileList.findFileEl('Two.jpg').hasClass('busy')).toEqual(true); - expect(fileList.findFileEl('Three.pdf').hasClass('busy')).toEqual(false); - - expect(deleteStub.calledTwice).toEqual(true); - expect(src).toEqual('/subdir/Two.jpg'); - return deferredDelete2.promise(); - }); - var promise = fileList.do_delete(['One.txt', 'Two.jpg']).then(function(){ - expect(deleteStub.calledTwice).toEqual(true); - }); - deferredDelete1.resolve(200); - deferredDelete2.resolve(200); - return promise.then(function(){ - expect(fileList.findFileEl('One.txt').hasClass('busy')).toEqual(false); - expect(fileList.findFileEl('Two.jpg').hasClass('busy')).toEqual(false); - }).then(done, done); - }); - it('shows busy state on all files when deleting all', function(done) { - fileList.setFiles(testFiles); - var deferredDeleteArray = []; - var count = 0; - for (var i = 0; i < 4; i++) { - (function(i, fn){ - deferredDeleteArray.push($.Deferred()); - deleteStub.onCall(i).callsFake(function(src){ - expect(fileList.findFileEl(fn).hasClass('busy')).toEqual(true); - count++; - return deferredDeleteArray[i].promise(); - }); - })(i, testFiles[i].name); - } - var promise = fileList.do_delete(); - for (var i = 0; i < 4; i++) { - deferredDeleteArray[i].resolve(200); - } - return promise.then(function(){ - expect(count).toEqual(4); - }).then(done, done); - }); - it('updates summary when deleting last file', function(done) { - var $summary; - fileList.setFiles([testFiles[0], testFiles[1]]); - deleteStub.returns(deferredDelete.promise()); - deferredDelete.resolve(200); - - return doDelete().then(function(){ - expect(fileList.$fileList.find('tr').length).toEqual(0); - $summary = $('.files-filestable .summary'); - expect($summary.hasClass('hidden')).toEqual(true); - expect(fileList.isEmpty).toEqual(true); - expect(fileList.files.length).toEqual(0); - expect($('.files-filestable thead th').hasClass('hidden')).toEqual(true); - expect($('.emptyfilelist.emptycontent').hasClass('hidden')).toEqual(false); - }).then(done, done); - }); - it('bring back deleted item when delete call failed', function(done) { - fileList.setFiles(testFiles); - deleteStub.returns(deferredDelete.promise()); - var promise = doDelete(); - deferredDelete.reject(403); - return promise.then(function(){ - // files are still in the list - expect(fileList.findFileEl('One.txt').length).toEqual(1); - expect(fileList.findFileEl('Two.jpg').length).toEqual(1); - expect(fileList.$fileList.find('tr').length).toEqual(4); - - expect(notificationStub.calledTwice).toEqual(true); - }).then(done, done); - }); - it('remove file from list if delete call returned 404 not found', function(done) { - fileList.setFiles(testFiles); - deleteStub.returns(deferredDelete.promise()); - var promise = doDelete(); - deferredDelete.reject(404); - return promise.then(function(){ - expect(fileList.findFileEl('One.txt').length).toEqual(0); - expect(fileList.findFileEl('Two.jpg').length).toEqual(0); - expect(fileList.$fileList.find('tr').length).toEqual(2); - - expect(notificationStub.notCalled).toEqual(true); - }).then(done, done); - }); - }); - describe('Renaming files', function() { - var deferredRename; - var renameStub; - - beforeEach(function() { - deferredRename = $.Deferred(); - renameStub = sinon.stub(filesClient, 'move').returns(deferredRename.promise()); - - for (var i = 0; i < testFiles.length; i++) { - var file = testFiles[i]; - file.path = '/some/subdir'; - fileList.add(file, {silent: true}); - } - }); - afterEach(function() { - renameStub.restore(); - }); - - function doCancelRename() { - var $input; - - // trigger rename prompt - fileList.rename('One.txt'); - $input = fileList.$fileList.find('input.filename'); - // keep same name - $input.val('One.txt'); - // trigger submit because triggering blur doesn't work in all browsers - $input.closest('form').trigger('submit'); - - expect(renameStub.notCalled).toEqual(true); - } - function doRename() { - var $input; - - // trigger rename prompt - fileList.rename('One.txt'); - $input = fileList.$fileList.find('input.filename'); - $input.val('Tu_after_three.txt'); - // trigger submit because triggering blur doesn't work in all browsers - $input.closest('form').trigger('submit'); - - expect(renameStub.calledOnce).toEqual(true); - expect(renameStub.getCall(0).args[0]).toEqual('/some/subdir/One.txt'); - expect(renameStub.getCall(0).args[1]).toEqual('/some/subdir/Tu_after_three.txt'); - } - it('Inserts renamed file entry at correct position if rename ajax call suceeded', function() { - doRename(); - - deferredRename.resolve(201); - - // element stays renamed - expect(fileList.findFileEl('One.txt').length).toEqual(0); - expect(fileList.findFileEl('Tu_after_three.txt').length).toEqual(1); - expect(fileList.findFileEl('Tu_after_three.txt').index()).toEqual(2); // after Two.jpg - - expect(notificationStub.notCalled).toEqual(true); - }); - it('Reverts file entry if rename ajax call failed', function() { - doRename(); - - deferredRename.reject(403); - - // element was reverted - expect(fileList.findFileEl('One.txt').length).toEqual(1); - expect(fileList.findFileEl('One.txt').index()).toEqual(1); // after somedir - expect(fileList.findFileEl('Tu_after_three.txt').length).toEqual(0); - - expect(notificationStub.calledOnce).toEqual(true); - }); - it('Correctly updates file link after rename', function() { - var $tr; - doRename(); - - deferredRename.resolve(201); - - $tr = fileList.findFileEl('Tu_after_three.txt'); - expect($tr.find('a.name').attr('href')) - .toEqual(OC.getRootPath() + '/remote.php/webdav/some/subdir/Tu_after_three.txt'); - }); - it('Triggers "fileActionsReady" event after rename', function() { - var handler = sinon.stub(); - fileList.$fileList.on('fileActionsReady', handler); - doRename(); - expect(handler.notCalled).toEqual(true); - - deferredRename.resolve(201); - - expect(handler.calledOnce).toEqual(true); - expect(fileList.$fileList.find('.test').length).toEqual(0); - }); - it('Leaves the summary alone when reinserting renamed element', function() { - var $summary = $('.files-filestable .summary'); - doRename(); - - deferredRename.resolve(201); - - expect($summary.find('.dirinfo').text()).toEqual('1 folder'); - expect($summary.find('.fileinfo').text()).toEqual('3 files'); - }); - it('Leaves the summary alone when cancel renaming', function() { - var $summary = $('.files-filestable .summary'); - doCancelRename(); - expect($summary.find('.dirinfo').text()).toEqual('1 folder'); - expect($summary.find('.fileinfo').text()).toEqual('3 files'); - }); - it('Shows busy state while rename in progress', function() { - var $tr; - doRename(); - - // element is renamed before the request finishes - $tr = fileList.findFileEl('Tu_after_three.txt'); - expect($tr.length).toEqual(1); - expect(fileList.findFileEl('One.txt').length).toEqual(0); - // file actions are hidden - expect($tr.hasClass('busy')).toEqual(true); - - // input and form are gone - expect(fileList.$fileList.find('input.filename').length).toEqual(0); - expect(fileList.$fileList.find('form').length).toEqual(0); - }); - it('Validates the file name', function() { - var $input, $tr; - - $tr = fileList.findFileEl('One.txt'); - expect($tr.find('a.name').css('display')).not.toEqual('none'); - - // trigger rename prompt - fileList.rename('One.txt'); - - expect($tr.find('a.name .thumbnail-wrapper').css('display')).not.toEqual('none'); - expect($tr.find('a.name .nametext').css('display')).toEqual('none'); - - $input = fileList.$fileList.find('input.filename'); - $input.val('Two.jpg'); - - // simulate key to trigger validation - $input.trigger(new $.Event('keyup', {keyCode: 97})); - - // input is still there with error - expect(fileList.$fileList.find('input.filename').length).toEqual(1); - expect(fileList.$fileList.find('input.filename').hasClass('error')).toEqual(true); - - // trigger submit does not send server request - $input.closest('form').trigger('submit'); - expect(renameStub.notCalled).toEqual(true); - - // simulate escape key - $input.trigger(new $.Event('keyup', {keyCode: 27})); - - // element is added back with the correct name - $tr = fileList.findFileEl('One.txt'); - expect($tr.length).toEqual(1); - expect($tr.find('a .nametext').text().trim()).toEqual('One.txt'); - expect($tr.find('a.name').css('display')).not.toEqual('none'); - - $tr = fileList.findFileEl('Two.jpg'); - expect($tr.length).toEqual(1); - expect($tr.find('a .nametext').text().trim()).toEqual('Two.jpg'); - expect($tr.find('a.name').css('display')).not.toEqual('none'); - - // input and form are gone - expect(fileList.$fileList.find('input.filename').length).toEqual(0); - expect(fileList.$fileList.find('form').length).toEqual(0); - }); - it('Restores thumbnail when rename was cancelled', function(done) { - doRename(); - - expect(fileList.findFileEl('Tu_after_three.txt').find('.thumbnail').parent().attr('class')) - .toContain('icon-loading-small'); - - deferredRename.reject(409); - - return Promise.resolve().then(function() { - expect(fileList.findFileEl('One.txt').length).toEqual(1); - expect(OC.TestUtil.getImageUrl(fileList.findFileEl('One.txt').find('.thumbnail'))) - .toEqual(OC.imagePath('core', 'filetypes/text.svg')); - }).then(done, done); - }); - }); - describe('Moving files', function() { - var deferredMove; - var moveStub; - - beforeEach(function() { - deferredMove = $.Deferred(); - moveStub = sinon.stub(filesClient, 'move'); - - fileList.setFiles(testFiles); - }); - afterEach(function() { - moveStub.restore(); - }); - - it('Moves single file to target folder', function(done) { - var promise = fileList.move('One.txt', '/somedir'); - - moveStub.callsFake(function(src, dst){ - expect(moveStub.calledOnce).toEqual(true); - expect(src).toEqual('/subdir/One.txt'); - expect(dst).toEqual('/somedir/One.txt'); - return deferredMove.promise(); - }); - - deferredMove.resolve(201); - - return promise.then(function(){ - expect(fileList.findFileEl('One.txt').length).toEqual(0); - - // folder size has increased - expect(fileList.findFileEl('somedir').data('size')).toEqual(262); - expect(fileList.findFileEl('somedir').find('.filesize').text()).toEqual('262 B'); - - expect(notificationStub.notCalled).toEqual(true); - }).then(done, done); - }); - it('Moves list of files to target folder', function(done) { - var deferredMove1 = $.Deferred(); - var deferredMove2 = $.Deferred(); - moveStub.onCall(0).callsFake(function(src, dst){ - expect(moveStub.calledOnce).toEqual(true); - expect(src).toEqual('/subdir/One.txt'); - expect(dst).toEqual('/somedir/One.txt'); - return deferredMove1.promise(); - }); - moveStub.onCall(1).callsFake(function(src, dst){ - expect(fileList.findFileEl('One.txt').length).toEqual(0); - - // folder size has increased during move - expect(fileList.findFileEl('somedir').data('size')).toEqual(262); - expect(fileList.findFileEl('somedir').find('.filesize').text()).toEqual('262 B'); - - expect(src).toEqual('/subdir/Two.jpg'); - expect(dst).toEqual('/somedir/Two.jpg'); - return deferredMove2.promise(); - }); - - var promise = fileList.move(['One.txt', 'Two.jpg'], '/somedir'); - deferredMove1.resolve(201); - deferredMove2.resolve(201); - return promise.then(function(){ - expect(moveStub.calledTwice).toEqual(true); - - expect(fileList.findFileEl('Two.jpg').length).toEqual(0); - - // folder size has increased - expect(fileList.findFileEl('somedir').data('size')).toEqual(12311); - expect(fileList.findFileEl('somedir').find('.filesize').text()).toEqual('12 KB'); - - expect(notificationStub.notCalled).toEqual(true); - }).then(done, done); - }); - it('Shows notification if a file could not be moved', function(done) { - moveStub.callsFake(function(){ - expect(moveStub.calledOnce).toEqual(true); - return deferredMove.promise(); - }); - var promise = fileList.move('One.txt', '/somedir'); - deferredMove.reject(409); - return promise.then(function(){ - expect(fileList.findFileEl('One.txt').length).toEqual(1); - expect(notificationStub.calledOnce).toEqual(true); - expect(notificationStub.getCall(0).args[0]).toEqual('Could not move "One.txt"'); - }).then(done, done); - }); - it('Restores thumbnail if a file could not be moved', function(done) { - moveStub.callsFake(function(){ - expect(fileList.findFileEl('One.txt').find('.thumbnail').parent().attr('class')) - .toContain('icon-loading-small'); - expect(moveStub.calledOnce).toEqual(true); - return deferredMove.promise(); - }); - var promise = fileList.move('One.txt', '/somedir'); - deferredMove.reject(409); - return promise.then(function(){ - expect(fileList.findFileEl('One.txt').length).toEqual(1); - expect(notificationStub.calledOnce).toEqual(true); - expect(notificationStub.getCall(0).args[0]).toEqual('Could not move "One.txt"'); - expect(OC.TestUtil.getImageUrl(fileList.findFileEl('One.txt').find('.thumbnail'))) - .toEqual(OC.imagePath('core', 'filetypes/text.svg')); - }).then(done, done); - }); - }); - - describe('Copying files', function() { - var deferredCopy; - var copyStub; - - beforeEach(function() { - deferredCopy = $.Deferred(); - copyStub = sinon.stub(filesClient, 'copy'); - - fileList.setFiles(testFiles); - }); - afterEach(function() { - copyStub.restore(); - }); - - it('Copies single file to target folder', function(done) { - copyStub.callsFake(function(){ - expect(copyStub.calledOnce).toEqual(true); - expect(copyStub.getCall(0).args[0]).toEqual('/subdir/One.txt'); - expect(copyStub.getCall(0).args[1]).toEqual('/somedir/One.txt'); - - return deferredCopy.promise(); - }); - - var promise = fileList.copy('One.txt', '/somedir'); - deferredCopy.resolve(201); - return promise.then(function(){ - // File is still here - expect(fileList.findFileEl('One.txt').length).toEqual(1); - - // folder size has increased - expect(fileList.findFileEl('somedir').data('size')).toEqual(262); - expect(fileList.findFileEl('somedir').find('.filesize').text()).toEqual('262 B'); - - // Copying sents a notification to tell that we've successfully copied file - expect(notificationStub.notCalled).toEqual(false); - }).then(done, done); - }); - it('Copies list of files to target folder', function(done) { - var deferredCopy1 = $.Deferred(); - var deferredCopy2 = $.Deferred(); - copyStub.onCall(0).callsFake(function(src, dst){ - expect(src).toEqual('/subdir/One.txt'); - expect(dst).toEqual('/somedir/One.txt'); - return deferredCopy1.promise(); - }); - copyStub.onCall(1).callsFake(function(src, dst){ - // folder size has increased during copy - expect(fileList.findFileEl('somedir').data('size')).toEqual(262); - expect(fileList.findFileEl('somedir').find('.filesize').text()).toEqual('262 B'); - - expect(src).toEqual('/subdir/Two.jpg'); - expect(dst).toEqual('/somedir/Two.jpg'); - return deferredCopy2.promise(); - }); - - var promise = fileList.copy(['One.txt', 'Two.jpg'], '/somedir'); - deferredCopy1.resolve(201); - deferredCopy2.resolve(201); - - return promise.then(function(){ - expect(copyStub.calledTwice).toEqual(true); - expect(fileList.findFileEl('Two.jpg').length).toEqual(1); - expect(fileList.findFileEl('One.txt').length).toEqual(1); - - // folder size has increased - expect(fileList.findFileEl('somedir').data('size')).toEqual(12311); - expect(fileList.findFileEl('somedir').find('.filesize').text()).toEqual('12 KB'); - - expect(notificationStub.notCalled).toEqual(false); - }).then(done, done); - }); - it('Shows notification if a file could not be copied', function(done) { - copyStub.callsFake(function(){ - expect(copyStub.calledOnce).toEqual(true); - return deferredCopy.promise(); - }); - - var promise = fileList.copy('One.txt', '/somedir'); - deferredCopy.reject(409); - return promise.then(function(){ - expect(fileList.findFileEl('One.txt').length).toEqual(1); - expect(notificationStub.calledOnce).toEqual(true); - expect(notificationStub.getCall(0).args[0]).toEqual('Could not copy "One.txt"'); - }).then(done, done); - }); - it('Restores thumbnail if a file could not be copied', function(done) { - copyStub.callsFake(function(){ - expect(fileList.findFileEl('One.txt').find('.thumbnail').parent().attr('class')) - .toContain('icon-loading-small'); - expect(copyStub.calledOnce).toEqual(true); - return deferredCopy.promise(); - }); - - var promise = fileList.copy('One.txt', '/somedir'); - deferredCopy.reject(409); - return promise.then(function(){ - expect(fileList.findFileEl('One.txt').length).toEqual(1); - - expect(notificationStub.calledOnce).toEqual(true); - expect(notificationStub.getCall(0).args[0]).toEqual('Could not copy "One.txt"'); - - expect(OC.TestUtil.getImageUrl(fileList.findFileEl('One.txt').find('.thumbnail'))) - .toEqual(OC.imagePath('core', 'filetypes/text.svg')); - }).then(done, done); - }); - }); - - describe('Update file', function() { - it('does not change summary', function() { - var $summary = $('.files-filestable .summary'); - var fileData = new FileInfo({ - type: 'file', - name: 'test file', - }); - var $tr = fileList.add(fileData); - - expect($summary.find('.dirinfo').hasClass('hidden')).toEqual(true); - expect($summary.find('.fileinfo').text()).toEqual('1 file'); - - var model = fileList.getModelForFile('test file'); - model.set({size: '100'}); - - expect($summary.find('.dirinfo').hasClass('hidden')).toEqual(true); - expect($summary.find('.fileinfo').text()).toEqual('1 file'); - }); - }) - describe('List rendering', function() { - it('renders a list of files using add()', function() { - expect(fileList.files.length).toEqual(0); - expect(fileList.files).toEqual([]); - fileList.setFiles(testFiles); - expect($('.files-fileList tr').length).toEqual(4); - expect(fileList.files.length).toEqual(4); - expect(fileList.files).toEqual(testFiles); - }); - it('updates summary using the file sizes', function() { - var $summary; - fileList.setFiles(testFiles); - $summary = $('.files-filestable .summary'); - expect($summary.hasClass('hidden')).toEqual(false); - expect($summary.find('.dirinfo').text()).toEqual('1 folder'); - expect($summary.find('.fileinfo').text()).toEqual('3 files'); - expect($summary.find('.filesize').text()).toEqual('69 KB'); - }); - it('shows headers, summary and hide empty content message after setting files', function(){ - fileList.setFiles(testFiles); - expect($('.files-filestable thead th').hasClass('hidden')).toEqual(false); - expect($('.emptyfilelist.emptycontent').hasClass('hidden')).toEqual(true); - expect(fileList.$el.find('.summary').hasClass('hidden')).toEqual(false); - }); - it('hides headers, summary and show empty content message after setting empty file list', function(){ - fileList.setFiles([]); - expect($('.files-filestable thead th').hasClass('hidden')).toEqual(true); - expect($('.emptyfilelist.emptycontent').hasClass('hidden')).toEqual(false); - expect($('.emptyfilelist.emptycontent .uploadmessage').hasClass('hidden')).toEqual(false); - expect(fileList.$el.find('.summary').hasClass('hidden')).toEqual(true); - }); - it('hides headers, upload message, and summary when list is empty and user has no creation permission', function(){ - $('#permissions').val(0); - fileList.setFiles([]); - expect($('.files-filestable thead th').hasClass('hidden')).toEqual(true); - expect($('.emptyfilelist.emptycontent').hasClass('hidden')).toEqual(false); - expect($('.emptyfilelist.emptycontent .uploadmessage').hasClass('hidden')).toEqual(true); - expect(fileList.$el.find('.summary').hasClass('hidden')).toEqual(true); - }); - it('calling findFileEl() can find existing file element', function() { - fileList.setFiles(testFiles); - expect(fileList.findFileEl('Two.jpg').length).toEqual(1); - }); - it('calling findFileEl() returns empty when file not found in file', function() { - fileList.setFiles(testFiles); - expect(fileList.findFileEl('unexist.dat').length).toEqual(0); - }); - it('only add file if in same current directory', function() { - fileList.changeDirectory('/current dir', false, true); - var fileData = { - type: 'file', - name: 'testFile.txt', - directory: '/current dir' - }; - fileList.add(fileData); - expect(fileList.findFileEl('testFile.txt').length).toEqual(1); - }); - it('triggers "fileActionsReady" event after update', function() { - var handler = sinon.stub(); - fileList.$fileList.on('fileActionsReady', handler); - fileList.setFiles(testFiles); - expect(handler.calledOnce).toEqual(true); - expect(handler.getCall(0).args[0].$files.length).toEqual(testFiles.length); - }); - it('triggers "fileActionsReady" event after single add', function() { - var handler = sinon.stub(); - var $tr; - fileList.setFiles(testFiles); - fileList.$fileList.on('fileActionsReady', handler); - $tr = fileList.add({name: 'test.txt'}); - expect(handler.calledOnce).toEqual(true); - expect(handler.getCall(0).args[0].$files.is($tr)).toEqual(true); - }); - it('triggers "fileActionsReady" event after next page load with the newly appended files', function() { - var handler = sinon.stub(); - fileList.setFiles(generateFiles(0, 64)); - fileList.$fileList.on('fileActionsReady', handler); - fileList._nextPage(); - expect(handler.calledOnce).toEqual(true); - expect(handler.getCall(0).args[0].$files.length).toEqual(fileList.pageSize()); - }); - it('does not trigger "fileActionsReady" event after single add with silent argument', function() { - var handler = sinon.stub(); - fileList.setFiles(testFiles); - fileList.$fileList.on('fileActionsReady', handler); - fileList.add({name: 'test.txt'}, {silent: true}); - expect(handler.notCalled).toEqual(true); - }); - it('triggers "updated" event after update', function() { - var handler = sinon.stub(); - fileList.$fileList.on('updated', handler); - fileList.setFiles(testFiles); - expect(handler.calledOnce).toEqual(true); - }); - it('does not update summary when removing non-existing files', function() { - var $summary; - // single file - fileList.setFiles([testFiles[0]]); - $summary = $('.files-filestable .summary'); - expect($summary.hasClass('hidden')).toEqual(false); - expect($summary.find('.dirinfo').hasClass('hidden')).toEqual(true); - expect($summary.find('.fileinfo').text()).toEqual('1 file'); - fileList.remove('unexist.txt'); - expect($summary.hasClass('hidden')).toEqual(false); - expect($summary.find('.dirinfo').hasClass('hidden')).toEqual(true); - expect($summary.find('.fileinfo').text()).toEqual('1 file'); - }); - }); - describe('Filtered list rendering', function() { - it('filters the list of files using filter()', function() { - expect(fileList.files.length).toEqual(0); - expect(fileList.files).toEqual([]); - fileList.setFiles(testFiles); - var $summary = $('.files-filestable .summary'); - var $nofilterresults = fileList.$el.find(".nofilterresults"); - expect($nofilterresults.length).toEqual(1); - expect($summary.hasClass('hidden')).toEqual(false); - - expect($('.files-fileList tr:not(.hidden)').length).toEqual(4); - expect(fileList.files.length).toEqual(4); - expect($summary.hasClass('hidden')).toEqual(false); - expect($nofilterresults.hasClass('hidden')).toEqual(true); - - fileList.setFilter('e'); - expect($('.files-fileList tr:not(.hidden)').length).toEqual(3); - expect(fileList.files.length).toEqual(4); - expect($summary.hasClass('hidden')).toEqual(false); - expect($summary.find('.dirinfo').text()).toEqual('1 folder'); - expect($summary.find('.fileinfo').text()).toEqual('2 files'); - expect($summary.find('.filter').text()).toEqual(" match \"e\""); - expect($nofilterresults.hasClass('hidden')).toEqual(true); - - fileList.setFilter('ee'); - expect($('.files-fileList tr:not(.hidden)').length).toEqual(1); - expect(fileList.files.length).toEqual(4); - expect($summary.hasClass('hidden')).toEqual(false); - expect($summary.find('.dirinfo').hasClass('hidden')).toEqual(true); - expect($summary.find('.fileinfo').text()).toEqual('1 file'); - expect($summary.find('.filter').text()).toEqual(" matches \"ee\""); - expect($nofilterresults.hasClass('hidden')).toEqual(true); - - fileList.setFilter('eee'); - expect($('.files-fileList tr:not(.hidden)').length).toEqual(0); - expect(fileList.files.length).toEqual(4); - expect($summary.hasClass('hidden')).toEqual(true); - expect($nofilterresults.hasClass('hidden')).toEqual(false); - - fileList.setFilter('ee'); - expect($('.files-fileList tr:not(.hidden)').length).toEqual(1); - expect(fileList.files.length).toEqual(4); - expect($summary.hasClass('hidden')).toEqual(false); - expect($summary.find('.dirinfo').hasClass('hidden')).toEqual(true); - expect($summary.find('.fileinfo').text()).toEqual('1 file'); - expect($summary.find('.filter').text()).toEqual(" matches \"ee\""); - expect($nofilterresults.hasClass('hidden')).toEqual(true); - - fileList.setFilter('e'); - expect($('.files-fileList tr:not(.hidden)').length).toEqual(3); - expect(fileList.files.length).toEqual(4); - expect($summary.hasClass('hidden')).toEqual(false); - expect($summary.find('.dirinfo').text()).toEqual('1 folder'); - expect($summary.find('.fileinfo').text()).toEqual('2 files'); - expect($summary.find('.filter').text()).toEqual(" match \"e\""); - expect($nofilterresults.hasClass('hidden')).toEqual(true); - - fileList.setFilter(''); - expect($('.files-fileList tr:not(.hidden)').length).toEqual(4); - expect(fileList.files.length).toEqual(4); - expect($summary.hasClass('hidden')).toEqual(false); - expect($summary.find('.dirinfo').text()).toEqual('1 folder'); - expect($summary.find('.fileinfo').text()).toEqual('3 files'); - expect($nofilterresults.hasClass('hidden')).toEqual(true); - }); - it('filters the list of non-rendered rows using filter()', function() { - var $summary = $('.files-filestable .summary'); - var $nofilterresults = fileList.$el.find(".nofilterresults"); - fileList.setFiles(generateFiles(0, 64)); - - fileList.setFilter('63'); - expect($('.files-fileList tr:not(.hidden)').length).toEqual(1); - expect($summary.hasClass('hidden')).toEqual(false); - expect($summary.find('.dirinfo').hasClass('hidden')).toEqual(true); - expect($summary.find('.fileinfo').text()).toEqual('1 file'); - expect($summary.find('.filter').text()).toEqual(" matches \"63\""); - expect($nofilterresults.hasClass('hidden')).toEqual(true); - }); - it('hides the emptyfiles notice when using filter()', function() { - expect(fileList.files.length).toEqual(0); - expect(fileList.files).toEqual([]); - fileList.setFiles([]); - var $summary = $('.files-filestable .summary'); - var $emptycontent = fileList.$el.find(".emptyfilelist.emptycontent"); - var $nofilterresults = fileList.$el.find(".nofilterresults"); - expect($emptycontent.length).toEqual(1); - expect($nofilterresults.length).toEqual(1); - - expect($('.files-fileList tr:not(.hidden)').length).toEqual(0); - expect(fileList.files.length).toEqual(0); - expect($summary.hasClass('hidden')).toEqual(true); - expect($emptycontent.hasClass('hidden')).toEqual(false); - expect($nofilterresults.hasClass('hidden')).toEqual(true); - - fileList.setFilter('e'); - expect($('.files-fileList tr:not(.hidden)').length).toEqual(0); - expect(fileList.files.length).toEqual(0); - expect($summary.hasClass('hidden')).toEqual(true); - expect($emptycontent.hasClass('hidden')).toEqual(true); - expect($nofilterresults.hasClass('hidden')).toEqual(false); - - fileList.setFilter(''); - expect($('.files-fileList tr:not(.hidden)').length).toEqual(0); - expect(fileList.files.length).toEqual(0); - expect($summary.hasClass('hidden')).toEqual(true); - expect($emptycontent.hasClass('hidden')).toEqual(false); - expect($nofilterresults.hasClass('hidden')).toEqual(true); - }); - it('does not show the emptyfiles or nofilterresults notice when the mask is active', function() { - expect(fileList.files.length).toEqual(0); - expect(fileList.files).toEqual([]); - fileList.showMask(); - fileList.setFiles(testFiles); - var $emptycontent = fileList.$el.find(".emptyfilelist.emptycontent"); - var $nofilterresults = fileList.$el.find(".nofilterresults"); - expect($emptycontent.length).toEqual(1); - expect($nofilterresults.length).toEqual(1); - - expect($emptycontent.hasClass('hidden')).toEqual(true); - expect($nofilterresults.hasClass('hidden')).toEqual(true); - - /* - fileList.setFilter('e'); - expect($emptycontent.hasClass('hidden')).toEqual(true); - expect($nofilterresults.hasClass('hidden')).toEqual(false); - */ - - fileList.setFilter(''); - expect($emptycontent.hasClass('hidden')).toEqual(true); - expect($nofilterresults.hasClass('hidden')).toEqual(true); - }); - }); - describe('Rendering next page on scroll', function() { - beforeEach(function() { - fileList.setFiles(generateFiles(0, 64)); - }); - it('renders only the first page', function() { - expect(fileList.files.length).toEqual(65); - expect($('.files-fileList tr').length).toEqual(20); - }); - it('renders the full first page despite hidden rows', function() { - window._nc_event_bus.emit('files:config:updated', { key: 'show_hidden', value: false }); - var files = _.map(generateFiles(0, 23), function(data) { - return _.extend(data, { - name: '.' + data.name - }); - }); - // only hidden files + one visible - files.push(testFiles[0]); - fileList.setFiles(files); - expect(fileList.files.length).toEqual(25); - // render 24 hidden elements + the visible one - expect($('.files-fileList tr').length).toEqual(25); - }); - it('renders the full first page despite hidden rows', function() { - window._nc_event_bus.emit('files:config:updated', { key: 'show_hidden', value: true }); - var files = _.map(generateFiles(0, 23), function(data) { - return _.extend(data, { - name: '.' + data.name - }); - }); - // only hidden files + one visible - files.push(testFiles[0]); - fileList.setFiles(files); - expect(fileList.files.length).toEqual(25); - // render 20 first hidden elements as visible - expect($('.files-fileList tr').length).toEqual(20); - }); - it('renders the second page when scrolling down (trigger nextPage)', function() { - // TODO: can't simulate scrolling here, so calling nextPage directly - fileList._nextPage(true); - expect($('.files-fileList tr').length).toEqual(40); - fileList._nextPage(true); - expect($('.files-fileList tr').length).toEqual(60); - fileList._nextPage(true); - expect($('.files-fileList tr').length).toEqual(65); - fileList._nextPage(true); - // stays at 65 - expect($('.files-fileList tr').length).toEqual(65); - }); - it('inserts into the DOM if insertion point is in the visible page ', function() { - fileList.add({ - id: 2000, - type: 'file', - name: 'File with index 15b.txt' - }); - expect($('.files-fileList tr').length).toEqual(21); - expect(fileList.findFileEl('File with index 15b.txt').index()).toEqual(16); - }); - it('does not inserts into the DOM if insertion point is not the visible page ', function() { - fileList.add({ - id: 2000, - type: 'file', - name: 'File with index 28b.txt' - }); - expect($('.files-fileList tr').length).toEqual(20); - expect(fileList.findFileEl('File with index 28b.txt').length).toEqual(0); - fileList._nextPage(true); - expect($('.files-fileList tr').length).toEqual(40); - expect(fileList.findFileEl('File with index 28b.txt').index()).toEqual(29); - }); - it('appends into the DOM when inserting a file after the last visible element', function() { - fileList.add({ - id: 2000, - type: 'file', - name: 'File with index 19b.txt' - }); - expect($('.files-fileList tr').length).toEqual(21); - fileList._nextPage(true); - expect($('.files-fileList tr').length).toEqual(41); - }); - it('appends into the DOM when inserting a file on the last page when visible', function() { - fileList._nextPage(true); - expect($('.files-fileList tr').length).toEqual(40); - fileList._nextPage(true); - expect($('.files-fileList tr').length).toEqual(60); - fileList._nextPage(true); - expect($('.files-fileList tr').length).toEqual(65); - fileList._nextPage(true); - fileList.add({ - id: 2000, - type: 'file', - name: 'File with index 88.txt' - }); - expect($('.files-fileList tr').length).toEqual(66); - fileList._nextPage(true); - expect($('.files-fileList tr').length).toEqual(66); - }); - it('shows additional page when appending a page of files and scrolling down', function() { - var newFiles = generateFiles(66, 81); - for (var i = 0; i < newFiles.length; i++) { - fileList.add(newFiles[i]); - } - expect($('.files-fileList tr').length).toEqual(20); - fileList._nextPage(true); - expect($('.files-fileList tr').length).toEqual(40); - fileList._nextPage(true); - expect($('.files-fileList tr').length).toEqual(60); - fileList._nextPage(true); - expect($('.files-fileList tr').length).toEqual(80); - fileList._nextPage(true); - expect($('.files-fileList tr').length).toEqual(81); - fileList._nextPage(true); - expect($('.files-fileList tr').length).toEqual(81); - }); - it('automatically renders next page when there are not enough elements visible', function() { - // delete the 15 first elements - for (var i = 0; i < 15; i++) { - fileList.remove(fileList.files[0].name); - } - // still makes sure that there are 20 elements visible, if any - expect($('.files-fileList tr').length).toEqual(25); - }); - }); - describe('file previews', function() { - var previewLoadStub; - - beforeEach(function() { - previewLoadStub = sinon.stub(OCA.Files.FileList.prototype, 'lazyLoadPreview'); - }); - afterEach(function() { - previewLoadStub.restore(); - }); - it('renders default file icon when none provided and no mime type is set', function() { - var fileData = { - name: 'testFile.txt' - }; - var $tr = fileList.add(fileData); - var $imgDiv = $tr.find('td.filename .thumbnail'); - expect(OC.TestUtil.getImageUrl($imgDiv)).toEqual(OC.getRootPath() + '/core/img/filetypes/file.svg'); - // tries to load preview - expect(previewLoadStub.calledOnce).toEqual(true); - }); - it('renders default icon for folder when none provided', function() { - var fileData = { - name: 'test dir', - mimetype: 'httpd/unix-directory' - }; - - var $tr = fileList.add(fileData); - var $imgDiv = $tr.find('td.filename .thumbnail'); - expect(OC.TestUtil.getImageUrl($imgDiv)).toEqual(OC.getRootPath() + '/core/img/filetypes/folder.svg'); - // no preview since it's a directory - expect(previewLoadStub.notCalled).toEqual(true); - }); - it('renders provided icon for file when provided', function() { - var fileData = new FileInfo({ - type: 'file', - name: 'test file', - icon: OC.getRootPath() + '/core/img/filetypes/application-pdf.svg', - mimetype: 'application/pdf' - }); - var $tr = fileList.add(fileData); - var $imgDiv = $tr.find('td.filename .thumbnail'); - expect(OC.TestUtil.getImageUrl($imgDiv)).toEqual(OC.getRootPath() + '/core/img/filetypes/application-pdf.svg'); - // try loading preview - expect(previewLoadStub.calledOnce).toEqual(true); - }); - it('renders provided icon for file when provided', function() { - var fileData = new FileInfo({ - name: 'somefile.pdf', - icon: OC.getRootPath() + '/core/img/filetypes/application-pdf.svg' - }); - - var $tr = fileList.add(fileData); - var $imgDiv = $tr.find('td.filename .thumbnail'); - expect(OC.TestUtil.getImageUrl($imgDiv)).toEqual(OC.getRootPath() + '/core/img/filetypes/application-pdf.svg'); - // try loading preview - expect(previewLoadStub.calledOnce).toEqual(true); - }); - it('renders provided icon for folder when provided', function() { - var fileData = new FileInfo({ - name: 'some folder', - mimetype: 'httpd/unix-directory', - icon: OC.getRootPath() + '/core/img/filetypes/folder-alt.svg' - }); - - var $tr = fileList.add(fileData); - var $imgDiv = $tr.find('td.filename .thumbnail'); - expect(OC.TestUtil.getImageUrl($imgDiv)).toEqual(OC.getRootPath() + '/core/img/filetypes/folder-alt.svg'); - // do not load preview for folders - expect(previewLoadStub.notCalled).toEqual(true); - }); - it('renders preview when no icon was provided', function() { - var fileData = { - type: 'file', - name: 'test file' - }; - var $tr = fileList.add(fileData); - var $td = $tr.find('td.filename'); - expect(OC.TestUtil.getImageUrl($td.find('.thumbnail'))) - .toEqual(OC.getRootPath() + '/core/img/filetypes/file.svg'); - expect(previewLoadStub.calledOnce).toEqual(true); - // third argument is callback - previewLoadStub.getCall(0).args[0].callback(OC.getRootPath() + '/somepath.png'); - expect(OC.TestUtil.getImageUrl($td.find('.thumbnail'))).toEqual(OC.getRootPath() + '/somepath.png'); - }); - it('does not render preview for directories', function() { - var fileData = { - type: 'dir', - mimetype: 'httpd/unix-directory', - name: 'test dir' - }; - var $tr = fileList.add(fileData); - var $td = $tr.find('td.filename'); - expect(OC.TestUtil.getImageUrl($td.find('.thumbnail'))).toEqual(OC.getRootPath() + '/core/img/filetypes/folder.svg'); - expect(previewLoadStub.notCalled).toEqual(true); - }); - it('render encrypted folder icon for encrypted root', function() { - var fileData = { - type: 'dir', - mimetype: 'httpd/unix-directory', - name: 'test dir', - isEncrypted: true - }; - var $tr = fileList.add(fileData); - var $td = $tr.find('td.filename'); - expect(OC.TestUtil.getImageUrl($td.find('.thumbnail'))).toEqual(OC.getRootPath() + '/core/img/filetypes/folder-encrypted.svg'); - expect(previewLoadStub.notCalled).toEqual(true); - }); - it('render encrypted folder icon for encrypted subdir', function() { - var fileData = { - type: 'dir', - mimetype: 'httpd/unix-directory', - name: 'test dir', - isEncrypted: true - }; - var $tr = fileList.add(fileData); - var $td = $tr.find('td.filename'); - expect(OC.TestUtil.getImageUrl($td.find('.thumbnail'))).toEqual(OC.getRootPath() + '/core/img/filetypes/folder-encrypted.svg'); - expect(previewLoadStub.notCalled).toEqual(true); - // default icon override - expect($tr.attr('data-icon')).toEqual(OC.getRootPath() + '/core/img/filetypes/folder-encrypted.svg'); - }); - it('render external storage icon for external storage root', function() { - var fileData = { - type: 'dir', - mimetype: 'httpd/unix-directory', - name: 'test dir', - mountType: 'external-root' - }; - var $tr = fileList.add(fileData); - var $td = $tr.find('td.filename'); - expect(OC.TestUtil.getImageUrl($td.find('.thumbnail'))).toEqual(OC.getRootPath() + '/core/img/filetypes/folder-external.svg'); - expect(previewLoadStub.notCalled).toEqual(true); - }); - it('render external storage icon for external storage subdir', function() { - var fileData = { - type: 'dir', - mimetype: 'httpd/unix-directory', - name: 'test dir', - mountType: 'external' - }; - var $tr = fileList.add(fileData); - var $td = $tr.find('td.filename'); - expect(OC.TestUtil.getImageUrl($td.find('.thumbnail'))).toEqual(OC.getRootPath() + '/core/img/filetypes/folder-external.svg'); - expect(previewLoadStub.notCalled).toEqual(true); - // default icon override - expect($tr.attr('data-icon')).toEqual(OC.getRootPath() + '/core/img/filetypes/folder-external.svg'); - }); - - }); - describe('viewer mode', function() { - it('enabling viewer mode hides files table and action buttons', function() { - fileList.setViewerMode(true); - expect($('.files-filestable').hasClass('hidden')).toEqual(true); - expect($('.actions').hasClass('hidden')).toEqual(true); - expect($('.notCreatable').hasClass('hidden')).toEqual(true); - }); - it('disabling viewer mode restores files table and action buttons', function() { - fileList.setViewerMode(true); - fileList.setViewerMode(false); - expect($('.files-filestable').hasClass('hidden')).toEqual(false); - expect($('.actions').hasClass('hidden')).toEqual(false); - expect($('.notCreatable').hasClass('hidden')).toEqual(true); - }); - it('disabling viewer mode restores files table and action buttons with correct permissions', function() { - $('#permissions').val(0); - fileList.setViewerMode(true); - fileList.setViewerMode(false); - expect($('.files-filestable').hasClass('hidden')).toEqual(false); - expect($('.actions').hasClass('hidden')).toEqual(true); - expect($('.notCreatable').hasClass('hidden')).toEqual(false); - }); - it('toggling viewer mode triggers event', function() { - var handler = sinon.stub(); - fileList.$el.on('changeViewerMode', handler); - fileList.setViewerMode(true); - expect(handler.calledOnce).toEqual(true); - expect(handler.getCall(0).args[0].viewerModeEnabled).toEqual(true); - - handler.reset(); - fileList.setViewerMode(false); - expect(handler.calledOnce).toEqual(true); - expect(handler.getCall(0).args[0].viewerModeEnabled).toEqual(false); - }); - }); - describe('loading file list', function() { - var deferredList; - var getFolderContentsStub; - - beforeEach(function() { - deferredList = $.Deferred(); - getFolderContentsStub = sinon.stub(filesClient, 'getFolderContents').returns(deferredList.promise()); - }); - afterEach(function() { - getFolderContentsStub.restore(); - }); - it('fetches file list from server and renders it when reload() is called', function(done) { - var reloading = fileList.reload(); - expect(getFolderContentsStub.calledOnce).toEqual(true); - expect(getFolderContentsStub.calledWith('/subdir')).toEqual(true); - deferredList.resolve(200, [testRoot].concat(testFiles)); - return reloading.then(function() { - expect($('.files-fileList tr').length).toEqual(4); - expect(fileList.findFileEl('One.txt').length).toEqual(1); - }).then(done, done); - }); - it('switches dir and fetches file list when calling changeDirectory()', function() { - fileList.changeDirectory('/anothersubdir'); - expect(fileList.getCurrentDirectory()).toEqual('/anothersubdir'); - expect(getFolderContentsStub.calledOnce).toEqual(true); - expect(getFolderContentsStub.calledWith('/anothersubdir')).toEqual(true); - }); - it('converts backslashes to slashes when calling changeDirectory()', function() { - fileList.changeDirectory('/another\\subdir'); - expect(fileList.getCurrentDirectory()).toEqual('/another/subdir'); - }); - it('switches to root dir when current directory is invalid', function() { - _.each([ - '..', - '/..', - '../', - '/../', - '/../abc', - '/abc/..', - '/abc/../', - '/../abc/', - '/foo%0Abar/', - '/foo%00bar/', - '/another\\subdir/../foo\\../bar\\..\\file/..\\folder/../' - ], function(path) { - fileList.changeDirectory(decodeURI(path)); - expect(fileList.getCurrentDirectory()).toEqual('/'); - }); - }); - it('allows paths with dotdot at the beginning or end', function() { - _.each([ - '/..abc', - '/def..', - '/...', - '/abc../def' - ], function(path) { - fileList.changeDirectory(path); - expect(fileList.getCurrentDirectory()).toEqual(path); - }); - }); - it('switches to root dir when current directory does not exist', function(done) { - var changing = fileList.changeDirectory('/unexist'); - - deferredList.reject(404); - - return changing.then(function() { - expect(fileList.getCurrentDirectory()).toEqual('/'); - }).then(done, done); - }); - it('switches to root dir when current directory returns 400', function(done) { - var changing = fileList.changeDirectory('/unexist'); - - deferredList.reject(400); - - return changing.then(function() { - expect(fileList.getCurrentDirectory()).toEqual('/'); - }).then(done, done); - }); - it('switches to root dir when current directory returns 405', function(done) { - var changing = fileList.changeDirectory('/unexist'); - - deferredList.reject(405); - - return changing.then(function() { - expect(fileList.getCurrentDirectory()).toEqual('/'); - }).then(done, done); - }); - it('switches to root dir when current directory is forbidden', function(done) { - var changing = fileList.changeDirectory('/unexist'); - - deferredList.reject(403); - - return changing.then(function() { - expect(fileList.getCurrentDirectory()).toEqual('/'); - }).then(done, done); - }); - it('switches to root dir when current directory is unavailable', function(done) { - var changing = fileList.changeDirectory('/unexist'); - - deferredList.reject(500); - - return changing.then(function() { - expect(fileList.getCurrentDirectory()).toEqual('/'); - }).then(done, done); - }); - it('shows mask before loading file list then hides it at the end', function(done) { - var showMaskStub = sinon.stub(fileList, 'showMask'); - var hideMaskStub = sinon.stub(fileList, 'hideMask'); - - var changing = fileList.changeDirectory('/anothersubdir'); - expect(showMaskStub.calledOnce).toEqual(true); - expect(hideMaskStub.calledOnce).toEqual(false); - deferredList.resolve(200, [testRoot].concat(testFiles)); - - return changing.then(function() { - expect(showMaskStub.calledOnce).toEqual(true); - expect(hideMaskStub.calledOnce).toEqual(true); - showMaskStub.restore(); - hideMaskStub.restore(); - }).then(done, done); - }); - it('triggers "changeDirectory" event when changing directory', function(done) { - var handler = sinon.stub(); - $('#app-content-files').on('changeDirectory', handler); - var changing = fileList.changeDirectory('/somedir'); - - deferredList.resolve(200, [testRoot].concat(testFiles)); - - return changing.then(function() { - expect(handler.calledOnce).toEqual(true); - expect(handler.getCall(0).args[0].dir).toEqual('/somedir'); - }).then(done, done); - }); - it('triggers "afterChangeDirectory" event with fileid after changing directory', function(done) { - var handler = sinon.stub(); - $('#app-content-files').on('afterChangeDirectory', handler); - var changing = fileList.changeDirectory('/somedir'); - - deferredList.resolve(200, [testRoot].concat(testFiles)); - - return changing.then(function() { - expect(handler.calledOnce).toEqual(true); - expect(handler.getCall(0).args[0].dir).toEqual('/somedir'); - expect(handler.getCall(0).args[0].fileId).toEqual(99); - }).then(done, done); - }); - it('changes the directory when receiving "urlChanged" event', function() { - $('#app-content-files').trigger(new $.Event('urlChanged', {view: 'files', dir: '/somedir'})); - expect(fileList.getCurrentDirectory()).toEqual('/somedir'); - }); - it('refreshes breadcrumb after update', function() { - var setDirSpy = sinon.spy(fileList.breadcrumb, 'setDirectory'); - fileList.changeDirectory('/anothersubdir'); - deferredList.resolve(200, [testRoot].concat(testFiles)); - // twice because setDirectory gets called by _setCurrentDir which - // gets called directly by changeDirectory and via reload() - expect(fileList.breadcrumb.setDirectory.calledTwice).toEqual(true); - expect(fileList.breadcrumb.setDirectory.calledWith('/anothersubdir')).toEqual(true); - setDirSpy.restore(); - getFolderContentsStub.restore(); - }); - it('prepends a slash to directory if none was given', function() { - fileList.changeDirectory(''); - expect(fileList.getCurrentDirectory()).toEqual('/'); - fileList.changeDirectory('noslash'); - expect(fileList.getCurrentDirectory()).toEqual('/noslash'); - }); - }); - describe('breadcrumb events', function() { - var deferredList; - var getFolderContentsStub; - - beforeEach(function() { - deferredList = $.Deferred(); - getFolderContentsStub = sinon.stub(filesClient, 'getFolderContents').returns(deferredList.promise()); - }); - afterEach(function() { - getFolderContentsStub.restore(); - }); - it('clicking on root breadcrumb changes directory to root', function() { - fileList.changeDirectory('/subdir/two/three with space/four/five'); - deferredList.resolve(200, [testRoot].concat(testFiles)); - var changeDirStub = sinon.stub(fileList, 'changeDirectory'); - fileList.breadcrumb.$el.find('.crumb:eq(1) > a').trigger({type: 'click', which: 1}); - - expect(changeDirStub.calledOnce).toEqual(true); - expect(changeDirStub.getCall(0).args[0]).toEqual('/'); - changeDirStub.restore(); - }); - it('clicking on breadcrumb changes directory', function() { - fileList.changeDirectory('/subdir/two/three with space/four/five'); - deferredList.resolve(200, [testRoot].concat(testFiles)); - var changeDirStub = sinon.stub(fileList, 'changeDirectory'); - fileList.breadcrumb.$el.find('.crumb:eq(4) > a').trigger({type: 'click', which: 1}); - - expect(changeDirStub.calledOnce).toEqual(true); - expect(changeDirStub.getCall(0).args[0]).toEqual('/subdir/two/three with space'); - changeDirStub.restore(); - }); - it('dropping files on breadcrumb calls move operation', function() { - var testDir = '/subdir/two/three with space/four/five'; - var moveStub = sinon.stub(filesClient, 'move'); - var deferredMove1 = $.Deferred(); - var deferredMove2 = $.Deferred(); - moveStub.onCall(0).returns(deferredMove1.promise()); - moveStub.onCall(1).returns(deferredMove2.promise()); - fileList.changeDirectory(testDir); - deferredList.resolve(200, [testRoot].concat(testFiles)); - var $crumb = fileList.breadcrumb.$el.find('.crumb:eq(4)'); - // no idea what this is but is required by the handler - var ui = { - helper: { - find: sinon.stub() - } - }; - // returns a list of tr that were dragged - ui.helper.find.returns([ - $(''), - $('') - ]); - // simulate drop event - var result = fileList._onDropOnBreadCrumb(new $.Event('drop', {target: $crumb}), ui).then(function(){ - expect(moveStub.callCount).toEqual(2); - expect(moveStub.getCall(0).args[0]).toEqual(testDir + '/One.txt'); - expect(moveStub.getCall(0).args[1]).toEqual('/subdir/two/three with space/One.txt'); - expect(moveStub.getCall(1).args[0]).toEqual(testDir + '/Two.jpg'); - expect(moveStub.getCall(1).args[1]).toEqual('/subdir/two/three with space/Two.jpg'); - moveStub.restore(); - }); - deferredMove1.resolve(201); - deferredMove2.resolve(201); - return result; - }); - it('dropping files on same dir breadcrumb does nothing', function() { - var testDir = '/subdir/two/three with space/four/five'; - var moveStub = sinon.stub(filesClient, 'move').returns($.Deferred().promise()); - fileList.changeDirectory(testDir); - deferredList.resolve(200, [testRoot].concat(testFiles)); - var $crumb = fileList.breadcrumb.$el.find('.crumb:last'); - // no idea what this is but is required by the handler - var ui = { - helper: { - find: sinon.stub() - } - }; - // returns a list of tr that were dragged - ui.helper.find.returns([ - $(''), - $('') - ]); - // simulate drop event - fileList._onDropOnBreadCrumb(new $.Event('drop', {target: $crumb}), ui); - - // no extra server request - expect(moveStub.notCalled).toEqual(true); - }); - }); - describe('Download Url', function() { - it('returns correct download URL for single files', function() { - expect(fileList.getDownloadUrl('some file.txt')) - .toEqual(OC.getRootPath() + '/remote.php/webdav/subdir/some%20file.txt'); - expect(fileList.getDownloadUrl('some file.txt', '/anotherpath/abc')) - .toEqual(OC.getRootPath() + '/remote.php/webdav/anotherpath/abc/some%20file.txt'); - fileList.changeDirectory('/', false, true); - expect(fileList.getDownloadUrl('some file.txt')) - .toEqual(OC.getRootPath() + '/remote.php/webdav/some%20file.txt'); - }); - it('returns correct download URL for multiple files', function() { - expect(fileList.getDownloadUrl(['a b c.txt', 'd e f.txt'])) - .toEqual(OC.getRootPath() + '/index.php/apps/files/ajax/download.php?dir=%2Fsubdir&files=%5B%22a%20b%20c.txt%22%2C%22d%20e%20f.txt%22%5D'); - }); - it('returns the correct ajax URL', function() { - expect(fileList.getAjaxUrl('test', {a:1, b:'x y'})) - .toEqual(OC.getRootPath() + '/index.php/apps/files/ajax/test.php?a=1&b=x%20y'); - }); - }); - describe('File selection', function() { - beforeEach(function() { - fileList.setFiles(testFiles); - }); - it('Selects a file when clicking its checkbox', function() { - var $tr = fileList.findFileEl('One.txt'); - expect($tr.find('input:checkbox').prop('checked')).toEqual(false); - $tr.find('td.selection input:checkbox').click(); - - expect($tr.find('input:checkbox').prop('checked')).toEqual(true); - }); - it('Selects a range when clicking on one file then Shift clicking on another one', function() { - var $tr = fileList.findFileEl('One.txt'); - var $tr2 = fileList.findFileEl('Three.pdf'); - var e; - $tr.find('td.selection input:checkbox').click(); - e = new $.Event('click'); - e.shiftKey = true; - $tr2.find('td.filename .name').trigger(e); - - expect($tr.find('input:checkbox').prop('checked')).toEqual(true); - expect($tr2.find('input:checkbox').prop('checked')).toEqual(true); - expect(fileList.findFileEl('Two.jpg').find('input:checkbox').prop('checked')).toEqual(true); - var selection = _.pluck(fileList.getSelectedFiles(), 'name'); - expect(selection.length).toEqual(3); - expect(selection).toContain('One.txt'); - expect(selection).toContain('Two.jpg'); - expect(selection).toContain('Three.pdf'); - }); - it('Selects a range when clicking on one file then Shift clicking on another one that is above the first one', function() { - var $tr = fileList.findFileEl('One.txt'); - var $tr2 = fileList.findFileEl('Three.pdf'); - var e; - $tr2.find('td.selection input:checkbox').click(); - e = new $.Event('click'); - e.shiftKey = true; - $tr.find('td.filename .name').trigger(e); - - expect($tr.find('input:checkbox').prop('checked')).toEqual(true); - expect($tr2.find('input:checkbox').prop('checked')).toEqual(true); - expect(fileList.findFileEl('Two.jpg').find('input:checkbox').prop('checked')).toEqual(true); - var selection = _.pluck(fileList.getSelectedFiles(), 'name'); - expect(selection.length).toEqual(3); - expect(selection).toContain('One.txt'); - expect(selection).toContain('Two.jpg'); - expect(selection).toContain('Three.pdf'); - }); - it('Selecting all files will automatically check "select all" checkbox', function() { - expect($('.select-all').prop('checked')).toEqual(false); - $('.files-fileList tr td.selection input:checkbox').click(); - expect($('.select-all').prop('checked')).toEqual(true); - }); - it('Selecting all files on the first visible page will not automatically check "select all" checkbox', function() { - fileList.setFiles(generateFiles(0, 41)); - expect($('.select-all').prop('checked')).toEqual(false); - $('.files-fileList tr td.selection input:checkbox').click(); - expect($('.select-all').prop('checked')).toEqual(false); - }); - it('Selecting all files also selects hidden files when invisible', function() { - window._nc_event_bus.emit('files:config:updated', { key: 'show_hidden', value: false }); - var $tr = fileList.add(new FileInfo({ - name: '.hidden', - type: 'dir', - mimetype: 'httpd/unix-directory', - size: 150 - })); - $('.select-all').click(); - expect($tr.find('td.selection input:checkbox').prop('checked')).toEqual(true); - expect(_.pluck(fileList.getSelectedFiles(), 'name')).toContain('.hidden'); - }); - it('Clicking "select all" will select/deselect all files', function() { - fileList.setFiles(generateFiles(0, 41)); - $('.select-all').click(); - expect($('.select-all').prop('checked')).toEqual(true); - $('.files-fileList tr input:checkbox').each(function() { - expect($(this).prop('checked')).toEqual(true); - }); - expect(_.pluck(fileList.getSelectedFiles(), 'name').length).toEqual(42); - - $('.select-all').click(); - expect($('.select-all').prop('checked')).toEqual(false); - - $('.files-fileList tr input:checkbox').each(function() { - expect($(this).prop('checked')).toEqual(false); - }); - expect(_.pluck(fileList.getSelectedFiles(), 'name').length).toEqual(0); - }); - it('Clicking "select all" then deselecting a file will uncheck "select all"', function() { - $('.select-all').click(); - expect($('.select-all').prop('checked')).toEqual(true); - - var $tr = fileList.findFileEl('One.txt'); - $tr.find('input:checkbox').click(); - - expect($('.select-all').prop('checked')).toEqual(false); - expect(_.pluck(fileList.getSelectedFiles(), 'name').length).toEqual(3); - }); - it('Updates the selection summary when doing a few manipulations with "Select all"', function() { - $('.select-all').click(); - expect($('.select-all').prop('checked')).toEqual(true); - - var $tr = fileList.findFileEl('One.txt'); - // unselect one - $tr.find('input:checkbox').click(); - - expect($('.select-all').prop('checked')).toEqual(false); - expect(_.pluck(fileList.getSelectedFiles(), 'name').length).toEqual(3); - - // select all - $('.select-all').click(); - expect($('.select-all').prop('checked')).toEqual(true); - expect(_.pluck(fileList.getSelectedFiles(), 'name').length).toEqual(4); - - // unselect one - $tr.find('input:checkbox').click(); - expect($('.select-all').prop('checked')).toEqual(false); - expect(_.pluck(fileList.getSelectedFiles(), 'name').length).toEqual(3); - - // re-select it - $tr.find('input:checkbox').click(); - expect($('.select-all').prop('checked')).toEqual(true); - expect(_.pluck(fileList.getSelectedFiles(), 'name').length).toEqual(4); - }); - it('Auto-selects files on next page when "select all" is checked', function() { - fileList.setFiles(generateFiles(0, 41)); - $('.select-all').click(); - - expect(fileList.$fileList.find('tr input:checkbox:checked').length).toEqual(20); - fileList._nextPage(true); - expect(fileList.$fileList.find('tr input:checkbox:checked').length).toEqual(40); - fileList._nextPage(true); - expect(fileList.$fileList.find('tr input:checkbox:checked').length).toEqual(42); - expect(_.pluck(fileList.getSelectedFiles(), 'name').length).toEqual(42); - }); - it('Selecting files updates selection summary', function() { - var $summary = $('.column-name a.name>span:first'); - expect($summary.text()).toEqual('Name'); - fileList.findFileEl('One.txt').find('input:checkbox').click(); - fileList.findFileEl('Three.pdf').find('input:checkbox').click(); - fileList.findFileEl('somedir').find('input:checkbox').click(); - expect($summary.text()).toEqual('1 folder and 2 files'); - }); - it('Unselecting files hides selection summary', function() { - var $summary = $('.column-name a.name>span:first'); - fileList.findFileEl('One.txt').find('input:checkbox').click().click(); - expect($summary.text()).toEqual('Name'); - }); - it('Displays the number of hidden files in selection summary if hidden files are invisible', function() { - window._nc_event_bus.emit('files:config:updated', { key: 'show_hidden', value: false }); - var $tr = fileList.add(new FileInfo({ - name: '.hidden', - type: 'dir', - mimetype: 'httpd/unix-directory', - size: 150 - })); - $('.select-all').click(); - var $summary = $('.column-name a.name>span:first'); - expect($summary.text()).toEqual('2 folders and 3 files (including 1 hidden)'); - }); - it('Does not displays the number of hidden files in selection summary if hidden files are visible', function() { - window._nc_event_bus.emit('files:config:updated', { key: 'show_hidden', value: true }); - var $tr = fileList.add(new FileInfo({ - name: '.hidden', - type: 'dir', - mimetype: 'httpd/unix-directory', - size: 150 - })); - $('.select-all').click(); - var $summary = $('.column-name a.name>span:first'); - expect($summary.text()).toEqual('2 folders and 3 files'); - }); - it('Toggling hidden file visibility updates selection summary', function() { - window._nc_event_bus.emit('files:config:updated', { key: 'show_hidden', value: false }); - var $tr = fileList.add(new FileInfo({ - name: '.hidden', - type: 'dir', - mimetype: 'httpd/unix-directory', - size: 150 - })); - $('.select-all').click(); - var $summary = $('.column-name a.name>span:first'); - expect($summary.text()).toEqual('2 folders and 3 files (including 1 hidden)'); - window._nc_event_bus.emit('files:config:updated', { key: 'show_hidden', value: true }); - expect($summary.text()).toEqual('2 folders and 3 files'); - }); - it('Select/deselect files shows/hides file actions', function() { - var $actions = $('.column-name .selectedActions'); - var $checkbox = fileList.findFileEl('One.txt').find('input:checkbox'); - expect($actions.hasClass('hidden')).toEqual(true); - $checkbox.click(); - expect($actions.hasClass('hidden')).toEqual(false); - $checkbox.click(); - expect($actions.hasClass('hidden')).toEqual(true); - }); - it('Selection is cleared when switching dirs', function() { - $('.select-all').click(); - var deferredList = $.Deferred(); - var getFolderContentsStub = sinon.stub(filesClient, 'getFolderContents').returns(deferredList.promise()); - - fileList.changeDirectory('/'); - - deferredList.resolve(200, [testRoot].concat(testFiles)); - - expect($('.select-all').prop('checked')).toEqual(false); - expect(_.pluck(fileList.getSelectedFiles(), 'name')).toEqual([]); - - getFolderContentsStub.restore(); - }); - it('getSelectedFiles returns the selected files even when they are on the next page', function() { - var selectedFiles; - fileList.setFiles(generateFiles(0, 41)); - $('.select-all').click(); - // unselect one to not have the "allFiles" case - fileList.$fileList.find('tr input:checkbox:first').click(); - - // only 20 files visible, must still return all the selected ones - selectedFiles = _.pluck(fileList.getSelectedFiles(), 'name'); - - expect(selectedFiles.length).toEqual(41); - }); - describe('clearing the selection', function() { - it('clears selected files selected individually calling setFiles()', function() { - var selectedFiles; - - fileList.setFiles(generateFiles(0, 41)); - fileList.$fileList.find('tr:eq(5) input:checkbox:first').click(); - fileList.$fileList.find('tr:eq(7) input:checkbox:first').click(); - - selectedFiles = _.pluck(fileList.getSelectedFiles(), 'name'); - expect(selectedFiles.length).toEqual(2); - - fileList.setFiles(generateFiles(0, 2)); - - selectedFiles = _.pluck(fileList.getSelectedFiles(), 'name'); - expect(selectedFiles.length).toEqual(0); - }); - it('clears selected files selected with select all when calling setFiles()', function() { - var selectedFiles; - - fileList.setFiles(generateFiles(0, 41)); - $('.select-all').click(); - - selectedFiles = _.pluck(fileList.getSelectedFiles(), 'name'); - expect(selectedFiles.length).toEqual(42); - - fileList.setFiles(generateFiles(0, 2)); - - selectedFiles = _.pluck(fileList.getSelectedFiles(), 'name'); - expect(selectedFiles.length).toEqual(0); - }); - }); - describe('Selection overlay', function() { - it('show doesnt show the copy/move action if one or more files are not copiable/movable', function () { - fileList.setFiles(testFiles); - $('#permissions').val(OC.PERMISSION_READ | OC.PERMISSION_UPDATE); - $('.select-all').click(); - expect(fileList.$el.find('.selectedActions .item-copyMove').hasClass('hidden')).toEqual(false); - expect(fileList.$el.find('.selectedActions .item-copyMove .label').text()).toEqual('Move or copy'); - testFiles[0].permissions = OC.PERMISSION_READ; - $('.select-all').click(); - fileList.setFiles(testFiles); - $('.select-all').click(); - expect(fileList.$el.find('.selectedActions .item-copyMove').hasClass('hidden')).toEqual(false); - expect(fileList.$el.find('.selectedActions .item-copyMove .label').text()).toEqual('Copy'); - testFiles[0].permissions = OC.PERMISSION_NONE; - $('.select-all').click(); - fileList.setFiles(testFiles); - $('.select-all').click(); - expect(fileList.$el.find('.selectedActions .item-copyMove').hasClass('hidden')).toEqual(true); - }); - it('show doesnt show the download action if one or more files are not downloadable', function () { - fileList.setFiles(testFiles); - $('#permissions').val(OC.PERMISSION_READ | OC.PERMISSION_UPDATE); - $('.select-all').click(); - expect(fileList.$el.find('.selectedActions .item-download').hasClass('hidden')).toEqual(false); - testFiles[0].permissions = OC.PERMISSION_UPDATE; - $('.select-all').click(); - fileList.setFiles(testFiles); - $('.select-all').click(); - expect(fileList.$el.find('.selectedActions .item-download').hasClass('hidden')).toEqual(true); - }); - it('show doesnt show the delete action if one or more files are not deletable', function () { - fileList.setFiles(testFiles); - $('#permissions').val(OC.PERMISSION_READ | OC.PERMISSION_DELETE); - $('.select-all').click(); - expect(fileList.$el.find('.selectedActions .item-delete').hasClass('hidden')).toEqual(false); - testFiles[0].permissions = OC.PERMISSION_READ; - $('.select-all').click(); - fileList.setFiles(testFiles); - $('.select-all').click(); - expect(fileList.$el.find('.selectedActions .item-delete').hasClass('hidden')).toEqual(true); - }); - }); - describe('Actions', function() { - beforeEach(function() { - fileList.findFileEl('One.txt').find('input:checkbox').click(); - fileList.findFileEl('Three.pdf').find('input:checkbox').click(); - fileList.findFileEl('somedir').find('input:checkbox').click(); - }); - it('getSelectedFiles returns the selected file data', function() { - var files = fileList.getSelectedFiles(); - expect(files.length).toEqual(3); - expect(files[0]).toEqual({ - id: 1, - name: 'One.txt', - mimetype: 'text/plain', - mtime: 123456789, - type: 'file', - size: 12, - etag: 'abc', - quotaAvailableBytes: '-1', - permissions: OC.PERMISSION_ALL, - hasPreview: true, - isEncrypted: false - }); - expect(files[1]).toEqual({ - id: 3, - type: 'file', - name: 'Three.pdf', - mimetype: 'application/pdf', - mtime: 234560000, - size: 58009, - quotaAvailableBytes: '-1', - etag: '123', - permissions: OC.PERMISSION_ALL, - hasPreview: true, - isEncrypted: false - }); - expect(files[2]).toEqual({ - id: 4, - type: 'dir', - name: 'somedir', - mimetype: 'httpd/unix-directory', - mtime: 134560000, - size: 250, - quotaAvailableBytes: '-1', - etag: '456', - permissions: OC.PERMISSION_ALL, - hasPreview: true, - isEncrypted: false - }); - expect(files[0].id).toEqual(1); - expect(files[0].name).toEqual('One.txt'); - expect(files[1].id).toEqual(3); - expect(files[1].name).toEqual('Three.pdf'); - expect(files[2].id).toEqual(4); - expect(files[2].name).toEqual('somedir'); - }); - it('Removing a file removes it from the selection', function() { - fileList.remove('Three.pdf'); - var files = fileList.getSelectedFiles(); - expect(files.length).toEqual(2); - expect(files[0]).toEqual({ - id: 1, - name: 'One.txt', - mimetype: 'text/plain', - mtime: 123456789, - type: 'file', - size: 12, - quotaAvailableBytes: '-1', - etag: 'abc', - permissions: OC.PERMISSION_ALL, - hasPreview: true, - isEncrypted: false - }); - expect(files[1]).toEqual({ - id: 4, - type: 'dir', - name: 'somedir', - mimetype: 'httpd/unix-directory', - mtime: 134560000, - size: 250, - quotaAvailableBytes: '-1', - etag: '456', - permissions: OC.PERMISSION_ALL, - hasPreview: true, - isEncrypted: false - }); - }); - describe('Download', function() { - beforeEach(function() { - fileList.$el.find('.actions-selected').click(); - }); - - it('Opens download URL when clicking "Download"', function() { - $('.selectedActions .filesSelectMenu .download').click(); - expect(redirectStub.calledOnce).toEqual(true); - expect(redirectStub.getCall(0).args[0]).toContain(OC.getRootPath() + '/index.php/apps/files/ajax/download.php?dir=%2Fsubdir&files=%5B%22One.txt%22%2C%22Three.pdf%22%2C%22somedir%22%5D'); - redirectStub.restore(); - }); - it('Downloads root folder when all selected in root folder', function() { - fileList.changeDirectory('/', false, true); - $('.select-all').click(); - $('.selectedActions .filesSelectMenu .download').click(); - expect(redirectStub.calledOnce).toEqual(true); - expect(redirectStub.getCall(0).args[0]).toContain(OC.getRootPath() + '/index.php/apps/files/ajax/download.php?dir=%2F&files='); - }); - it('Downloads parent folder when all selected in subfolder', function() { - $('.select-all').click(); - $('.selectedActions .filesSelectMenu .download').click(); - expect(redirectStub.calledOnce).toEqual(true); - expect(redirectStub.getCall(0).args[0]).toContain(OC.getRootPath() + '/index.php/apps/files/ajax/download.php?dir=%2F&files=subdir'); - }); - - afterEach(function() { - fileList.$el.find('.actions-selected').click(); - }); - }); - - describe('Delete', function() { - var deleteStub, deferredDelete; - beforeEach(function() { - deferredDelete = $.Deferred(); - deleteStub = sinon.stub(filesClient, 'remove'); - fileList.$el.find('.actions-selected').click(); - }); - - afterEach(function() { - fileList.$el.find('.actions-selected').click(); - deleteStub.restore(); - }); - - it('Deletes selected files when "Delete" clicked', function(done) { - var deferred = $.Deferred(); - - deleteStub.returns(deferredDelete.promise()); - deleteStub.onCall(2).callsFake(function(){ - expect(deleteStub.callCount).toEqual(3); - expect(deleteStub.getCall(0).args[0]).toEqual('/subdir/One.txt'); - expect(deleteStub.getCall(1).args[0]).toEqual('/subdir/Three.pdf'); - expect(deleteStub.getCall(2).args[0]).toEqual('/subdir/somedir'); - return deferredDelete.promise(); - }); - - stub = sinon.stub(fileList._operationProgressBar, 'hideProgressBar').callsFake(function(){ - expect(fileList.findFileEl('One.txt').length).toEqual(0); - expect(fileList.findFileEl('Three.pdf').length).toEqual(0); - expect(fileList.findFileEl('somedir').length).toEqual(0); - expect(fileList.findFileEl('Two.jpg').length).toEqual(1); - done(); - deferred.resolve(); - }); - $('.selectedActions .filesSelectMenu .delete').click(); - deferredDelete.resolve(204); - return deferred.promise(); - }); - it('Deletes all files when all selected when "Delete" clicked', function(done) { - var deferred = $.Deferred(); - - deleteStub.returns(deferredDelete.promise()); - deleteStub.onCall(3).callsFake(function(){ - expect(deleteStub.getCall(0).args[0]).toEqual('/subdir/One.txt'); - expect(deleteStub.getCall(1).args[0]).toEqual('/subdir/Two.jpg'); - expect(deleteStub.getCall(2).args[0]).toEqual('/subdir/Three.pdf'); - expect(deleteStub.getCall(3).args[0]).toEqual('/subdir/somedir'); - return deferredDelete.promise(); - }); - - stub = sinon.stub(fileList._operationProgressBar, 'hideProgressBar').callsFake(function(){ - expect(fileList.isEmpty).toEqual(true); - expect(deleteStub.callCount).toEqual(4); - done(); - deferred.resolve(); - }); - $('.select-all').click(); - $('.selectedActions .filesSelectMenu .delete').click(); - deferredDelete.resolve(204); - - return deferred.promise(); - }); - }); - }); - it('resets the file selection on reload', function() { - fileList.$el.find('.select-all').click(); - fileList.reload(); - expect(fileList.$el.find('.select-all').prop('checked')).toEqual(false); - expect(fileList.getSelectedFiles()).toEqual([]); - }); - describe('Disabled selection', function() { - beforeEach(function() { - fileList._allowSelection = false; - fileList.setFiles(testFiles); - }); - it('Does not render checkboxes', function() { - expect(fileList.$fileList.find('.selectCheckBox').length).toEqual(0); - }); - it('Does not select a file with Ctrl or Shift if selection is not allowed', function() { - var $tr = fileList.findFileEl('One.txt'); - var $tr2 = fileList.findFileEl('Three.pdf'); - var e; - e = new $.Event('click'); - e.ctrlKey = true; - $tr.find('td.filename .name').trigger(e); - - // click on second entry, does not clear the selection - e = new $.Event('click'); - e.ctrlKey = true; - $tr2.find('td.filename .name').trigger(e); - - expect(fileList.getSelectedFiles().length).toEqual(0); - - // deselect now - e = new $.Event('click'); - e.shiftKey = true; - $tr2.find('td.filename .name').trigger(e); - expect(fileList.getSelectedFiles().length).toEqual(0); - }); - }); - }); - describe('File actions', function() { - it('Clicking on a file name will trigger default action', function() { - var actionStub = sinon.stub(); - fileList.setFiles(testFiles); - fileList.fileActions.registerAction({ - mime: 'text/plain', - name: 'Test', - type: OCA.Files.FileActions.TYPE_INLINE, - permissions: OC.PERMISSION_ALL, - icon: function() { - // Specify icon for history button - return OC.imagePath('core','actions/history'); - }, - actionHandler: actionStub - }); - fileList.fileActions.setDefault('text/plain', 'Test'); - var $tr = fileList.findFileEl('One.txt'); - $tr.find('td.filename .nametext').click(); - expect(actionStub.calledOnce).toEqual(true); - expect(actionStub.getCall(0).args[0]).toEqual('One.txt'); - var context = actionStub.getCall(0).args[1]; - expect(context.$file.is($tr)).toEqual(true); - expect(context.fileList).toBeDefined(); - expect(context.fileActions).toBeDefined(); - expect(context.dir).toEqual('/subdir'); - }); - it('Clicking on an empty space of the file row will trigger the "Details" action', function() { - var detailsActionStub = sinon.stub(); - fileList.setFiles(testFiles); - // Override the "Details" action set internally by the FileList for - // easier testing. - fileList.fileActions.registerAction({ - mime: 'all', - name: 'Details', - permissions: OC.PERMISSION_NONE, - actionHandler: detailsActionStub - }); - // Ensure that the action works even if fileActions.currentFile is - // not set. - fileList.fileActions.currentFile = null; - var $tr = fileList.findFileEl('One.txt'); - $tr.find('td.filesize').click(); - expect(detailsActionStub.calledOnce).toEqual(true); - expect(detailsActionStub.getCall(0).args[0]).toEqual('One.txt'); - var context = detailsActionStub.getCall(0).args[1]; - expect(context.$file.is($tr)).toEqual(true); - expect(context.fileList).toBe(fileList); - expect(context.fileActions).toBe(fileList.fileActions); - expect(context.dir).toEqual('/subdir'); - }); - it('redisplays actions when new actions have been registered', function() { - var actionStub = sinon.stub(); - var readyHandler = sinon.stub(); - var clock = sinon.useFakeTimers(); - var debounceStub = sinon.stub(_, 'debounce').callsFake(function(callback) { - return function() { - // defer instead of debounce, to make it work with clock - _.defer(callback); - }; - }); - - // need to reinit the list to make the debounce call - fileList.destroy(); - fileList = new OCA.Files.FileList($('#app-content-files')); - - fileList.setFiles(testFiles); - - fileList.$fileList.on('fileActionsReady', readyHandler); - - fileList.fileActions.registerAction({ - mime: 'text/plain', - name: 'Test', - type: OCA.Files.FileActions.TYPE_INLINE, - permissions: OC.PERMISSION_ALL, - icon: function() { - // Specify icon for history button - return OC.imagePath('core','actions/history'); - }, - actionHandler: actionStub - }); - var $tr = fileList.findFileEl('One.txt'); - expect($tr.find('.action-test').length).toEqual(0); - expect(readyHandler.notCalled).toEqual(true); - - // update is delayed - clock.tick(100); - expect($tr.find('.action-test').length).toEqual(1); - expect(readyHandler.calledOnce).toEqual(true); - - clock.restore(); - debounceStub.restore(); - }); - }); - describe('Sorting files', function() { - - var getCurrentUserStub; - - beforeEach(function() { - getCurrentUserStub = sinon.stub(OC, 'getCurrentUser').returns({ - uid: 1, - displayName: 'user1' - }); - }); - - afterEach(function() { - getCurrentUserStub.restore(); - }); - - it('Toggles the sort indicator when clicking on a column header', function() { - var ASC_CLASS = fileList.SORT_INDICATOR_ASC_CLASS; - var DESC_CLASS = fileList.SORT_INDICATOR_DESC_CLASS; - var request; - var sortingUrl = OC.generateUrl('/apps/files/api/v1/sorting'); - fileList.$el.find('.column-size .columntitle').click(); - // moves triangle to size column, check indicator on name is hidden - expect( - fileList.$el.find('.column-name .sort-indicator').hasClass('hidden') - ).toEqual(true); - // check indicator on size is visible and defaults to descending - expect( - fileList.$el.find('.column-size .sort-indicator').hasClass('hidden') - ).toEqual(false); - expect( - fileList.$el.find('.column-size .sort-indicator').hasClass(DESC_CLASS) - ).toEqual(true); - // check if changes are persisted - expect(fakeServer.requests.length).toEqual(1); - request = fakeServer.requests[0]; - expect(request.url).toEqual(sortingUrl); - - // click again on size column, reverses direction - fileList.$el.find('.column-size .columntitle').click(); - expect( - fileList.$el.find('.column-size .sort-indicator').hasClass('hidden') - ).toEqual(false); - expect( - fileList.$el.find('.column-size .sort-indicator').hasClass(ASC_CLASS) - ).toEqual(true); - // check if changes are persisted - expect(fakeServer.requests.length).toEqual(2); - request = fakeServer.requests[1]; - expect(request.url).toEqual(sortingUrl); - - // click again on size column, reverses direction - fileList.$el.find('.column-size .columntitle').click(); - expect( - fileList.$el.find('.column-size .sort-indicator').hasClass('hidden') - ).toEqual(false); - expect( - fileList.$el.find('.column-size .sort-indicator').hasClass(DESC_CLASS) - ).toEqual(true); - expect(fakeServer.requests.length).toEqual(3); - request = fakeServer.requests[2]; - expect(request.url).toEqual(sortingUrl); - - // click on mtime column, moves indicator there - fileList.$el.find('.column-mtime .columntitle').click(); - expect( - fileList.$el.find('.column-size .sort-indicator').hasClass('hidden') - ).toEqual(true); - expect( - fileList.$el.find('.column-mtime .sort-indicator').hasClass('hidden') - ).toEqual(false); - expect( - fileList.$el.find('.column-mtime .sort-indicator').hasClass(DESC_CLASS) - ).toEqual(true); - expect(fakeServer.requests.length).toEqual(4); - request = fakeServer.requests[3]; - expect(request.url).toEqual(sortingUrl); - }); - it('Uses correct sort comparator when inserting files', function() { - testFiles.sort(OCA.Files.FileList.Comparators.size); - testFiles.reverse(); //default is descending - fileList.setFiles(testFiles); - fileList.$el.find('.column-size .columntitle').click(); - var newFileData = new FileInfo({ - id: 999, - name: 'new file.txt', - mimetype: 'text/plain', - size: 40001, - etag: '999' - }); - fileList.add(newFileData); - expect(fileList.findFileEl('Three.pdf').index()).toEqual(0); - expect(fileList.findFileEl('new file.txt').index()).toEqual(1); - expect(fileList.findFileEl('Two.jpg').index()).toEqual(2); - expect(fileList.findFileEl('somedir').index()).toEqual(3); - expect(fileList.findFileEl('One.txt').index()).toEqual(4); - expect(fileList.files.length).toEqual(5); - expect(fileList.$fileList.find('tr').length).toEqual(5); - }); - it('Uses correct reversed sort comparator when inserting files', function() { - testFiles.sort(OCA.Files.FileList.Comparators.size); - fileList.setFiles(testFiles); - fileList.$el.find('.column-size .columntitle').click(); - - // reverse sort - fileList.$el.find('.column-size .columntitle').click(); - var newFileData = new FileInfo({ - id: 999, - name: 'new file.txt', - mimetype: 'text/plain', - size: 40001, - etag: '999' - }); - fileList.add(newFileData); - expect(fileList.findFileEl('One.txt').index()).toEqual(0); - expect(fileList.findFileEl('somedir').index()).toEqual(1); - expect(fileList.findFileEl('Two.jpg').index()).toEqual(2); - expect(fileList.findFileEl('new file.txt').index()).toEqual(3); - expect(fileList.findFileEl('Three.pdf').index()).toEqual(4); - expect(fileList.files.length).toEqual(5); - expect(fileList.$fileList.find('tr').length).toEqual(5); - }); - it('does not sort when clicking on header whenever multiselect is enabled', function() { - var sortStub = sinon.stub(OCA.Files.FileList.prototype, 'setSort'); - - fileList.setFiles(testFiles); - fileList.findFileEl('One.txt').find('input:checkbox:first').click(); - - fileList.$el.find('.column-size .columntitle').click(); - - expect(sortStub.notCalled).toEqual(true); - - // can sort again after deselecting - fileList.findFileEl('One.txt').find('input:checkbox:first').click(); - - fileList.$el.find('.column-size .columntitle').click(); - - expect(sortStub.calledOnce).toEqual(true); - - sortStub.restore(); - }); - - describe('if no user logged in', function() { - beforeEach(function() { - getCurrentUserStub.returns({ - uid: null, - displayName: 'Guest' - }); - }); - - it('shouldn\'t send an update sort order request', function() { - OC.currentUser = false; - fileList.$el.find('.column-size .columntitle').click(); - // check if there was no request - expect(fakeServer.requests.length).toEqual(0); - }); - }); - - describe('with favorites', function() { - it('shows favorite files on top', function() { - testFiles.push(new FileInfo({ - id: 5, - type: 'file', - name: 'ZZY Before last file in ascending order', - mimetype: 'text/plain', - mtime: 999999998, - size: 9999998, - // Tags would be added by TagsPlugin - tags: [OC.TAG_FAVORITE], - }), new FileInfo({ - id: 6, - type: 'file', - name: 'ZZZ Last file in ascending order', - mimetype: 'text/plain', - mtime: 999999999, - size: 9999999, - // Tags would be added by TagsPlugin - tags: [OC.TAG_FAVORITE], - })); - - fileList.setFiles(testFiles); - - // Sort by name in ascending order (default sorting is by name - // in ascending order, but setFiles does not trigger a sort, so - // the files must be sorted before being set or a sort must be - // triggered afterwards by clicking on the header). - fileList.$el.find('.column-name .columntitle').click(); - fileList.$el.find('.column-name .columntitle').click(); - - expect(fileList.findFileEl('ZZY Before last file in ascending order').index()).toEqual(0); - expect(fileList.findFileEl('ZZZ Last file in ascending order').index()).toEqual(1); - expect(fileList.findFileEl('somedir').index()).toEqual(2); - expect(fileList.findFileEl('One.txt').index()).toEqual(3); - expect(fileList.findFileEl('Three.pdf').index()).toEqual(4); - expect(fileList.findFileEl('Two.jpg').index()).toEqual(5); - - // Sort by size in ascending order - fileList.$el.find('.column-size .columntitle').click(); - fileList.$el.find('.column-size .columntitle').click(); - - expect(fileList.findFileEl('ZZY Before last file in ascending order').index()).toEqual(0); - expect(fileList.findFileEl('ZZZ Last file in ascending order').index()).toEqual(1); - expect(fileList.findFileEl('One.txt').index()).toEqual(2); - expect(fileList.findFileEl('somedir').index()).toEqual(3); - expect(fileList.findFileEl('Two.jpg').index()).toEqual(4); - expect(fileList.findFileEl('Three.pdf').index()).toEqual(5); - - // Sort by modification time in ascending order - fileList.$el.find('.column-mtime .columntitle').click(); - fileList.$el.find('.column-mtime .columntitle').click(); - - expect(fileList.findFileEl('ZZY Before last file in ascending order').index()).toEqual(0); - expect(fileList.findFileEl('ZZZ Last file in ascending order').index()).toEqual(1); - expect(fileList.findFileEl('One.txt').index()).toEqual(2); - expect(fileList.findFileEl('somedir').index()).toEqual(3); - expect(fileList.findFileEl('Three.pdf').index()).toEqual(4); - expect(fileList.findFileEl('Two.jpg').index()).toEqual(5); - }); - it('shows favorite files on top also when using descending order', function() { - testFiles.push(new FileInfo({ - id: 5, - type: 'file', - name: 'AAB Before last file in descending order', - mimetype: 'text/plain', - mtime: 2, - size: 2, - // Tags would be added by TagsPlugin - tags: [OC.TAG_FAVORITE], - }), new FileInfo({ - id: 6, - type: 'file', - name: 'AAA Last file in descending order', - mimetype: 'text/plain', - mtime: 1, - size: 1, - // Tags would be added by TagsPlugin - tags: [OC.TAG_FAVORITE], - })); - - fileList.setFiles(testFiles); - - // Sort by name in descending order - fileList.$el.find('.column-name .columntitle').click(); - - expect(fileList.findFileEl('AAB Before last file in descending order').index()).toEqual(0); - expect(fileList.findFileEl('AAA Last file in descending order').index()).toEqual(1); - expect(fileList.findFileEl('Two.jpg').index()).toEqual(2); - expect(fileList.findFileEl('Three.pdf').index()).toEqual(3); - expect(fileList.findFileEl('One.txt').index()).toEqual(4); - expect(fileList.findFileEl('somedir').index()).toEqual(5); - - // Sort by size in descending order - fileList.$el.find('.column-size .columntitle').click(); - - expect(fileList.findFileEl('AAB Before last file in descending order').index()).toEqual(0); - expect(fileList.findFileEl('AAA Last file in descending order').index()).toEqual(1); - expect(fileList.findFileEl('Three.pdf').index()).toEqual(2); - expect(fileList.findFileEl('Two.jpg').index()).toEqual(3); - expect(fileList.findFileEl('somedir').index()).toEqual(4); - expect(fileList.findFileEl('One.txt').index()).toEqual(5); - - // Sort by modification time in descending order - fileList.$el.find('.column-mtime .columntitle').click(); - - expect(fileList.findFileEl('AAB Before last file in descending order').index()).toEqual(0); - expect(fileList.findFileEl('AAA Last file in descending order').index()).toEqual(1); - expect(fileList.findFileEl('Two.jpg').index()).toEqual(2); - expect(fileList.findFileEl('Three.pdf').index()).toEqual(3); - expect(fileList.findFileEl('somedir').index()).toEqual(4); - expect(fileList.findFileEl('One.txt').index()).toEqual(5); - }); - }); - }); - describe('create file', function() { - var deferredCreate; - var deferredInfo; - var createStub; - var getFileInfoStub; - - beforeEach(function() { - deferredCreate = $.Deferred(); - deferredInfo = $.Deferred(); - createStub = sinon.stub(filesClient, 'putFileContents') - .returns(deferredCreate.promise()); - getFileInfoStub = sinon.stub(filesClient, 'getFileInfo') - .returns(deferredInfo.promise()); - }); - afterEach(function() { - createStub.restore(); - getFileInfoStub.restore(); - }); - - it('creates file with given name and adds it to the list', function(done) { - var creating = fileList.createFile('test.txt'); - - expect(createStub.calledOnce).toEqual(true); - expect(createStub.getCall(0).args[0]).toEqual('/subdir/test.txt'); - expect(createStub.getCall(0).args[2]).toEqual({ - contentType: 'text/plain', - overwrite: true - }); - - deferredCreate.resolve(200); - - expect(getFileInfoStub.calledOnce).toEqual(true); - expect(getFileInfoStub.getCall(0).args[0]).toEqual('/subdir/test.txt'); - - deferredInfo.resolve( - 200, - new FileInfo({ - path: '/subdir', - name: 'test.txt', - mimetype: 'text/plain' - }) - ); - - return creating.then(function() { - var $tr = fileList.findFileEl('test.txt'); - expect($tr.length).toEqual(1); - expect($tr.attr('data-mime')).toEqual('text/plain'); - }).then(done, done); - }); - // TODO: error cases - // TODO: unique name cases - }); - describe('create folder', function() { - var deferredCreate; - var deferredInfo; - var createStub; - var getFileInfoStub; - - beforeEach(function() { - deferredCreate = $.Deferred(); - deferredInfo = $.Deferred(); - createStub = sinon.stub(filesClient, 'createDirectory') - .returns(deferredCreate.promise()); - getFileInfoStub = sinon.stub(filesClient, 'getFileInfo') - .returns(deferredInfo.promise()); - }); - afterEach(function() { - createStub.restore(); - getFileInfoStub.restore(); - }); - - it('creates folder with given name and adds it to the list', function(done) { - var creating = fileList.createDirectory('sub dir'); - - expect(createStub.calledOnce).toEqual(true); - expect(createStub.getCall(0).args[0]).toEqual('/subdir/sub dir'); - - deferredCreate.resolve(200); - - expect(getFileInfoStub.calledOnce).toEqual(true); - expect(getFileInfoStub.getCall(0).args[0]).toEqual('/subdir/sub dir'); - - deferredInfo.resolve( - 200, - new FileInfo({ - path: '/subdir', - name: 'sub dir', - mimetype: 'httpd/unix-directory' - }) - ); - - return creating.then(function() { - var $tr = fileList.findFileEl('sub dir'); - expect($tr.length).toEqual(1); - expect($tr.attr('data-mime')).toEqual('httpd/unix-directory'); - }).then(done, done); - }); - // TODO: error cases - // TODO: unique name cases - }); - describe('addAndFetchFileInfo', function() { - var getFileInfoStub; - var getFileInfoDeferred; - - beforeEach(function() { - getFileInfoDeferred = $.Deferred(); - getFileInfoStub = sinon.stub(OC.Files.Client.prototype, 'getFileInfo'); - getFileInfoStub.returns(getFileInfoDeferred.promise()); - }); - afterEach(function() { - getFileInfoStub.restore(); - }); - it('does not fetch if the given folder is not the current one', function() { - var promise = fileList.addAndFetchFileInfo('testfile.txt', '/another'); - expect(getFileInfoStub.notCalled).toEqual(true); - - expect(promise.state()).toEqual('resolved'); - }); - it('fetches info when folder is the current one', function(done) { - fileList.addAndFetchFileInfo('testfile.txt', '/subdir'); - - return Promise.resolve().then(function() { - expect(getFileInfoStub.calledOnce).toEqual(true); - expect(getFileInfoStub.getCall(0).args[0]).toEqual('/subdir/testfile.txt'); - }).then(done, done); - }); - it('adds file data to list when fetching is done', function(done) { - var adding = fileList.addAndFetchFileInfo('testfile.txt', '/subdir'); - getFileInfoDeferred.resolve(200, { - name: 'testfile.txt', - size: 100 - }); - - return adding.then(function() { - expect(fileList.findFileEl('testfile.txt').attr('data-size')).toEqual('100'); - }).then(done, done); - }); - it('replaces file data to list when fetching is done', function(done) { - var adding = fileList.addAndFetchFileInfo('testfile.txt', '/subdir', {replace: true}); - fileList.add({ - name: 'testfile.txt', - size: 95 - }); - getFileInfoDeferred.resolve(200, { - name: 'testfile.txt', - size: 100 - }); - expect(fileList.findFileEl('testfile.txt').attr('data-size')).toEqual('95'); - return adding.then(function() { - expect(fileList.findFileEl('testfile.txt').attr('data-size')).toEqual('100'); - }).then(done, done); - }); - it('resolves promise with file data when fetching is done', function(done) { - var promise = fileList.addAndFetchFileInfo('testfile.txt', '/subdir', {replace: true}); - getFileInfoDeferred.resolve(200, { - name: 'testfile.txt', - size: 100 - }); - expect(promise.state()).toEqual('pending'); - return promise.then(function(status, data) { - expect(promise.state()).toEqual('resolved'); - expect(status).toEqual(200); - expect(data.name).toEqual('testfile.txt'); - expect(data.size).toEqual(100); - }).then(done, done); - }); - }); - /** - * Test upload mostly by testing the code inside the event handlers - * that were registered on the magic upload object - */ - describe('file upload', function() { - var uploadData; - var uploader; - - beforeEach(function() { - fileList.setFiles(testFiles); - uploader = fileList._uploader; - // simulate data structure from jquery.upload - uploadData = { - files: [{ - name: 'upload.txt' - }] - }; - }); - - afterEach(function() { - uploader = null; - uploadData = null; - }); - - describe('enableupload', function() { - it('sets up uploader when enableUpload is true', function() { - expect(fileList._uploader).toBeDefined(); - }); - it('does not sets up uploader when enableUpload is false', function() { - fileList.destroy(); - fileList = new OCA.Files.FileList($('#app-content-files'), { - filesClient: filesClient - }); - expect(fileList._uploader).toBeFalsy(); - }); - }); - - describe('adding files for upload', function() { - /** - * Simulate add event on the given target - * - * @return event object including the result - */ - function addFile(data) { - uploader.trigger('add', {}, data || {}); - } - - it('sets target dir to the current directory', function() { - addFile(uploadData); - expect(uploadData.targetDir).toEqual('/subdir'); - }); - }); - describe('dropping external files', function() { - - /** - * Simulate drop event on the given target - * - * @param $target target element to drop on - * @return event object including the result - */ - function dropOn($target, data) { - var eventData = { - delegatedEvent: { - target: $target - }, - preventDefault: function () { - }, - stopPropagation: function() { - } - }; - uploader.trigger('drop', eventData, data || {}); - return !!data.targetDir; - } - it('drop on a tr or crumb outside file list does not trigger upload', function() { - var $anotherTable = $('
    outside
    crumb
    '); - var ev; - $('#testArea').append($anotherTable); - ev = dropOn($anotherTable.find('tr'), uploadData); - expect(ev).toEqual(false); - - ev = dropOn($anotherTable.find('.crumb'), uploadData); - expect(ev).toEqual(false); - }); - it('drop on an element outside file list container does not trigger upload', function() { - var $anotherEl = $('
    outside
    '); - var ev; - $('#testArea').append($anotherEl); - ev = dropOn($anotherEl, uploadData); - - expect(ev).toEqual(false); - }); - it('drop on an element inside the table triggers upload', function() { - var ev; - ev = dropOn(fileList.$fileList.find('th:first'), uploadData); - - expect(ev).not.toEqual(false); - expect(uploadData.targetDir).toEqual('/subdir'); - }); - it('drop on an element on the table container triggers upload', function() { - var ev; - ev = dropOn($('#app-content-files'), uploadData); - - expect(ev).not.toEqual(false); - expect(uploadData.targetDir).toEqual('/subdir'); - }); - it('drop on an element inside the table does not trigger upload if no upload permission', function() { - $('#permissions').val(0); - var ev; - ev = dropOn(fileList.$fileList.find('th:first'), uploadData); - - expect(ev).toEqual(false); - expect(notificationStub.calledOnce).toEqual(true); - }); - it('drop on an folder does not trigger upload if no upload permission on that folder', function() { - var $tr = fileList.findFileEl('somedir'); - var ev; - $tr.data('permissions', OC.PERMISSION_READ); - ev = dropOn($tr, uploadData); - - expect(ev).toEqual(false); - expect(notificationStub.calledOnce).toEqual(true); - }); - it('drop on a file row inside the table triggers upload to current folder', function() { - var ev; - ev = dropOn(fileList.findFileEl('One.txt').find('td:first'), uploadData); - - expect(ev).not.toEqual(false); - expect(uploadData.targetDir).toEqual('/subdir'); - }); - it('drop on a folder row inside the table triggers upload to target folder', function() { - var ev; - ev = dropOn(fileList.findFileEl('somedir').find('td:eq(2)'), uploadData); - - expect(ev).not.toEqual(false); - expect(uploadData.targetDir).toEqual('/subdir/somedir'); - }); - it('drop on a breadcrumb inside the table triggers upload to target folder', function() { - var ev; - fileList.changeDirectory('a/b/c/d'); - ev = dropOn(fileList.$el.find('.crumb:eq(3)'), uploadData); - - expect(ev).not.toEqual(false); - expect(uploadData.targetDir).toEqual('/a/b'); - }); - it('renders upload indicator element for folders only', function() { - fileList.add({ - name: 'afolder', - type: 'dir', - mime: 'httpd/unix-directory' - }); - fileList.add({ - name: 'afile.txt', - type: 'file', - mime: 'text/plain' - }); - - expect(fileList.findFileEl('afolder').find('.uploadtext').length).toEqual(1); - expect(fileList.findFileEl('afile.txt').find('.uploadtext').length).toEqual(0); - }); - }); - - describe('after folder creation due to folder upload', function() { - it('fetches folder info', function() { - var fetchInfoStub = sinon.stub(fileList, 'addAndFetchFileInfo'); - - uploader.trigger('createdfolder', '/subdir/newfolder'); - - expect(fetchInfoStub.calledOnce).toEqual(true); - expect(fetchInfoStub.getCall(0).args[0]).toEqual('newfolder'); - expect(fetchInfoStub.getCall(0).args[1]).toEqual('/subdir'); - - fetchInfoStub.restore(); - }); - }); - - describe('after upload', function() { - var fetchInfoStub; - - beforeEach(function() { - fetchInfoStub = sinon.stub(fileList, 'addAndFetchFileInfo'); - - }); - afterEach(function() { - fetchInfoStub.restore(); - }); - - - function createUpload(name, dir) { - var jqXHR = { - status: 200 - }; - return { - getFileName: sinon.stub().returns(name), - getFullPath: sinon.stub().returns(dir), - data: { - jqXHR: jqXHR - } - }; - } - - /** - * Simulate add event on the given target - * - * @return event object including the result - */ - function addFile(data) { - var ev = new $.Event('done', { - jqXHR: {status: 200} - }); - var deferred = $.Deferred(); - fetchInfoStub.returns(deferred.promise()); - uploader.trigger('done', ev, data || {}); - return deferred; - } - - it('fetches file info', function() { - addFile(createUpload('upload.txt', '/subdir')); - expect(fetchInfoStub.calledOnce).toEqual(true); - expect(fetchInfoStub.getCall(0).args[0]).toEqual('upload.txt'); - expect(fetchInfoStub.getCall(0).args[1]).toEqual('/subdir'); - }); - it('highlights all uploaded files after all fetches are done', function(done) { - var highlightStub = sinon.stub(fileList, 'highlightFiles'); - var def1 = addFile(createUpload('upload.txt', '/subdir')); - var def2 = addFile(createUpload('upload2.txt', '/subdir')); - var def3 = addFile(createUpload('upload3.txt', '/another')); - uploader.trigger('stop', {}); - - expect(highlightStub.notCalled).toEqual(true); - def1.resolve(); - expect(highlightStub.notCalled).toEqual(true); - def2.resolve(); - def3.resolve(); - setTimeout(function() { - expect(highlightStub.callCount).toEqual(1); - expect(highlightStub.getCall(0).args[0]).toEqual(['upload.txt', 'upload2.txt']); - - highlightStub.restore(); - - done(); - }, 5); - }); - it('queries storage stats after all fetches are done', function(done) { - var statStub = sinon.stub(fileList, 'updateStorageStatistics'); - var highlightStub = sinon.stub(fileList, 'highlightFiles'); - var def1 = addFile(createUpload('upload.txt', '/subdir')); - var def2 = addFile(createUpload('upload2.txt', '/subdir')); - var def3 = addFile(createUpload('upload3.txt', '/another')); - uploader.trigger('stop', {}); - - expect(statStub.notCalled).toEqual(true); - def1.resolve(); - expect(statStub.notCalled).toEqual(true); - def2.resolve(); - def3.resolve(); - setTimeout(function() { - expect(statStub.calledOnce).toEqual(true); - - highlightStub.restore(); - - done(); - }, 3); - }); - }); - }); - describe('Handling errors', function () { - var deferredList; - var getFolderContentsStub; - var reloading; - - beforeEach(function() { - deferredList = $.Deferred(); - getFolderContentsStub = - sinon.stub(filesClient, 'getFolderContents'); - getFolderContentsStub.onCall(0).returns(deferredList.promise()); - getFolderContentsStub.onCall(1).returns($.Deferred().promise()); - reloading = fileList.reload(); - }); - afterEach(function() { - getFolderContentsStub.restore(); - fileList = undefined; - }); - it('redirects to root folder in case of forbidden access', function (done) { - deferredList.reject(403); - - return reloading.then(function() { - expect(fileList.getCurrentDirectory()).toEqual('/'); - expect(getFolderContentsStub.calledTwice).toEqual(true); - }).then(done, done); - }); - it('redirects to root folder and shows notification in case of internal server error', function (done) { - expect(notificationStub.notCalled).toEqual(true); - deferredList.reject(500); - - return reloading.then(function() { - expect(fileList.getCurrentDirectory()).toEqual('/'); - expect(getFolderContentsStub.calledTwice).toEqual(true); - expect(notificationStub.calledOnce).toEqual(true); - }).then(done, done); - }); - it('redirects to root folder and shows notification in case of storage not available', function (done) { - expect(notificationStub.notCalled).toEqual(true); - deferredList.reject(503, 'Storage is temporarily not available'); - - return reloading.then(function() { - expect(fileList.getCurrentDirectory()).toEqual('/'); - expect(getFolderContentsStub.calledTwice).toEqual(true); - expect(notificationStub.calledOnce).toEqual(true); - }).then(done, done); - }); - }); - describe('showFileBusyState', function() { - var $tr; - - beforeEach(function() { - fileList.setFiles(testFiles); - $tr = fileList.findFileEl('Two.jpg'); - }); - it('shows spinner on busy rows', function() { - fileList.showFileBusyState('Two.jpg', true); - expect($tr.hasClass('busy')).toEqual(true); - expect($tr.find('.thumbnail').parent().attr('class')) - .toContain('icon-loading-small'); - - fileList.showFileBusyState('Two.jpg', false); - expect($tr.hasClass('busy')).toEqual(false); - expect(OC.TestUtil.getImageUrl($tr.find('.thumbnail'))) - .toEqual(OC.imagePath('core', 'filetypes/image.svg')); - }); - it('accepts multiple input formats', function() { - _.each([ - 'Two.jpg', - ['Two.jpg'], - $tr, - [$tr] - ], function(testCase) { - fileList.showFileBusyState(testCase, true); - expect($tr.hasClass('busy')).toEqual(true); - fileList.showFileBusyState(testCase, false); - expect($tr.hasClass('busy')).toEqual(false); - }); - }); - }); - describe('elementToFile', function() { - var $tr; - - beforeEach(function() { - fileList.setFiles(testFiles); - $tr = fileList.findFileEl('One.txt'); - }); - - it('converts data attributes to file info structure', function() { - var fileInfo = fileList.elementToFile($tr); - expect(fileInfo.id).toEqual(1); - expect(fileInfo.name).toEqual('One.txt'); - expect(fileInfo.mtime).toEqual(123456789); - expect(fileInfo.etag).toEqual('abc'); - expect(fileInfo.permissions).toEqual(OC.PERMISSION_ALL); - expect(fileInfo.size).toEqual(12); - expect(fileInfo.mimetype).toEqual('text/plain'); - expect(fileInfo.type).toEqual('file'); - expect(fileInfo.path).not.toBeDefined(); - expect(fileInfo.isEncrypted).toEqual(false); - }); - it('sets isEncrypted attribute if data includes true e2eencrypted', function() { - testFiles[3].isEncrypted = true; - - fileList.setFiles(testFiles); - $tr = fileList.findFileEl('somedir'); - - var fileInfo = fileList.elementToFile($tr); - expect(fileInfo.isEncrypted).toEqual(true); - }); - it('adds path attribute if available', function() { - $tr.attr('data-path', '/subdir'); - var fileInfo = fileList.elementToFile($tr); - expect(fileInfo.path).toEqual('/subdir'); - }); - }); - describe('new file menu', function() { - var newFileMenuStub; - - beforeEach(function() { - newFileMenuStub = sinon.stub(OCA.Files.NewFileMenu.prototype, 'showAt'); - }); - afterEach(function() { - newFileMenuStub.restore(); - }) - it('renders new button when no legacy upload button exists', function() { - expect(fileList.$el.find('.button.upload').length).toEqual(0); - expect(fileList.$el.find('.button.new').length).toEqual(1); - }); - it('does not render new button when no legacy upload button exists (public page)', function() { - fileList.destroy(); - $('.files-controls').append(''); - fileList = new OCA.Files.FileList($('#app-content-files')); - expect(fileList.$el.find('.button.upload').length).toEqual(1); - expect(fileList.$el.find('.button.new').length).toEqual(0); - }); - it('opens the new file menu when clicking on the "New" button', function() { - var $button = fileList.$el.find('.button.new'); - $button.click(); - expect(newFileMenuStub.calledOnce).toEqual(true); - }); - it('does not open the new file menu when button is disabled', function() { - var $button = fileList.$el.find('.button.new'); - $button.addClass('disabled'); - $button.click(); - expect(newFileMenuStub.notCalled).toEqual(true); - }); - }); - describe('mount type detection', function() { - function testMountType(dirInfoId, dirInfoMountType, inputMountType, expectedMountType) { - var $tr; - fileList.dirInfo.id = dirInfoId; - fileList.dirInfo.mountType = dirInfoMountType; - $tr = fileList.add({ - type: 'dir', - mimetype: 'httpd/unix-directory', - name: 'test dir', - mountType: inputMountType - }); - - expect($tr.attr('data-mounttype')).toEqual(expectedMountType); - } - - it('leaves mount type as is if no parent exists', function() { - testMountType(null, null, 'external', 'external'); - testMountType(null, null, 'shared', 'shared'); - }); - it('detects share root if parent exists', function() { - testMountType(123, null, 'shared', 'shared-root'); - testMountType(123, 'shared', 'shared', 'shared'); - testMountType(123, 'shared-root', 'shared', 'shared'); - }); - it('detects external storage root if parent exists', function() { - testMountType(123, null, 'external', 'external-root'); - testMountType(123, 'external', 'external', 'external'); - testMountType(123, 'external-root', 'external', 'external'); - }); - }); - describe('file list should not refresh if url does not change', function() { - var fileListStub; - - beforeEach(function() { - fileListStub = sinon.stub(OCA.Files.FileList.prototype, 'changeDirectory'); - fileList._currentDirectory = '/subdir'; - }); - afterEach(function() { - fileListStub.restore(); - }); - it('File list must not be refreshed', function() { - $('#app-content-files').trigger(new $.Event('urlChanged', {dir: '/subdir'})); - expect(fileListStub.notCalled).toEqual(true); - }); - it('File list must be refreshed', function() { - $('#app-content-files').trigger(new $.Event('urlChanged', {dir: '/'})); - expect(fileListStub.notCalled).toEqual(false); - }); - }); -}); diff --git a/apps/files/tests/js/filesSpec.js b/apps/files/tests/js/filesSpec.js deleted file mode 100644 index 0ae15412fd0e7..0000000000000 --- a/apps/files/tests/js/filesSpec.js +++ /dev/null @@ -1,129 +0,0 @@ -/** - * SPDX-FileCopyrightText: 2018-2024 Nextcloud GmbH and Nextcloud contributors - * SPDX-FileCopyrightText: 2015 ownCloud, Inc. - * SPDX-License-Identifier: AGPL-3.0-or-later - */ - -describe('OCA.Files.Files tests', function() { - var Files = OCA.Files.Files; - - describe('File name validation', function() { - it('Validates correct file names', function() { - var fileNames = [ - 'boringname', - 'something.with.extension', - 'now with spaces', - '.a', - '..a', - '.dotfile', - 'single\'quote', - ' spaces before', - 'spaces after ', - 'allowed chars including the crazy ones $%&_-^@!,()[]{}=;#', - '汉字也能用', - 'und Ümläüte sind auch willkommen' - ]; - for ( var i = 0; i < fileNames.length; i++ ) { - var error = false; - try { - expect(Files.isFileNameValid(fileNames[i])).toEqual(true); - } - catch (e) { - error = e; - } - expect(error).toEqual(false); - } - }); - it('Detects invalid file names', function() { - var fileNames = [ - '', - ' ', - '.', - '..', - ' ..', - '.. ', - '. ', - ' .', - 'foo.part', - 'bar.filepart' - ]; - for ( var i = 0; i < fileNames.length; i++ ) { - var threwException = false; - try { - Files.isFileNameValid(fileNames[i]); - console.error('Invalid file name not detected:', fileNames[i]); - } - catch (e) { - threwException = true; - } - expect(threwException).toEqual(true); - } - }); - }); - describe('getDownloadUrl', function() { - it('returns the ajax download URL when filename and dir specified', function() { - var url = Files.getDownloadUrl('test file.txt', '/subdir'); - expect(url).toEqual(OC.getRootPath() + '/remote.php/webdav/subdir/test%20file.txt'); - }); - it('returns the webdav download URL when filename and root dir specified', function() { - var url = Files.getDownloadUrl('test file.txt', '/'); - expect(url).toEqual(OC.getRootPath() + '/remote.php/webdav/test%20file.txt'); - }); - it('returns the ajax download URL when multiple files specified', function() { - var url = Files.getDownloadUrl(['test file.txt', 'abc.txt'], '/subdir'); - expect(url).toEqual(OC.getRootPath() + '/index.php/apps/files/ajax/download.php?dir=%2Fsubdir&files=%5B%22test%20file.txt%22%2C%22abc.txt%22%5D'); - }); - }); - describe('handleDownload', function() { - var redirectStub; - var cookieStub; - var clock; - var testUrl; - - beforeEach(function() { - testUrl = 'http://example.com/owncloud/path/download.php'; - redirectStub = sinon.stub(OC, 'redirect'); - cookieStub = sinon.stub(OC.Util, 'isCookieSetToValue'); - clock = sinon.useFakeTimers(); - }); - afterEach(function() { - redirectStub.restore(); - cookieStub.restore(); - clock.restore(); - }); - - it('appends secret to url when no existing parameters', function() { - Files.handleDownload(testUrl); - expect(redirectStub.calledOnce).toEqual(true); - expect(redirectStub.getCall(0).args[0]).toContain(testUrl + '?downloadStartSecret='); - }); - it('appends secret to url with existing parameters', function() { - Files.handleDownload(testUrl + '?test=1'); - expect(redirectStub.calledOnce).toEqual(true); - expect(redirectStub.getCall(0).args[0]).toContain(testUrl + '?test=1&downloadStartSecret='); - }); - it('sets cookie and calls callback when cookie appears', function() { - var callbackStub = sinon.stub(); - var token; - Files.handleDownload(testUrl, callbackStub); - expect(redirectStub.calledOnce).toEqual(true); - token = OC.parseQueryString(redirectStub.getCall(0).args[0]).downloadStartSecret; - expect(token).toBeDefined(); - - expect(cookieStub.calledOnce).toEqual(true); - cookieStub.returns(false); - clock.tick(600); - - expect(cookieStub.calledTwice).toEqual(true); - expect(cookieStub.getCall(1).args[0]).toEqual('ocDownloadStarted'); - expect(cookieStub.getCall(1).args[1]).toEqual(token); - expect(callbackStub.notCalled).toEqual(true); - - cookieStub.returns(true); - clock.tick(2000); - - expect(cookieStub.callCount).toEqual(3); - expect(callbackStub.calledOnce).toEqual(true); - }); - }); -}); diff --git a/apps/files/tests/js/filesummarySpec.js b/apps/files/tests/js/filesummarySpec.js deleted file mode 100644 index da35ff11c14e2..0000000000000 --- a/apps/files/tests/js/filesummarySpec.js +++ /dev/null @@ -1,227 +0,0 @@ -/** - * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors - * SPDX-FileCopyrightText: 2016 ownCloud, Inc. - * SPDX-License-Identifier: AGPL-3.0-or-later - */ - -describe('OCA.Files.FileSummary tests', function() { - var FileSummary = OCA.Files.FileSummary; - var $container; - - beforeEach(function() { - $container = $('
    ').find('tr'); - }); - afterEach(function() { - $container = null; - }); - - it('renders summary as text', function() { - var s = new FileSummary($container); - s.setSummary({ - totalDirs: 5, - totalFiles: 2, - totalSize: 256000 - }); - expect($container.hasClass('hidden')).toEqual(false); - expect($container.find('.dirinfo').text()).toEqual('5 folders'); - expect($container.find('.fileinfo').text()).toEqual('2 files'); - expect($container.find('.filesize').text()).toEqual('250 KB'); - }); - it('hides summary when no files or folders', function() { - var s = new FileSummary($container); - s.setSummary({ - totalDirs: 0, - totalFiles: 0, - totalSize: 0 - }); - expect($container.hasClass('hidden')).toEqual(true); - }); - it('increases summary when adding files', function() { - var s = new FileSummary($container); - s.setSummary({ - totalDirs: 5, - totalFiles: 2, - totalSize: 256000 - }); - s.add({type: 'file', size: 256000}); - s.add({type: 'dir', size: 100}); - s.update(); - expect($container.hasClass('hidden')).toEqual(false); - expect($container.find('.dirinfo').text()).toEqual('6 folders'); - expect($container.find('.fileinfo').text()).toEqual('3 files'); - expect($container.find('.filesize').text()).toEqual('500 KB'); - expect(s.summary.totalDirs).toEqual(6); - expect(s.summary.totalFiles).toEqual(3); - expect(s.summary.totalSize).toEqual(512100); - }); - it('decreases summary when removing files', function() { - var s = new FileSummary($container); - s.setSummary({ - totalDirs: 5, - totalFiles: 2, - totalSize: 256000 - }); - s.remove({type: 'file', size: 128000}); - s.remove({type: 'dir', size: 100}); - s.update(); - expect($container.hasClass('hidden')).toEqual(false); - expect($container.find('.dirinfo').text()).toEqual('4 folders'); - expect($container.find('.fileinfo').text()).toEqual('1 file'); - expect($container.find('.filesize').text()).toEqual('125 KB'); - expect(s.summary.totalDirs).toEqual(4); - expect(s.summary.totalFiles).toEqual(1); - expect(s.summary.totalSize).toEqual(127900); - }); - - it('renders filtered summary as text', function() { - var s = new FileSummary($container); - s.setSummary({ - totalDirs: 5, - totalFiles: 2, - totalSize: 256000, - filter: 'foo' - }); - expect($container.hasClass('hidden')).toEqual(false); - expect($container.find('.dirinfo').text()).toEqual('5 folders'); - expect($container.find('.fileinfo').text()).toEqual('2 files'); - expect($container.find('.filter').text()).toEqual(' match "foo"'); - expect($container.find('.filesize').text()).toEqual('250 KB'); - }); - it('hides filtered summary when no files or folders', function() { - var s = new FileSummary($container); - s.setSummary({ - totalDirs: 0, - totalFiles: 0, - totalSize: 0, - filter: 'foo' - }); - expect($container.hasClass('hidden')).toEqual(true); - }); - it('increases filtered summary when adding files', function() { - var s = new FileSummary($container); - s.setSummary({ - totalDirs: 5, - totalFiles: 2, - totalSize: 256000, - filter: 'foo' - }); - s.add({name: 'bar.txt', type: 'file', size: 256000}); - s.add({name: 'foo.txt', type: 'file', size: 256001}); - s.add({name: 'bar', type: 'dir', size: 100}); - s.add({name: 'foo', type: 'dir', size: 102}); - s.update(); - expect($container.hasClass('hidden')).toEqual(false); - expect($container.find('.dirinfo').text()).toEqual('6 folders'); - expect($container.find('.fileinfo').text()).toEqual('3 files'); - expect($container.find('.filter').text()).toEqual(' match "foo"'); - expect($container.find('.filesize').text()).toEqual('500 KB'); - expect(s.summary.totalDirs).toEqual(6); - expect(s.summary.totalFiles).toEqual(3); - expect(s.summary.totalSize).toEqual(512103); - }); - it('decreases filtered summary when removing files', function() { - var s = new FileSummary($container); - s.setSummary({ - totalDirs: 5, - totalFiles: 2, - totalSize: 256000, - filter: 'foo' - }); - s.remove({name: 'bar.txt', type: 'file', size: 128000}); - s.remove({name: 'foo.txt', type: 'file', size: 127999}); - s.remove({name: 'bar', type: 'dir', size: 100}); - s.remove({name: 'foo', type: 'dir', size: 98}); - s.update(); - expect($container.hasClass('hidden')).toEqual(false); - expect($container.find('.dirinfo').text()).toEqual('4 folders'); - expect($container.find('.fileinfo').text()).toEqual('1 file'); - expect($container.find('.filter').text()).toEqual(' match "foo"'); - expect($container.find('.filesize').text()).toEqual('125 KB'); - expect(s.summary.totalDirs).toEqual(4); - expect(s.summary.totalFiles).toEqual(1); - expect(s.summary.totalSize).toEqual(127903); - }); - it('properly sum up pending folder sizes after adding', function() { - var s = new FileSummary($container); - s.setSummary({ - totalDirs: 0, - totalFiles: 0, - totalSize: 0 - }); - s.add({type: 'dir', size: -1}); - s.update(); - expect($container.hasClass('hidden')).toEqual(false); - expect($container.find('.dirinfo').text()).toEqual('1 folder'); - expect($container.find('.fileinfo').hasClass('hidden')).toEqual(true); - expect($container.find('.filesize').text()).toEqual('Pending'); - expect(s.summary.totalDirs).toEqual(1); - expect(s.summary.totalFiles).toEqual(0); - expect(s.summary.totalSize).toEqual(0); - }); - it('properly sum up pending folder sizes after remove', function() { - var s = new FileSummary($container); - s.setSummary({ - totalDirs: 0, - totalFiles: 0, - totalSize: 0 - }); - s.add({type: 'dir', size: -1}); - s.remove({type: 'dir', size: -1}); - s.update(); - expect($container.hasClass('hidden')).toEqual(true); - expect(s.summary.totalDirs).toEqual(0); - expect(s.summary.totalFiles).toEqual(0); - expect(s.summary.totalSize).toEqual(0); - }); - describe('hidden files', function() { - var config; - var summary; - - beforeEach(function() { - config = new OC.Backbone.Model(); - summary = new FileSummary($container, { - config: config - }); - }); - - it('renders hidden count section when hidden files are hidden', function() { - window._nc_event_bus.emit('files:config:updated', { key: 'show_hidden', value: false }); - - summary.add({name: 'abc', type: 'file', size: 256000}); - summary.add({name: 'def', type: 'dir', size: 100}); - summary.add({name: '.hidden', type: 'dir', size: 512000}); - summary.update(); - expect($container.hasClass('hidden')).toEqual(false); - expect($container.find('.dirinfo').text()).toEqual('2 folders'); - expect($container.find('.fileinfo').text()).toEqual('1 file'); - expect($container.find('.hiddeninfo').hasClass('hidden')).toEqual(false); - expect($container.find('.hiddeninfo').text()).toEqual(' (including 1 hidden)'); - expect($container.find('.filesize').text()).toEqual('750 KB'); - }); - it('does not render hidden count section when hidden files exist but are visible', function() { - window._nc_event_bus.emit('files:config:updated', { key: 'show_hidden', value: true }); - - summary.add({name: 'abc', type: 'file', size: 256000}); - summary.add({name: 'def', type: 'dir', size: 100}); - summary.add({name: '.hidden', type: 'dir', size: 512000}); - summary.update(); - expect($container.hasClass('hidden')).toEqual(false); - expect($container.find('.dirinfo').text()).toEqual('2 folders'); - expect($container.find('.fileinfo').text()).toEqual('1 file'); - expect($container.find('.hiddeninfo').hasClass('hidden')).toEqual(true); - expect($container.find('.filesize').text()).toEqual('750 KB'); - }); - it('does not render hidden count section when no hidden files exist', function() { - window._nc_event_bus.emit('files:config:updated', { key: 'show_hidden', value: false }); - - summary.add({name: 'abc', type: 'file', size: 256000}); - summary.add({name: 'def', type: 'dir', size: 100}); - summary.update(); - expect($container.hasClass('hidden')).toEqual(false); - expect($container.find('.dirinfo').text()).toEqual('1 folder'); - expect($container.find('.fileinfo').text()).toEqual('1 file'); - expect($container.find('.hiddeninfo').hasClass('hidden')).toEqual(true); - expect($container.find('.filesize').text()).toEqual('250 KB'); - }); - }); -}); diff --git a/apps/files/tests/js/mainfileinfodetailviewSpec.js b/apps/files/tests/js/mainfileinfodetailviewSpec.js deleted file mode 100644 index 1816e35b05076..0000000000000 --- a/apps/files/tests/js/mainfileinfodetailviewSpec.js +++ /dev/null @@ -1,271 +0,0 @@ -/** - * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors - * SPDX-FileCopyrightText: 2016 ownCloud, Inc. - * SPDX-License-Identifier: AGPL-3.0-or-later - */ - -describe('OCA.Files.MainFileInfoDetailView tests', function() { - var view, tooltipStub, fileActions, fileList, testFileInfo; - - beforeEach(function() { - tooltipStub = sinon.stub($.fn, 'tooltip'); - fileActions = new OCA.Files.FileActions(); - fileList = new OCA.Files.FileList($('
    '), { - fileActions: fileActions - }); - view = new OCA.Files.MainFileInfoDetailView({ - fileList: fileList, - fileActions: fileActions - }); - testFileInfo = new OCA.Files.FileInfoModel({ - id: 5, - name: 'One.txt', - mimetype: 'text/plain', - permissions: 31, - path: '/subdir', - size: 123456789, - etag: 'abcdefg', - mtime: Date.UTC(2015, 6, 17, 1, 2, 0, 0) - }); - }); - afterEach(function() { - view.remove(); - view = undefined; - tooltipStub.restore(); - - }); - describe('rendering', function() { - it('displays basic info', function() { - var clock = sinon.useFakeTimers(Date.UTC(2015, 6, 17, 1, 2, 0, 3)); - var dateExpected = OC.Util.formatDate(Date(Date.UTC(2015, 6, 17, 1, 2, 0, 0))); - view.setFileInfo(testFileInfo); - expect(view.$el.find('.fileName h3').text()).toEqual('One.txt'); - expect(view.$el.find('.fileName h3').attr('title')).toEqual('One.txt'); - expect(view.$el.find('.size').text()).toEqual('117.7 MB'); - expect(view.$el.find('.size').attr('title')).toEqual('123456789 bytes'); - expect(view.$el.find('.date').text()).toEqual('seconds ago'); - expect(view.$el.find('.date').attr('title')).toEqual(dateExpected); - clock.restore(); - }); - it('displays permalink', function() { - view.setFileInfo(testFileInfo); - expect(view.$el.find('.permalink').attr('href')) - .toEqual(OC.getProtocol() + '://' + OC.getHost() + OC.generateUrl('/f/5')); - }); - it('displays favorite icon', function() { - fileActions.registerAction({ - name: 'Favorite', - mime: 'all', - permissions: OC.PERMISSION_NONE - }); - - testFileInfo.set('tags', [OC.TAG_FAVORITE]); - view.setFileInfo(testFileInfo); - expect(view.$el.find('.action-favorite > span').hasClass('icon-starred')).toEqual(true); - expect(view.$el.find('.action-favorite > span').hasClass('icon-star')).toEqual(false); - - testFileInfo.set('tags', []); - view.setFileInfo(testFileInfo); - expect(view.$el.find('.action-favorite > span').hasClass('icon-starred')).toEqual(false); - expect(view.$el.find('.action-favorite > span').hasClass('icon-star')).toEqual(true); - }); - it('does not display favorite icon if favorite action is not available', function() { - testFileInfo.set('tags', [OC.TAG_FAVORITE]); - view.setFileInfo(testFileInfo); - expect(view.$el.find('.action-favorite').length).toEqual(0); - - testFileInfo.set('tags', []); - view.setFileInfo(testFileInfo); - expect(view.$el.find('.action-favorite').length).toEqual(0); - }); - it('displays mime icon', function() { - // File - var lazyLoadPreviewStub = sinon.stub(fileList, 'lazyLoadPreview'); - testFileInfo.set('mimetype', 'text/calendar'); - view.setFileInfo(testFileInfo); - - expect(lazyLoadPreviewStub.calledOnce).toEqual(true); - var previewArgs = lazyLoadPreviewStub.getCall(0).args; - expect(previewArgs[0].mime).toEqual('text/calendar'); - expect(previewArgs[0].path).toEqual('/subdir/One.txt'); - expect(previewArgs[0].etag).toEqual('abcdefg'); - - expect(view.$el.find('.thumbnail').hasClass('icon-loading')).toEqual(true); - - // returns mime icon first without img parameter - previewArgs[0].callback( - OC.imagePath('core', 'filetypes/text-calendar.svg') - ); - - // still loading - expect(view.$el.find('.thumbnail').hasClass('icon-loading')).toEqual(true); - - // preview loading failed, no prview - previewArgs[0].error(); - - // loading stopped, the mimetype icon gets displayed - expect(view.$el.find('.thumbnail').hasClass('icon-loading')).toEqual(false); - expect(view.$el.find('.thumbnail').css('background-image')) - .toContain('filetypes/text-calendar.svg'); - - // Folder - testFileInfo.set('mimetype', 'httpd/unix-directory'); - view.setFileInfo(testFileInfo); - - expect(view.$el.find('.thumbnail').css('background-image')) - .toContain('filetypes/folder.svg'); - - lazyLoadPreviewStub.restore(); - }); - it('uses icon from model if present in model', function() { - var lazyLoadPreviewStub = sinon.stub(fileList, 'lazyLoadPreview'); - testFileInfo.set('mimetype', 'httpd/unix-directory'); - testFileInfo.set('icon', OC.MimeType.getIconUrl('dir-external')); - view.setFileInfo(testFileInfo); - - expect(lazyLoadPreviewStub.notCalled).toEqual(true); - - expect(view.$el.find('.thumbnail').hasClass('icon-loading')).toEqual(false); - expect(view.$el.find('.thumbnail').css('background-image')) - .toContain('filetypes/folder-external.svg'); - - lazyLoadPreviewStub.restore(); - }); - it('displays thumbnail', function() { - var lazyLoadPreviewStub = sinon.stub(fileList, 'lazyLoadPreview'); - - testFileInfo.set('mimetype', 'text/plain'); - view.setFileInfo(testFileInfo); - - expect(lazyLoadPreviewStub.calledOnce).toEqual(true); - var previewArgs = lazyLoadPreviewStub.getCall(0).args; - expect(previewArgs[0].mime).toEqual('text/plain'); - expect(previewArgs[0].path).toEqual('/subdir/One.txt'); - expect(previewArgs[0].etag).toEqual('abcdefg'); - - expect(view.$el.find('.thumbnail').hasClass('icon-loading')).toEqual(true); - - // returns mime icon first without img parameter - previewArgs[0].callback( - OC.imagePath('core', 'filetypes/text-plain.svg') - ); - - // still loading - expect(view.$el.find('.thumbnail').hasClass('icon-loading')).toEqual(true); - - // return an actual (simulated) image - previewArgs[0].callback( - 'testimage', { - width: 100, - height: 200 - } - ); - - // loading stopped, image got displayed - expect(view.$el.find('.thumbnail').css('background-image')) - .toContain('testimage'); - - expect(view.$el.find('.thumbnail').hasClass('icon-loading')).toEqual(false); - - lazyLoadPreviewStub.restore(); - }); - it('does not show size if no size available', function() { - testFileInfo.unset('size'); - view.setFileInfo(testFileInfo); - - expect(view.$el.find('.size').length).toEqual(0); - }); - it('renders displayName instead of name if available', function() { - testFileInfo.set('displayName', 'hello.txt'); - view.setFileInfo(testFileInfo); - - expect(view.$el.find('.fileName h3').text()).toEqual('hello.txt'); - expect(view.$el.find('.fileName h3').attr('title')).toEqual('hello.txt'); - }); - it('rerenders when changes are made on the model', function() { - // Show the "Favorite" icon - fileActions.registerAction({ - name: 'Favorite', - mime: 'all', - permissions: OC.PERMISSION_NONE - }); - - view.setFileInfo(testFileInfo); - - testFileInfo.set('tags', [OC.TAG_FAVORITE]); - - expect(view.$el.find('.action-favorite > span').hasClass('icon-starred')).toEqual(true); - expect(view.$el.find('.action-favorite > span').hasClass('icon-star')).toEqual(false); - - testFileInfo.set('tags', []); - - expect(view.$el.find('.action-favorite > span').hasClass('icon-starred')).toEqual(false); - expect(view.$el.find('.action-favorite > span').hasClass('icon-star')).toEqual(true); - }); - it('unbinds change listener from model', function() { - // Show the "Favorite" icon - fileActions.registerAction({ - name: 'Favorite', - mime: 'all', - permissions: OC.PERMISSION_NONE - }); - - view.setFileInfo(testFileInfo); - view.setFileInfo(new OCA.Files.FileInfoModel({ - id: 999, - name: 'test.txt', - path: '/' - })); - - // set value on old model - testFileInfo.set('tags', [OC.TAG_FAVORITE]); - - // no change - expect(view.$el.find('.action-favorite > span').hasClass('icon-starred')).toEqual(false); - expect(view.$el.find('.action-favorite > span').hasClass('icon-star')).toEqual(true); - }); - }); - describe('events', function() { - it('triggers default action when clicking on the thumbnail', function() { - var actionHandler = sinon.stub(); - - fileActions.registerAction({ - name: 'Something', - mime: 'all', - permissions: OC.PERMISSION_READ, - actionHandler: actionHandler - }); - fileActions.setDefault('text/plain', 'Something'); - - view.setFileInfo(testFileInfo); - - view.$el.find('.thumbnail').click(); - - expect(actionHandler.calledOnce).toEqual(true); - expect(actionHandler.getCall(0).args[0]).toEqual('One.txt'); - expect(actionHandler.getCall(0).args[1].fileList).toEqual(fileList); - expect(actionHandler.getCall(0).args[1].fileActions).toEqual(fileActions); - expect(actionHandler.getCall(0).args[1].fileInfoModel).toEqual(testFileInfo); - }); - it('triggers "Favorite" action when clicking on the star', function() { - var actionHandler = sinon.stub(); - - fileActions.registerAction({ - name: 'Favorite', - mime: 'all', - permissions: OC.PERMISSION_READ, - actionHandler: actionHandler - }); - - view.setFileInfo(testFileInfo); - - view.$el.find('.action-favorite').click(); - - expect(actionHandler.calledOnce).toEqual(true); - expect(actionHandler.getCall(0).args[0]).toEqual('One.txt'); - expect(actionHandler.getCall(0).args[1].fileList).toEqual(fileList); - expect(actionHandler.getCall(0).args[1].fileActions).toEqual(fileActions); - expect(actionHandler.getCall(0).args[1].fileInfoModel).toEqual(testFileInfo); - }); - }); -}); diff --git a/apps/files/tests/js/newfilemenuSpec.js b/apps/files/tests/js/newfilemenuSpec.js deleted file mode 100644 index a642ad6d4db4b..0000000000000 --- a/apps/files/tests/js/newfilemenuSpec.js +++ /dev/null @@ -1,134 +0,0 @@ -/** - * SPDX-FileCopyrightText: 2018-2024 Nextcloud GmbH and Nextcloud contributors - * SPDX-FileCopyrightText: 2015 ownCloud, Inc. - * SPDX-License-Identifier: AGPL-3.0-or-later - */ - -describe('OCA.Files.NewFileMenu', function() { - var FileList = OCA.Files.FileList; - var menu, fileList, $uploadField, $trigger; - - beforeEach(function() { - // dummy upload button - var $container = $('
    '); - $uploadField = $(''); - $trigger = $('Menu'); - $container.append($uploadField).append($trigger); - $('#testArea').append($container); - - fileList = new FileList($container); - menu = new OCA.Files.NewFileMenu({ - fileList: fileList - }); - menu.showAt($trigger); - }); - afterEach(function() { - OC.hideMenus(); - fileList = null; - menu = null; - }); - - describe('rendering', function() { - it('renders menu items', function() { - var $items = menu.$el.find('.menuitem'); - expect($items.length).toEqual(2); - // label points to the file_upload_start item - var $item = $items.eq(0); - expect($item.is('label')).toEqual(true); - expect($item.attr('for')).toEqual('file_upload_start'); - }); - }); - describe('New file/folder', function() { - var $input; - var createDirectoryStub; - - beforeEach(function() { - createDirectoryStub = sinon.stub(FileList.prototype, 'createDirectory'); - menu.$el.find('.menuitem').eq(1).click(); - $input = menu.$el.find('form.filenameform input'); - }); - afterEach(function() { - createDirectoryStub.restore(); - }); - - it('sets default text in field', function() { - // text + submit - expect($input.length).toEqual(2); - expect($input.val()).toEqual('New folder'); - }); - it('prevents entering invalid file names', function() { - $input.val('..'); - $input.trigger(new $.Event('keyup', {keyCode: 13})); - $input.closest('form').submit(); - - expect(createDirectoryStub.notCalled).toEqual(true); - }); - it('prevents entering file names that already exist', function() { - var inListStub = sinon.stub(fileList, 'inList').returns(true); - $input.val('existing.txt'); - $input.trigger(new $.Event('keyup', {keyCode: 13})); - $input.closest('form').submit(); - - expect(createDirectoryStub.notCalled).toEqual(true); - inListStub.restore(); - }); - it('creates directory when clicking on create directory field', function() { - $input = menu.$el.find('form.filenameform input'); - $input.val('some folder'); - $input.trigger(new $.Event('keyup', {keyCode: 13})); - $input.closest('form').submit(); - - expect(createDirectoryStub.calledOnce).toEqual(true); - expect(createDirectoryStub.getCall(0).args[0]).toEqual('some folder'); - }); - }); - describe('custom entries', function() { - var oldPlugins; - var plugin; - var actionStub; - - beforeEach(function() { - oldPlugins = _.extend({}, OC.Plugins._plugins); - actionStub = sinon.stub(); - plugin = { - attach: function(menu) { - menu.addMenuEntry({ - id: 'file', - displayName: t('files_texteditor', 'Text file'), - templateName: t('files_texteditor', 'New text file.txt'), - iconClass: 'icon-filetype-text', - fileType: 'file', - actionHandler: actionStub - }); - } - }; - - OC.Plugins.register('OCA.Files.NewFileMenu', plugin); - menu = new OCA.Files.NewFileMenu({ - fileList: fileList - }); - menu.showAt($trigger); - }); - afterEach(function() { - OC.Plugins._plugins = oldPlugins; - }); - it('renders custom menu items', function() { - expect(menu.$el.find('.menuitem').length).toEqual(3); - expect(menu.$el.find('.menuitem[data-action=file]').length).toEqual(1); - }); - it('calls action handler when clicking on custom item', function() { - menu.$el.find('.menuitem').eq(2).click(); - var $input = menu.$el.find('form.filenameform input'); - $input.val('some name'); - $input.trigger(new $.Event('keyup', {keyCode: 13})); - $input.closest('form').submit(); - - expect(actionStub.calledOnce).toEqual(true); - expect(actionStub.getCall(0).args[0]).toEqual('some name'); - }); - it('switching fields removes the previous form', function() { - menu.$el.find('.menuitem').eq(2).click(); - expect(menu.$el.find('form').length).toEqual(1); - }); - }); -}); diff --git a/apps/files/tests/js/tagspluginspec.js b/apps/files/tests/js/tagspluginspec.js deleted file mode 100644 index 302c2f8a0f749..0000000000000 --- a/apps/files/tests/js/tagspluginspec.js +++ /dev/null @@ -1,153 +0,0 @@ -/** - * SPDX-FileCopyrightText: 2017-2024 Nextcloud GmbH and Nextcloud contributors - * SPDX-FileCopyrightText: 2016 ownCloud, Inc. - * SPDX-License-Identifier: AGPL-3.0-or-later - */ - -describe('OCA.Files.TagsPlugin tests', function() { - var fileList; - var testFiles; - - beforeEach(function() { - var $content = $('
    '); - $('#testArea').append($content); - // dummy file list - var $div = $( - '
    ' + - '' + - '' + - '' + - '
    ' + - '
    '); - $('#app-content').append($div); - - fileList = new OCA.Files.FileList($div); - OCA.Files.TagsPlugin.attach(fileList); - - testFiles = [{ - id: 1, - type: 'file', - name: 'One.txt', - path: '/subdir', - mimetype: 'text/plain', - size: 12, - permissions: OC.PERMISSION_ALL, - etag: 'abc', - shareOwner: 'User One', - isShareMountPoint: false, - tags: ['tag1', 'tag2'] - }]; - }); - afterEach(function() { - fileList.destroy(); - fileList = null; - }); - - describe('Favorites icon', function() { - it('renders favorite icon and extra data', function() { - var $favoriteMark, $tr; - fileList.setFiles(testFiles); - $tr = fileList.$el.find('tbody tr:first'); - $favoriteMark = $tr.find('.favorite-mark'); - expect($favoriteMark.length).toEqual(1); - expect($favoriteMark.hasClass('permanent')).toEqual(false); - - expect($tr.attr('data-tags').split('|')).toEqual(['tag1', 'tag2']); - expect($tr.attr('data-favorite')).not.toBeDefined(); - }); - it('renders permanent favorite icon and extra data', function() { - var $favoriteMark, $tr; - testFiles[0].tags.push(OC.TAG_FAVORITE); - fileList.setFiles(testFiles); - $tr = fileList.$el.find('tbody tr:first'); - $favoriteMark = $tr.find('.favorite-mark'); - expect($favoriteMark.length).toEqual(1); - expect($favoriteMark.hasClass('permanent')).toEqual(true); - - expect($tr.attr('data-tags').split('|')).toEqual(['tag1', 'tag2', OC.TAG_FAVORITE]); - expect($tr.attr('data-favorite')).toEqual('true'); - }); - }); - describe('Applying tags', function() { - it('through FileActionsMenu sends request to server and updates icon', function(done) { - var request; - fileList.setFiles(testFiles); - var $tr = fileList.findFileEl('One.txt'); - var $favoriteMark = $tr.find('.favorite-mark'); - var $showMenuAction = $tr.find('.action-menu'); - $showMenuAction.click(); - var $favoriteActionInMenu = $tr.find('.fileActionsMenu .action-favorite'); - $favoriteActionInMenu.click(); - - expect(fakeServer.requests.length).toEqual(1); - request = fakeServer.requests[0]; - expect(JSON.parse(request.requestBody)).toEqual({ - tags: ['tag1', 'tag2', OC.TAG_FAVORITE] - }); - request.respond(200, {'Content-Type': 'application/json'}, JSON.stringify({ - tags: ['tag1', 'tag2', 'tag3', OC.TAG_FAVORITE] - })); - - setTimeout(function () { - // re-read the element as it was re-inserted - $tr = fileList.findFileEl('One.txt'); - $favoriteMark = $tr.find('.favorite-mark'); - $showMenuAction = $tr.find('.action-menu'); - - expect($tr.attr('data-favorite')).toEqual('true'); - expect($tr.attr('data-tags').split('|')).toEqual(['tag1', 'tag2', 'tag3', OC.TAG_FAVORITE]); - expect(fileList.files[0].tags).toEqual(['tag1', 'tag2', 'tag3', OC.TAG_FAVORITE]); - expect($favoriteMark.find('.icon').hasClass('icon-star')).toEqual(false); - expect($favoriteMark.find('.icon').hasClass('icon-starred')).toEqual(true); - - // show again the menu and get the new action, as the menu was - // closed and removed (and with it, the previous action) when that - // action was clicked - $showMenuAction.click(); - $favoriteActionInMenu = $tr.find('.fileActionsMenu .action-favorite'); - $favoriteActionInMenu.click(); - - setTimeout(function() { - expect(fakeServer.requests.length).toEqual(2); - request = fakeServer.requests[1]; - expect(JSON.parse(request.requestBody)).toEqual({ - tags: ['tag1', 'tag2', 'tag3'] - }); - - request.respond(200, {'Content-Type': 'application/json'}, JSON.stringify({ - tags: ['tag1', 'tag2', 'tag3'] - })); - - setTimeout(function() { - // re-read the element as it was re-inserted - $tr = fileList.findFileEl('One.txt'); - $favoriteMark = $tr.find('.favorite-mark'); - - expect($tr.attr('data-favorite')).toBeFalsy(); - expect($tr.attr('data-tags').split('|')).toEqual(['tag1', 'tag2', 'tag3']); - expect(fileList.files[0].tags).toEqual(['tag1', 'tag2', 'tag3']); - expect($favoriteMark.find('.icon').hasClass('icon-star')).toEqual(true); - expect($favoriteMark.find('.icon').hasClass('icon-starred')).toEqual(false); - - done(); - }, 1); - }, 1); - }, 1); - }); - }); - describe('elementToFile', function() { - it('returns tags', function() { - fileList.setFiles(testFiles); - var $tr = fileList.findFileEl('One.txt'); - var data = fileList.elementToFile($tr); - expect(data.tags).toEqual(['tag1', 'tag2']); - }); - it('returns empty array when no tags present', function() { - delete testFiles[0].tags; - fileList.setFiles(testFiles); - var $tr = fileList.findFileEl('One.txt'); - var data = fileList.elementToFile($tr); - expect(data.tags).toEqual([]); - }); - }); -}); diff --git a/apps/files_sharing/lib/DefaultPublicShareTemplateProvider.php b/apps/files_sharing/lib/DefaultPublicShareTemplateProvider.php index 784dc4e5e1591..bea48f28dee0f 100644 --- a/apps/files_sharing/lib/DefaultPublicShareTemplateProvider.php +++ b/apps/files_sharing/lib/DefaultPublicShareTemplateProvider.php @@ -101,7 +101,6 @@ public function renderPage(IShare $share, string $token, string $path): Template \OCP\Util::addInitScript(Application::APP_ID, 'init'); \OCP\Util::addInitScript(Application::APP_ID, 'init-public'); \OCP\Util::addScript('files', 'main'); - \OCP\Util::addStyle('files', 'merged'); // Add file-request script if needed $attributes = $share->getAttributes(); diff --git a/apps/settings/templates/settings/frame.php b/apps/settings/templates/settings/frame.php index 27da91152f3f1..30d74efdc7d51 100644 --- a/apps/settings/templates/settings/frame.php +++ b/apps/settings/templates/settings/frame.php @@ -8,7 +8,6 @@ script('settings', 'settings'); \OCP\Util::addScript('settings', 'legacy-admin'); script('core', 'setupchecks'); -script('files', 'jquery.fileupload'); ?> diff --git a/build/compile-handlebars-templates.sh b/build/compile-handlebars-templates.sh index bed799f82eb62..57633e8a2343e 100755 --- a/build/compile-handlebars-templates.sh +++ b/build/compile-handlebars-templates.sh @@ -10,12 +10,6 @@ cd $REPODIR # Settings node node_modules/handlebars/bin/handlebars -n OC.Settings.Templates apps/settings/js/templates -f apps/settings/js/templates.js -# Files app -node node_modules/handlebars/bin/handlebars -n OCA.Files.Templates apps/files/js/templates -f apps/files/js/templates.js - -# Sharing -node node_modules/handlebars/bin/handlebars -n OCA.Sharing.Templates apps/files_sharing/js/templates -f apps/files_sharing/js/templates.js - # Files external node node_modules/handlebars/bin/handlebars -n OCA.Files_External.Templates apps/files_external/js/templates -f apps/files_external/js/templates.js @@ -26,6 +20,5 @@ if [[ $(git diff --name-only) ]]; then exit 1 fi - echo "All up to date! Carry on :D" exit 0 diff --git a/core/src/OC/dialogs.js b/core/src/OC/dialogs.js index fb203f31d28c3..c10f676701d57 100644 --- a/core/src/OC/dialogs.js +++ b/core/src/OC/dialogs.js @@ -772,7 +772,7 @@ const Dialogs = { var defer = $.Deferred() if (!this.$fileexistsTemplate) { var self = this - $.get(OC.filePath('files', 'templates', 'fileexists.html'), function(tmpl) { + $.get(OC.filePath('core', 'templates/legacy', 'fileexists.html'), function(tmpl) { self.$fileexistsTemplate = $(tmpl) defer.resolve(self.$fileexistsTemplate) }) diff --git a/apps/files/templates/fileexists.html b/core/templates/legacy/fileexists.html similarity index 100% rename from apps/files/templates/fileexists.html rename to core/templates/legacy/fileexists.html diff --git a/dist/core-login.js b/dist/core-login.js index c3d9563a68769..4d00d3046010c 100644 --- a/dist/core-login.js +++ b/dist/core-login.js @@ -1,2 +1,2 @@ -(()=>{var e,r,i,s={9321:(e,r,i)=>{"use strict";var s=i(85471),o=i(61338),a=i(4523),l=i(74692),c=i.n(l),u=i(85168),d=i(96763);const h={updatableNotification:null,getDefaultNotificationFunction:null,setDefault(t){this.getDefaultNotificationFunction=t},hide(t,e){a.default.isFunction(t)&&(e=t,t=void 0),t?(t.each((function(){c()(this)[0].toastify?c()(this)[0].toastify.hideToast():d.error("cannot hide toast because object is not set"),this===this.updatableNotification&&(this.updatableNotification=null)})),e&&e.call(),this.getDefaultNotificationFunction&&this.getDefaultNotificationFunction()):d.error("Missing argument $row in OC.Notification.hide() call, caller needs to be adjusted to only dismiss its own notification")},showHtml(t,e){(e=e||{}).isHTML=!0,e.timeout=e.timeout?e.timeout:u.DH;const n=(0,u.rG)(t,e);return n.toastElement.toastify=n,c()(n.toastElement)},show(t,e){(e=e||{}).timeout=e.timeout?e.timeout:u.DH;const n=(0,u.rG)(function(t){return t.toString().split("&").join("&").split("<").join("<").split(">").join(">").split('"').join(""").split("'").join("'")}(t),e);return n.toastElement.toastify=n,c()(n.toastElement)},showUpdate(t){return this.updatableNotification&&this.updatableNotification.hideToast(),this.updatableNotification=(0,u.rG)(t,{timeout:u.DH}),this.updatableNotification.toastElement.toastify=this.updatableNotification,c()(this.updatableNotification.toastElement)},showTemporary(t,e){(e=e||{}).timeout=e.timeout||u.Jt;const n=(0,u.rG)(t,e);return n.toastElement.toastify=n,c()(n.toastElement)},isHidden:()=>!c()("#content").find(".toastify").length};var p=i(21777);const f=a.default.throttle((()=>{(0,u.I9)(t("core","Connection to server lost"))}),7e3,{trailing:!1});let m=!1;const g={enableDynamicSlideToggle(){m=!0},showAppSidebar:function(t){(t||c()("#app-sidebar")).removeClass("disappear").show(),c()("#app-content").trigger(new(c().Event)("appresized"))},hideAppSidebar:function(t){(t||c()("#app-sidebar")).hide().addClass("disappear"),c()("#app-content").trigger(new(c().Event)("appresized"))}};var v=i(63814);function y(t,e,n){"post"!==t&&"delete"!==t||!At.PasswordConfirmation.requiresPasswordConfirmation()?(n=n||{},c().ajax({type:t.toUpperCase(),url:(0,v.KT)("apps/provisioning_api/api/v1/config/apps")+e,data:n.data||{},success:n.success,error:n.error})):At.PasswordConfirmation.requirePasswordConfirmation(_.bind(y,this,t,e,n))}const b=window.oc_appconfig||{},w={getValue:function(t,e,n,r){!function(t,e,n,r){(r=r||{}).data={defaultValue:n},y("get","/"+t+"/"+e,r)}(t,e,n,{success:r})},setValue:function(t,e,n){!function(t,e,n,r){(r=r||{}).data={value:n},y("post","/"+t+"/"+e,r)}(t,e,n)},getApps:function(t){!function(t){y("get","",t)}({success:t})},getKeys:function(t,e){!function(t,e){y("get","/"+t,e)}(t,{success:e})},deleteKey:function(t,e){!function(t,e){y("delete","/"+t+"/"+e,void 0)}(t,e)}},A=void 0!==window._oc_appswebroots&&window._oc_appswebroots;var E=i(21391),x=i.n(E),N=i(78112),C=i(96763);const T={create:"POST",update:"PROPPATCH",patch:"PROPPATCH",delete:"DELETE",read:"PROPFIND"};function I(t,e){if(a.default.isArray(t))return a.default.map(t,(function(t){return I(t,e)}));var n={href:t.href};return a.default.each(t.propStat,(function(t){if("HTTP/1.1 200 OK"===t.status)for(var r in t.properties){var i=r;r in e&&(i=e[r]),n[i]=t.properties[r]}})),n.id||(n.id=P(n.href)),n}function P(t){var e=t.indexOf("?");e>0&&(t=t.substr(0,e));var n,r=t.split("/");do{n=r[r.length-1],r.pop()}while(!n&&r.length>0);return n}function O(t){return t>=200&&t<=299}function S(t,e,n,r){return t.propPatch(e.url,function(t,e){var n,r={};for(n in t){var i=e[n],s=t[n];i||(C.warn('No matching DAV property for property "'+n),i=n),(a.default.isBoolean(s)||a.default.isNumber(s))&&(s=""+s),r[i]=s}return r}(n.changed,e.davProperties),r).then((function(t){O(t.status)?a.default.isFunction(e.success)&&e.success(n.toJSON()):a.default.isFunction(e.error)&&e.error(t)}))}const k=x().noConflict();Object.assign(k,{davCall:(t,e)=>{var n=new N.dav.Client({baseUrl:t.url,xmlNamespaces:a.default.extend({"DAV:":"d","http://owncloud.org/ns":"oc"},t.xmlNamespaces||{})});n.resolveUrl=function(){return t.url};var r=a.default.extend({"X-Requested-With":"XMLHttpRequest",requesttoken:OC.requestToken},t.headers);return"PROPFIND"===t.type?function(t,e,n,r){return t.propFind(e.url,a.default.values(e.davProperties)||[],e.depth,r).then((function(t){if(O(t.status)){if(a.default.isFunction(e.success)){var n=a.default.invert(e.davProperties),r=I(t.body,n);e.depth>0&&r.shift(),e.success(r)}}else a.default.isFunction(e.error)&&e.error(t)}))}(n,t,0,r):"PROPPATCH"===t.type?S(n,t,e,r):"MKCOL"===t.type?function(t,e,n,r){return t.request(e.type,e.url,r,null).then((function(i){O(i.status)?S(t,e,n,r):a.default.isFunction(e.error)&&e.error(i)}))}(n,t,e,r):function(t,e,n,r){return r["Content-Type"]="application/json",t.request(e.type,e.url,r,e.data).then((function(t){if(O(t.status)){if(a.default.isFunction(e.success)){if("PUT"===e.type||"POST"===e.type||"MKCOL"===e.type){var r=t.body||n.toJSON(),i=t.xhr.getResponseHeader("Content-Location");return"POST"===e.type&&i&&(r.id=P(i)),void e.success(r)}if(207===t.status){var s=a.default.invert(e.davProperties);e.success(I(t.body,s))}else e.success(t.body)}}else a.default.isFunction(e.error)&&e.error(t)}))}(n,t,e,r)},davSync:(t=>(e,n,r)=>{var i={type:T[e]||e},s=n instanceof t.Collection;if("update"===e&&(n.hasInnerCollection?i.type="MKCOL":(n.usePUT||n.collection&&n.collection.usePUT)&&(i.type="PUT")),r.url||(i.url=a.default.result(n,"url")||function(){throw new Error('A "url" property or function must be specified')}()),null!=r.data||!n||"create"!==e&&"update"!==e&&"patch"!==e||(i.data=JSON.stringify(r.attrs||n.toJSON(r))),"PROPFIND"!==i.type&&(i.processData=!1),"PROPFIND"===i.type||"PROPPATCH"===i.type){var o=n.davProperties;!o&&n.model&&(o=n.model.prototype.davProperties),o&&(a.default.isFunction(o)?i.davProperties=o.call(n):i.davProperties=o),i.davProperties=a.default.extend(i.davProperties||{},r.davProperties),a.default.isUndefined(r.depth)&&(r.depth=s?1:0)}var l=r.error;r.error=function(t,e,n){r.textStatus=e,r.errorThrown=n,l&&l.call(r.context,t,e,n)};var c=r.xhr=t.davCall(a.default.extend(i,r),n);return n.trigger("request",n,c,r),c})(k)});const R=k;var L=i(71225);const j=window._oc_config||{},$=document.getElementsByTagName("head")[0].getAttribute("data-user"),F=document.getElementsByTagName("head")[0].getAttribute("data-user-displayname"),D=void 0!==$&&$;var M=i(39285),B=i(36882),U=i(53334),z=i(43627),H=i(96763);const q={YES_NO_BUTTONS:70,OK_BUTTONS:71,FILEPICKER_TYPE_CHOOSE:1,FILEPICKER_TYPE_MOVE:2,FILEPICKER_TYPE_COPY:3,FILEPICKER_TYPE_COPY_MOVE:4,FILEPICKER_TYPE_CUSTOM:5,alert:function(t,e,n,r){this.message(t,e,"alert",q.OK_BUTTON,n,r)},info:function(t,e,n,r){this.message(t,e,"info",q.OK_BUTTON,n,r)},confirm:function(t,e,n,r){return this.message(t,e,"notice",q.YES_NO_BUTTONS,n,r)},confirmDestructive:function(t,e){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:q.OK_BUTTONS,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:()=>{};return(new u.ik).setName(e).setText(t).setButtons(n===q.OK_BUTTONS?[{label:(0,U.Tl)("core","Yes"),type:"error",callback:()=>{r.clicked=!0,r(!0)}}]:q._getLegacyButtons(n,r)).build().show().then((()=>{r.clicked||r(!1)}))},confirmHtml:function(t,e,n,r){return(new u.ik).setName(e).setText("").setButtons([{label:(0,U.Tl)("core","No"),callback:()=>{}},{label:(0,U.Tl)("core","Yes"),type:"primary",callback:()=>{n.clicked=!0,n(!0)}}]).build().setHTML(t).show().then((()=>{n.clicked||n(!1)}))},prompt:function(t,e,n,r,o,a){return new Promise((r=>{(0,u.Ss)((0,s.$V)((()=>i.e(1642).then(i.bind(i,71642)))),{text:t,name:e,callback:n,inputName:o,isPassword:!!a},(function(){n(...arguments),r()}))}))},filepicker(t,e){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:void 0,i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:u.bh.Choose,s=arguments.length>6&&void 0!==arguments[6]?arguments[6]:void 0,o=arguments.length>7&&void 0!==arguments[7]?arguments[7]:void 0;const a=(t,e)=>{const r=t=>{const e=t?.root||"";let n=t?.path||"";return n.startsWith(e)&&(n=n.slice(e.length)||"/"),n};return n?n=>t(n.map(r),e):n=>t(r(n[0]),e)},l=(0,u.a1)(t);i===this.FILEPICKER_TYPE_CUSTOM?(o.buttons||[]).forEach((t=>{l.addButton({callback:a(e,t.type),label:t.text,type:t.defaultButton?"primary":"secondary"})})):l.setButtonFactory(((t,n)=>{const r=[],s=t?.[0]?.attributes?.displayName||t?.[0]?.basename,o=s||(0,z.basename)(n);return i===u.bh.Choose&&r.push({callback:a(e,u.bh.Choose),label:s&&!this.multiSelect?(0,U.Tl)("core","Choose {file}",{file:s}):(0,U.Tl)("core","Choose"),type:"primary"}),i!==u.bh.CopyMove&&i!==u.bh.Copy||r.push({callback:a(e,u.bh.Copy),label:o?(0,U.Tl)("core","Copy to {target}",{target:o}):(0,U.Tl)("core","Copy"),type:"primary",icon:B}),i!==u.bh.Move&&i!==u.bh.CopyMove||r.push({callback:a(e,u.bh.Move),label:o?(0,U.Tl)("core","Move to {target}",{target:o}):(0,U.Tl)("core","Move"),type:i===u.bh.Move?"primary":"secondary",icon:M}),r})),r&&l.setMimeTypeFilter("string"==typeof r?[r]:r||[]),"function"==typeof o?.filter&&l.setFilter((t=>o.filter((t=>({id:t.fileid||null,path:t.path,mimetype:t.mime||null,mtime:t.mtime?.getTime()||null,permissions:t.permissions,name:t.attributes?.displayName||t.basename,etag:t.attributes?.etag||null,hasPreview:t.attributes?.hasPreview||null,mountType:t.attributes?.mountType||null,quotaAvailableBytes:t.attributes?.quotaAvailableBytes||null,icon:null,sharePermissions:null}))(t)))),l.allowDirectories(!0===o?.allowDirectoryChooser||r?.includes("httpd/unix-directory")||!1).setMultiSelect(n).startAt(s).build().pick()},message:function(t,e,n,r){let i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:()=>{},s=arguments.length>6?arguments[6]:void 0;const o=(new u.ik).setName(e).setText(s?"":t).setButtons(q._getLegacyButtons(r,i));switch(n){case"alert":o.setSeverity("warning");break;case"notice":o.setSeverity("info")}const a=o.build();return s&&a.setHTML(t),a.show().then((()=>{i._clicked||i(!1)}))},_getLegacyButtons(t,e){const n=[];switch("object"==typeof t?t.type:t){case q.YES_NO_BUTTONS:n.push({label:t?.cancel??(0,U.Tl)("core","No"),callback:()=>{e._clicked=!0,e(!1)}}),n.push({label:t?.confirm??(0,U.Tl)("core","Yes"),type:"primary",callback:()=>{e._clicked=!0,e(!0)}});break;case q.OK_BUTTONS:n.push({label:t?.confirm??(0,U.Tl)("core","OK"),type:"primary",callback:()=>{e._clicked=!0,e(!0)}});break;default:H.error("Invalid call to OC.dialogs")}return n},_fileexistsshown:!1,fileexists:function(t,e,r,i){var s=this,o=new(c().Deferred),a=function(t,e,n,r,i){r=Math.round(r),i=Math.round(i);for(var s=t.getContext("2d").getImageData(0,0,e,n),o=t.getContext("2d").getImageData(0,0,r,i),a=s.data,l=o.data,c=e/r,u=n/i,d=Math.ceil(c/2),h=Math.ceil(u/2),p=0;p=-1&&O<=1&&(g=2*O*O*O-3*O*O+1)>0&&(E+=g*a[3+(P=4*(I+x*e))],y+=g,a[P+3]<255&&(g=g*a[P+3]/250),b+=g*a[P],w+=g*a[P+1],A+=g*a[P+2],v+=g)}l[m]=b/v,l[m+1]=w/v,l[m+2]=A/v,l[m+3]=E/y}t.getContext("2d").clearRect(0,0,Math.max(e,r),Math.max(n,i)),t.width=r,t.height=i,t.getContext("2d").putImageData(o,0,0)},l=function(e,n,r){var i=e.find(".template").clone().removeClass("template").addClass("conflict"),s=i.find(".original"),o=i.find(".replacement");i.data("data",t),i.find(".filename").text(n.name),s.find(".size").text(At.Util.humanFileSize(n.size)),s.find(".mtime").text(At.Util.formatDate(n.mtime)),r.size&&r.lastModified&&(o.find(".size").text(At.Util.humanFileSize(r.size)),o.find(".mtime").text(At.Util.formatDate(r.lastModified)));var l=n.directory+"/"+n.name,u={file:l,x:96,y:96,c:n.etag,forceIcon:0},d=Files.generatePreviewUrl(u);d=d.replace(/'/g,"%27"),s.find(".icon").css({"background-image":"url('"+d+"')"}),function(t){var e=new(c().Deferred),n=t.type&&t.type.split("/").shift();if(window.FileReader&&"image"===n){var r=new FileReader;r.onload=function(t){var n=new Blob([t.target.result]);window.URL=window.URL||window.webkitURL;var r=window.URL.createObjectURL(n),i=new Image;i.src=r,i.onload=function(){var t,n,r,s,o,l,c,u=(t=i,o=document.createElement("canvas"),l=t.width,c=t.height,l>c?(r=0,n=(l-c)/2):(r=(c-l)/2,n=0),s=Math.min(l,c),o.width=s,o.height=s,o.getContext("2d").drawImage(t,n,r,s,s,0,0,s,s),a(o,s,s,96,96),o.toDataURL("image/png",.7));e.resolve(u)}},r.readAsArrayBuffer(t)}else e.reject();return e}(r).then((function(t){o.find(".icon").css("background-image","url("+t+")")}),(function(){l=At.MimeType.getIconUrl(r.type),o.find(".icon").css("background-image","url("+l+")")}));var h=e.find(".conflict").length;s.find("input:checkbox").attr("id","checkbox_original_"+h),o.find("input:checkbox").attr("id","checkbox_replacement_"+h),e.append(i),r.lastModified>n.mtime?o.find(".mtime").css("font-weight","bold"):r.lastModifiedn.size?o.find(".size").css("font-weight","bold"):r.size&&r.size0?(c()(d).find(".allnewfiles").prop("checked",!1),c()(d).find(".allnewfiles + .count").text((0,U.Tl)("core","({count} selected)",{count:t}))):(c()(d).find(".allnewfiles").prop("checked",!1),c()(d).find(".allnewfiles + .count").text("")),g()})),c()(d).on("click",".original,.allexistingfiles",(function(){var t=c()(d).find('.conflict .original input[type="checkbox"]:checked').length;t===c()(d+" .conflict").length?(c()(d).find(".allexistingfiles").prop("checked",!0),c()(d).find(".allexistingfiles + .count").text((0,U.Tl)("core","(all selected)"))):t>0?(c()(d).find(".allexistingfiles").prop("checked",!1),c()(d).find(".allexistingfiles + .count").text((0,U.Tl)("core","({count} selected)",{count:t}))):(c()(d).find(".allexistingfiles").prop("checked",!1),c()(d).find(".allexistingfiles + .count").text("")),g()})),o.resolve()})).fail((function(){o.reject(),alert((0,U.Tl)("core","Error loading file exists template"))}));return o.promise()},_getFileExistsTemplate:function(){var t=c().Deferred();if(this.$fileexistsTemplate)t.resolve(this.$fileexistsTemplate);else{var e=this;c().get(At.filePath("files","templates","fileexists.html"),(function(n){e.$fileexistsTemplate=c()(n),t.resolve(e.$fileexistsTemplate)})).fail((function(){t.reject()}))}return t.promise()}},G=q,V=((t,e)=>{let n=t.getElementsByTagName("head")[0].getAttribute("data-requesttoken");return{getToken:()=>n,setToken:t=>{n=t,e("csrf-token-update",{token:n})}}})(document,o.Ic),X=V.getToken,W=(V.setToken,function(t,e){var n,r,i="";if(this.typelessListeners=[],this.closed=!1,this.listeners={},e)for(n in e)i+=n+"="+encodeURIComponent(e[n])+"&";if(i+="requesttoken="+encodeURIComponent(X()),this.useFallBack||"undefined"==typeof EventSource){var s="oc_eventsource_iframe_"+W.iframeCount;W.fallBackSources[W.iframeCount]=this,this.iframe=c()(""),this.iframe.attr("id",s),this.iframe.hide(),r="&",-1===t.indexOf("?")&&(r="?"),this.iframe.attr("src",t+r+"fallback=true&fallback_id="+W.iframeCount+"&"+i),c()("body").append(this.iframe),this.useFallBack=!0,W.iframeCount++}else r="&",-1===t.indexOf("?")&&(r="?"),this.source=new EventSource(t+r+i),this.source.onmessage=function(t){for(var e=0;e(0,ot.o)(),requirePasswordConfirmation(t,e,n){(0,ot.C)().then(t,n)}},lt={_plugins:{},register(t,e){let n=this._plugins[t];n||(n=this._plugins[t]=[]),n.push(e)},getPlugins(t){return this._plugins[t]||[]},attach(t,e,n){const r=this.getPlugins(t);for(let t=0;t-1&&parseInt(navigator.userAgent.split("/").pop())<51){const t=document.querySelectorAll('[fill^="url(#"], [stroke^="url(#"], [filter^="url(#invert"]');for(let e,n=0,r=t.length;n=0?t.substr(e+1):t.length?t.substr(1):""},_decodeQuery:t=>t.replace(/\+/g," "),parseUrlQuery(){const t=this._parseHashQuery();let e;return t&&(e=At.parseQueryString(this._decodeQuery(t))),e=a.default.extend(e||{},At.parseQueryString(this._decodeQuery(location.search))),e||{}},_onPopState(t){if(this._cancelPop)return void(this._cancelPop=!1);let e;if(this._handlers.length){e=t&&t.state,a.default.isString(e)?e=At.parseQueryString(e):e||(e=this.parseUrlQuery()||{});for(let t=0;t="0"&&n<="9";o!==s&&(i++,e[i]="",s=o),e[i]+=n,r++}return e}const gt={History:ht,humanFileSize:pt.v7,computerFileSize(t){if("string"!=typeof t)return null;const e=t.toLowerCase().trim();let n=null;const r=e.match(/^[\s+]?([0-9]*)(\.([0-9]+))?( +)?([kmgtp]?b?)$/i);return null===r?null:(n=parseFloat(e),isFinite(n)?(r[5]&&(n*={b:1,k:1024,kb:1024,mb:1048576,m:1048576,gb:1073741824,g:1073741824,tb:1099511627776,t:1099511627776,pb:0x4000000000000,p:0x4000000000000}[r[5]]),n=Math.round(n),n):null)},formatDate:(t,e)=>(void 0===window.TESTING&&At.debug&&ft.warn("OC.Util.formatDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment"),e=e||"LLL",dt()(t).format(e)),relativeModifiedDate(e){void 0===window.TESTING&&At.debug&&ft.warn("OC.Util.relativeModifiedDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment");const n=dt()().diff(dt()(e));return n>=0&&n<45e3?t("core","seconds ago"):dt()(e).fromNow()},getScrollBarWidth(){if(this._scrollBarWidth)return this._scrollBarWidth;const t=document.createElement("p");t.style.width="100%",t.style.height="200px";const e=document.createElement("div");e.style.position="absolute",e.style.top="0px",e.style.left="0px",e.style.visibility="hidden",e.style.width="200px",e.style.height="150px",e.style.overflow="hidden",e.appendChild(t),document.body.appendChild(e);const n=t.offsetWidth;e.style.overflow="scroll";let r=t.offsetWidth;return n===r&&(r=e.clientWidth),document.body.removeChild(e),this._scrollBarWidth=n-r,this._scrollBarWidth},stripTime:t=>new Date(t.getFullYear(),t.getMonth(),t.getDate()),naturalSortCompare(t,e){let n;const r=mt(t),i=mt(e);for(n=0;r[n]&&i[n];n++)if(r[n]!==i[n]){const t=Number(r[n]),e=Number(i[n]);return t==r[n]&&e==i[n]?t-e:r[n].localeCompare(i[n],At.getLanguage())}return r.length-i.length},waitFor(t,e){const n=function(){!0!==t()&&setTimeout(n,e)};n()},isCookieSetToValue(t,e){const n=document.cookie.split(";");for(let r=0;r!$_",fileIsBlacklisted:t=>!!t.match(j.blacklist_files_regex),Apps:g,AppConfig:w,appConfig:b,appswebroots:A,Backbone:R,config:j,currentUser:D,dialogs:G,EventSource:K,getCurrentUser:()=>({uid:D,displayName:F}),isUserAdmin:()=>et,L10N:it,_ajaxConnectionLostHandler:f,_processAjaxError:t=>{(0!==t.status||"abort"!==t.statusText&&"timeout"!==t.statusText&&!At._reloadCalled)&&([302,303,307,401].includes(t.status)&&(0,p.HW)()?setTimeout((function(){if(!At._userIsNavigatingAway&&!At._reloadCalled){let t=0;const e=5,r=setInterval((function(){h.showUpdate(n("core","Problem loading page, reloading in %n second","Problem loading page, reloading in %n seconds",e-t)),t>=e&&(clearInterval(r),At.reload()),t++}),1e3);At._reloadCalled=!0}}),100):0===t.status&&setTimeout((function(){At._userIsNavigatingAway||At._reloadCalled||At._ajaxConnectionLostHandler()}),100))},registerXHRForErrorProcessing:t=>{t.addEventListener&&(t.addEventListener("load",(()=>{4===t.readyState&&(t.status>=200&&t.status<300||304===t.status||c()(document).trigger(new(c().Event)("ajaxError"),t))})),t.addEventListener("error",(()=>{c()(document).trigger(new(c().Event)("ajaxError"),t)})))},getCapabilities:()=>(OC.debug&&J.warn("OC.getCapabilities is deprecated and will be removed in Nextcloud 21. See @nextcloud/capabilities"),(0,Y.F)()),hideMenus:tt,registerMenu:function(t,e,n,r){e.addClass("menu");const i="A"===t.prop("tagName")||"BUTTON"===t.prop("tagName");t.on(i?"click.menu":"click.menu keyup.menu",(function(i){i.preventDefault(),i.key&&"Enter"!==i.key||(e.is(Q)?tt():(Q&&tt(),!0===r&&e.parent().addClass("openedMenu"),t.attr("aria-expanded",!0),e.slideToggle(50,n),Q=e,Z=t))}))},showMenu:(t,e,n)=>{e.is(Q)||(tt(),Q=e,Z=t,e.trigger(new(c().Event)("beforeShow")),e.show(),e.trigger(new(c().Event)("afterShow")),a.default.isFunction(n)&&n())},unregisterMenu:(t,e)=>{e.is(Q)&&tt(),t.off("click.menu").removeClass("menutoggle"),e.removeClass("menu")},basename:L.P8,encodePath:L.O0,dirname:L.pD,isSamePath:L.ys,joinPaths:L.HS,getHost:()=>window.location.host,getHostName:()=>window.location.hostname,getPort:()=>window.location.port,getProtocol:()=>window.location.protocol.split(":")[0],getCanonicalLocale:U.lO,getLocale:U.JK,getLanguage:U.Z0,buildQueryString:t=>t?c().map(t,(function(t,e){let n=encodeURIComponent(e);return null!=t&&(n+="="+encodeURIComponent(t)),n})).join("&"):"",parseQueryString:t=>{let e,n;const r={};let i;if(!t)return null;e=t.indexOf("?"),e>=0&&(t=t.substr(e+1));const s=t.replace(/\+/g,"%20").split("&");for(let t=0;t=0?[o.substr(0,e),o.substr(e+1)]:[o],n.length&&(i=decodeURIComponent(n[0]),i&&(r[i]=n.length>1?decodeURIComponent(n[1]):null))}return r},msg:st,Notification:h,PasswordConfirmation:at,Plugins:lt,theme:ct,Util:gt,debug:vt,filePath:v.fg,generateUrl:v.Jv,get:(Et=window,t=>{const e=t.split("."),n=e.pop();for(let t=0;t(e,n)=>{const r=e.split("."),i=r.pop();for(let e=0;e{window.location=t},reload:()=>{window.location.reload()},requestToken:X(),linkTo:v.uM,linkToOCS:(t,e)=>(0,v.KT)(t,{},{ocsVersion:e||1})+"/",linkToRemote:v.dC,linkToRemoteBase:t=>(0,v.aU)()+"/remote.php/"+t,webroot:bt};var Et;(0,o.B1)("csrf-token-update",(t=>{OC.requestToken=t.token,wt.info("OC.requestToken changed",t.token)}));var _t=i(32981),xt=i(82490),Nt=i(17334),Ct=i.n(Nt),Tt=i(16044),It=i(82182),Pt=i(80910);const Ot={computed:{userNameInputLengthIs255(){return this.user.length>=255},userInputHelperText(){if(this.userNameInputLengthIs255)return t("core","Email length is at max (255)")}}};var St=i(18740);const kt={name:"LoginButton",components:{ArrowRight:i(9191).A,NcButton:St.A},props:{value:{type:String,default:(0,U.Tl)("core","Log in")},valueLoading:{type:String,default:(0,U.Tl)("core","Logging in …")},loading:{type:Boolean,required:!0},invertedColors:{type:Boolean,default:!1}}};var Rt=i(85072),Lt=i.n(Rt),jt=i(97825),$t=i.n(jt),Ft=i(77659),Dt=i.n(Ft),Mt=i(55056),Bt=i.n(Mt),Ut=i(10540),zt=i.n(Ut),Ht=i(41113),qt=i.n(Ht),Gt=i(39136),Vt={};Vt.styleTagTransform=qt(),Vt.setAttributes=Bt(),Vt.insert=Dt().bind(null,"head"),Vt.domAPI=$t(),Vt.insertStyleElement=zt(),Lt()(Gt.A,Vt),Gt.A&&Gt.A.locals&&Gt.A.locals;var Xt=i(14486);const Wt=(0,Xt.A)(kt,(function(){var t=this,e=t._self._c;return e("NcButton",{attrs:{type:"primary","native-type":"submit",wide:!0,disabled:t.loading},on:{click:function(e){return t.$emit("click")}},scopedSlots:t._u([{key:"icon",fn:function(){return[t.loading?e("div",{staticClass:"submit-wrapper__icon icon-loading-small-dark"}):e("ArrowRight",{staticClass:"submit-wrapper__icon"})]},proxy:!0}])},[t._v("\n\t"+t._s(t.loading?t.valueLoading:t.value)+"\n\t")])}),[],!1,null,"6acd8f45",null).exports,Kt={name:"LoginForm",components:{LoginButton:Wt,NcPasswordField:Tt.A,NcTextField:It.A,NcNoteCard:Pt.A},mixins:[Ot],props:{username:{type:String,default:""},redirectUrl:{type:[String,Boolean],default:!1},errors:{type:Array,default:()=>[]},messages:{type:Array,default:()=>[]},throttleDelay:{type:Number,default:0},autoCompleteAllowed:{type:Boolean,default:!0},directLogin:{type:Boolean,default:!1},emailStates:{type:Array,default:()=>[]}},setup:()=>({t:U.Tl,headlineText:(0,U.Tl)("core","Log in to {productName}",{productName:OC.theme.name},void 0,{sanitize:!1,escape:!1}),loginTimeout:(0,_t.C)("core","loginTimeout",300),requestToken:window.OC.requestToken,timezone:(new Intl.DateTimeFormat)?.resolvedOptions()?.timeZone,timezoneOffset:-(new Date).getTimezoneOffset()/60}),data:()=>({loading:!1,user:"",password:""}),computed:{resetFormTimeout(){return this.loginTimeout<=0?()=>{}:Ct()(this.handleResetForm,1e3*this.loginTimeout)},isError(){return this.invalidPassword||this.userDisabled||this.throttleDelay>5e3},errorLabel(){return this.invalidPassword?(0,U.Tl)("core","Wrong login or password."):this.userDisabled?(0,U.Tl)("core","This account is disabled"):this.throttleDelay>5e3?(0,U.Tl)("core","We have detected multiple invalid login attempts from your IP. Therefore your next login is throttled up to 30 seconds."):void 0},apacheAuthFailed(){return-1!==this.errors.indexOf("apacheAuthFailed")},csrfCheckFailed(){return-1!==this.errors.indexOf("csrfCheckFailed")},internalException(){return-1!==this.errors.indexOf("internalexception")},invalidPassword(){return-1!==this.errors.indexOf("invalidpassword")},userDisabled(){return-1!==this.errors.indexOf("userdisabled")},loadingIcon:()=>(0,v.d0)("core","loading-dark.gif"),loginActionUrl:()=>(0,v.Jv)("login"),emailEnabled(){return this.emailStates?this.emailStates.every((t=>"1"===t)):1},loginText(){return this.emailEnabled?(0,U.Tl)("core","Account name or email"):(0,U.Tl)("core","Account name")}},watch:{password(){this.resetFormTimeout()}},mounted(){""===this.username?this.$refs.user.$refs.inputField.$refs.input.focus():(this.user=this.username,this.$refs.password.$refs.inputField.$refs.input.focus())},methods:{handleResetForm(){this.password=""},updateUsername(){this.$emit("update:username",this.user)},submit(t){this.loading?t.preventDefault():(this.loading=!0,this.$emit("submit"))}}};var Yt=i(49618),Jt={};Jt.styleTagTransform=qt(),Jt.setAttributes=Bt(),Jt.insert=Dt().bind(null,"head"),Jt.domAPI=$t(),Jt.insertStyleElement=zt(),Lt()(Yt.A,Jt),Yt.A&&Yt.A.locals&&Yt.A.locals;const Qt=(0,Xt.A)(Kt,(function(){var t=this,e=t._self._c;return e("form",{ref:"loginForm",staticClass:"login-form",attrs:{method:"post",name:"login",action:t.loginActionUrl},on:{submit:t.submit}},[e("fieldset",{staticClass:"login-form__fieldset",attrs:{"data-login-form":""}},[t.apacheAuthFailed?e("NcNoteCard",{attrs:{title:t.t("core","Server side authentication failed!"),type:"warning"}},[t._v("\n\t\t\t"+t._s(t.t("core","Please contact your administrator."))+"\n\t\t")]):t._e(),t._v(" "),t.csrfCheckFailed?e("NcNoteCard",{attrs:{heading:t.t("core","Temporary error"),type:"error"}},[t._v("\n\t\t\t"+t._s(t.t("core","Please try again."))+"\n\t\t")]):t._e(),t._v(" "),t.messages.length>0?e("NcNoteCard",t._l(t.messages,(function(n,r){return e("div",{key:r},[t._v("\n\t\t\t\t"+t._s(n)),e("br")])})),0):t._e(),t._v(" "),t.internalException?e("NcNoteCard",{class:t.t("core","An internal error occurred."),attrs:{type:"warning"}},[t._v("\n\t\t\t"+t._s(t.t("core","Please try again or contact your administrator."))+"\n\t\t")]):t._e(),t._v(" "),e("div",{staticClass:"hidden",attrs:{id:"message"}},[e("img",{staticClass:"float-spinner",attrs:{alt:"",src:t.loadingIcon}}),t._v(" "),e("span",{attrs:{id:"messageText"}}),t._v(" "),e("div",{staticStyle:{clear:"both"}})]),t._v(" "),e("h2",{staticClass:"login-form__headline",attrs:{"data-login-form-headline":""}},[t._v("\n\t\t\t"+t._s(t.headlineText)+"\n\t\t")]),t._v(" "),e("NcTextField",{ref:"user",class:{shake:t.invalidPassword},attrs:{id:"user",label:t.loginText,name:"user",maxlength:255,value:t.user,autocapitalize:"none",spellchecking:!1,autocomplete:t.autoCompleteAllowed?"username":"off",required:"",error:t.userNameInputLengthIs255,"helper-text":t.userInputHelperText,"data-login-form-input-user":""},on:{"update:value":function(e){t.user=e},change:t.updateUsername}}),t._v(" "),e("NcPasswordField",{ref:"password",class:{shake:t.invalidPassword},attrs:{id:"password",name:"password",value:t.password,spellchecking:!1,autocapitalize:"none",autocomplete:t.autoCompleteAllowed?"current-password":"off",label:t.t("core","Password"),"helper-text":t.errorLabel,error:t.isError,"data-login-form-input-password":"",required:""},on:{"update:value":function(e){t.password=e}}}),t._v(" "),e("LoginButton",{attrs:{"data-login-form-submit":"",loading:t.loading}}),t._v(" "),t.redirectUrl?e("input",{attrs:{type:"hidden",name:"redirect_url"},domProps:{value:t.redirectUrl}}):t._e(),t._v(" "),e("input",{attrs:{type:"hidden",name:"timezone"},domProps:{value:t.timezone}}),t._v(" "),e("input",{attrs:{type:"hidden",name:"timezone_offset"},domProps:{value:t.timezoneOffset}}),t._v(" "),e("input",{attrs:{type:"hidden",name:"requesttoken"},domProps:{value:t.requestToken}}),t._v(" "),t.directLogin?e("input",{attrs:{type:"hidden",name:"direct",value:"1"}}):t._e()],1)])}),[],!1,null,"f18886ec",null).exports;function Zt(t){const e=new Uint8Array(t);let n="";for(const t of e)n+=String.fromCharCode(t);return btoa(n).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}function te(t){const e=t.replace(/-/g,"+").replace(/_/g,"/"),n=(4-e.length%4)%4,r=e.padEnd(e.length+n,"="),i=atob(r),s=new ArrayBuffer(i.length),o=new Uint8Array(s);for(let t=0;t({supportsWebauthn:ee()}),data(){return{user:this.username,loading:!1,validCredentials:!0}},methods:{async authenticate(){if(this.$refs.loginForm.checkValidity()){ge.debug("passwordless login initiated");try{const t=await async function(t){const e=(0,v.Jv)("/login/webauthn/start"),{data:n}=await ae.Ay.post(e,{loginName:t});if(!n.allowCredentials||0===n.allowCredentials.length)throw ce.error("No valid credentials returned for webauthn"),new de;return await async function(t,e=!1){if(!ee())throw new Error("WebAuthn is not supported in this browser");let n;0!==t.allowCredentials?.length&&(n=t.allowCredentials?.map(ne));const r={...t,challenge:te(t.challenge),allowCredentials:n},i={};if(e){if(!await function(){if(!ee())return new Promise((t=>t(!1)));const t=window.PublicKeyCredential;return void 0===t.isConditionalMediationAvailable?new Promise((t=>t(!1))):t.isConditionalMediationAvailable()}())throw Error("Browser does not support WebAuthn autofill");if(document.querySelectorAll("input[autocomplete$='webauthn']").length<1)throw Error('No with "webauthn" as the only or last value in its `autocomplete` attribute was detected');i.mediation="conditional",r.allowCredentials=[]}let s;i.publicKey=r,i.signal=ie.createNewAbortSignal();try{s=await navigator.credentials.get(i)}catch(t){throw function({error:t,options:e}){const{publicKey:n}=e;if(!n)throw Error("options was missing required publicKey property");if("AbortError"===t.name){if(e.signal instanceof AbortSignal)return new re({message:"Authentication ceremony was sent an abort signal",code:"ERROR_CEREMONY_ABORTED",cause:t})}else{if("NotAllowedError"===t.name)return new re({message:t.message,code:"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",cause:t});if("SecurityError"===t.name){const e=window.location.hostname;if("localhost"!==(r=e)&&!/^([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}$/i.test(r))return new re({message:`${window.location.hostname} is an invalid domain`,code:"ERROR_INVALID_DOMAIN",cause:t});if(n.rpId!==e)return new re({message:`The RP ID "${n.rpId}" is invalid for this domain`,code:"ERROR_INVALID_RP_ID",cause:t})}else if("UnknownError"===t.name)return new re({message:"The authenticator was unable to process the specified options, or could not create a new assertion signature",code:"ERROR_AUTHENTICATOR_GENERAL_ERROR",cause:t})}var r;return t}({error:t,options:i})}if(!s)throw new Error("Authentication was not completed");const{id:o,rawId:a,response:l,type:c}=s;let u;return l.userHandle&&(u=Zt(l.userHandle)),{id:o,rawId:Zt(a),response:{authenticatorData:Zt(l.authenticatorData),clientDataJSON:Zt(l.clientDataJSON),signature:Zt(l.signature),userHandle:u},type:c,clientExtensionResults:s.getClientExtensionResults(),authenticatorAttachment:oe(s.authenticatorAttachment)}}(n)}(this.user);await this.completeAuthentication(t)}catch(t){if(t instanceof NoValidCredentials)return void(this.validCredentials=!1);ce.debug(t)}}},changeUsername(t){this.user=t,this.$emit("update:username",this.user)},completeAuthentication(t){const e=this.redirectUrl;return async function(t){const e=(0,v.Jv)("/login/webauthn/finish"),{data:n}=await ae.Ay.post(e,{data:JSON.stringify(t)});return n}(t).then((t=>{let{defaultRedirectUrl:n}=t;ge.debug("Logged in redirecting"),window.location.href=e||n})).catch((t=>{ge.debug("GOT AN ERROR WHILE SUBMITTING CHALLENGE!"),ge.debug(t)}))},submit(){}}};var ye=i(87511),be={};be.styleTagTransform=qt(),be.setAttributes=Bt(),be.insert=Dt().bind(null,"head"),be.domAPI=$t(),be.insertStyleElement=zt(),Lt()(ye.A,be),ye.A&&ye.A.locals&&ye.A.locals;const we=(0,Xt.A)(ve,(function(){var t=this,e=t._self._c;return(t.isHttps||t.isLocalhost)&&t.supportsWebauthn?e("form",{ref:"loginForm",attrs:{method:"post",name:"login"},on:{submit:function(e){return e.preventDefault(),t.submit.apply(null,arguments)}}},[e("h2",[t._v(t._s(t.t("core","Log in with a device")))]),t._v(" "),e("fieldset",[e("NcTextField",{attrs:{required:"",value:t.user,autocomplete:t.autoCompleteAllowed?"on":"off",error:!t.validCredentials,label:t.t("core","Login or email"),placeholder:t.t("core","Login or email"),"helper-text":t.validCredentials?"":t.t("core","Your account is not setup for passwordless login.")},on:{"update:value":t.changeUsername}}),t._v(" "),t.validCredentials?e("LoginButton",{attrs:{loading:t.loading},on:{click:t.authenticate}}):t._e()],1)]):t.supportsWebauthn?t.isHttps||t.isLocalhost?t._e():e("div",{staticClass:"update"},[e("LockOpenIcon",{attrs:{size:"70"}}),t._v(" "),e("h2",[t._v(t._s(t.t("core","Your connection is not secure")))]),t._v(" "),e("p",{staticClass:"infogroup"},[t._v("\n\t\t"+t._s(t.t("core","Passwordless authentication is only available over a secure connection."))+"\n\t")])],1):e("div",{staticClass:"update"},[e("InformationIcon",{attrs:{size:"70"}}),t._v(" "),e("h2",[t._v(t._s(t.t("core","Browser not supported")))]),t._v(" "),e("p",{staticClass:"infogroup"},[t._v("\n\t\t"+t._s(t.t("core","Passwordless authentication is not supported in your browser."))+"\n\t")])],1)}),[],!1,null,"4a6bfc86",null).exports;var Ae=i(96763);const Ee={name:"ResetPassword",components:{LoginButton:Wt,NcNoteCard:Pt.A,NcTextField:It.A},mixins:[Ot],props:{username:{type:String,required:!0},resetPasswordLink:{type:String,required:!0}},data(){return{error:!1,loading:!1,message:void 0,user:this.username}},watch:{username(t){this.user=t}},methods:{updateUsername(){this.$emit("update:username",this.user)},submit(){this.loading=!0,this.error=!1,this.message="";const t=(0,v.Jv)("/lostpassword/email"),e={user:this.user};return ae.Ay.post(t,e).then((t=>t.data)).then((t=>{if("success"!==t.status)throw new Error(`got status ${t.status}`);this.message="send-success"})).catch((t=>{Ae.error("could not send reset email request",t),this.error=!0,this.message="send-error"})).then((()=>{this.loading=!1}))}}};var _e=i(92022),xe={};xe.styleTagTransform=qt(),xe.setAttributes=Bt(),xe.insert=Dt().bind(null,"head"),xe.domAPI=$t(),xe.insertStyleElement=zt(),Lt()(_e.A,xe),_e.A&&_e.A.locals&&_e.A.locals;const Ne=(0,Xt.A)(Ee,(function(){var t=this,e=t._self._c;return e("form",{staticClass:"login-form",on:{submit:function(e){return e.preventDefault(),t.submit.apply(null,arguments)}}},[e("fieldset",{staticClass:"login-form__fieldset"},[e("NcTextField",{attrs:{id:"user",value:t.user,name:"user",maxlength:255,autocapitalize:"off",label:t.t("core","Login or email"),error:t.userNameInputLengthIs255,"helper-text":t.userInputHelperText,required:""},on:{"update:value":function(e){t.user=e},change:t.updateUsername}}),t._v(" "),e("LoginButton",{attrs:{value:t.t("core","Reset password")}}),t._v(" "),"send-success"===t.message?e("NcNoteCard",{attrs:{type:"success"}},[t._v("\n\t\t\t"+t._s(t.t("core","If this account exists, a password reset message has been sent to its email address. If you do not receive it, verify your email address and/or Login, check your spam/junk folders or ask your local administration for help."))+"\n\t\t")]):"send-error"===t.message?e("NcNoteCard",{attrs:{type:"error"}},[t._v("\n\t\t\t"+t._s(t.t("core","Couldn't send reset email. Please contact your administrator."))+"\n\t\t")]):"reset-error"===t.message?e("NcNoteCard",{attrs:{type:"error"}},[t._v("\n\t\t\t"+t._s(t.t("core","Password cannot be changed. Please contact your administrator."))+"\n\t\t")]):t._e(),t._v(" "),e("a",{staticClass:"login-form__link",attrs:{href:"#"},on:{click:function(e){return e.preventDefault(),t.$emit("abort")}}},[t._v("\n\t\t\t"+t._s(t.t("core","Back to login"))+"\n\t\t")])],1)])}),[],!1,null,"586305cf",null).exports,Ce={name:"UpdatePassword",components:{LoginButton:Wt},props:{username:{type:String,required:!0},resetPasswordTarget:{type:String,required:!0}},data(){return{error:!1,loading:!1,message:void 0,user:this.username,password:"",encrypted:!1,proceed:!1}},watch:{username(t){this.user=t}},methods:{async submit(){this.loading=!0,this.error=!1,this.message="";try{const{data:t}=await ae.Ay.post(this.resetPasswordTarget,{password:this.password,proceed:this.proceed});if(t&&"success"===t.status)this.message="send-success",this.$emit("update:username",this.user),this.$emit("done");else{if(!t||!t.encryption)throw t&&t.msg?new Error(t.msg):new Error;this.encrypted=!0}}catch(e){this.error=!0,this.message=e.message?e.message:t("core","Password cannot be changed. Please contact your administrator.")}finally{this.loading=!1}}}};var Te=i(37861),Ie={};Ie.styleTagTransform=qt(),Ie.setAttributes=Bt(),Ie.insert=Dt().bind(null,"head"),Ie.domAPI=$t(),Ie.insertStyleElement=zt(),Lt()(Te.A,Ie),Te.A&&Te.A.locals&&Te.A.locals;const Pe=(0,Xt.A)(Ce,(function(){var t=this,e=t._self._c;return e("form",{on:{submit:function(e){return e.preventDefault(),t.submit.apply(null,arguments)}}},[e("fieldset",[e("p",[e("label",{staticClass:"infield",attrs:{for:"password"}},[t._v(t._s(t.t("core","New password")))]),t._v(" "),e("input",{directives:[{name:"model",rawName:"v-model",value:t.password,expression:"password"}],attrs:{id:"password",type:"password",name:"password",autocomplete:"new-password",autocapitalize:"none",spellcheck:"false",required:"",placeholder:t.t("core","New password")},domProps:{value:t.password},on:{input:function(e){e.target.composing||(t.password=e.target.value)}}})]),t._v(" "),t.encrypted?e("div",{staticClass:"update"},[e("p",[t._v("\n\t\t\t\t"+t._s(t.t("core","Your files are encrypted. There will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?"))+"\n\t\t\t")]),t._v(" "),e("input",{directives:[{name:"model",rawName:"v-model",value:t.proceed,expression:"proceed"}],staticClass:"checkbox",attrs:{id:"encrypted-continue",type:"checkbox"},domProps:{checked:Array.isArray(t.proceed)?t._i(t.proceed,null)>-1:t.proceed},on:{change:function(e){var n=t.proceed,r=e.target,i=!!r.checked;if(Array.isArray(n)){var s=t._i(n,null);r.checked?s<0&&(t.proceed=n.concat([null])):s>-1&&(t.proceed=n.slice(0,s).concat(n.slice(s+1)))}else t.proceed=i}}}),t._v(" "),e("label",{attrs:{for:"encrypted-continue"}},[t._v("\n\t\t\t\t"+t._s(t.t("core","I know what I'm doing"))+"\n\t\t\t")])]):t._e(),t._v(" "),e("LoginButton",{attrs:{loading:t.loading,value:t.t("core","Reset password"),"value-loading":t.t("core","Resetting password")}}),t._v(" "),t.error&&t.message?e("p",{class:{warning:t.error}},[t._v("\n\t\t\t"+t._s(t.message)+"\n\t\t")]):t._e()],1)])}),[],!1,null,"6bdd5975",null).exports;var Oe=i(96763);const Se=xt.A.parse(location.search);if("1"===Se.clear)try{window.localStorage.clear(),window.sessionStorage.clear(),Oe.debug("Browser storage cleared")}catch(t){Oe.error("Could not clear browser storage",t)}const ke={name:"Login",components:{LoginForm:Qt,PasswordLessLoginForm:we,ResetPassword:Ne,UpdatePassword:Pe,NcButton:St.A,NcNoteCard:Pt.A},data:()=>({loading:!1,user:(0,_t.C)("core","loginUsername",""),passwordlessLogin:!1,resetPassword:!1,errors:(0,_t.C)("core","loginErrors",[]),messages:(0,_t.C)("core","loginMessages",[]),redirectUrl:(0,_t.C)("core","loginRedirectUrl",!1),throttleDelay:(0,_t.C)("core","loginThrottleDelay",0),canResetPassword:(0,_t.C)("core","loginCanResetPassword",!1),resetPasswordLink:(0,_t.C)("core","loginResetPasswordLink",""),autoCompleteAllowed:(0,_t.C)("core","loginAutocomplete",!0),resetPasswordTarget:(0,_t.C)("core","resetPasswordTarget",""),resetPasswordUser:(0,_t.C)("core","resetPasswordUser",""),directLogin:"1"===Se.direct,hasPasswordless:(0,_t.C)("core","webauthn-available",!1),countAlternativeLogins:(0,_t.C)("core","countAlternativeLogins",!1),alternativeLogins:(0,_t.C)("core","alternativeLogins",[]),isHttps:"https:"===window.location.protocol,isLocalhost:"localhost"===window.location.hostname,hideLoginForm:(0,_t.C)("core","hideLoginForm",!1),emailStates:(0,_t.C)("core","emailStates",[])}),methods:{passwordResetFinished(){this.resetPasswordTarget="",this.directLogin=!0}}};var Re=i(30638),Le={};Le.styleTagTransform=qt(),Le.setAttributes=Bt(),Le.insert=Dt().bind(null,"head"),Le.domAPI=$t(),Le.insertStyleElement=zt(),Lt()(Re.A,Le),Re.A&&Re.A.locals&&Re.A.locals;const je=(0,Xt.A)(ke,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"guest-box login-box"},[!t.hideLoginForm||t.directLogin?[e("transition",{attrs:{name:"fade",mode:"out-in"}},[t.passwordlessLogin||t.resetPassword||""!==t.resetPasswordTarget?!t.loading&&t.passwordlessLogin?e("div",{key:"reset-pw-less",staticClass:"login-additional login-passwordless"},[e("PasswordLessLoginForm",{attrs:{username:t.user,"redirect-url":t.redirectUrl,"auto-complete-allowed":t.autoCompleteAllowed,"is-https":t.isHttps,"is-localhost":t.isLocalhost},on:{"update:username":function(e){t.user=e},submit:function(e){t.loading=!0}}}),t._v(" "),e("NcButton",{attrs:{type:"tertiary","aria-label":t.t("core","Back to login form"),wide:!0},on:{click:function(e){t.passwordlessLogin=!1}}},[t._v("\n\t\t\t\t\t"+t._s(t.t("core","Back"))+"\n\t\t\t\t")])],1):!t.loading&&t.canResetPassword?e("div",{key:"reset-can-reset",staticClass:"login-additional"},[e("div",{staticClass:"lost-password-container"},[t.resetPassword?e("ResetPassword",{attrs:{username:t.user,"reset-password-link":t.resetPasswordLink},on:{"update:username":function(e){t.user=e},abort:function(e){t.resetPassword=!1}}}):t._e()],1)]):""!==t.resetPasswordTarget?e("div",[e("UpdatePassword",{attrs:{username:t.user,"reset-password-target":t.resetPasswordTarget},on:{"update:username":function(e){t.user=e},done:t.passwordResetFinished}})],1):t._e():e("div",[e("LoginForm",{attrs:{username:t.user,"redirect-url":t.redirectUrl,"direct-login":t.directLogin,messages:t.messages,errors:t.errors,"throttle-delay":t.throttleDelay,"auto-complete-allowed":t.autoCompleteAllowed,"email-states":t.emailStates},on:{"update:username":function(e){t.user=e},submit:function(e){t.loading=!0}}}),t._v(" "),t.canResetPassword&&""!==t.resetPasswordLink?e("a",{staticClass:"login-box__link",attrs:{id:"lost-password",href:t.resetPasswordLink}},[t._v("\n\t\t\t\t\t"+t._s(t.t("core","Forgot password?"))+"\n\t\t\t\t")]):t.canResetPassword&&!t.resetPassword?e("a",{staticClass:"login-box__link",attrs:{id:"lost-password",href:t.resetPasswordLink},on:{click:function(e){e.preventDefault(),t.resetPassword=!0}}},[t._v("\n\t\t\t\t\t"+t._s(t.t("core","Forgot password?"))+"\n\t\t\t\t")]):t._e(),t._v(" "),t.hasPasswordless?[t.countAlternativeLogins?e("div",{staticClass:"alternative-logins"},[t.hasPasswordless?e("a",{staticClass:"button",class:{"single-alt-login-option":t.countAlternativeLogins},attrs:{href:"#"},on:{click:function(e){e.preventDefault(),t.passwordlessLogin=!0}}},[t._v("\n\t\t\t\t\t\t\t"+t._s(t.t("core","Log in with a device"))+"\n\t\t\t\t\t\t")]):t._e()]):e("a",{attrs:{href:"#"},on:{click:function(e){e.preventDefault(),t.passwordlessLogin=!0}}},[t._v("\n\t\t\t\t\t\t"+t._s(t.t("core","Log in with a device"))+"\n\t\t\t\t\t")])]:t._e()],2)])]:[e("transition",{attrs:{name:"fade",mode:"out-in"}},[e("NcNoteCard",{attrs:{type:"info",title:t.t("core","Login form is disabled.")}},[t._v("\n\t\t\t\t"+t._s(t.t("core","The Nextcloud login form is disabled. Use another login option if available or contact your administration."))+"\n\t\t\t")])],1)],t._v(" "),e("div",{staticClass:"alternative-logins",attrs:{id:"alternative-logins"}},t._l(t.alternativeLogins,(function(n,r){return e("NcButton",{key:r,class:[n.class],attrs:{type:"secondary",wide:!0,role:"link",href:n.href}},[t._v("\n\t\t\t"+t._s(n.name)+"\n\t\t")])})),1)],2)}),[],!1,null,null,null).exports,$e={data:()=>({OC:At}),methods:{t:it.translate.bind(it),n:it.translatePlural.bind(it)}};s.Ay.mixin($e),(new(s.Ay.extend(je))).$mount("#login")},21391:(t,e,n)=>{var r,i,s;s="object"==typeof self&&self.self===self&&self||"object"==typeof n.g&&n.g.global===n.g&&n.g,r=[n(4523),n(74692),e],i=function(t,e,n){s.Backbone=function(t,e,n,r){var i=t.Backbone,s=Array.prototype.slice;e.VERSION="1.6.0",e.$=r,e.noConflict=function(){return t.Backbone=i,this},e.emulateHTTP=!1,e.emulateJSON=!1;var o,a=e.Events={},l=/\s+/,c=function(t,e,r,i,s){var o,a=0;if(r&&"object"==typeof r){void 0!==i&&"context"in s&&void 0===s.context&&(s.context=i);for(o=n.keys(r);athis.length&&(i=this.length),i<0&&(i+=this.length+1);var s,o,a=[],l=[],c=[],u=[],d={},h=e.add,p=e.merge,f=e.remove,m=!1,g=this.comparator&&null==i&&!1!==e.sort,v=n.isString(this.comparator)?this.comparator:null;for(o=0;o0&&!e.silent&&delete e.index,n},_isModel:function(t){return t instanceof v},_addReference:function(t,e){this._byId[t.cid]=t;var n=this.modelId(t.attributes,t.idAttribute);null!=n&&(this._byId[n]=t),t.on("all",this._onModelEvent,this)},_removeReference:function(t,e){delete this._byId[t.cid];var n=this.modelId(t.attributes,t.idAttribute);null!=n&&delete this._byId[n],this===t.collection&&delete t.collection,t.off("all",this._onModelEvent,this)},_onModelEvent:function(t,e,n,r){if(e){if(("add"===t||"remove"===t)&&n!==this)return;if("destroy"===t&&this.remove(e,r),"changeId"===t){var i=this.modelId(e.previousAttributes(),e.idAttribute),s=this.modelId(e.attributes,e.idAttribute);null!=i&&delete this._byId[i],null!=s&&(this._byId[s]=e)}}this.trigger.apply(this,arguments)},_forwardPristineError:function(t,e,n){this.has(t)||this._onModelEvent("error",t,e,n)}});var E="function"==typeof Symbol&&Symbol.iterator;E&&(y.prototype[E]=y.prototype.values);var _=function(t,e){this._collection=t,this._kind=e,this._index=0},x=1,N=2,C=3;E&&(_.prototype[E]=function(){return this}),_.prototype.next=function(){if(this._collection){if(this._index7),this._useHashChange=this._wantsHashChange&&this._hasHashChange,this._wantsPushState=!!this.options.pushState,this._hasPushState=!(!this.history||!this.history.pushState),this._usePushState=this._wantsPushState&&this._hasPushState,this.fragment=this.getFragment(),this.root=("/"+this.root+"/").replace(U,"/"),this._wantsHashChange&&this._wantsPushState){if(!this._hasPushState&&!this.atRoot()){var e=this.root.slice(0,-1)||"/";return this.location.replace(e+"#"+this.getPath()),!0}this._hasPushState&&this.atRoot()&&this.navigate(this.getHash(),{replace:!0})}if(!this._hasHashChange&&this._wantsHashChange&&!this._usePushState){this.iframe=document.createElement("iframe"),this.iframe.src="javascript:0",this.iframe.style.display="none",this.iframe.tabIndex=-1;var r=document.body,i=r.insertBefore(this.iframe,r.firstChild).contentWindow;i.document.open(),i.document.close(),i.location.hash="#"+this.fragment}var s=window.addEventListener||function(t,e){return attachEvent("on"+t,e)};if(this._usePushState?s("popstate",this.checkUrl,!1):this._useHashChange&&!this.iframe?s("hashchange",this.checkUrl,!1):this._wantsHashChange&&(this._checkUrlInterval=setInterval(this.checkUrl,this.interval)),!this.options.silent)return this.loadUrl()},stop:function(){var t=window.removeEventListener||function(t,e){return detachEvent("on"+t,e)};this._usePushState?t("popstate",this.checkUrl,!1):this._useHashChange&&!this.iframe&&t("hashchange",this.checkUrl,!1),this.iframe&&(document.body.removeChild(this.iframe),this.iframe=null),this._checkUrlInterval&&clearInterval(this._checkUrlInterval),M.started=!1},route:function(t,e){this.handlers.unshift({route:t,callback:e})},checkUrl:function(t){var e=this.getFragment();if(e===this.fragment&&this.iframe&&(e=this.getHash(this.iframe.contentWindow)),e===this.fragment)return!this.matchRoot()&&this.notfound();this.iframe&&this.navigate(e),this.loadUrl()},loadUrl:function(t){return this.matchRoot()?(t=this.fragment=this.getFragment(t),n.some(this.handlers,(function(e){if(e.route.test(t))return e.callback(t),!0}))||this.notfound()):this.notfound()},notfound:function(){return this.trigger("notfound"),!1},navigate:function(t,e){if(!M.started)return!1;e&&!0!==e||(e={trigger:!!e}),t=this.getFragment(t||"");var n=this.root;this._trailingSlash||""!==t&&"?"!==t.charAt(0)||(n=n.slice(0,-1)||"/");var r=n+t;t=t.replace(z,"");var i=this.decodeFragment(t);if(this.fragment!==i){if(this.fragment=i,this._usePushState)this.history[e.replace?"replaceState":"pushState"]({},document.title,r);else{if(!this._wantsHashChange)return this.location.assign(r);if(this._updateHash(this.location,t,e.replace),this.iframe&&t!==this.getHash(this.iframe.contentWindow)){var s=this.iframe.contentWindow;e.replace||(s.document.open(),s.document.close()),this._updateHash(s.location,t,e.replace)}}return e.trigger?this.loadUrl(t):void 0}},_updateHash:function(t,e,n){if(n){var r=t.href.replace(/(javascript:|#).*$/,"");t.replace(r+"#"+e)}else t.hash="#"+e}}),e.history=new M;v.extend=y.extend=L.extend=T.extend=M.extend=function(t,e){var r,i=this;return r=t&&n.has(t,"constructor")?t.constructor:function(){return i.apply(this,arguments)},n.extend(r,i,e),r.prototype=n.create(i.prototype,t),r.prototype.constructor=r,r.__super__=i.prototype,r};var H=function(){throw new Error('A "url" property or function must be specified')},q=function(t,e){var n=e.error;e.error=function(r){n&&n.call(e.context,t,r,e),t.trigger("error",t,r,e)}};return e._debug=function(){return{root:t,_:n}},e}(s,n,t,e)}.apply(e,r),void 0===i||(t.exports=i)},39136:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(71354),i=n.n(r),s=n(76314),o=n.n(s)()(i());o.push([t.id,".button-vue[data-v-6acd8f45]{margin-top:.5rem}","",{version:3,sources:["webpack://./core/src/components/login/LoginButton.vue"],names:[],mappings:"AACA,6BACC,gBAAA",sourcesContent:["\n.button-vue {\n\tmargin-top: .5rem;\n}\n"],sourceRoot:""}]);const a=o},49618:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(71354),i=n.n(r),s=n(76314),o=n.n(s)()(i());o.push([t.id,".login-form[data-v-f18886ec]{text-align:start;font-size:1rem}.login-form__fieldset[data-v-f18886ec]{width:100%;display:flex;flex-direction:column;gap:.5rem}.login-form__headline[data-v-f18886ec]{text-align:center;overflow-wrap:anywhere}","",{version:3,sources:["webpack://./core/src/components/login/LoginForm.vue"],names:[],mappings:"AACA,6BACC,gBAAA,CACA,cAAA,CAEA,uCACC,UAAA,CACA,YAAA,CACA,qBAAA,CACA,SAAA,CAGD,uCACC,iBAAA,CACA,sBAAA",sourcesContent:["\n.login-form {\n\ttext-align: start;\n\tfont-size: 1rem;\n\n\t&__fieldset {\n\t\twidth: 100%;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tgap: .5rem;\n\t}\n\n\t&__headline {\n\t\ttext-align: center;\n\t\toverflow-wrap: anywhere;\n\t}\n}\n"],sourceRoot:""}]);const a=o},87511:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(71354),i=n.n(r),s=n(76314),o=n.n(s)()(i());o.push([t.id,"fieldset[data-v-4a6bfc86]{display:flex;flex-direction:column;gap:.5rem}fieldset[data-v-4a6bfc86] label{text-align:initial}.update[data-v-4a6bfc86]{margin:0 auto}","",{version:3,sources:["webpack://./core/src/components/login/PasswordLessLoginForm.vue"],names:[],mappings:"AACA,0BACC,YAAA,CACA,qBAAA,CACA,SAAA,CAEA,gCACC,kBAAA,CAIF,yBACC,aAAA",sourcesContent:["\nfieldset {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 0.5rem;\n\n\t:deep(label) {\n\t\ttext-align: initial;\n\t}\n}\n\n.update {\n\tmargin: 0 auto;\n}\n"],sourceRoot:""}]);const a=o},92022:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(71354),i=n.n(r),s=n(76314),o=n.n(s)()(i());o.push([t.id,".login-form[data-v-586305cf]{text-align:start;font-size:1rem}.login-form__fieldset[data-v-586305cf]{width:100%;display:flex;flex-direction:column;gap:.5rem}.login-form__link[data-v-586305cf]{display:block;font-weight:normal !important;cursor:pointer;font-size:var(--default-font-size);text-align:center;padding:.5rem 1rem 1rem 1rem}","",{version:3,sources:["webpack://./core/src/components/login/ResetPassword.vue"],names:[],mappings:"AACA,6BACC,gBAAA,CACA,cAAA,CAEA,uCACC,UAAA,CACA,YAAA,CACA,qBAAA,CACA,SAAA,CAGD,mCACC,aAAA,CACA,6BAAA,CACA,cAAA,CACA,kCAAA,CACA,iBAAA,CACA,4BAAA",sourcesContent:["\n.login-form {\n\ttext-align: start;\n\tfont-size: 1rem;\n\n\t&__fieldset {\n\t\twidth: 100%;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tgap: .5rem;\n\t}\n\n\t&__link {\n\t\tdisplay: block;\n\t\tfont-weight: normal !important;\n\t\tcursor: pointer;\n\t\tfont-size: var(--default-font-size);\n\t\ttext-align: center;\n\t\tpadding: .5rem 1rem 1rem 1rem;\n\t}\n}\n"],sourceRoot:""}]);const a=o},30638:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(71354),i=n.n(r),s=n(76314),o=n.n(s)()(i());o.push([t.id,"body{font-size:var(--default-font-size)}.login-box{width:320px;box-sizing:border-box}.login-box__link{display:block;padding:1rem;font-size:var(--default-font-size);text-align:center;font-weight:normal !important}.fade-enter-active,.fade-leave-active{transition:opacity .3s}.fade-enter,.fade-leave-to{opacity:0}.alternative-logins{display:flex;flex-direction:column;gap:.75rem}.alternative-logins .button-vue{box-sizing:border-box}.login-passwordless .button-vue{margin-top:.5rem}","",{version:3,sources:["webpack://./core/src/views/Login.vue"],names:[],mappings:"AACA,KACC,kCAAA,CAGD,WAEC,WAAA,CACA,qBAAA,CAEA,iBACC,aAAA,CACA,YAAA,CACA,kCAAA,CACA,iBAAA,CACA,6BAAA,CAIF,sCACC,sBAAA,CAED,2BACC,SAAA,CAGD,oBACC,YAAA,CACA,qBAAA,CACA,UAAA,CAEA,gCACC,qBAAA,CAKD,gCACC,gBAAA",sourcesContent:["\nbody {\n\tfont-size: var(--default-font-size);\n}\n\n.login-box {\n\t// Same size as dashboard panels\n\twidth: 320px;\n\tbox-sizing: border-box;\n\n\t&__link {\n\t\tdisplay: block;\n\t\tpadding: 1rem;\n\t\tfont-size: var(--default-font-size);\n\t\ttext-align: center;\n\t\tfont-weight: normal !important;\n\t}\n}\n\n.fade-enter-active, .fade-leave-active {\n\ttransition: opacity .3s;\n}\n.fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ {\n\topacity: 0;\n}\n\n.alternative-logins {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 0.75rem;\n\n\t.button-vue {\n\t\tbox-sizing: border-box;\n\t}\n}\n\n.login-passwordless {\n\t.button-vue {\n\t\tmargin-top: 0.5rem;\n\t}\n}\n"],sourceRoot:""}]);const a=o},37861:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(71354),i=n.n(r),s=n(76314),o=n.n(s)()(i());o.push([t.id,"\nfieldset[data-v-6bdd5975] {\n\ttext-align: center;\n}\ninput[type=submit][data-v-6bdd5975] {\n\tmargin-top: 20px;\n}\n","",{version:3,sources:["webpack://./core/src/components/login/UpdatePassword.vue"],names:[],mappings:";AA2HA;CACA,kBAAA;AACA;AAEA;CACA,gBAAA;AACA",sourcesContent:["\x3c!--\n - SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n--\x3e\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!./LoginButton.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!./LoginButton.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!./LoginButton.vue?vue&type=style&index=0&id=6acd8f45&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \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!./LoginButton.vue?vue&type=style&index=0&id=6acd8f45&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./LoginButton.vue?vue&type=template&id=6acd8f45&scoped=true\"\nimport script from \"./LoginButton.vue?vue&type=script&lang=js\"\nexport * from \"./LoginButton.vue?vue&type=script&lang=js\"\nimport style0 from \"./LoginButton.vue?vue&type=style&index=0&id=6acd8f45&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 \"6acd8f45\",\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!./LoginForm.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!./LoginForm.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!./LoginForm.vue?vue&type=style&index=0&id=f18886ec&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \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!./LoginForm.vue?vue&type=style&index=0&id=f18886ec&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./LoginForm.vue?vue&type=template&id=f18886ec&scoped=true\"\nimport script from \"./LoginForm.vue?vue&type=script&lang=js\"\nexport * from \"./LoginForm.vue?vue&type=script&lang=js\"\nimport style0 from \"./LoginForm.vue?vue&type=style&index=0&id=f18886ec&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 \"f18886ec\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form',{ref:\"loginForm\",staticClass:\"login-form\",attrs:{\"method\":\"post\",\"name\":\"login\",\"action\":_vm.loginActionUrl},on:{\"submit\":_vm.submit}},[_c('fieldset',{staticClass:\"login-form__fieldset\",attrs:{\"data-login-form\":\"\"}},[(_vm.apacheAuthFailed)?_c('NcNoteCard',{attrs:{\"title\":_vm.t('core', 'Server side authentication failed!'),\"type\":\"warning\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Please contact your administrator.'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.csrfCheckFailed)?_c('NcNoteCard',{attrs:{\"heading\":_vm.t('core', 'Temporary error'),\"type\":\"error\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Please try again.'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.messages.length > 0)?_c('NcNoteCard',_vm._l((_vm.messages),function(message,index){return _c('div',{key:index},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(message)),_c('br')])}),0):_vm._e(),_vm._v(\" \"),(_vm.internalException)?_c('NcNoteCard',{class:_vm.t('core', 'An internal error occurred.'),attrs:{\"type\":\"warning\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Please try again or contact your administrator.'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"hidden\",attrs:{\"id\":\"message\"}},[_c('img',{staticClass:\"float-spinner\",attrs:{\"alt\":\"\",\"src\":_vm.loadingIcon}}),_vm._v(\" \"),_c('span',{attrs:{\"id\":\"messageText\"}}),_vm._v(\" \"),_c('div',{staticStyle:{\"clear\":\"both\"}})]),_vm._v(\" \"),_c('h2',{staticClass:\"login-form__headline\",attrs:{\"data-login-form-headline\":\"\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.headlineText)+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('NcTextField',{ref:\"user\",class:{shake: _vm.invalidPassword},attrs:{\"id\":\"user\",\"label\":_vm.loginText,\"name\":\"user\",\"maxlength\":255,\"value\":_vm.user,\"autocapitalize\":\"none\",\"spellchecking\":false,\"autocomplete\":_vm.autoCompleteAllowed ? 'username' : 'off',\"required\":\"\",\"error\":_vm.userNameInputLengthIs255,\"helper-text\":_vm.userInputHelperText,\"data-login-form-input-user\":\"\"},on:{\"update:value\":function($event){_vm.user=$event},\"change\":_vm.updateUsername}}),_vm._v(\" \"),_c('NcPasswordField',{ref:\"password\",class:{shake: _vm.invalidPassword},attrs:{\"id\":\"password\",\"name\":\"password\",\"value\":_vm.password,\"spellchecking\":false,\"autocapitalize\":\"none\",\"autocomplete\":_vm.autoCompleteAllowed ? 'current-password' : 'off',\"label\":_vm.t('core', 'Password'),\"helper-text\":_vm.errorLabel,\"error\":_vm.isError,\"data-login-form-input-password\":\"\",\"required\":\"\"},on:{\"update:value\":function($event){_vm.password=$event}}}),_vm._v(\" \"),_c('LoginButton',{attrs:{\"data-login-form-submit\":\"\",\"loading\":_vm.loading}}),_vm._v(\" \"),(_vm.redirectUrl)?_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"redirect_url\"},domProps:{\"value\":_vm.redirectUrl}}):_vm._e(),_vm._v(\" \"),_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"timezone\"},domProps:{\"value\":_vm.timezone}}),_vm._v(\" \"),_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"timezone_offset\"},domProps:{\"value\":_vm.timezoneOffset}}),_vm._v(\" \"),_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"requesttoken\"},domProps:{\"value\":_vm.requestToken}}),_vm._v(\" \"),(_vm.directLogin)?_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"direct\",\"value\":\"1\"}}):_vm._e()],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/* [@simplewebauthn/browser@10.0.0] */\nfunction bufferToBase64URLString(buffer) {\n const bytes = new Uint8Array(buffer);\n let str = '';\n for (const charCode of bytes) {\n str += String.fromCharCode(charCode);\n }\n const base64String = btoa(str);\n return base64String.replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=/g, '');\n}\n\nfunction base64URLStringToBuffer(base64URLString) {\n const base64 = base64URLString.replace(/-/g, '+').replace(/_/g, '/');\n const padLength = (4 - (base64.length % 4)) % 4;\n const padded = base64.padEnd(base64.length + padLength, '=');\n const binary = atob(padded);\n const buffer = new ArrayBuffer(binary.length);\n const bytes = new Uint8Array(buffer);\n for (let i = 0; i < binary.length; i++) {\n bytes[i] = binary.charCodeAt(i);\n }\n return buffer;\n}\n\nfunction browserSupportsWebAuthn() {\n return (window?.PublicKeyCredential !== undefined &&\n typeof window.PublicKeyCredential === 'function');\n}\n\nfunction toPublicKeyCredentialDescriptor(descriptor) {\n const { id } = descriptor;\n return {\n ...descriptor,\n id: base64URLStringToBuffer(id),\n transports: descriptor.transports,\n };\n}\n\nfunction isValidDomain(hostname) {\n return (hostname === 'localhost' ||\n /^([a-z0-9]+(-[a-z0-9]+)*\\.)+[a-z]{2,}$/i.test(hostname));\n}\n\nclass WebAuthnError extends Error {\n constructor({ message, code, cause, name, }) {\n super(message, { cause });\n this.name = name ?? cause.name;\n this.code = code;\n }\n}\n\nfunction identifyRegistrationError({ error, options, }) {\n const { publicKey } = options;\n if (!publicKey) {\n throw Error('options was missing required publicKey property');\n }\n if (error.name === 'AbortError') {\n if (options.signal instanceof AbortSignal) {\n return new WebAuthnError({\n message: 'Registration ceremony was sent an abort signal',\n code: 'ERROR_CEREMONY_ABORTED',\n cause: error,\n });\n }\n }\n else if (error.name === 'ConstraintError') {\n if (publicKey.authenticatorSelection?.requireResidentKey === true) {\n return new WebAuthnError({\n message: 'Discoverable credentials were required but no available authenticator supported it',\n code: 'ERROR_AUTHENTICATOR_MISSING_DISCOVERABLE_CREDENTIAL_SUPPORT',\n cause: error,\n });\n }\n else if (publicKey.authenticatorSelection?.userVerification === 'required') {\n return new WebAuthnError({\n message: 'User verification was required but no available authenticator supported it',\n code: 'ERROR_AUTHENTICATOR_MISSING_USER_VERIFICATION_SUPPORT',\n cause: error,\n });\n }\n }\n else if (error.name === 'InvalidStateError') {\n return new WebAuthnError({\n message: 'The authenticator was previously registered',\n code: 'ERROR_AUTHENTICATOR_PREVIOUSLY_REGISTERED',\n cause: error,\n });\n }\n else if (error.name === 'NotAllowedError') {\n return new WebAuthnError({\n message: error.message,\n code: 'ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY',\n cause: error,\n });\n }\n else if (error.name === 'NotSupportedError') {\n const validPubKeyCredParams = publicKey.pubKeyCredParams.filter((param) => param.type === 'public-key');\n if (validPubKeyCredParams.length === 0) {\n return new WebAuthnError({\n message: 'No entry in pubKeyCredParams was of type \"public-key\"',\n code: 'ERROR_MALFORMED_PUBKEYCREDPARAMS',\n cause: error,\n });\n }\n return new WebAuthnError({\n message: 'No available authenticator supported any of the specified pubKeyCredParams algorithms',\n code: 'ERROR_AUTHENTICATOR_NO_SUPPORTED_PUBKEYCREDPARAMS_ALG',\n cause: error,\n });\n }\n else if (error.name === 'SecurityError') {\n const effectiveDomain = window.location.hostname;\n if (!isValidDomain(effectiveDomain)) {\n return new WebAuthnError({\n message: `${window.location.hostname} is an invalid domain`,\n code: 'ERROR_INVALID_DOMAIN',\n cause: error,\n });\n }\n else if (publicKey.rp.id !== effectiveDomain) {\n return new WebAuthnError({\n message: `The RP ID \"${publicKey.rp.id}\" is invalid for this domain`,\n code: 'ERROR_INVALID_RP_ID',\n cause: error,\n });\n }\n }\n else if (error.name === 'TypeError') {\n if (publicKey.user.id.byteLength < 1 || publicKey.user.id.byteLength > 64) {\n return new WebAuthnError({\n message: 'User ID was not between 1 and 64 characters',\n code: 'ERROR_INVALID_USER_ID_LENGTH',\n cause: error,\n });\n }\n }\n else if (error.name === 'UnknownError') {\n return new WebAuthnError({\n message: 'The authenticator was unable to process the specified options, or could not create a new credential',\n code: 'ERROR_AUTHENTICATOR_GENERAL_ERROR',\n cause: error,\n });\n }\n return error;\n}\n\nclass BaseWebAuthnAbortService {\n createNewAbortSignal() {\n if (this.controller) {\n const abortError = new Error('Cancelling existing WebAuthn API call for new one');\n abortError.name = 'AbortError';\n this.controller.abort(abortError);\n }\n const newController = new AbortController();\n this.controller = newController;\n return newController.signal;\n }\n cancelCeremony() {\n if (this.controller) {\n const abortError = new Error('Manually cancelling existing WebAuthn API call');\n abortError.name = 'AbortError';\n this.controller.abort(abortError);\n this.controller = undefined;\n }\n }\n}\nconst WebAuthnAbortService = new BaseWebAuthnAbortService();\n\nconst attachments = ['cross-platform', 'platform'];\nfunction toAuthenticatorAttachment(attachment) {\n if (!attachment) {\n return;\n }\n if (attachments.indexOf(attachment) < 0) {\n return;\n }\n return attachment;\n}\n\nasync function startRegistration(optionsJSON) {\n if (!browserSupportsWebAuthn()) {\n throw new Error('WebAuthn is not supported in this browser');\n }\n const publicKey = {\n ...optionsJSON,\n challenge: base64URLStringToBuffer(optionsJSON.challenge),\n user: {\n ...optionsJSON.user,\n id: base64URLStringToBuffer(optionsJSON.user.id),\n },\n excludeCredentials: optionsJSON.excludeCredentials?.map(toPublicKeyCredentialDescriptor),\n };\n const options = { publicKey };\n options.signal = WebAuthnAbortService.createNewAbortSignal();\n let credential;\n try {\n credential = (await navigator.credentials.create(options));\n }\n catch (err) {\n throw identifyRegistrationError({ error: err, options });\n }\n if (!credential) {\n throw new Error('Registration was not completed');\n }\n const { id, rawId, response, type } = credential;\n let transports = undefined;\n if (typeof response.getTransports === 'function') {\n transports = response.getTransports();\n }\n let responsePublicKeyAlgorithm = undefined;\n if (typeof response.getPublicKeyAlgorithm === 'function') {\n try {\n responsePublicKeyAlgorithm = response.getPublicKeyAlgorithm();\n }\n catch (error) {\n warnOnBrokenImplementation('getPublicKeyAlgorithm()', error);\n }\n }\n let responsePublicKey = undefined;\n if (typeof response.getPublicKey === 'function') {\n try {\n const _publicKey = response.getPublicKey();\n if (_publicKey !== null) {\n responsePublicKey = bufferToBase64URLString(_publicKey);\n }\n }\n catch (error) {\n warnOnBrokenImplementation('getPublicKey()', error);\n }\n }\n let responseAuthenticatorData;\n if (typeof response.getAuthenticatorData === 'function') {\n try {\n responseAuthenticatorData = bufferToBase64URLString(response.getAuthenticatorData());\n }\n catch (error) {\n warnOnBrokenImplementation('getAuthenticatorData()', error);\n }\n }\n return {\n id,\n rawId: bufferToBase64URLString(rawId),\n response: {\n attestationObject: bufferToBase64URLString(response.attestationObject),\n clientDataJSON: bufferToBase64URLString(response.clientDataJSON),\n transports,\n publicKeyAlgorithm: responsePublicKeyAlgorithm,\n publicKey: responsePublicKey,\n authenticatorData: responseAuthenticatorData,\n },\n type,\n clientExtensionResults: credential.getClientExtensionResults(),\n authenticatorAttachment: toAuthenticatorAttachment(credential.authenticatorAttachment),\n };\n}\nfunction warnOnBrokenImplementation(methodName, cause) {\n console.warn(`The browser extension that intercepted this WebAuthn API call incorrectly implemented ${methodName}. You should report this error to them.\\n`, cause);\n}\n\nfunction browserSupportsWebAuthnAutofill() {\n if (!browserSupportsWebAuthn()) {\n return new Promise((resolve) => resolve(false));\n }\n const globalPublicKeyCredential = window\n .PublicKeyCredential;\n if (globalPublicKeyCredential.isConditionalMediationAvailable === undefined) {\n return new Promise((resolve) => resolve(false));\n }\n return globalPublicKeyCredential.isConditionalMediationAvailable();\n}\n\nfunction identifyAuthenticationError({ error, options, }) {\n const { publicKey } = options;\n if (!publicKey) {\n throw Error('options was missing required publicKey property');\n }\n if (error.name === 'AbortError') {\n if (options.signal instanceof AbortSignal) {\n return new WebAuthnError({\n message: 'Authentication ceremony was sent an abort signal',\n code: 'ERROR_CEREMONY_ABORTED',\n cause: error,\n });\n }\n }\n else if (error.name === 'NotAllowedError') {\n return new WebAuthnError({\n message: error.message,\n code: 'ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY',\n cause: error,\n });\n }\n else if (error.name === 'SecurityError') {\n const effectiveDomain = window.location.hostname;\n if (!isValidDomain(effectiveDomain)) {\n return new WebAuthnError({\n message: `${window.location.hostname} is an invalid domain`,\n code: 'ERROR_INVALID_DOMAIN',\n cause: error,\n });\n }\n else if (publicKey.rpId !== effectiveDomain) {\n return new WebAuthnError({\n message: `The RP ID \"${publicKey.rpId}\" is invalid for this domain`,\n code: 'ERROR_INVALID_RP_ID',\n cause: error,\n });\n }\n }\n else if (error.name === 'UnknownError') {\n return new WebAuthnError({\n message: 'The authenticator was unable to process the specified options, or could not create a new assertion signature',\n code: 'ERROR_AUTHENTICATOR_GENERAL_ERROR',\n cause: error,\n });\n }\n return error;\n}\n\nasync function startAuthentication(optionsJSON, useBrowserAutofill = false) {\n if (!browserSupportsWebAuthn()) {\n throw new Error('WebAuthn is not supported in this browser');\n }\n let allowCredentials;\n if (optionsJSON.allowCredentials?.length !== 0) {\n allowCredentials = optionsJSON.allowCredentials?.map(toPublicKeyCredentialDescriptor);\n }\n const publicKey = {\n ...optionsJSON,\n challenge: base64URLStringToBuffer(optionsJSON.challenge),\n allowCredentials,\n };\n const options = {};\n if (useBrowserAutofill) {\n if (!(await browserSupportsWebAuthnAutofill())) {\n throw Error('Browser does not support WebAuthn autofill');\n }\n const eligibleInputs = document.querySelectorAll(\"input[autocomplete$='webauthn']\");\n if (eligibleInputs.length < 1) {\n throw Error('No with \"webauthn\" as the only or last value in its `autocomplete` attribute was detected');\n }\n options.mediation = 'conditional';\n publicKey.allowCredentials = [];\n }\n options.publicKey = publicKey;\n options.signal = WebAuthnAbortService.createNewAbortSignal();\n let credential;\n try {\n credential = (await navigator.credentials.get(options));\n }\n catch (err) {\n throw identifyAuthenticationError({ error: err, options });\n }\n if (!credential) {\n throw new Error('Authentication was not completed');\n }\n const { id, rawId, response, type } = credential;\n let userHandle = undefined;\n if (response.userHandle) {\n userHandle = bufferToBase64URLString(response.userHandle);\n }\n return {\n id,\n rawId: bufferToBase64URLString(rawId),\n response: {\n authenticatorData: bufferToBase64URLString(response.authenticatorData),\n clientDataJSON: bufferToBase64URLString(response.clientDataJSON),\n signature: bufferToBase64URLString(response.signature),\n userHandle,\n },\n type,\n clientExtensionResults: credential.getClientExtensionResults(),\n authenticatorAttachment: toAuthenticatorAttachment(credential.authenticatorAttachment),\n };\n}\n\nfunction platformAuthenticatorIsAvailable() {\n if (!browserSupportsWebAuthn()) {\n return new Promise((resolve) => resolve(false));\n }\n return PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable();\n}\n\nexport { WebAuthnAbortService, WebAuthnError, base64URLStringToBuffer, browserSupportsWebAuthn, browserSupportsWebAuthnAutofill, bufferToBase64URLString, platformAuthenticatorIsAvailable, startAuthentication, startRegistration };\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\nconst 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 * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { startAuthentication as startWebauthnAuthentication } from '@simplewebauthn/browser';\nimport { generateUrl } from '@nextcloud/router';\nimport Axios from '@nextcloud/axios';\nimport logger from '../logger';\nexport class NoValidCredentials extends Error {\n}\n/**\n * Start webautn authentication\n * This loads the challenge, connects to the authenticator and returns the repose that needs to be sent to the server.\n *\n * @param loginName Name to login\n */\nexport async function startAuthentication(loginName) {\n const url = generateUrl('/login/webauthn/start');\n const { data } = await Axios.post(url, { loginName });\n if (!data.allowCredentials || data.allowCredentials.length === 0) {\n logger.error('No valid credentials returned for webauthn');\n throw new NoValidCredentials();\n }\n return await startWebauthnAuthentication(data);\n}\n/**\n * Verify webauthn authentication\n * @param authData The authentication data to sent to the server\n */\nexport async function finishAuthentication(authData) {\n const url = generateUrl('/login/webauthn/finish');\n const { data } = await Axios.post(url, { data: JSON.stringify(authData) });\n return data;\n}\n","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Information.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Information.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Information.vue?vue&type=template&id=70e6f3ef\"\nimport script from \"./Information.vue?vue&type=script&lang=js\"\nexport * from \"./Information.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 information-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\":\"M13,9H11V7H13M13,17H11V11H13M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./LockOpen.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./LockOpen.vue?vue&type=script&lang=js\"","\n\n","import { render, staticRenderFns } from \"./LockOpen.vue?vue&type=template&id=1b7ea4e7\"\nimport script from \"./LockOpen.vue?vue&type=script&lang=js\"\nexport * from \"./LockOpen.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 lock-open-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\":\"M18,8A2,2 0 0,1 20,10V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V10A2,2 0 0,1 6,8H15V6A3,3 0 0,0 12,3A3,3 0 0,0 9,6H7A5,5 0 0,1 12,1A5,5 0 0,1 17,6V8H18M12,17A2,2 0 0,0 14,15A2,2 0 0,0 12,13A2,2 0 0,0 10,15A2,2 0 0,0 12,17Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\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!./PasswordLessLoginForm.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!./PasswordLessLoginForm.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!./PasswordLessLoginForm.vue?vue&type=style&index=0&id=4a6bfc86&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \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!./PasswordLessLoginForm.vue?vue&type=style&index=0&id=4a6bfc86&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./PasswordLessLoginForm.vue?vue&type=template&id=4a6bfc86&scoped=true\"\nimport script from \"./PasswordLessLoginForm.vue?vue&type=script&lang=js\"\nexport * from \"./PasswordLessLoginForm.vue?vue&type=script&lang=js\"\nimport style0 from \"./PasswordLessLoginForm.vue?vue&type=style&index=0&id=4a6bfc86&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 \"4a6bfc86\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return ((_vm.isHttps || _vm.isLocalhost) && _vm.supportsWebauthn)?_c('form',{ref:\"loginForm\",attrs:{\"method\":\"post\",\"name\":\"login\"},on:{\"submit\":function($event){$event.preventDefault();return _vm.submit.apply(null, arguments)}}},[_c('h2',[_vm._v(_vm._s(_vm.t('core', 'Log in with a device')))]),_vm._v(\" \"),_c('fieldset',[_c('NcTextField',{attrs:{\"required\":\"\",\"value\":_vm.user,\"autocomplete\":_vm.autoCompleteAllowed ? 'on' : 'off',\"error\":!_vm.validCredentials,\"label\":_vm.t('core', 'Login or email'),\"placeholder\":_vm.t('core', 'Login or email'),\"helper-text\":!_vm.validCredentials ? _vm.t('core', 'Your account is not setup for passwordless login.') : ''},on:{\"update:value\":_vm.changeUsername}}),_vm._v(\" \"),(_vm.validCredentials)?_c('LoginButton',{attrs:{\"loading\":_vm.loading},on:{\"click\":_vm.authenticate}}):_vm._e()],1)]):(!_vm.supportsWebauthn)?_c('div',{staticClass:\"update\"},[_c('InformationIcon',{attrs:{\"size\":\"70\"}}),_vm._v(\" \"),_c('h2',[_vm._v(_vm._s(_vm.t('core', 'Browser not supported')))]),_vm._v(\" \"),_c('p',{staticClass:\"infogroup\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('core', 'Passwordless authentication is not supported in your browser.'))+\"\\n\\t\")])],1):(!_vm.isHttps && !_vm.isLocalhost)?_c('div',{staticClass:\"update\"},[_c('LockOpenIcon',{attrs:{\"size\":\"70\"}}),_vm._v(\" \"),_c('h2',[_vm._v(_vm._s(_vm.t('core', 'Your connection is not secure')))]),_vm._v(\" \"),_c('p',{staticClass:\"infogroup\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('core', 'Passwordless authentication is only available over a secure connection.'))+\"\\n\\t\")])],1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form',{staticClass:\"login-form\",on:{\"submit\":function($event){$event.preventDefault();return _vm.submit.apply(null, arguments)}}},[_c('fieldset',{staticClass:\"login-form__fieldset\"},[_c('NcTextField',{attrs:{\"id\":\"user\",\"value\":_vm.user,\"name\":\"user\",\"maxlength\":255,\"autocapitalize\":\"off\",\"label\":_vm.t('core', 'Login or email'),\"error\":_vm.userNameInputLengthIs255,\"helper-text\":_vm.userInputHelperText,\"required\":\"\"},on:{\"update:value\":function($event){_vm.user=$event},\"change\":_vm.updateUsername}}),_vm._v(\" \"),_c('LoginButton',{attrs:{\"value\":_vm.t('core', 'Reset password')}}),_vm._v(\" \"),(_vm.message === 'send-success')?_c('NcNoteCard',{attrs:{\"type\":\"success\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'If this account exists, a password reset message has been sent to its email address. If you do not receive it, verify your email address and/or Login, check your spam/junk folders or ask your local administration for help.'))+\"\\n\\t\\t\")]):(_vm.message === 'send-error')?_c('NcNoteCard',{attrs:{\"type\":\"error\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Couldn\\'t send reset email. Please contact your administrator.'))+\"\\n\\t\\t\")]):(_vm.message === 'reset-error')?_c('NcNoteCard',{attrs:{\"type\":\"error\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Password cannot be changed. Please contact your administrator.'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('a',{staticClass:\"login-form__link\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.$emit('abort')}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Back to login'))+\"\\n\\t\\t\")])],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!./ResetPassword.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!./ResetPassword.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!./ResetPassword.vue?vue&type=style&index=0&id=586305cf&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \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!./ResetPassword.vue?vue&type=style&index=0&id=586305cf&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./ResetPassword.vue?vue&type=template&id=586305cf&scoped=true\"\nimport script from \"./ResetPassword.vue?vue&type=script&lang=js\"\nexport * from \"./ResetPassword.vue?vue&type=script&lang=js\"\nimport style0 from \"./ResetPassword.vue?vue&type=style&index=0&id=586305cf&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 \"586305cf\",\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!./UpdatePassword.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!./UpdatePassword.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/vue-loader/lib/index.js??vue-loader-options!./UpdatePassword.vue?vue&type=style&index=0&id=6bdd5975&prod&scoped=true&lang=css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \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!./UpdatePassword.vue?vue&type=style&index=0&id=6bdd5975&prod&scoped=true&lang=css\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UpdatePassword.vue?vue&type=template&id=6bdd5975&scoped=true\"\nimport script from \"./UpdatePassword.vue?vue&type=script&lang=js\"\nexport * from \"./UpdatePassword.vue?vue&type=script&lang=js\"\nimport style0 from \"./UpdatePassword.vue?vue&type=style&index=0&id=6bdd5975&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 \"6bdd5975\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form',{on:{\"submit\":function($event){$event.preventDefault();return _vm.submit.apply(null, arguments)}}},[_c('fieldset',[_c('p',[_c('label',{staticClass:\"infield\",attrs:{\"for\":\"password\"}},[_vm._v(_vm._s(_vm.t('core', 'New password')))]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.password),expression:\"password\"}],attrs:{\"id\":\"password\",\"type\":\"password\",\"name\":\"password\",\"autocomplete\":\"new-password\",\"autocapitalize\":\"none\",\"spellcheck\":\"false\",\"required\":\"\",\"placeholder\":_vm.t('core', 'New password')},domProps:{\"value\":(_vm.password)},on:{\"input\":function($event){if($event.target.composing)return;_vm.password=$event.target.value}}})]),_vm._v(\" \"),(_vm.encrypted)?_c('div',{staticClass:\"update\"},[_c('p',[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Your files are encrypted. There will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.proceed),expression:\"proceed\"}],staticClass:\"checkbox\",attrs:{\"id\":\"encrypted-continue\",\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.proceed)?_vm._i(_vm.proceed,null)>-1:(_vm.proceed)},on:{\"change\":function($event){var $$a=_vm.proceed,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.proceed=$$a.concat([$$v]))}else{$$i>-1&&(_vm.proceed=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.proceed=$$c}}}}),_vm._v(\" \"),_c('label',{attrs:{\"for\":\"encrypted-continue\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'I know what I\\'m doing'))+\"\\n\\t\\t\\t\")])]):_vm._e(),_vm._v(\" \"),_c('LoginButton',{attrs:{\"loading\":_vm.loading,\"value\":_vm.t('core', 'Reset password'),\"value-loading\":_vm.t('core', 'Resetting password')}}),_vm._v(\" \"),(_vm.error && _vm.message)?_c('p',{class:{warning: _vm.error}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.message)+\"\\n\\t\\t\")]):_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!./Login.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!./Login.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!./Login.vue?vue&type=style&index=0&id=6adceba0&prod&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \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!./Login.vue?vue&type=style&index=0&id=6adceba0&prod&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Login.vue?vue&type=template&id=6adceba0\"\nimport script from \"./Login.vue?vue&type=script&lang=js\"\nexport * from \"./Login.vue?vue&type=script&lang=js\"\nimport style0 from \"./Login.vue?vue&type=style&index=0&id=6adceba0&prod&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 null,\n null\n \n)\n\nexport default component.exports","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport L10n from '../OC/l10n.js'\nimport OC from '../OC/index.js'\n\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tOC,\n\t\t}\n\t},\n\tmethods: {\n\t\tt: L10n.translate.bind(L10n),\n\t\tn: L10n.translatePlural.bind(L10n),\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 Vue from 'vue'\n\n// eslint-disable-next-line no-unused-vars\nimport OC from './OC/index.js' // TODO: Not needed but L10n breaks if removed\nimport LoginView from './views/Login.vue'\nimport Nextcloud from './mixins/Nextcloud.js'\n\nVue.mixin(Nextcloud)\n\nconst View = Vue.extend(LoginView)\nnew View().$mount('#login')\n","// Backbone.js 1.6.0\n\n// (c) 2010-2024 Jeremy Ashkenas and DocumentCloud\n// Backbone may be freely distributed under the MIT license.\n// For all details and documentation:\n// http://backbonejs.org\n\n(function(factory) {\n\n // Establish the root object, `window` (`self`) in the browser, or `global` on the server.\n // We use `self` instead of `window` for `WebWorker` support.\n var root = typeof self == 'object' && self.self === self && self ||\n typeof global == 'object' && global.global === global && global;\n\n // Set up Backbone appropriately for the environment. Start with AMD.\n if (typeof define === 'function' && define.amd) {\n define(['underscore', 'jquery', 'exports'], function(_, $, exports) {\n // Export global even in AMD case in case this script is loaded with\n // others that may still expect a global Backbone.\n root.Backbone = factory(root, exports, _, $);\n });\n\n // Next for Node.js or CommonJS. jQuery may not be needed as a module.\n } else if (typeof exports !== 'undefined') {\n var _ = require('underscore'), $;\n try { $ = require('jquery'); } catch (e) {}\n factory(root, exports, _, $);\n\n // Finally, as a browser global.\n } else {\n root.Backbone = factory(root, {}, root._, root.jQuery || root.Zepto || root.ender || root.$);\n }\n\n})(function(root, Backbone, _, $) {\n\n // Initial Setup\n // -------------\n\n // Save the previous value of the `Backbone` variable, so that it can be\n // restored later on, if `noConflict` is used.\n var previousBackbone = root.Backbone;\n\n // Create a local reference to a common array method we'll want to use later.\n var slice = Array.prototype.slice;\n\n // Current version of the library. Keep in sync with `package.json`.\n Backbone.VERSION = '1.6.0';\n\n // For Backbone's purposes, jQuery, Zepto, Ender, or My Library (kidding) owns\n // the `$` variable.\n Backbone.$ = $;\n\n // Runs Backbone.js in *noConflict* mode, returning the `Backbone` variable\n // to its previous owner. Returns a reference to this Backbone object.\n Backbone.noConflict = function() {\n root.Backbone = previousBackbone;\n return this;\n };\n\n // Turn on `emulateHTTP` to support legacy HTTP servers. Setting this option\n // will fake `\"PATCH\"`, `\"PUT\"` and `\"DELETE\"` requests via the `_method` parameter and\n // set a `X-Http-Method-Override` header.\n Backbone.emulateHTTP = false;\n\n // Turn on `emulateJSON` to support legacy servers that can't deal with direct\n // `application/json` requests ... this will encode the body as\n // `application/x-www-form-urlencoded` instead and will send the model in a\n // form param named `model`.\n Backbone.emulateJSON = false;\n\n // Backbone.Events\n // ---------------\n\n // A module that can be mixed in to *any object* in order to provide it with\n // a custom event channel. You may bind a callback to an event with `on` or\n // remove with `off`; `trigger`-ing an event fires all callbacks in\n // succession.\n //\n // var object = {};\n // _.extend(object, Backbone.Events);\n // object.on('expand', function(){ alert('expanded'); });\n // object.trigger('expand');\n //\n var Events = Backbone.Events = {};\n\n // Regular expression used to split event strings.\n var eventSplitter = /\\s+/;\n\n // A private global variable to share between listeners and listenees.\n var _listening;\n\n // Iterates over the standard `event, callback` (as well as the fancy multiple\n // space-separated events `\"change blur\", callback` and jQuery-style event\n // maps `{event: callback}`).\n var eventsApi = function(iteratee, events, name, callback, opts) {\n var i = 0, names;\n if (name && typeof name === 'object') {\n // Handle event maps.\n if (callback !== void 0 && 'context' in opts && opts.context === void 0) opts.context = callback;\n for (names = _.keys(name); i < names.length ; i++) {\n events = eventsApi(iteratee, events, names[i], name[names[i]], opts);\n }\n } else if (name && eventSplitter.test(name)) {\n // Handle space-separated event names by delegating them individually.\n for (names = name.split(eventSplitter); i < names.length; i++) {\n events = iteratee(events, names[i], callback, opts);\n }\n } else {\n // Finally, standard events.\n events = iteratee(events, name, callback, opts);\n }\n return events;\n };\n\n // Bind an event to a `callback` function. Passing `\"all\"` will bind\n // the callback to all events fired.\n Events.on = function(name, callback, context) {\n this._events = eventsApi(onApi, this._events || {}, name, callback, {\n context: context,\n ctx: this,\n listening: _listening\n });\n\n if (_listening) {\n var listeners = this._listeners || (this._listeners = {});\n listeners[_listening.id] = _listening;\n // Allow the listening to use a counter, instead of tracking\n // callbacks for library interop\n _listening.interop = false;\n }\n\n return this;\n };\n\n // Inversion-of-control versions of `on`. Tell *this* object to listen to\n // an event in another object... keeping track of what it's listening to\n // for easier unbinding later.\n Events.listenTo = function(obj, name, callback) {\n if (!obj) return this;\n var id = obj._listenId || (obj._listenId = _.uniqueId('l'));\n var listeningTo = this._listeningTo || (this._listeningTo = {});\n var listening = _listening = listeningTo[id];\n\n // This object is not listening to any other events on `obj` yet.\n // Setup the necessary references to track the listening callbacks.\n if (!listening) {\n this._listenId || (this._listenId = _.uniqueId('l'));\n listening = _listening = listeningTo[id] = new Listening(this, obj);\n }\n\n // Bind callbacks on obj.\n var error = tryCatchOn(obj, name, callback, this);\n _listening = void 0;\n\n if (error) throw error;\n // If the target obj is not Backbone.Events, track events manually.\n if (listening.interop) listening.on(name, callback);\n\n return this;\n };\n\n // The reducing API that adds a callback to the `events` object.\n var onApi = function(events, name, callback, options) {\n if (callback) {\n var handlers = events[name] || (events[name] = []);\n var context = options.context, ctx = options.ctx, listening = options.listening;\n if (listening) listening.count++;\n\n handlers.push({callback: callback, context: context, ctx: context || ctx, listening: listening});\n }\n return events;\n };\n\n // An try-catch guarded #on function, to prevent poisoning the global\n // `_listening` variable.\n var tryCatchOn = function(obj, name, callback, context) {\n try {\n obj.on(name, callback, context);\n } catch (e) {\n return e;\n }\n };\n\n // Remove one or many callbacks. If `context` is null, removes all\n // callbacks with that function. If `callback` is null, removes all\n // callbacks for the event. If `name` is null, removes all bound\n // callbacks for all events.\n Events.off = function(name, callback, context) {\n if (!this._events) return this;\n this._events = eventsApi(offApi, this._events, name, callback, {\n context: context,\n listeners: this._listeners\n });\n\n return this;\n };\n\n // Tell this object to stop listening to either specific events ... or\n // to every object it's currently listening to.\n Events.stopListening = function(obj, name, callback) {\n var listeningTo = this._listeningTo;\n if (!listeningTo) return this;\n\n var ids = obj ? [obj._listenId] : _.keys(listeningTo);\n for (var i = 0; i < ids.length; i++) {\n var listening = listeningTo[ids[i]];\n\n // If listening doesn't exist, this object is not currently\n // listening to obj. Break out early.\n if (!listening) break;\n\n listening.obj.off(name, callback, this);\n if (listening.interop) listening.off(name, callback);\n }\n if (_.isEmpty(listeningTo)) this._listeningTo = void 0;\n\n return this;\n };\n\n // The reducing API that removes a callback from the `events` object.\n var offApi = function(events, name, callback, options) {\n if (!events) return;\n\n var context = options.context, listeners = options.listeners;\n var i = 0, names;\n\n // Delete all event listeners and \"drop\" events.\n if (!name && !context && !callback) {\n for (names = _.keys(listeners); i < names.length; i++) {\n listeners[names[i]].cleanup();\n }\n return;\n }\n\n names = name ? [name] : _.keys(events);\n for (; i < names.length; i++) {\n name = names[i];\n var handlers = events[name];\n\n // Bail out if there are no events stored.\n if (!handlers) break;\n\n // Find any remaining events.\n var remaining = [];\n for (var j = 0; j < handlers.length; j++) {\n var handler = handlers[j];\n if (\n callback && callback !== handler.callback &&\n callback !== handler.callback._callback ||\n context && context !== handler.context\n ) {\n remaining.push(handler);\n } else {\n var listening = handler.listening;\n if (listening) listening.off(name, callback);\n }\n }\n\n // Replace events if there are any remaining. Otherwise, clean up.\n if (remaining.length) {\n events[name] = remaining;\n } else {\n delete events[name];\n }\n }\n\n return events;\n };\n\n // Bind an event to only be triggered a single time. After the first time\n // the callback is invoked, its listener will be removed. If multiple events\n // are passed in using the space-separated syntax, the handler will fire\n // once for each event, not once for a combination of all events.\n Events.once = function(name, callback, context) {\n // Map the event into a `{event: once}` object.\n var events = eventsApi(onceMap, {}, name, callback, this.off.bind(this));\n if (typeof name === 'string' && context == null) callback = void 0;\n return this.on(events, callback, context);\n };\n\n // Inversion-of-control versions of `once`.\n Events.listenToOnce = function(obj, name, callback) {\n // Map the event into a `{event: once}` object.\n var events = eventsApi(onceMap, {}, name, callback, this.stopListening.bind(this, obj));\n return this.listenTo(obj, events);\n };\n\n // Reduces the event callbacks into a map of `{event: onceWrapper}`.\n // `offer` unbinds the `onceWrapper` after it has been called.\n var onceMap = function(map, name, callback, offer) {\n if (callback) {\n var once = map[name] = _.once(function() {\n offer(name, once);\n callback.apply(this, arguments);\n });\n once._callback = callback;\n }\n return map;\n };\n\n // Trigger one or many events, firing all bound callbacks. Callbacks are\n // passed the same arguments as `trigger` is, apart from the event name\n // (unless you're listening on `\"all\"`, which will cause your callback to\n // receive the true name of the event as the first argument).\n Events.trigger = function(name) {\n if (!this._events) return this;\n\n var length = Math.max(0, arguments.length - 1);\n var args = Array(length);\n for (var i = 0; i < length; i++) args[i] = arguments[i + 1];\n\n eventsApi(triggerApi, this._events, name, void 0, args);\n return this;\n };\n\n // Handles triggering the appropriate event callbacks.\n var triggerApi = function(objEvents, name, callback, args) {\n if (objEvents) {\n var events = objEvents[name];\n var allEvents = objEvents.all;\n if (events && allEvents) allEvents = allEvents.slice();\n if (events) triggerEvents(events, args);\n if (allEvents) triggerEvents(allEvents, [name].concat(args));\n }\n return objEvents;\n };\n\n // A difficult-to-believe, but optimized internal dispatch function for\n // triggering events. Tries to keep the usual cases speedy (most internal\n // Backbone events have 3 arguments).\n var triggerEvents = function(events, args) {\n var ev, i = -1, l = events.length, a1 = args[0], a2 = args[1], a3 = args[2];\n switch (args.length) {\n case 0: while (++i < l) (ev = events[i]).callback.call(ev.ctx); return;\n case 1: while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1); return;\n case 2: while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1, a2); return;\n case 3: while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1, a2, a3); return;\n default: while (++i < l) (ev = events[i]).callback.apply(ev.ctx, args); return;\n }\n };\n\n // A listening class that tracks and cleans up memory bindings\n // when all callbacks have been offed.\n var Listening = function(listener, obj) {\n this.id = listener._listenId;\n this.listener = listener;\n this.obj = obj;\n this.interop = true;\n this.count = 0;\n this._events = void 0;\n };\n\n Listening.prototype.on = Events.on;\n\n // Offs a callback (or several).\n // Uses an optimized counter if the listenee uses Backbone.Events.\n // Otherwise, falls back to manual tracking to support events\n // library interop.\n Listening.prototype.off = function(name, callback) {\n var cleanup;\n if (this.interop) {\n this._events = eventsApi(offApi, this._events, name, callback, {\n context: void 0,\n listeners: void 0\n });\n cleanup = !this._events;\n } else {\n this.count--;\n cleanup = this.count === 0;\n }\n if (cleanup) this.cleanup();\n };\n\n // Cleans up memory bindings between the listener and the listenee.\n Listening.prototype.cleanup = function() {\n delete this.listener._listeningTo[this.obj._listenId];\n if (!this.interop) delete this.obj._listeners[this.id];\n };\n\n // Aliases for backwards compatibility.\n Events.bind = Events.on;\n Events.unbind = Events.off;\n\n // Allow the `Backbone` object to serve as a global event bus, for folks who\n // want global \"pubsub\" in a convenient place.\n _.extend(Backbone, Events);\n\n // Backbone.Model\n // --------------\n\n // Backbone **Models** are the basic data object in the framework --\n // frequently representing a row in a table in a database on your server.\n // A discrete chunk of data and a bunch of useful, related methods for\n // performing computations and transformations on that data.\n\n // Create a new model with the specified attributes. A client id (`cid`)\n // is automatically generated and assigned for you.\n var Model = Backbone.Model = function(attributes, options) {\n var attrs = attributes || {};\n options || (options = {});\n this.preinitialize.apply(this, arguments);\n this.cid = _.uniqueId(this.cidPrefix);\n this.attributes = {};\n if (options.collection) this.collection = options.collection;\n if (options.parse) attrs = this.parse(attrs, options) || {};\n var defaults = _.result(this, 'defaults');\n\n // Just _.defaults would work fine, but the additional _.extends\n // is in there for historical reasons. See #3843.\n attrs = _.defaults(_.extend({}, defaults, attrs), defaults);\n\n this.set(attrs, options);\n this.changed = {};\n this.initialize.apply(this, arguments);\n };\n\n // Attach all inheritable methods to the Model prototype.\n _.extend(Model.prototype, Events, {\n\n // A hash of attributes whose current and previous value differ.\n changed: null,\n\n // The value returned during the last failed validation.\n validationError: null,\n\n // The default name for the JSON `id` attribute is `\"id\"`. MongoDB and\n // CouchDB users may want to set this to `\"_id\"`.\n idAttribute: 'id',\n\n // The prefix is used to create the client id which is used to identify models locally.\n // You may want to override this if you're experiencing name clashes with model ids.\n cidPrefix: 'c',\n\n // preinitialize is an empty function by default. You can override it with a function\n // or object. preinitialize will run before any instantiation logic is run in the Model.\n preinitialize: function(){},\n\n // Initialize is an empty function by default. Override it with your own\n // initialization logic.\n initialize: function(){},\n\n // Return a copy of the model's `attributes` object.\n toJSON: function(options) {\n return _.clone(this.attributes);\n },\n\n // Proxy `Backbone.sync` by default -- but override this if you need\n // custom syncing semantics for *this* particular model.\n sync: function() {\n return Backbone.sync.apply(this, arguments);\n },\n\n // Get the value of an attribute.\n get: function(attr) {\n return this.attributes[attr];\n },\n\n // Get the HTML-escaped value of an attribute.\n escape: function(attr) {\n return _.escape(this.get(attr));\n },\n\n // Returns `true` if the attribute contains a value that is not null\n // or undefined.\n has: function(attr) {\n return this.get(attr) != null;\n },\n\n // Special-cased proxy to underscore's `_.matches` method.\n matches: function(attrs) {\n return !!_.iteratee(attrs, this)(this.attributes);\n },\n\n // Set a hash of model attributes on the object, firing `\"change\"`. This is\n // the core primitive operation of a model, updating the data and notifying\n // anyone who needs to know about the change in state. The heart of the beast.\n set: function(key, val, options) {\n if (key == null) return this;\n\n // Handle both `\"key\", value` and `{key: value}` -style arguments.\n var attrs;\n if (typeof key === 'object') {\n attrs = key;\n options = val;\n } else {\n (attrs = {})[key] = val;\n }\n\n options || (options = {});\n\n // Run validation.\n if (!this._validate(attrs, options)) return false;\n\n // Extract attributes and options.\n var unset = options.unset;\n var silent = options.silent;\n var changes = [];\n var changing = this._changing;\n this._changing = true;\n\n if (!changing) {\n this._previousAttributes = _.clone(this.attributes);\n this.changed = {};\n }\n\n var current = this.attributes;\n var changed = this.changed;\n var prev = this._previousAttributes;\n\n // For each `set` attribute, update or delete the current value.\n for (var attr in attrs) {\n val = attrs[attr];\n if (!_.isEqual(current[attr], val)) changes.push(attr);\n if (!_.isEqual(prev[attr], val)) {\n changed[attr] = val;\n } else {\n delete changed[attr];\n }\n unset ? delete current[attr] : current[attr] = val;\n }\n\n // Update the `id`.\n if (this.idAttribute in attrs) {\n var prevId = this.id;\n this.id = this.get(this.idAttribute);\n this.trigger('changeId', this, prevId, options);\n }\n\n // Trigger all relevant attribute changes.\n if (!silent) {\n if (changes.length) this._pending = options;\n for (var i = 0; i < changes.length; i++) {\n this.trigger('change:' + changes[i], this, current[changes[i]], options);\n }\n }\n\n // You might be wondering why there's a `while` loop here. Changes can\n // be recursively nested within `\"change\"` events.\n if (changing) return this;\n if (!silent) {\n while (this._pending) {\n options = this._pending;\n this._pending = false;\n this.trigger('change', this, options);\n }\n }\n this._pending = false;\n this._changing = false;\n return this;\n },\n\n // Remove an attribute from the model, firing `\"change\"`. `unset` is a noop\n // if the attribute doesn't exist.\n unset: function(attr, options) {\n return this.set(attr, void 0, _.extend({}, options, {unset: true}));\n },\n\n // Clear all attributes on the model, firing `\"change\"`.\n clear: function(options) {\n var attrs = {};\n for (var key in this.attributes) attrs[key] = void 0;\n return this.set(attrs, _.extend({}, options, {unset: true}));\n },\n\n // Determine if the model has changed since the last `\"change\"` event.\n // If you specify an attribute name, determine if that attribute has changed.\n hasChanged: function(attr) {\n if (attr == null) return !_.isEmpty(this.changed);\n return _.has(this.changed, attr);\n },\n\n // Return an object containing all the attributes that have changed, or\n // false if there are no changed attributes. Useful for determining what\n // parts of a view need to be updated and/or what attributes need to be\n // persisted to the server. Unset attributes will be set to undefined.\n // You can also pass an attributes object to diff against the model,\n // determining if there *would be* a change.\n changedAttributes: function(diff) {\n if (!diff) return this.hasChanged() ? _.clone(this.changed) : false;\n var old = this._changing ? this._previousAttributes : this.attributes;\n var changed = {};\n var hasChanged;\n for (var attr in diff) {\n var val = diff[attr];\n if (_.isEqual(old[attr], val)) continue;\n changed[attr] = val;\n hasChanged = true;\n }\n return hasChanged ? changed : false;\n },\n\n // Get the previous value of an attribute, recorded at the time the last\n // `\"change\"` event was fired.\n previous: function(attr) {\n if (attr == null || !this._previousAttributes) return null;\n return this._previousAttributes[attr];\n },\n\n // Get all of the attributes of the model at the time of the previous\n // `\"change\"` event.\n previousAttributes: function() {\n return _.clone(this._previousAttributes);\n },\n\n // Fetch the model from the server, merging the response with the model's\n // local attributes. Any changed attributes will trigger a \"change\" event.\n fetch: function(options) {\n options = _.extend({parse: true}, options);\n var model = this;\n var success = options.success;\n options.success = function(resp) {\n var serverAttrs = options.parse ? model.parse(resp, options) : resp;\n if (!model.set(serverAttrs, options)) return false;\n if (success) success.call(options.context, model, resp, options);\n model.trigger('sync', model, resp, options);\n };\n wrapError(this, options);\n return this.sync('read', this, options);\n },\n\n // Set a hash of model attributes, and sync the model to the server.\n // If the server returns an attributes hash that differs, the model's\n // state will be `set` again.\n save: function(key, val, options) {\n // Handle both `\"key\", value` and `{key: value}` -style arguments.\n var attrs;\n if (key == null || typeof key === 'object') {\n attrs = key;\n options = val;\n } else {\n (attrs = {})[key] = val;\n }\n\n options = _.extend({validate: true, parse: true}, options);\n var wait = options.wait;\n\n // If we're not waiting and attributes exist, save acts as\n // `set(attr).save(null, opts)` with validation. Otherwise, check if\n // the model will be valid when the attributes, if any, are set.\n if (attrs && !wait) {\n if (!this.set(attrs, options)) return false;\n } else if (!this._validate(attrs, options)) {\n return false;\n }\n\n // After a successful server-side save, the client is (optionally)\n // updated with the server-side state.\n var model = this;\n var success = options.success;\n var attributes = this.attributes;\n options.success = function(resp) {\n // Ensure attributes are restored during synchronous saves.\n model.attributes = attributes;\n var serverAttrs = options.parse ? model.parse(resp, options) : resp;\n if (wait) serverAttrs = _.extend({}, attrs, serverAttrs);\n if (serverAttrs && !model.set(serverAttrs, options)) return false;\n if (success) success.call(options.context, model, resp, options);\n model.trigger('sync', model, resp, options);\n };\n wrapError(this, options);\n\n // Set temporary attributes if `{wait: true}` to properly find new ids.\n if (attrs && wait) this.attributes = _.extend({}, attributes, attrs);\n\n var method = this.isNew() ? 'create' : options.patch ? 'patch' : 'update';\n if (method === 'patch' && !options.attrs) options.attrs = attrs;\n var xhr = this.sync(method, this, options);\n\n // Restore attributes.\n this.attributes = attributes;\n\n return xhr;\n },\n\n // Destroy this model on the server if it was already persisted.\n // Optimistically removes the model from its collection, if it has one.\n // If `wait: true` is passed, waits for the server to respond before removal.\n destroy: function(options) {\n options = options ? _.clone(options) : {};\n var model = this;\n var success = options.success;\n var wait = options.wait;\n\n var destroy = function() {\n model.stopListening();\n model.trigger('destroy', model, model.collection, options);\n };\n\n options.success = function(resp) {\n if (wait) destroy();\n if (success) success.call(options.context, model, resp, options);\n if (!model.isNew()) model.trigger('sync', model, resp, options);\n };\n\n var xhr = false;\n if (this.isNew()) {\n _.defer(options.success);\n } else {\n wrapError(this, options);\n xhr = this.sync('delete', this, options);\n }\n if (!wait) destroy();\n return xhr;\n },\n\n // Default URL for the model's representation on the server -- if you're\n // using Backbone's restful methods, override this to change the endpoint\n // that will be called.\n url: function() {\n var base =\n _.result(this, 'urlRoot') ||\n _.result(this.collection, 'url') ||\n urlError();\n if (this.isNew()) return base;\n var id = this.get(this.idAttribute);\n return base.replace(/[^\\/]$/, '$&/') + encodeURIComponent(id);\n },\n\n // **parse** converts a response into the hash of attributes to be `set` on\n // the model. The default implementation is just to pass the response along.\n parse: function(resp, options) {\n return resp;\n },\n\n // Create a new model with identical attributes to this one.\n clone: function() {\n return new this.constructor(this.attributes);\n },\n\n // A model is new if it has never been saved to the server, and lacks an id.\n isNew: function() {\n return !this.has(this.idAttribute);\n },\n\n // Check if the model is currently in a valid state.\n isValid: function(options) {\n return this._validate({}, _.extend({}, options, {validate: true}));\n },\n\n // Run validation against the next complete set of model attributes,\n // returning `true` if all is well. Otherwise, fire an `\"invalid\"` event.\n _validate: function(attrs, options) {\n if (!options.validate || !this.validate) return true;\n attrs = _.extend({}, this.attributes, attrs);\n var error = this.validationError = this.validate(attrs, options) || null;\n if (!error) return true;\n this.trigger('invalid', this, error, _.extend(options, {validationError: error}));\n return false;\n }\n\n });\n\n // Backbone.Collection\n // -------------------\n\n // If models tend to represent a single row of data, a Backbone Collection is\n // more analogous to a table full of data ... or a small slice or page of that\n // table, or a collection of rows that belong together for a particular reason\n // -- all of the messages in this particular folder, all of the documents\n // belonging to this particular author, and so on. Collections maintain\n // indexes of their models, both in order, and for lookup by `id`.\n\n // Create a new **Collection**, perhaps to contain a specific type of `model`.\n // If a `comparator` is specified, the Collection will maintain\n // its models in sort order, as they're added and removed.\n var Collection = Backbone.Collection = function(models, options) {\n options || (options = {});\n this.preinitialize.apply(this, arguments);\n if (options.model) this.model = options.model;\n if (options.comparator !== void 0) this.comparator = options.comparator;\n this._reset();\n this.initialize.apply(this, arguments);\n if (models) this.reset(models, _.extend({silent: true}, options));\n };\n\n // Default options for `Collection#set`.\n var setOptions = {add: true, remove: true, merge: true};\n var addOptions = {add: true, remove: false};\n\n // Splices `insert` into `array` at index `at`.\n var splice = function(array, insert, at) {\n at = Math.min(Math.max(at, 0), array.length);\n var tail = Array(array.length - at);\n var length = insert.length;\n var i;\n for (i = 0; i < tail.length; i++) tail[i] = array[i + at];\n for (i = 0; i < length; i++) array[i + at] = insert[i];\n for (i = 0; i < tail.length; i++) array[i + length + at] = tail[i];\n };\n\n // Define the Collection's inheritable methods.\n _.extend(Collection.prototype, Events, {\n\n // The default model for a collection is just a **Backbone.Model**.\n // This should be overridden in most cases.\n model: Model,\n\n\n // preinitialize is an empty function by default. You can override it with a function\n // or object. preinitialize will run before any instantiation logic is run in the Collection.\n preinitialize: function(){},\n\n // Initialize is an empty function by default. Override it with your own\n // initialization logic.\n initialize: function(){},\n\n // The JSON representation of a Collection is an array of the\n // models' attributes.\n toJSON: function(options) {\n return this.map(function(model) { return model.toJSON(options); });\n },\n\n // Proxy `Backbone.sync` by default.\n sync: function() {\n return Backbone.sync.apply(this, arguments);\n },\n\n // Add a model, or list of models to the set. `models` may be Backbone\n // Models or raw JavaScript objects to be converted to Models, or any\n // combination of the two.\n add: function(models, options) {\n return this.set(models, _.extend({merge: false}, options, addOptions));\n },\n\n // Remove a model, or a list of models from the set.\n remove: function(models, options) {\n options = _.extend({}, options);\n var singular = !_.isArray(models);\n models = singular ? [models] : models.slice();\n var removed = this._removeModels(models, options);\n if (!options.silent && removed.length) {\n options.changes = {added: [], merged: [], removed: removed};\n this.trigger('update', this, options);\n }\n return singular ? removed[0] : removed;\n },\n\n // Update a collection by `set`-ing a new list of models, adding new ones,\n // removing models that are no longer present, and merging models that\n // already exist in the collection, as necessary. Similar to **Model#set**,\n // the core operation for updating the data contained by the collection.\n set: function(models, options) {\n if (models == null) return;\n\n options = _.extend({}, setOptions, options);\n if (options.parse && !this._isModel(models)) {\n models = this.parse(models, options) || [];\n }\n\n var singular = !_.isArray(models);\n models = singular ? [models] : models.slice();\n\n var at = options.at;\n if (at != null) at = +at;\n if (at > this.length) at = this.length;\n if (at < 0) at += this.length + 1;\n\n var set = [];\n var toAdd = [];\n var toMerge = [];\n var toRemove = [];\n var modelMap = {};\n\n var add = options.add;\n var merge = options.merge;\n var remove = options.remove;\n\n var sort = false;\n var sortable = this.comparator && at == null && options.sort !== false;\n var sortAttr = _.isString(this.comparator) ? this.comparator : null;\n\n // Turn bare objects into model references, and prevent invalid models\n // from being added.\n var model, i;\n for (i = 0; i < models.length; i++) {\n model = models[i];\n\n // If a duplicate is found, prevent it from being added and\n // optionally merge it into the existing model.\n var existing = this.get(model);\n if (existing) {\n if (merge && model !== existing) {\n var attrs = this._isModel(model) ? model.attributes : model;\n if (options.parse) attrs = existing.parse(attrs, options);\n existing.set(attrs, options);\n toMerge.push(existing);\n if (sortable && !sort) sort = existing.hasChanged(sortAttr);\n }\n if (!modelMap[existing.cid]) {\n modelMap[existing.cid] = true;\n set.push(existing);\n }\n models[i] = existing;\n\n // If this is a new, valid model, push it to the `toAdd` list.\n } else if (add) {\n model = models[i] = this._prepareModel(model, options);\n if (model) {\n toAdd.push(model);\n this._addReference(model, options);\n modelMap[model.cid] = true;\n set.push(model);\n }\n }\n }\n\n // Remove stale models.\n if (remove) {\n for (i = 0; i < this.length; i++) {\n model = this.models[i];\n if (!modelMap[model.cid]) toRemove.push(model);\n }\n if (toRemove.length) this._removeModels(toRemove, options);\n }\n\n // See if sorting is needed, update `length` and splice in new models.\n var orderChanged = false;\n var replace = !sortable && add && remove;\n if (set.length && replace) {\n orderChanged = this.length !== set.length || _.some(this.models, function(m, index) {\n return m !== set[index];\n });\n this.models.length = 0;\n splice(this.models, set, 0);\n this.length = this.models.length;\n } else if (toAdd.length) {\n if (sortable) sort = true;\n splice(this.models, toAdd, at == null ? this.length : at);\n this.length = this.models.length;\n }\n\n // Silently sort the collection if appropriate.\n if (sort) this.sort({silent: true});\n\n // Unless silenced, it's time to fire all appropriate add/sort/update events.\n if (!options.silent) {\n for (i = 0; i < toAdd.length; i++) {\n if (at != null) options.index = at + i;\n model = toAdd[i];\n model.trigger('add', model, this, options);\n }\n if (sort || orderChanged) this.trigger('sort', this, options);\n if (toAdd.length || toRemove.length || toMerge.length) {\n options.changes = {\n added: toAdd,\n removed: toRemove,\n merged: toMerge\n };\n this.trigger('update', this, options);\n }\n }\n\n // Return the added (or merged) model (or models).\n return singular ? models[0] : models;\n },\n\n // When you have more items than you want to add or remove individually,\n // you can reset the entire set with a new list of models, without firing\n // any granular `add` or `remove` events. Fires `reset` when finished.\n // Useful for bulk operations and optimizations.\n reset: function(models, options) {\n options = options ? _.clone(options) : {};\n for (var i = 0; i < this.models.length; i++) {\n this._removeReference(this.models[i], options);\n }\n options.previousModels = this.models;\n this._reset();\n models = this.add(models, _.extend({silent: true}, options));\n if (!options.silent) this.trigger('reset', this, options);\n return models;\n },\n\n // Add a model to the end of the collection.\n push: function(model, options) {\n return this.add(model, _.extend({at: this.length}, options));\n },\n\n // Remove a model from the end of the collection.\n pop: function(options) {\n var model = this.at(this.length - 1);\n return this.remove(model, options);\n },\n\n // Add a model to the beginning of the collection.\n unshift: function(model, options) {\n return this.add(model, _.extend({at: 0}, options));\n },\n\n // Remove a model from the beginning of the collection.\n shift: function(options) {\n var model = this.at(0);\n return this.remove(model, options);\n },\n\n // Slice out a sub-array of models from the collection.\n slice: function() {\n return slice.apply(this.models, arguments);\n },\n\n // Get a model from the set by id, cid, model object with id or cid\n // properties, or an attributes object that is transformed through modelId.\n get: function(obj) {\n if (obj == null) return void 0;\n return this._byId[obj] ||\n this._byId[this.modelId(this._isModel(obj) ? obj.attributes : obj, obj.idAttribute)] ||\n obj.cid && this._byId[obj.cid];\n },\n\n // Returns `true` if the model is in the collection.\n has: function(obj) {\n return this.get(obj) != null;\n },\n\n // Get the model at the given index.\n at: function(index) {\n if (index < 0) index += this.length;\n return this.models[index];\n },\n\n // Return models with matching attributes. Useful for simple cases of\n // `filter`.\n where: function(attrs, first) {\n return this[first ? 'find' : 'filter'](attrs);\n },\n\n // Return the first model with matching attributes. Useful for simple cases\n // of `find`.\n findWhere: function(attrs) {\n return this.where(attrs, true);\n },\n\n // Force the collection to re-sort itself. You don't need to call this under\n // normal circumstances, as the set will maintain sort order as each item\n // is added.\n sort: function(options) {\n var comparator = this.comparator;\n if (!comparator) throw new Error('Cannot sort a set without a comparator');\n options || (options = {});\n\n var length = comparator.length;\n if (_.isFunction(comparator)) comparator = comparator.bind(this);\n\n // Run sort based on type of `comparator`.\n if (length === 1 || _.isString(comparator)) {\n this.models = this.sortBy(comparator);\n } else {\n this.models.sort(comparator);\n }\n if (!options.silent) this.trigger('sort', this, options);\n return this;\n },\n\n // Pluck an attribute from each model in the collection.\n pluck: function(attr) {\n return this.map(attr + '');\n },\n\n // Fetch the default set of models for this collection, resetting the\n // collection when they arrive. If `reset: true` is passed, the response\n // data will be passed through the `reset` method instead of `set`.\n fetch: function(options) {\n options = _.extend({parse: true}, options);\n var success = options.success;\n var collection = this;\n options.success = function(resp) {\n var method = options.reset ? 'reset' : 'set';\n collection[method](resp, options);\n if (success) success.call(options.context, collection, resp, options);\n collection.trigger('sync', collection, resp, options);\n };\n wrapError(this, options);\n return this.sync('read', this, options);\n },\n\n // Create a new instance of a model in this collection. Add the model to the\n // collection immediately, unless `wait: true` is passed, in which case we\n // wait for the server to agree.\n create: function(model, options) {\n options = options ? _.clone(options) : {};\n var wait = options.wait;\n model = this._prepareModel(model, options);\n if (!model) return false;\n if (!wait) this.add(model, options);\n var collection = this;\n var success = options.success;\n options.success = function(m, resp, callbackOpts) {\n if (wait) {\n m.off('error', collection._forwardPristineError, collection);\n collection.add(m, callbackOpts);\n }\n if (success) success.call(callbackOpts.context, m, resp, callbackOpts);\n };\n // In case of wait:true, our collection is not listening to any\n // of the model's events yet, so it will not forward the error\n // event. In this special case, we need to listen for it\n // separately and handle the event just once.\n // (The reason we don't need to do this for the sync event is\n // in the success handler above: we add the model first, which\n // causes the collection to listen, and then invoke the callback\n // that triggers the event.)\n if (wait) {\n model.once('error', this._forwardPristineError, this);\n }\n model.save(null, options);\n return model;\n },\n\n // **parse** converts a response into a list of models to be added to the\n // collection. The default implementation is just to pass it through.\n parse: function(resp, options) {\n return resp;\n },\n\n // Create a new collection with an identical list of models as this one.\n clone: function() {\n return new this.constructor(this.models, {\n model: this.model,\n comparator: this.comparator\n });\n },\n\n // Define how to uniquely identify models in the collection.\n modelId: function(attrs, idAttribute) {\n return attrs[idAttribute || this.model.prototype.idAttribute || 'id'];\n },\n\n // Get an iterator of all models in this collection.\n values: function() {\n return new CollectionIterator(this, ITERATOR_VALUES);\n },\n\n // Get an iterator of all model IDs in this collection.\n keys: function() {\n return new CollectionIterator(this, ITERATOR_KEYS);\n },\n\n // Get an iterator of all [ID, model] tuples in this collection.\n entries: function() {\n return new CollectionIterator(this, ITERATOR_KEYSVALUES);\n },\n\n // Private method to reset all internal state. Called when the collection\n // is first initialized or reset.\n _reset: function() {\n this.length = 0;\n this.models = [];\n this._byId = {};\n },\n\n // Prepare a hash of attributes (or other model) to be added to this\n // collection.\n _prepareModel: function(attrs, options) {\n if (this._isModel(attrs)) {\n if (!attrs.collection) attrs.collection = this;\n return attrs;\n }\n options = options ? _.clone(options) : {};\n options.collection = this;\n\n var model;\n if (this.model.prototype) {\n model = new this.model(attrs, options);\n } else {\n // ES class methods didn't have prototype\n model = this.model(attrs, options);\n }\n\n if (!model.validationError) return model;\n this.trigger('invalid', this, model.validationError, options);\n return false;\n },\n\n // Internal method called by both remove and set.\n _removeModels: function(models, options) {\n var removed = [];\n for (var i = 0; i < models.length; i++) {\n var model = this.get(models[i]);\n if (!model) continue;\n\n var index = this.indexOf(model);\n this.models.splice(index, 1);\n this.length--;\n\n // Remove references before triggering 'remove' event to prevent an\n // infinite loop. #3693\n delete this._byId[model.cid];\n var id = this.modelId(model.attributes, model.idAttribute);\n if (id != null) delete this._byId[id];\n\n if (!options.silent) {\n options.index = index;\n model.trigger('remove', model, this, options);\n }\n\n removed.push(model);\n this._removeReference(model, options);\n }\n if (models.length > 0 && !options.silent) delete options.index;\n return removed;\n },\n\n // Method for checking whether an object should be considered a model for\n // the purposes of adding to the collection.\n _isModel: function(model) {\n return model instanceof Model;\n },\n\n // Internal method to create a model's ties to a collection.\n _addReference: function(model, options) {\n this._byId[model.cid] = model;\n var id = this.modelId(model.attributes, model.idAttribute);\n if (id != null) this._byId[id] = model;\n model.on('all', this._onModelEvent, this);\n },\n\n // Internal method to sever a model's ties to a collection.\n _removeReference: function(model, options) {\n delete this._byId[model.cid];\n var id = this.modelId(model.attributes, model.idAttribute);\n if (id != null) delete this._byId[id];\n if (this === model.collection) delete model.collection;\n model.off('all', this._onModelEvent, this);\n },\n\n // Internal method called every time a model in the set fires an event.\n // Sets need to update their indexes when models change ids. All other\n // events simply proxy through. \"add\" and \"remove\" events that originate\n // in other collections are ignored.\n _onModelEvent: function(event, model, collection, options) {\n if (model) {\n if ((event === 'add' || event === 'remove') && collection !== this) return;\n if (event === 'destroy') this.remove(model, options);\n if (event === 'changeId') {\n var prevId = this.modelId(model.previousAttributes(), model.idAttribute);\n var id = this.modelId(model.attributes, model.idAttribute);\n if (prevId != null) delete this._byId[prevId];\n if (id != null) this._byId[id] = model;\n }\n }\n this.trigger.apply(this, arguments);\n },\n\n // Internal callback method used in `create`. It serves as a\n // stand-in for the `_onModelEvent` method, which is not yet bound\n // during the `wait` period of the `create` call. We still want to\n // forward any `'error'` event at the end of the `wait` period,\n // hence a customized callback.\n _forwardPristineError: function(model, collection, options) {\n // Prevent double forward if the model was already in the\n // collection before the call to `create`.\n if (this.has(model)) return;\n this._onModelEvent('error', model, collection, options);\n }\n });\n\n // Defining an @@iterator method implements JavaScript's Iterable protocol.\n // In modern ES2015 browsers, this value is found at Symbol.iterator.\n /* global Symbol */\n var $$iterator = typeof Symbol === 'function' && Symbol.iterator;\n if ($$iterator) {\n Collection.prototype[$$iterator] = Collection.prototype.values;\n }\n\n // CollectionIterator\n // ------------------\n\n // A CollectionIterator implements JavaScript's Iterator protocol, allowing the\n // use of `for of` loops in modern browsers and interoperation between\n // Backbone.Collection and other JavaScript functions and third-party libraries\n // which can operate on Iterables.\n var CollectionIterator = function(collection, kind) {\n this._collection = collection;\n this._kind = kind;\n this._index = 0;\n };\n\n // This \"enum\" defines the three possible kinds of values which can be emitted\n // by a CollectionIterator that correspond to the values(), keys() and entries()\n // methods on Collection, respectively.\n var ITERATOR_VALUES = 1;\n var ITERATOR_KEYS = 2;\n var ITERATOR_KEYSVALUES = 3;\n\n // All Iterators should themselves be Iterable.\n if ($$iterator) {\n CollectionIterator.prototype[$$iterator] = function() {\n return this;\n };\n }\n\n CollectionIterator.prototype.next = function() {\n if (this._collection) {\n\n // Only continue iterating if the iterated collection is long enough.\n if (this._index < this._collection.length) {\n var model = this._collection.at(this._index);\n this._index++;\n\n // Construct a value depending on what kind of values should be iterated.\n var value;\n if (this._kind === ITERATOR_VALUES) {\n value = model;\n } else {\n var id = this._collection.modelId(model.attributes, model.idAttribute);\n if (this._kind === ITERATOR_KEYS) {\n value = id;\n } else { // ITERATOR_KEYSVALUES\n value = [id, model];\n }\n }\n return {value: value, done: false};\n }\n\n // Once exhausted, remove the reference to the collection so future\n // calls to the next method always return done.\n this._collection = void 0;\n }\n\n return {value: void 0, done: true};\n };\n\n // Backbone.View\n // -------------\n\n // Backbone Views are almost more convention than they are actual code. A View\n // is simply a JavaScript object that represents a logical chunk of UI in the\n // DOM. This might be a single item, an entire list, a sidebar or panel, or\n // even the surrounding frame which wraps your whole app. Defining a chunk of\n // UI as a **View** allows you to define your DOM events declaratively, without\n // having to worry about render order ... and makes it easy for the view to\n // react to specific changes in the state of your models.\n\n // Creating a Backbone.View creates its initial element outside of the DOM,\n // if an existing element is not provided...\n var View = Backbone.View = function(options) {\n this.cid = _.uniqueId('view');\n this.preinitialize.apply(this, arguments);\n _.extend(this, _.pick(options, viewOptions));\n this._ensureElement();\n this.initialize.apply(this, arguments);\n };\n\n // Cached regex to split keys for `delegate`.\n var delegateEventSplitter = /^(\\S+)\\s*(.*)$/;\n\n // List of view options to be set as properties.\n var viewOptions = ['model', 'collection', 'el', 'id', 'attributes', 'className', 'tagName', 'events'];\n\n // Set up all inheritable **Backbone.View** properties and methods.\n _.extend(View.prototype, Events, {\n\n // The default `tagName` of a View's element is `\"div\"`.\n tagName: 'div',\n\n // jQuery delegate for element lookup, scoped to DOM elements within the\n // current view. This should be preferred to global lookups where possible.\n $: function(selector) {\n return this.$el.find(selector);\n },\n\n // preinitialize is an empty function by default. You can override it with a function\n // or object. preinitialize will run before any instantiation logic is run in the View\n preinitialize: function(){},\n\n // Initialize is an empty function by default. Override it with your own\n // initialization logic.\n initialize: function(){},\n\n // **render** is the core function that your view should override, in order\n // to populate its element (`this.el`), with the appropriate HTML. The\n // convention is for **render** to always return `this`.\n render: function() {\n return this;\n },\n\n // Remove this view by taking the element out of the DOM, and removing any\n // applicable Backbone.Events listeners.\n remove: function() {\n this._removeElement();\n this.stopListening();\n return this;\n },\n\n // Remove this view's element from the document and all event listeners\n // attached to it. Exposed for subclasses using an alternative DOM\n // manipulation API.\n _removeElement: function() {\n this.$el.remove();\n },\n\n // Change the view's element (`this.el` property) and re-delegate the\n // view's events on the new element.\n setElement: function(element) {\n this.undelegateEvents();\n this._setElement(element);\n this.delegateEvents();\n return this;\n },\n\n // Creates the `this.el` and `this.$el` references for this view using the\n // given `el`. `el` can be a CSS selector or an HTML string, a jQuery\n // context or an element. Subclasses can override this to utilize an\n // alternative DOM manipulation API and are only required to set the\n // `this.el` property.\n _setElement: function(el) {\n this.$el = el instanceof Backbone.$ ? el : Backbone.$(el);\n this.el = this.$el[0];\n },\n\n // Set callbacks, where `this.events` is a hash of\n //\n // *{\"event selector\": \"callback\"}*\n //\n // {\n // 'mousedown .title': 'edit',\n // 'click .button': 'save',\n // 'click .open': function(e) { ... }\n // }\n //\n // pairs. Callbacks will be bound to the view, with `this` set properly.\n // Uses event delegation for efficiency.\n // Omitting the selector binds the event to `this.el`.\n delegateEvents: function(events) {\n events || (events = _.result(this, 'events'));\n if (!events) return this;\n this.undelegateEvents();\n for (var key in events) {\n var method = events[key];\n if (!_.isFunction(method)) method = this[method];\n if (!method) continue;\n var match = key.match(delegateEventSplitter);\n this.delegate(match[1], match[2], method.bind(this));\n }\n return this;\n },\n\n // Add a single event listener to the view's element (or a child element\n // using `selector`). This only works for delegate-able events: not `focus`,\n // `blur`, and not `change`, `submit`, and `reset` in Internet Explorer.\n delegate: function(eventName, selector, listener) {\n this.$el.on(eventName + '.delegateEvents' + this.cid, selector, listener);\n return this;\n },\n\n // Clears all callbacks previously bound to the view by `delegateEvents`.\n // You usually don't need to use this, but may wish to if you have multiple\n // Backbone views attached to the same DOM element.\n undelegateEvents: function() {\n if (this.$el) this.$el.off('.delegateEvents' + this.cid);\n return this;\n },\n\n // A finer-grained `undelegateEvents` for removing a single delegated event.\n // `selector` and `listener` are both optional.\n undelegate: function(eventName, selector, listener) {\n this.$el.off(eventName + '.delegateEvents' + this.cid, selector, listener);\n return this;\n },\n\n // Produces a DOM element to be assigned to your view. Exposed for\n // subclasses using an alternative DOM manipulation API.\n _createElement: function(tagName) {\n return document.createElement(tagName);\n },\n\n // Ensure that the View has a DOM element to render into.\n // If `this.el` is a string, pass it through `$()`, take the first\n // matching element, and re-assign it to `el`. Otherwise, create\n // an element from the `id`, `className` and `tagName` properties.\n _ensureElement: function() {\n if (!this.el) {\n var attrs = _.extend({}, _.result(this, 'attributes'));\n if (this.id) attrs.id = _.result(this, 'id');\n if (this.className) attrs['class'] = _.result(this, 'className');\n this.setElement(this._createElement(_.result(this, 'tagName')));\n this._setAttributes(attrs);\n } else {\n this.setElement(_.result(this, 'el'));\n }\n },\n\n // Set attributes from a hash on this view's element. Exposed for\n // subclasses using an alternative DOM manipulation API.\n _setAttributes: function(attributes) {\n this.$el.attr(attributes);\n }\n\n });\n\n // Proxy Backbone class methods to Underscore functions, wrapping the model's\n // `attributes` object or collection's `models` array behind the scenes.\n //\n // collection.filter(function(model) { return model.get('age') > 10 });\n // collection.each(this.addView);\n //\n // `Function#apply` can be slow so we use the method's arg count, if we know it.\n var addMethod = function(base, length, method, attribute) {\n switch (length) {\n case 1: return function() {\n return base[method](this[attribute]);\n };\n case 2: return function(value) {\n return base[method](this[attribute], value);\n };\n case 3: return function(iteratee, context) {\n return base[method](this[attribute], cb(iteratee, this), context);\n };\n case 4: return function(iteratee, defaultVal, context) {\n return base[method](this[attribute], cb(iteratee, this), defaultVal, context);\n };\n default: return function() {\n var args = slice.call(arguments);\n args.unshift(this[attribute]);\n return base[method].apply(base, args);\n };\n }\n };\n\n var addUnderscoreMethods = function(Class, base, methods, attribute) {\n _.each(methods, function(length, method) {\n if (base[method]) Class.prototype[method] = addMethod(base, length, method, attribute);\n });\n };\n\n // Support `collection.sortBy('attr')` and `collection.findWhere({id: 1})`.\n var cb = function(iteratee, instance) {\n if (_.isFunction(iteratee)) return iteratee;\n if (_.isObject(iteratee) && !instance._isModel(iteratee)) return modelMatcher(iteratee);\n if (_.isString(iteratee)) return function(model) { return model.get(iteratee); };\n return iteratee;\n };\n var modelMatcher = function(attrs) {\n var matcher = _.matches(attrs);\n return function(model) {\n return matcher(model.attributes);\n };\n };\n\n // Underscore methods that we want to implement on the Collection.\n // 90% of the core usefulness of Backbone Collections is actually implemented\n // right here:\n var collectionMethods = {forEach: 3, each: 3, map: 3, collect: 3, reduce: 0,\n foldl: 0, inject: 0, reduceRight: 0, foldr: 0, find: 3, detect: 3, filter: 3,\n select: 3, reject: 3, every: 3, all: 3, some: 3, any: 3, include: 3, includes: 3,\n contains: 3, invoke: 0, max: 3, min: 3, toArray: 1, size: 1, first: 3,\n head: 3, take: 3, initial: 3, rest: 3, tail: 3, drop: 3, last: 3,\n without: 0, difference: 0, indexOf: 3, shuffle: 1, lastIndexOf: 3,\n isEmpty: 1, chain: 1, sample: 3, partition: 3, groupBy: 3, countBy: 3,\n sortBy: 3, indexBy: 3, findIndex: 3, findLastIndex: 3};\n\n\n // Underscore methods that we want to implement on the Model, mapped to the\n // number of arguments they take.\n var modelMethods = {keys: 1, values: 1, pairs: 1, invert: 1, pick: 0,\n omit: 0, chain: 1, isEmpty: 1};\n\n // Mix in each Underscore method as a proxy to `Collection#models`.\n\n _.each([\n [Collection, collectionMethods, 'models'],\n [Model, modelMethods, 'attributes']\n ], function(config) {\n var Base = config[0],\n methods = config[1],\n attribute = config[2];\n\n Base.mixin = function(obj) {\n var mappings = _.reduce(_.functions(obj), function(memo, name) {\n memo[name] = 0;\n return memo;\n }, {});\n addUnderscoreMethods(Base, obj, mappings, attribute);\n };\n\n addUnderscoreMethods(Base, _, methods, attribute);\n });\n\n // Backbone.sync\n // -------------\n\n // Override this function to change the manner in which Backbone persists\n // models to the server. You will be passed the type of request, and the\n // model in question. By default, makes a RESTful Ajax request\n // to the model's `url()`. Some possible customizations could be:\n //\n // * Use `setTimeout` to batch rapid-fire updates into a single request.\n // * Send up the models as XML instead of JSON.\n // * Persist models via WebSockets instead of Ajax.\n //\n // Turn on `Backbone.emulateHTTP` in order to send `PUT` and `DELETE` requests\n // as `POST`, with a `_method` parameter containing the true HTTP method,\n // as well as all requests with the body as `application/x-www-form-urlencoded`\n // instead of `application/json` with the model in a param named `model`.\n // Useful when interfacing with server-side languages like **PHP** that make\n // it difficult to read the body of `PUT` requests.\n Backbone.sync = function(method, model, options) {\n var type = methodMap[method];\n\n // Default options, unless specified.\n _.defaults(options || (options = {}), {\n emulateHTTP: Backbone.emulateHTTP,\n emulateJSON: Backbone.emulateJSON\n });\n\n // Default JSON-request options.\n var params = {type: type, dataType: 'json'};\n\n // Ensure that we have a URL.\n if (!options.url) {\n params.url = _.result(model, 'url') || urlError();\n }\n\n // Ensure that we have the appropriate request data.\n if (options.data == null && model && (method === 'create' || method === 'update' || method === 'patch')) {\n params.contentType = 'application/json';\n params.data = JSON.stringify(options.attrs || model.toJSON(options));\n }\n\n // For older servers, emulate JSON by encoding the request into an HTML-form.\n if (options.emulateJSON) {\n params.contentType = 'application/x-www-form-urlencoded';\n params.data = params.data ? {model: params.data} : {};\n }\n\n // For older servers, emulate HTTP by mimicking the HTTP method with `_method`\n // And an `X-HTTP-Method-Override` header.\n if (options.emulateHTTP && (type === 'PUT' || type === 'DELETE' || type === 'PATCH')) {\n params.type = 'POST';\n if (options.emulateJSON) params.data._method = type;\n var beforeSend = options.beforeSend;\n options.beforeSend = function(xhr) {\n xhr.setRequestHeader('X-HTTP-Method-Override', type);\n if (beforeSend) return beforeSend.apply(this, arguments);\n };\n }\n\n // Don't process data on a non-GET request.\n if (params.type !== 'GET' && !options.emulateJSON) {\n params.processData = false;\n }\n\n // Pass along `textStatus` and `errorThrown` from jQuery.\n var error = options.error;\n options.error = function(xhr, textStatus, errorThrown) {\n options.textStatus = textStatus;\n options.errorThrown = errorThrown;\n if (error) error.call(options.context, xhr, textStatus, errorThrown);\n };\n\n // Make the request, allowing the user to override any Ajax options.\n var xhr = options.xhr = Backbone.ajax(_.extend(params, options));\n model.trigger('request', model, xhr, options);\n return xhr;\n };\n\n // Map from CRUD to HTTP for our default `Backbone.sync` implementation.\n var methodMap = {\n 'create': 'POST',\n 'update': 'PUT',\n 'patch': 'PATCH',\n 'delete': 'DELETE',\n 'read': 'GET'\n };\n\n // Set the default implementation of `Backbone.ajax` to proxy through to `$`.\n // Override this if you'd like to use a different library.\n Backbone.ajax = function() {\n return Backbone.$.ajax.apply(Backbone.$, arguments);\n };\n\n // Backbone.Router\n // ---------------\n\n // Routers map faux-URLs to actions, and fire events when routes are\n // matched. Creating a new one sets its `routes` hash, if not set statically.\n var Router = Backbone.Router = function(options) {\n options || (options = {});\n this.preinitialize.apply(this, arguments);\n if (options.routes) this.routes = options.routes;\n this._bindRoutes();\n this.initialize.apply(this, arguments);\n };\n\n // Cached regular expressions for matching named param parts and splatted\n // parts of route strings.\n var optionalParam = /\\((.*?)\\)/g;\n var namedParam = /(\\(\\?)?:\\w+/g;\n var splatParam = /\\*\\w+/g;\n var escapeRegExp = /[\\-{}\\[\\]+?.,\\\\\\^$|#\\s]/g;\n\n // Set up all inheritable **Backbone.Router** properties and methods.\n _.extend(Router.prototype, Events, {\n\n // preinitialize is an empty function by default. You can override it with a function\n // or object. preinitialize will run before any instantiation logic is run in the Router.\n preinitialize: function(){},\n\n // Initialize is an empty function by default. Override it with your own\n // initialization logic.\n initialize: function(){},\n\n // Manually bind a single named route to a callback. For example:\n //\n // this.route('search/:query/p:num', 'search', function(query, num) {\n // ...\n // });\n //\n route: function(route, name, callback) {\n if (!_.isRegExp(route)) route = this._routeToRegExp(route);\n if (_.isFunction(name)) {\n callback = name;\n name = '';\n }\n if (!callback) callback = this[name];\n var router = this;\n Backbone.history.route(route, function(fragment) {\n var args = router._extractParameters(route, fragment);\n if (router.execute(callback, args, name) !== false) {\n router.trigger.apply(router, ['route:' + name].concat(args));\n router.trigger('route', name, args);\n Backbone.history.trigger('route', router, name, args);\n }\n });\n return this;\n },\n\n // Execute a route handler with the provided parameters. This is an\n // excellent place to do pre-route setup or post-route cleanup.\n execute: function(callback, args, name) {\n if (callback) callback.apply(this, args);\n },\n\n // Simple proxy to `Backbone.history` to save a fragment into the history.\n navigate: function(fragment, options) {\n Backbone.history.navigate(fragment, options);\n return this;\n },\n\n // Bind all defined routes to `Backbone.history`. We have to reverse the\n // order of the routes here to support behavior where the most general\n // routes can be defined at the bottom of the route map.\n _bindRoutes: function() {\n if (!this.routes) return;\n this.routes = _.result(this, 'routes');\n var route, routes = _.keys(this.routes);\n while ((route = routes.pop()) != null) {\n this.route(route, this.routes[route]);\n }\n },\n\n // Convert a route string into a regular expression, suitable for matching\n // against the current location hash.\n _routeToRegExp: function(route) {\n route = route.replace(escapeRegExp, '\\\\$&')\n .replace(optionalParam, '(?:$1)?')\n .replace(namedParam, function(match, optional) {\n return optional ? match : '([^/?]+)';\n })\n .replace(splatParam, '([^?]*?)');\n return new RegExp('^' + route + '(?:\\\\?([\\\\s\\\\S]*))?$');\n },\n\n // Given a route, and a URL fragment that it matches, return the array of\n // extracted decoded parameters. Empty or unmatched parameters will be\n // treated as `null` to normalize cross-browser behavior.\n _extractParameters: function(route, fragment) {\n var params = route.exec(fragment).slice(1);\n return _.map(params, function(param, i) {\n // Don't decode the search params.\n if (i === params.length - 1) return param || null;\n return param ? decodeURIComponent(param) : null;\n });\n }\n\n });\n\n // Backbone.History\n // ----------------\n\n // Handles cross-browser history management, based on either\n // [pushState](http://diveintohtml5.info/history.html) and real URLs, or\n // [onhashchange](https://developer.mozilla.org/en-US/docs/DOM/window.onhashchange)\n // and URL fragments. If the browser supports neither (old IE, natch),\n // falls back to polling.\n var History = Backbone.History = function() {\n this.handlers = [];\n this.checkUrl = this.checkUrl.bind(this);\n\n // Ensure that `History` can be used outside of the browser.\n if (typeof window !== 'undefined') {\n this.location = window.location;\n this.history = window.history;\n }\n };\n\n // Cached regex for stripping a leading hash/slash and trailing space.\n var routeStripper = /^[#\\/]|\\s+$/g;\n\n // Cached regex for stripping leading and trailing slashes.\n var rootStripper = /^\\/+|\\/+$/g;\n\n // Cached regex for stripping urls of hash.\n var pathStripper = /#.*$/;\n\n // Has the history handling already been started?\n History.started = false;\n\n // Set up all inheritable **Backbone.History** properties and methods.\n _.extend(History.prototype, Events, {\n\n // The default interval to poll for hash changes, if necessary, is\n // twenty times a second.\n interval: 50,\n\n // Are we at the app root?\n atRoot: function() {\n var path = this.location.pathname.replace(/[^\\/]$/, '$&/');\n return path === this.root && !this.getSearch();\n },\n\n // Does the pathname match the root?\n matchRoot: function() {\n var path = this.decodeFragment(this.location.pathname);\n var rootPath = path.slice(0, this.root.length - 1) + '/';\n return rootPath === this.root;\n },\n\n // Unicode characters in `location.pathname` are percent encoded so they're\n // decoded for comparison. `%25` should not be decoded since it may be part\n // of an encoded parameter.\n decodeFragment: function(fragment) {\n return decodeURI(fragment.replace(/%25/g, '%2525'));\n },\n\n // In IE6, the hash fragment and search params are incorrect if the\n // fragment contains `?`.\n getSearch: function() {\n var match = this.location.href.replace(/#.*/, '').match(/\\?.+/);\n return match ? match[0] : '';\n },\n\n // Gets the true hash value. Cannot use location.hash directly due to bug\n // in Firefox where location.hash will always be decoded.\n getHash: function(window) {\n var match = (window || this).location.href.match(/#(.*)$/);\n return match ? match[1] : '';\n },\n\n // Get the pathname and search params, without the root.\n getPath: function() {\n var path = this.decodeFragment(\n this.location.pathname + this.getSearch()\n ).slice(this.root.length - 1);\n return path.charAt(0) === '/' ? path.slice(1) : path;\n },\n\n // Get the cross-browser normalized URL fragment from the path or hash.\n getFragment: function(fragment) {\n if (fragment == null) {\n if (this._usePushState || !this._wantsHashChange) {\n fragment = this.getPath();\n } else {\n fragment = this.getHash();\n }\n }\n return fragment.replace(routeStripper, '');\n },\n\n // Start the hash change handling, returning `true` if the current URL matches\n // an existing route, and `false` otherwise.\n start: function(options) {\n if (History.started) throw new Error('Backbone.history has already been started');\n History.started = true;\n\n // Figure out the initial configuration. Do we need an iframe?\n // Is pushState desired ... is it available?\n this.options = _.extend({root: '/'}, this.options, options);\n this.root = this.options.root;\n this._trailingSlash = this.options.trailingSlash;\n this._wantsHashChange = this.options.hashChange !== false;\n this._hasHashChange = 'onhashchange' in window && (document.documentMode === void 0 || document.documentMode > 7);\n this._useHashChange = this._wantsHashChange && this._hasHashChange;\n this._wantsPushState = !!this.options.pushState;\n this._hasPushState = !!(this.history && this.history.pushState);\n this._usePushState = this._wantsPushState && this._hasPushState;\n this.fragment = this.getFragment();\n\n // Normalize root to always include a leading and trailing slash.\n this.root = ('/' + this.root + '/').replace(rootStripper, '/');\n\n // Transition from hashChange to pushState or vice versa if both are\n // requested.\n if (this._wantsHashChange && this._wantsPushState) {\n\n // If we've started off with a route from a `pushState`-enabled\n // browser, but we're currently in a browser that doesn't support it...\n if (!this._hasPushState && !this.atRoot()) {\n var rootPath = this.root.slice(0, -1) || '/';\n this.location.replace(rootPath + '#' + this.getPath());\n // Return immediately as browser will do redirect to new url\n return true;\n\n // Or if we've started out with a hash-based route, but we're currently\n // in a browser where it could be `pushState`-based instead...\n } else if (this._hasPushState && this.atRoot()) {\n this.navigate(this.getHash(), {replace: true});\n }\n\n }\n\n // Proxy an iframe to handle location events if the browser doesn't\n // support the `hashchange` event, HTML5 history, or the user wants\n // `hashChange` but not `pushState`.\n if (!this._hasHashChange && this._wantsHashChange && !this._usePushState) {\n this.iframe = document.createElement('iframe');\n this.iframe.src = 'javascript:0';\n this.iframe.style.display = 'none';\n this.iframe.tabIndex = -1;\n var body = document.body;\n // Using `appendChild` will throw on IE < 9 if the document is not ready.\n var iWindow = body.insertBefore(this.iframe, body.firstChild).contentWindow;\n iWindow.document.open();\n iWindow.document.close();\n iWindow.location.hash = '#' + this.fragment;\n }\n\n // Add a cross-platform `addEventListener` shim for older browsers.\n var addEventListener = window.addEventListener || function(eventName, listener) {\n return attachEvent('on' + eventName, listener);\n };\n\n // Depending on whether we're using pushState or hashes, and whether\n // 'onhashchange' is supported, determine how we check the URL state.\n if (this._usePushState) {\n addEventListener('popstate', this.checkUrl, false);\n } else if (this._useHashChange && !this.iframe) {\n addEventListener('hashchange', this.checkUrl, false);\n } else if (this._wantsHashChange) {\n this._checkUrlInterval = setInterval(this.checkUrl, this.interval);\n }\n\n if (!this.options.silent) return this.loadUrl();\n },\n\n // Disable Backbone.history, perhaps temporarily. Not useful in a real app,\n // but possibly useful for unit testing Routers.\n stop: function() {\n // Add a cross-platform `removeEventListener` shim for older browsers.\n var removeEventListener = window.removeEventListener || function(eventName, listener) {\n return detachEvent('on' + eventName, listener);\n };\n\n // Remove window listeners.\n if (this._usePushState) {\n removeEventListener('popstate', this.checkUrl, false);\n } else if (this._useHashChange && !this.iframe) {\n removeEventListener('hashchange', this.checkUrl, false);\n }\n\n // Clean up the iframe if necessary.\n if (this.iframe) {\n document.body.removeChild(this.iframe);\n this.iframe = null;\n }\n\n // Some environments will throw when clearing an undefined interval.\n if (this._checkUrlInterval) clearInterval(this._checkUrlInterval);\n History.started = false;\n },\n\n // Add a route to be tested when the fragment changes. Routes added later\n // may override previous routes.\n route: function(route, callback) {\n this.handlers.unshift({route: route, callback: callback});\n },\n\n // Checks the current URL to see if it has changed, and if it has,\n // calls `loadUrl`, normalizing across the hidden iframe.\n checkUrl: function(e) {\n var current = this.getFragment();\n\n // If the user pressed the back button, the iframe's hash will have\n // changed and we should use that for comparison.\n if (current === this.fragment && this.iframe) {\n current = this.getHash(this.iframe.contentWindow);\n }\n\n if (current === this.fragment) {\n if (!this.matchRoot()) return this.notfound();\n return false;\n }\n if (this.iframe) this.navigate(current);\n this.loadUrl();\n },\n\n // Attempt to load the current URL fragment. If a route succeeds with a\n // match, returns `true`. If no defined routes matches the fragment,\n // returns `false`.\n loadUrl: function(fragment) {\n // If the root doesn't match, no routes can match either.\n if (!this.matchRoot()) return this.notfound();\n fragment = this.fragment = this.getFragment(fragment);\n return _.some(this.handlers, function(handler) {\n if (handler.route.test(fragment)) {\n handler.callback(fragment);\n return true;\n }\n }) || this.notfound();\n },\n\n // When no route could be matched, this method is called internally to\n // trigger the `'notfound'` event. It returns `false` so that it can be used\n // in tail position.\n notfound: function() {\n this.trigger('notfound');\n return false;\n },\n\n // Save a fragment into the hash history, or replace the URL state if the\n // 'replace' option is passed. You are responsible for properly URL-encoding\n // the fragment in advance.\n //\n // The options object can contain `trigger: true` if you wish to have the\n // route callback be fired (not usually desirable), or `replace: true`, if\n // you wish to modify the current URL without adding an entry to the history.\n navigate: function(fragment, options) {\n if (!History.started) return false;\n if (!options || options === true) options = {trigger: !!options};\n\n // Normalize the fragment.\n fragment = this.getFragment(fragment || '');\n\n // Strip trailing slash on the root unless _trailingSlash is true\n var rootPath = this.root;\n if (!this._trailingSlash && (fragment === '' || fragment.charAt(0) === '?')) {\n rootPath = rootPath.slice(0, -1) || '/';\n }\n var url = rootPath + fragment;\n\n // Strip the fragment of the query and hash for matching.\n fragment = fragment.replace(pathStripper, '');\n\n // Decode for matching.\n var decodedFragment = this.decodeFragment(fragment);\n\n if (this.fragment === decodedFragment) return;\n this.fragment = decodedFragment;\n\n // If pushState is available, we use it to set the fragment as a real URL.\n if (this._usePushState) {\n this.history[options.replace ? 'replaceState' : 'pushState']({}, document.title, url);\n\n // If hash changes haven't been explicitly disabled, update the hash\n // fragment to store history.\n } else if (this._wantsHashChange) {\n this._updateHash(this.location, fragment, options.replace);\n if (this.iframe && fragment !== this.getHash(this.iframe.contentWindow)) {\n var iWindow = this.iframe.contentWindow;\n\n // Opening and closing the iframe tricks IE7 and earlier to push a\n // history entry on hash-tag change. When replace is true, we don't\n // want this.\n if (!options.replace) {\n iWindow.document.open();\n iWindow.document.close();\n }\n\n this._updateHash(iWindow.location, fragment, options.replace);\n }\n\n // If you've told us that you explicitly don't want fallback hashchange-\n // based history, then `navigate` becomes a page refresh.\n } else {\n return this.location.assign(url);\n }\n if (options.trigger) return this.loadUrl(fragment);\n },\n\n // Update the hash location, either replacing the current entry, or adding\n // a new one to the browser history.\n _updateHash: function(location, fragment, replace) {\n if (replace) {\n var href = location.href.replace(/(javascript:|#).*$/, '');\n location.replace(href + '#' + fragment);\n } else {\n // Some browsers require that `hash` contains a leading #.\n location.hash = '#' + fragment;\n }\n }\n\n });\n\n // Create the default Backbone.history.\n Backbone.history = new History;\n\n // Helpers\n // -------\n\n // Helper function to correctly set up the prototype chain for subclasses.\n // Similar to `goog.inherits`, but uses a hash of prototype properties and\n // class properties to be extended.\n var extend = function(protoProps, staticProps) {\n var parent = this;\n var child;\n\n // The constructor function for the new subclass is either defined by you\n // (the \"constructor\" property in your `extend` definition), or defaulted\n // by us to simply call the parent constructor.\n if (protoProps && _.has(protoProps, 'constructor')) {\n child = protoProps.constructor;\n } else {\n child = function(){ return parent.apply(this, arguments); };\n }\n\n // Add static properties to the constructor function, if supplied.\n _.extend(child, parent, staticProps);\n\n // Set the prototype chain to inherit from `parent`, without calling\n // `parent`'s constructor function and add the prototype properties.\n child.prototype = _.create(parent.prototype, protoProps);\n child.prototype.constructor = child;\n\n // Set a convenience property in case the parent's prototype is needed\n // later.\n child.__super__ = parent.prototype;\n\n return child;\n };\n\n // Set up inheritance for the model, collection, router, view and history.\n Model.extend = Collection.extend = Router.extend = View.extend = History.extend = extend;\n\n // Throw an error when a URL is needed, and none is supplied.\n var urlError = function() {\n throw new Error('A \"url\" property or function must be specified');\n };\n\n // Wrap an optional error callback with a fallback error event.\n var wrapError = function(model, options) {\n var error = options.error;\n options.error = function(resp) {\n if (error) error.call(options.context, model, resp, options);\n model.trigger('error', model, resp, options);\n };\n };\n\n // Provide useful information when things go wrong. This method is not meant\n // to be used directly; it merely provides the necessary introspection for the\n // external `debugInfo` function.\n Backbone._debug = function() {\n return {root: root, _: _};\n };\n\n return Backbone;\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, `.button-vue[data-v-6acd8f45]{margin-top:.5rem}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/LoginButton.vue\"],\"names\":[],\"mappings\":\"AACA,6BACC,gBAAA\",\"sourcesContent\":[\"\\n.button-vue {\\n\\tmargin-top: .5rem;\\n}\\n\"],\"sourceRoot\":\"\"}]);\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, `.login-form[data-v-f18886ec]{text-align:start;font-size:1rem}.login-form__fieldset[data-v-f18886ec]{width:100%;display:flex;flex-direction:column;gap:.5rem}.login-form__headline[data-v-f18886ec]{text-align:center;overflow-wrap:anywhere}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/LoginForm.vue\"],\"names\":[],\"mappings\":\"AACA,6BACC,gBAAA,CACA,cAAA,CAEA,uCACC,UAAA,CACA,YAAA,CACA,qBAAA,CACA,SAAA,CAGD,uCACC,iBAAA,CACA,sBAAA\",\"sourcesContent\":[\"\\n.login-form {\\n\\ttext-align: start;\\n\\tfont-size: 1rem;\\n\\n\\t&__fieldset {\\n\\t\\twidth: 100%;\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tgap: .5rem;\\n\\t}\\n\\n\\t&__headline {\\n\\t\\ttext-align: center;\\n\\t\\toverflow-wrap: anywhere;\\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, `fieldset[data-v-4a6bfc86]{display:flex;flex-direction:column;gap:.5rem}fieldset[data-v-4a6bfc86] label{text-align:initial}.update[data-v-4a6bfc86]{margin:0 auto}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/PasswordLessLoginForm.vue\"],\"names\":[],\"mappings\":\"AACA,0BACC,YAAA,CACA,qBAAA,CACA,SAAA,CAEA,gCACC,kBAAA,CAIF,yBACC,aAAA\",\"sourcesContent\":[\"\\nfieldset {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tgap: 0.5rem;\\n\\n\\t:deep(label) {\\n\\t\\ttext-align: initial;\\n\\t}\\n}\\n\\n.update {\\n\\tmargin: 0 auto;\\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, `.login-form[data-v-586305cf]{text-align:start;font-size:1rem}.login-form__fieldset[data-v-586305cf]{width:100%;display:flex;flex-direction:column;gap:.5rem}.login-form__link[data-v-586305cf]{display:block;font-weight:normal !important;cursor:pointer;font-size:var(--default-font-size);text-align:center;padding:.5rem 1rem 1rem 1rem}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/ResetPassword.vue\"],\"names\":[],\"mappings\":\"AACA,6BACC,gBAAA,CACA,cAAA,CAEA,uCACC,UAAA,CACA,YAAA,CACA,qBAAA,CACA,SAAA,CAGD,mCACC,aAAA,CACA,6BAAA,CACA,cAAA,CACA,kCAAA,CACA,iBAAA,CACA,4BAAA\",\"sourcesContent\":[\"\\n.login-form {\\n\\ttext-align: start;\\n\\tfont-size: 1rem;\\n\\n\\t&__fieldset {\\n\\t\\twidth: 100%;\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tgap: .5rem;\\n\\t}\\n\\n\\t&__link {\\n\\t\\tdisplay: block;\\n\\t\\tfont-weight: normal !important;\\n\\t\\tcursor: pointer;\\n\\t\\tfont-size: var(--default-font-size);\\n\\t\\ttext-align: center;\\n\\t\\tpadding: .5rem 1rem 1rem 1rem;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\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, `body{font-size:var(--default-font-size)}.login-box{width:320px;box-sizing:border-box}.login-box__link{display:block;padding:1rem;font-size:var(--default-font-size);text-align:center;font-weight:normal !important}.fade-enter-active,.fade-leave-active{transition:opacity .3s}.fade-enter,.fade-leave-to{opacity:0}.alternative-logins{display:flex;flex-direction:column;gap:.75rem}.alternative-logins .button-vue{box-sizing:border-box}.login-passwordless .button-vue{margin-top:.5rem}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/views/Login.vue\"],\"names\":[],\"mappings\":\"AACA,KACC,kCAAA,CAGD,WAEC,WAAA,CACA,qBAAA,CAEA,iBACC,aAAA,CACA,YAAA,CACA,kCAAA,CACA,iBAAA,CACA,6BAAA,CAIF,sCACC,sBAAA,CAED,2BACC,SAAA,CAGD,oBACC,YAAA,CACA,qBAAA,CACA,UAAA,CAEA,gCACC,qBAAA,CAKD,gCACC,gBAAA\",\"sourcesContent\":[\"\\nbody {\\n\\tfont-size: var(--default-font-size);\\n}\\n\\n.login-box {\\n\\t// Same size as dashboard panels\\n\\twidth: 320px;\\n\\tbox-sizing: border-box;\\n\\n\\t&__link {\\n\\t\\tdisplay: block;\\n\\t\\tpadding: 1rem;\\n\\t\\tfont-size: var(--default-font-size);\\n\\t\\ttext-align: center;\\n\\t\\tfont-weight: normal !important;\\n\\t}\\n}\\n\\n.fade-enter-active, .fade-leave-active {\\n\\ttransition: opacity .3s;\\n}\\n.fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ {\\n\\topacity: 0;\\n}\\n\\n.alternative-logins {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tgap: 0.75rem;\\n\\n\\t.button-vue {\\n\\t\\tbox-sizing: border-box;\\n\\t}\\n}\\n\\n.login-passwordless {\\n\\t.button-vue {\\n\\t\\tmargin-top: 0.5rem;\\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, `\nfieldset[data-v-6bdd5975] {\n\ttext-align: center;\n}\ninput[type=submit][data-v-6bdd5975] {\n\tmargin-top: 20px;\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/UpdatePassword.vue\"],\"names\":[],\"mappings\":\";AA2HA;CACA,kBAAA;AACA;AAEA;CACA,gBAAA;AACA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","/*\n * vim: expandtab shiftwidth=4 softtabstop=4\n */\n\n/* global dav */\nvar dav = dav || {}\n\ndav._XML_CHAR_MAP = {\n '<': '<',\n '>': '>',\n '&': '&',\n '\"': '"',\n \"'\": '''\n};\n\ndav._escapeXml = function(s) {\n return s.replace(/[<>&\"']/g, function (ch) {\n return dav._XML_CHAR_MAP[ch];\n });\n};\n\ndav.Client = function(options) {\n var i;\n for(i in options) {\n this[i] = options[i];\n }\n\n};\n\ndav.Client.prototype = {\n\n baseUrl : null,\n\n userName : null,\n\n password : null,\n\n\n xmlNamespaces : {\n 'DAV:' : 'd'\n },\n\n /**\n * Generates a propFind request.\n *\n * @param {string} url Url to do the propfind request on\n * @param {Array} properties List of properties to retrieve.\n * @param {string} depth \"0\", \"1\" or \"infinity\"\n * @param {Object} [headers] headers\n * @return {Promise}\n */\n propFind : function(url, properties, depth, headers) {\n\n if(typeof depth === \"undefined\") {\n depth = '0';\n }\n\n // depth header must be a string, in case a number was passed in\n depth = '' + depth;\n\n headers = headers || {};\n\n headers['Depth'] = depth;\n headers['Content-Type'] = 'application/xml; charset=utf-8';\n\n var body =\n '\\n' +\n '\\n';\n\n for(var ii in properties) {\n if (!properties.hasOwnProperty(ii)) {\n continue;\n }\n\n var property = this.parseClarkNotation(properties[ii]);\n if (this.xmlNamespaces[property.namespace]) {\n body+=' <' + this.xmlNamespaces[property.namespace] + ':' + property.name + ' />\\n';\n } else {\n body+=' \\n';\n }\n\n }\n body+=' \\n';\n body+='';\n\n return this.request('PROPFIND', url, headers, body).then(\n function(result) {\n\n if (depth === '0') {\n return {\n status: result.status,\n body: result.body[0],\n xhr: result.xhr\n };\n } else {\n return {\n status: result.status,\n body: result.body,\n xhr: result.xhr\n };\n }\n\n }.bind(this)\n );\n\n },\n\n /**\n * Renders a \"d:set\" block for the given properties.\n *\n * @param {Object.} properties\n * @return {String} XML \"\" block\n */\n _renderPropSet: function(properties) {\n var body = ' \\n' +\n ' \\n';\n\n for(var ii in properties) {\n if (!properties.hasOwnProperty(ii)) {\n continue;\n }\n\n var property = this.parseClarkNotation(ii);\n var propName;\n var propValue = properties[ii];\n if (this.xmlNamespaces[property.namespace]) {\n propName = this.xmlNamespaces[property.namespace] + ':' + property.name;\n } else {\n propName = 'x:' + property.name + ' xmlns:x=\"' + property.namespace + '\"';\n }\n\n // FIXME: hard-coded for now until we allow properties to\n // specify whether to be escaped or not\n if (propName !== 'd:resourcetype') {\n propValue = dav._escapeXml(propValue);\n }\n body += ' <' + propName + '>' + propValue + '\\n';\n }\n body +=' \\n';\n body +=' \\n';\n return body;\n },\n\n /**\n * Generates a propPatch request.\n *\n * @param {string} url Url to do the proppatch request on\n * @param {Object.} properties List of properties to store.\n * @param {Object} [headers] headers\n * @return {Promise}\n */\n propPatch : function(url, properties, headers) {\n headers = headers || {};\n\n headers['Content-Type'] = 'application/xml; charset=utf-8';\n\n var body =\n '\\n' +\n '} [properties] list of properties to store.\n * @param {Object} [headers] headers\n * @return {Promise}\n */\n mkcol : function(url, properties, headers) {\n var body = '';\n headers = headers || {};\n headers['Content-Type'] = 'application/xml; charset=utf-8';\n\n if (properties) {\n body =\n '\\n' +\n ' 0) {\n var subNodes = [];\n // filter out text nodes\n for (var j = 0; j < propNode.childNodes.length; j++) {\n var node = propNode.childNodes[j];\n if (node.nodeType === 1) {\n subNodes.push(node);\n }\n }\n if (subNodes.length) {\n content = subNodes;\n }\n }\n\n return content || propNode.textContent || propNode.text || '';\n },\n\n /**\n * Parses a multi-status response body.\n *\n * @param {string} xmlBody\n * @param {Array}\n */\n parseMultiStatus : function(xmlBody) {\n\n var parser = new DOMParser();\n var doc = parser.parseFromString(xmlBody, \"application/xml\");\n\n var resolver = function(foo) {\n var ii;\n for(ii in this.xmlNamespaces) {\n if (this.xmlNamespaces[ii] === foo) {\n return ii;\n }\n }\n }.bind(this);\n\n var responseIterator = doc.evaluate('/d:multistatus/d:response', doc, resolver, XPathResult.ANY_TYPE, null);\n\n var result = [];\n var responseNode = responseIterator.iterateNext();\n\n while(responseNode) {\n\n var response = {\n href : null,\n propStat : []\n };\n\n response.href = doc.evaluate('string(d:href)', responseNode, resolver, XPathResult.ANY_TYPE, null).stringValue;\n\n var propStatIterator = doc.evaluate('d:propstat', responseNode, resolver, XPathResult.ANY_TYPE, null);\n var propStatNode = propStatIterator.iterateNext();\n\n while(propStatNode) {\n var propStat = {\n status : doc.evaluate('string(d:status)', propStatNode, resolver, XPathResult.ANY_TYPE, null).stringValue,\n properties : {},\n };\n\n var propIterator = doc.evaluate('d:prop/*', propStatNode, resolver, XPathResult.ANY_TYPE, null);\n\n var propNode = propIterator.iterateNext();\n while(propNode) {\n var content = this._parsePropNode(propNode);\n propStat.properties['{' + propNode.namespaceURI + '}' + propNode.localName] = content;\n propNode = propIterator.iterateNext();\n\n }\n response.propStat.push(propStat);\n propStatNode = propStatIterator.iterateNext();\n\n\n }\n\n result.push(response);\n responseNode = responseIterator.iterateNext();\n\n }\n\n return result;\n\n },\n\n /**\n * Takes a relative url, and maps it to an absolute url, using the baseUrl\n *\n * @param {string} url\n * @return {string}\n */\n resolveUrl : function(url) {\n\n // Note: this is rudamentary.. not sure yet if it handles every case.\n if (/^https?:\\/\\//i.test(url)) {\n // absolute\n return url;\n }\n\n var baseParts = this.parseUrl(this.baseUrl);\n if (url.charAt('/')) {\n // Url starts with a slash\n return baseParts.root + url;\n }\n\n // Url does not start with a slash, we need grab the base url right up until the last slash.\n var newUrl = baseParts.root + '/';\n if (baseParts.path.lastIndexOf('/')!==-1) {\n newUrl = newUrl = baseParts.path.subString(0, baseParts.path.lastIndexOf('/')) + '/';\n }\n newUrl+=url;\n return url;\n\n },\n\n /**\n * Parses a url and returns its individual components.\n *\n * @param {String} url\n * @return {Object}\n */\n parseUrl : function(url) {\n\n var parts = url.match(/^(?:([A-Za-z]+):)?(\\/{0,3})([0-9.\\-A-Za-z]+)(?::(\\d+))?(?:\\/([^?#]*))?(?:\\?([^#]*))?(?:#(.*))?$/);\n var result = {\n url : parts[0],\n scheme : parts[1],\n host : parts[3],\n port : parts[4],\n path : parts[5],\n query : parts[6],\n fragment : parts[7],\n };\n result.root =\n result.scheme + '://' +\n result.host +\n (result.port ? ':' + result.port : '');\n\n return result;\n\n },\n\n parseClarkNotation : function(propertyName) {\n\n var result = propertyName.match(/^{([^}]+)}(.*)$/);\n if (!result) {\n return;\n }\n\n return {\n name : result[2],\n namespace : result[1]\n };\n\n }\n\n};\n\nif (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\n module.exports.Client = dav.Client;\n}\n","var map = {\n\t\"./af\": 25177,\n\t\"./af.js\": 25177,\n\t\"./ar\": 61509,\n\t\"./ar-dz\": 41488,\n\t\"./ar-dz.js\": 41488,\n\t\"./ar-kw\": 58676,\n\t\"./ar-kw.js\": 58676,\n\t\"./ar-ly\": 42353,\n\t\"./ar-ly.js\": 42353,\n\t\"./ar-ma\": 24496,\n\t\"./ar-ma.js\": 24496,\n\t\"./ar-ps\": 6947,\n\t\"./ar-ps.js\": 6947,\n\t\"./ar-sa\": 60301,\n\t\"./ar-sa.js\": 60301,\n\t\"./ar-tn\": 89756,\n\t\"./ar-tn.js\": 89756,\n\t\"./ar.js\": 61509,\n\t\"./az\": 95533,\n\t\"./az.js\": 95533,\n\t\"./be\": 28959,\n\t\"./be.js\": 28959,\n\t\"./bg\": 47777,\n\t\"./bg.js\": 47777,\n\t\"./bm\": 54903,\n\t\"./bm.js\": 54903,\n\t\"./bn\": 61290,\n\t\"./bn-bd\": 17357,\n\t\"./bn-bd.js\": 17357,\n\t\"./bn.js\": 61290,\n\t\"./bo\": 31545,\n\t\"./bo.js\": 31545,\n\t\"./br\": 11470,\n\t\"./br.js\": 11470,\n\t\"./bs\": 44429,\n\t\"./bs.js\": 44429,\n\t\"./ca\": 7306,\n\t\"./ca.js\": 7306,\n\t\"./cs\": 56464,\n\t\"./cs.js\": 56464,\n\t\"./cv\": 73635,\n\t\"./cv.js\": 73635,\n\t\"./cy\": 64226,\n\t\"./cy.js\": 64226,\n\t\"./da\": 93601,\n\t\"./da.js\": 93601,\n\t\"./de\": 77853,\n\t\"./de-at\": 26111,\n\t\"./de-at.js\": 26111,\n\t\"./de-ch\": 54697,\n\t\"./de-ch.js\": 54697,\n\t\"./de.js\": 77853,\n\t\"./dv\": 60708,\n\t\"./dv.js\": 60708,\n\t\"./el\": 54691,\n\t\"./el.js\": 54691,\n\t\"./en-au\": 53872,\n\t\"./en-au.js\": 53872,\n\t\"./en-ca\": 28298,\n\t\"./en-ca.js\": 28298,\n\t\"./en-gb\": 56195,\n\t\"./en-gb.js\": 56195,\n\t\"./en-ie\": 66584,\n\t\"./en-ie.js\": 66584,\n\t\"./en-il\": 65543,\n\t\"./en-il.js\": 65543,\n\t\"./en-in\": 9033,\n\t\"./en-in.js\": 9033,\n\t\"./en-nz\": 79402,\n\t\"./en-nz.js\": 79402,\n\t\"./en-sg\": 43004,\n\t\"./en-sg.js\": 43004,\n\t\"./eo\": 32934,\n\t\"./eo.js\": 32934,\n\t\"./es\": 97650,\n\t\"./es-do\": 20838,\n\t\"./es-do.js\": 20838,\n\t\"./es-mx\": 17730,\n\t\"./es-mx.js\": 17730,\n\t\"./es-us\": 56575,\n\t\"./es-us.js\": 56575,\n\t\"./es.js\": 97650,\n\t\"./et\": 3035,\n\t\"./et.js\": 3035,\n\t\"./eu\": 3508,\n\t\"./eu.js\": 3508,\n\t\"./fa\": 119,\n\t\"./fa.js\": 119,\n\t\"./fi\": 90527,\n\t\"./fi.js\": 90527,\n\t\"./fil\": 95995,\n\t\"./fil.js\": 95995,\n\t\"./fo\": 52477,\n\t\"./fo.js\": 52477,\n\t\"./fr\": 85498,\n\t\"./fr-ca\": 26435,\n\t\"./fr-ca.js\": 26435,\n\t\"./fr-ch\": 37892,\n\t\"./fr-ch.js\": 37892,\n\t\"./fr.js\": 85498,\n\t\"./fy\": 37071,\n\t\"./fy.js\": 37071,\n\t\"./ga\": 41734,\n\t\"./ga.js\": 41734,\n\t\"./gd\": 70217,\n\t\"./gd.js\": 70217,\n\t\"./gl\": 77329,\n\t\"./gl.js\": 77329,\n\t\"./gom-deva\": 32124,\n\t\"./gom-deva.js\": 32124,\n\t\"./gom-latn\": 93383,\n\t\"./gom-latn.js\": 93383,\n\t\"./gu\": 95050,\n\t\"./gu.js\": 95050,\n\t\"./he\": 11713,\n\t\"./he.js\": 11713,\n\t\"./hi\": 43861,\n\t\"./hi.js\": 43861,\n\t\"./hr\": 26308,\n\t\"./hr.js\": 26308,\n\t\"./hu\": 90609,\n\t\"./hu.js\": 90609,\n\t\"./hy-am\": 17160,\n\t\"./hy-am.js\": 17160,\n\t\"./id\": 74063,\n\t\"./id.js\": 74063,\n\t\"./is\": 89374,\n\t\"./is.js\": 89374,\n\t\"./it\": 88383,\n\t\"./it-ch\": 21827,\n\t\"./it-ch.js\": 21827,\n\t\"./it.js\": 88383,\n\t\"./ja\": 23827,\n\t\"./ja.js\": 23827,\n\t\"./jv\": 89722,\n\t\"./jv.js\": 89722,\n\t\"./ka\": 41794,\n\t\"./ka.js\": 41794,\n\t\"./kk\": 27088,\n\t\"./kk.js\": 27088,\n\t\"./km\": 96870,\n\t\"./km.js\": 96870,\n\t\"./kn\": 84451,\n\t\"./kn.js\": 84451,\n\t\"./ko\": 63164,\n\t\"./ko.js\": 63164,\n\t\"./ku\": 98174,\n\t\"./ku-kmr\": 6181,\n\t\"./ku-kmr.js\": 6181,\n\t\"./ku.js\": 98174,\n\t\"./ky\": 78474,\n\t\"./ky.js\": 78474,\n\t\"./lb\": 79680,\n\t\"./lb.js\": 79680,\n\t\"./lo\": 15867,\n\t\"./lo.js\": 15867,\n\t\"./lt\": 45766,\n\t\"./lt.js\": 45766,\n\t\"./lv\": 69532,\n\t\"./lv.js\": 69532,\n\t\"./me\": 58076,\n\t\"./me.js\": 58076,\n\t\"./mi\": 41848,\n\t\"./mi.js\": 41848,\n\t\"./mk\": 30306,\n\t\"./mk.js\": 30306,\n\t\"./ml\": 73739,\n\t\"./ml.js\": 73739,\n\t\"./mn\": 99053,\n\t\"./mn.js\": 99053,\n\t\"./mr\": 86169,\n\t\"./mr.js\": 86169,\n\t\"./ms\": 73386,\n\t\"./ms-my\": 92297,\n\t\"./ms-my.js\": 92297,\n\t\"./ms.js\": 73386,\n\t\"./mt\": 77075,\n\t\"./mt.js\": 77075,\n\t\"./my\": 72264,\n\t\"./my.js\": 72264,\n\t\"./nb\": 22274,\n\t\"./nb.js\": 22274,\n\t\"./ne\": 8235,\n\t\"./ne.js\": 8235,\n\t\"./nl\": 92572,\n\t\"./nl-be\": 43784,\n\t\"./nl-be.js\": 43784,\n\t\"./nl.js\": 92572,\n\t\"./nn\": 54566,\n\t\"./nn.js\": 54566,\n\t\"./oc-lnc\": 69330,\n\t\"./oc-lnc.js\": 69330,\n\t\"./pa-in\": 29849,\n\t\"./pa-in.js\": 29849,\n\t\"./pl\": 94418,\n\t\"./pl.js\": 94418,\n\t\"./pt\": 79834,\n\t\"./pt-br\": 48303,\n\t\"./pt-br.js\": 48303,\n\t\"./pt.js\": 79834,\n\t\"./ro\": 24457,\n\t\"./ro.js\": 24457,\n\t\"./ru\": 82271,\n\t\"./ru.js\": 82271,\n\t\"./sd\": 1221,\n\t\"./sd.js\": 1221,\n\t\"./se\": 33478,\n\t\"./se.js\": 33478,\n\t\"./si\": 17538,\n\t\"./si.js\": 17538,\n\t\"./sk\": 5784,\n\t\"./sk.js\": 5784,\n\t\"./sl\": 46637,\n\t\"./sl.js\": 46637,\n\t\"./sq\": 86794,\n\t\"./sq.js\": 86794,\n\t\"./sr\": 45719,\n\t\"./sr-cyrl\": 3322,\n\t\"./sr-cyrl.js\": 3322,\n\t\"./sr.js\": 45719,\n\t\"./ss\": 56000,\n\t\"./ss.js\": 56000,\n\t\"./sv\": 41011,\n\t\"./sv.js\": 41011,\n\t\"./sw\": 40748,\n\t\"./sw.js\": 40748,\n\t\"./ta\": 11025,\n\t\"./ta.js\": 11025,\n\t\"./te\": 11885,\n\t\"./te.js\": 11885,\n\t\"./tet\": 28861,\n\t\"./tet.js\": 28861,\n\t\"./tg\": 86571,\n\t\"./tg.js\": 86571,\n\t\"./th\": 55802,\n\t\"./th.js\": 55802,\n\t\"./tk\": 59527,\n\t\"./tk.js\": 59527,\n\t\"./tl-ph\": 29231,\n\t\"./tl-ph.js\": 29231,\n\t\"./tlh\": 31052,\n\t\"./tlh.js\": 31052,\n\t\"./tr\": 85096,\n\t\"./tr.js\": 85096,\n\t\"./tzl\": 79846,\n\t\"./tzl.js\": 79846,\n\t\"./tzm\": 81765,\n\t\"./tzm-latn\": 97711,\n\t\"./tzm-latn.js\": 97711,\n\t\"./tzm.js\": 81765,\n\t\"./ug-cn\": 48414,\n\t\"./ug-cn.js\": 48414,\n\t\"./uk\": 16618,\n\t\"./uk.js\": 16618,\n\t\"./ur\": 57777,\n\t\"./ur.js\": 57777,\n\t\"./uz\": 57609,\n\t\"./uz-latn\": 72475,\n\t\"./uz-latn.js\": 72475,\n\t\"./uz.js\": 57609,\n\t\"./vi\": 21135,\n\t\"./vi.js\": 21135,\n\t\"./x-pseudo\": 64051,\n\t\"./x-pseudo.js\": 64051,\n\t\"./yo\": 82218,\n\t\"./yo.js\": 82218,\n\t\"./zh-cn\": 52648,\n\t\"./zh-cn.js\": 52648,\n\t\"./zh-hk\": 1632,\n\t\"./zh-hk.js\": 1632,\n\t\"./zh-mo\": 31541,\n\t\"./zh-mo.js\": 31541,\n\t\"./zh-tw\": 50304,\n\t\"./zh-tw.js\": 50304\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 35358;","import { getLoggerBuilder } from \"@nextcloud/logger\";\nimport { getCurrentUser, onRequestTokenUpdate, getRequestToken } from \"@nextcloud/auth\";\nimport { join, basename, extname, dirname } from \"path\";\nimport { encodePath } from \"@nextcloud/paths\";\nimport { generateRemoteUrl } from \"@nextcloud/router\";\nimport { CancelablePromise } from \"cancelable-promise\";\nimport { createClient, getPatcher } from \"webdav\";\nimport { isPublicShare, getSharingToken } from \"@nextcloud/sharing/public\";\nimport { getCapabilities } from \"@nextcloud/capabilities\";\nimport { getCanonicalLocale, getLanguage } from \"@nextcloud/l10n\";\nimport { TypedEventTarget } from \"typescript-event-target\";\nconst logger = getLoggerBuilder().setApp(\"@nextcloud/files\").detectUser().build();\nvar NewMenuEntryCategory = /* @__PURE__ */ ((NewMenuEntryCategory2) => {\n NewMenuEntryCategory2[NewMenuEntryCategory2[\"UploadFromDevice\"] = 0] = \"UploadFromDevice\";\n NewMenuEntryCategory2[NewMenuEntryCategory2[\"CreateNew\"] = 1] = \"CreateNew\";\n NewMenuEntryCategory2[NewMenuEntryCategory2[\"Other\"] = 2] = \"Other\";\n return NewMenuEntryCategory2;\n})(NewMenuEntryCategory || {});\nclass NewFileMenu {\n _entries = [];\n registerEntry(entry) {\n this.validateEntry(entry);\n entry.category = entry.category ?? 1;\n this._entries.push(entry);\n }\n unregisterEntry(entry) {\n const entryIndex = typeof entry === \"string\" ? this.getEntryIndex(entry) : this.getEntryIndex(entry.id);\n if (entryIndex === -1) {\n logger.warn(\"Entry not found, nothing removed\", { entry, entries: this.getEntries() });\n return;\n }\n this._entries.splice(entryIndex, 1);\n }\n /**\n * Get the list of registered entries\n *\n * @param {Folder} context the creation context. Usually the current folder\n */\n getEntries(context) {\n if (context) {\n return this._entries.filter((entry) => typeof entry.enabled === \"function\" ? entry.enabled(context) : true);\n }\n return this._entries;\n }\n getEntryIndex(id) {\n return this._entries.findIndex((entry) => entry.id === id);\n }\n validateEntry(entry) {\n if (!entry.id || !entry.displayName || !(entry.iconSvgInline || entry.iconClass) || !entry.handler) {\n throw new Error(\"Invalid entry\");\n }\n if (typeof entry.id !== \"string\" || typeof entry.displayName !== \"string\") {\n throw new Error(\"Invalid id or displayName property\");\n }\n if (entry.iconClass && typeof entry.iconClass !== \"string\" || entry.iconSvgInline && typeof entry.iconSvgInline !== \"string\") {\n throw new Error(\"Invalid icon provided\");\n }\n if (entry.enabled !== void 0 && typeof entry.enabled !== \"function\") {\n throw new Error(\"Invalid enabled property\");\n }\n if (typeof entry.handler !== \"function\") {\n throw new Error(\"Invalid handler property\");\n }\n if (\"order\" in entry && typeof entry.order !== \"number\") {\n throw new Error(\"Invalid order property\");\n }\n if (this.getEntryIndex(entry.id) !== -1) {\n throw new Error(\"Duplicate entry\");\n }\n }\n}\nconst getNewFileMenu = function() {\n if (typeof window._nc_newfilemenu === \"undefined\") {\n window._nc_newfilemenu = new NewFileMenu();\n logger.debug(\"NewFileMenu initialized\");\n }\n return window._nc_newfilemenu;\n};\nvar DefaultType = /* @__PURE__ */ ((DefaultType2) => {\n DefaultType2[\"DEFAULT\"] = \"default\";\n DefaultType2[\"HIDDEN\"] = \"hidden\";\n return DefaultType2;\n})(DefaultType || {});\nclass FileAction {\n _action;\n constructor(action) {\n this.validateAction(action);\n this._action = action;\n }\n get id() {\n return this._action.id;\n }\n get displayName() {\n return this._action.displayName;\n }\n get title() {\n return this._action.title;\n }\n get iconSvgInline() {\n return this._action.iconSvgInline;\n }\n get enabled() {\n return this._action.enabled;\n }\n get exec() {\n return this._action.exec;\n }\n get execBatch() {\n return this._action.execBatch;\n }\n get order() {\n return this._action.order;\n }\n get parent() {\n return this._action.parent;\n }\n get default() {\n return this._action.default;\n }\n get inline() {\n return this._action.inline;\n }\n get renderInline() {\n return this._action.renderInline;\n }\n validateAction(action) {\n if (!action.id || typeof action.id !== \"string\") {\n throw new Error(\"Invalid id\");\n }\n if (!action.displayName || typeof action.displayName !== \"function\") {\n throw new Error(\"Invalid displayName function\");\n }\n if (\"title\" in action && typeof action.title !== \"function\") {\n throw new Error(\"Invalid title function\");\n }\n if (!action.iconSvgInline || typeof action.iconSvgInline !== \"function\") {\n throw new Error(\"Invalid iconSvgInline function\");\n }\n if (!action.exec || typeof action.exec !== \"function\") {\n throw new Error(\"Invalid exec function\");\n }\n if (\"enabled\" in action && typeof action.enabled !== \"function\") {\n throw new Error(\"Invalid enabled function\");\n }\n if (\"execBatch\" in action && typeof action.execBatch !== \"function\") {\n throw new Error(\"Invalid execBatch function\");\n }\n if (\"order\" in action && typeof action.order !== \"number\") {\n throw new Error(\"Invalid order\");\n }\n if (\"parent\" in action && typeof action.parent !== \"string\") {\n throw new Error(\"Invalid parent\");\n }\n if (action.default && !Object.values(DefaultType).includes(action.default)) {\n throw new Error(\"Invalid default\");\n }\n if (\"inline\" in action && typeof action.inline !== \"function\") {\n throw new Error(\"Invalid inline function\");\n }\n if (\"renderInline\" in action && typeof action.renderInline !== \"function\") {\n throw new Error(\"Invalid renderInline function\");\n }\n }\n}\nconst registerFileAction = function(action) {\n if (typeof window._nc_fileactions === \"undefined\") {\n window._nc_fileactions = [];\n logger.debug(\"FileActions initialized\");\n }\n if (window._nc_fileactions.find((search) => search.id === action.id)) {\n logger.error(`FileAction ${action.id} already registered`, { action });\n return;\n }\n window._nc_fileactions.push(action);\n};\nconst getFileActions = function() {\n if (typeof window._nc_fileactions === \"undefined\") {\n window._nc_fileactions = [];\n logger.debug(\"FileActions initialized\");\n }\n return window._nc_fileactions;\n};\nclass Header {\n _header;\n constructor(header) {\n this.validateHeader(header);\n this._header = header;\n }\n get id() {\n return this._header.id;\n }\n get order() {\n return this._header.order;\n }\n get enabled() {\n return this._header.enabled;\n }\n get render() {\n return this._header.render;\n }\n get updated() {\n return this._header.updated;\n }\n validateHeader(header) {\n if (!header.id || !header.render || !header.updated) {\n throw new Error(\"Invalid header: id, render and updated are required\");\n }\n if (typeof header.id !== \"string\") {\n throw new Error(\"Invalid id property\");\n }\n if (header.enabled !== void 0 && typeof header.enabled !== \"function\") {\n throw new Error(\"Invalid enabled property\");\n }\n if (header.render && typeof header.render !== \"function\") {\n throw new Error(\"Invalid render property\");\n }\n if (header.updated && typeof header.updated !== \"function\") {\n throw new Error(\"Invalid updated property\");\n }\n }\n}\nconst registerFileListHeaders = function(header) {\n if (typeof window._nc_filelistheader === \"undefined\") {\n window._nc_filelistheader = [];\n logger.debug(\"FileListHeaders initialized\");\n }\n if (window._nc_filelistheader.find((search) => search.id === header.id)) {\n logger.error(`Header ${header.id} already registered`, { header });\n return;\n }\n window._nc_filelistheader.push(header);\n};\nconst getFileListHeaders = function() {\n if (typeof window._nc_filelistheader === \"undefined\") {\n window._nc_filelistheader = [];\n logger.debug(\"FileListHeaders initialized\");\n }\n return window._nc_filelistheader;\n};\nvar Permission = /* @__PURE__ */ ((Permission2) => {\n Permission2[Permission2[\"NONE\"] = 0] = \"NONE\";\n Permission2[Permission2[\"CREATE\"] = 4] = \"CREATE\";\n Permission2[Permission2[\"READ\"] = 1] = \"READ\";\n Permission2[Permission2[\"UPDATE\"] = 2] = \"UPDATE\";\n Permission2[Permission2[\"DELETE\"] = 8] = \"DELETE\";\n Permission2[Permission2[\"SHARE\"] = 16] = \"SHARE\";\n Permission2[Permission2[\"ALL\"] = 31] = \"ALL\";\n return Permission2;\n})(Permission || {});\nconst defaultDavProperties = [\n \"d:getcontentlength\",\n \"d:getcontenttype\",\n \"d:getetag\",\n \"d:getlastmodified\",\n \"d:creationdate\",\n \"d:displayname\",\n \"d:quota-available-bytes\",\n \"d:resourcetype\",\n \"nc:has-preview\",\n \"nc:is-encrypted\",\n \"nc:mount-type\",\n \"oc:comments-unread\",\n \"oc:favorite\",\n \"oc:fileid\",\n \"oc:owner-display-name\",\n \"oc:owner-id\",\n \"oc:permissions\",\n \"oc:size\"\n];\nconst defaultDavNamespaces = {\n d: \"DAV:\",\n nc: \"http://nextcloud.org/ns\",\n oc: \"http://owncloud.org/ns\",\n ocs: \"http://open-collaboration-services.org/ns\"\n};\nconst registerDavProperty = function(prop, namespace = { nc: \"http://nextcloud.org/ns\" }) {\n if (typeof window._nc_dav_properties === \"undefined\") {\n window._nc_dav_properties = [...defaultDavProperties];\n window._nc_dav_namespaces = { ...defaultDavNamespaces };\n }\n const namespaces = { ...window._nc_dav_namespaces, ...namespace };\n if (window._nc_dav_properties.find((search) => search === prop)) {\n logger.warn(`${prop} already registered`, { prop });\n return false;\n }\n if (prop.startsWith(\"<\") || prop.split(\":\").length !== 2) {\n logger.error(`${prop} is not valid. See example: 'oc:fileid'`, { prop });\n return false;\n }\n const ns = prop.split(\":\")[0];\n if (!namespaces[ns]) {\n logger.error(`${prop} namespace unknown`, { prop, namespaces });\n return false;\n }\n window._nc_dav_properties.push(prop);\n window._nc_dav_namespaces = namespaces;\n return true;\n};\nconst getDavProperties = function() {\n if (typeof window._nc_dav_properties === \"undefined\") {\n window._nc_dav_properties = [...defaultDavProperties];\n }\n return window._nc_dav_properties.map((prop) => `<${prop} />`).join(\" \");\n};\nconst getDavNameSpaces = function() {\n if (typeof window._nc_dav_namespaces === \"undefined\") {\n window._nc_dav_namespaces = { ...defaultDavNamespaces };\n }\n return Object.keys(window._nc_dav_namespaces).map((ns) => `xmlns:${ns}=\"${window._nc_dav_namespaces?.[ns]}\"`).join(\" \");\n};\nconst davGetDefaultPropfind = function() {\n return `\n\t\t\n\t\t\t\n\t\t\t\t${getDavProperties()}\n\t\t\t\n\t\t`;\n};\nconst davGetFavoritesReport = function() {\n return `\n\t\t\n\t\t\t\n\t\t\t\t${getDavProperties()}\n\t\t\t\n\t\t\t\n\t\t\t\t1\n\t\t\t\n\t\t`;\n};\nconst davGetRecentSearch = function(lastModified) {\n return `\n\n\t\n\t\t\n\t\t\t\n\t\t\t\t${getDavProperties()}\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t/files/${getCurrentUser()?.uid}/\n\t\t\t\tinfinity\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\thttpd/unix-directory\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t0\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t${lastModified}\n\t\t\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t100\n\t\t\t0\n\t\t\n\t\n`;\n};\nconst davParsePermissions = function(permString = \"\") {\n let permissions = Permission.NONE;\n if (!permString) {\n return permissions;\n }\n if (permString.includes(\"C\") || permString.includes(\"K\")) {\n permissions |= Permission.CREATE;\n }\n if (permString.includes(\"G\")) {\n permissions |= Permission.READ;\n }\n if (permString.includes(\"W\") || permString.includes(\"N\") || permString.includes(\"V\")) {\n permissions |= Permission.UPDATE;\n }\n if (permString.includes(\"D\")) {\n permissions |= Permission.DELETE;\n }\n if (permString.includes(\"R\")) {\n permissions |= Permission.SHARE;\n }\n return permissions;\n};\nvar FileType = /* @__PURE__ */ ((FileType2) => {\n FileType2[\"Folder\"] = \"folder\";\n FileType2[\"File\"] = \"file\";\n return FileType2;\n})(FileType || {});\nconst isDavRessource = function(source, davService) {\n return source.match(davService) !== null;\n};\nconst validateData = (data, davService) => {\n if (data.id && typeof data.id !== \"number\") {\n throw new Error(\"Invalid id type of value\");\n }\n if (!data.source) {\n throw new Error(\"Missing mandatory source\");\n }\n try {\n new URL(data.source);\n } catch (e) {\n throw new Error(\"Invalid source format, source must be a valid URL\");\n }\n if (!data.source.startsWith(\"http\")) {\n throw new Error(\"Invalid source format, only http(s) is supported\");\n }\n if (data.displayname && typeof data.displayname !== \"string\") {\n throw new Error(\"Invalid displayname type\");\n }\n if (data.mtime && !(data.mtime instanceof Date)) {\n throw new Error(\"Invalid mtime type\");\n }\n if (data.crtime && !(data.crtime instanceof Date)) {\n throw new Error(\"Invalid crtime type\");\n }\n if (!data.mime || typeof data.mime !== \"string\" || !data.mime.match(/^[-\\w.]+\\/[-+\\w.]+$/gi)) {\n throw new Error(\"Missing or invalid mandatory mime\");\n }\n if (\"size\" in data && typeof data.size !== \"number\" && data.size !== void 0) {\n throw new Error(\"Invalid size type\");\n }\n if (\"permissions\" in data && data.permissions !== void 0 && !(typeof data.permissions === \"number\" && data.permissions >= Permission.NONE && data.permissions <= Permission.ALL)) {\n throw new Error(\"Invalid permissions\");\n }\n if (data.owner && data.owner !== null && typeof data.owner !== \"string\") {\n throw new Error(\"Invalid owner type\");\n }\n if (data.attributes && typeof data.attributes !== \"object\") {\n throw new Error(\"Invalid attributes type\");\n }\n if (data.root && typeof data.root !== \"string\") {\n throw new Error(\"Invalid root type\");\n }\n if (data.root && !data.root.startsWith(\"/\")) {\n throw new Error(\"Root must start with a leading slash\");\n }\n if (data.root && !data.source.includes(data.root)) {\n throw new Error(\"Root must be part of the source\");\n }\n if (data.root && isDavRessource(data.source, davService)) {\n const service = data.source.match(davService)[0];\n if (!data.source.includes(join(service, data.root))) {\n throw new Error(\"The root must be relative to the service. e.g /files/emma\");\n }\n }\n if (data.status && !Object.values(NodeStatus).includes(data.status)) {\n throw new Error(\"Status must be a valid NodeStatus\");\n }\n};\nvar NodeStatus = /* @__PURE__ */ ((NodeStatus2) => {\n NodeStatus2[\"NEW\"] = \"new\";\n NodeStatus2[\"FAILED\"] = \"failed\";\n NodeStatus2[\"LOADING\"] = \"loading\";\n NodeStatus2[\"LOCKED\"] = \"locked\";\n return NodeStatus2;\n})(NodeStatus || {});\nclass Node {\n _data;\n _attributes;\n _knownDavService = /(remote|public)\\.php\\/(web)?dav/i;\n readonlyAttributes = Object.entries(Object.getOwnPropertyDescriptors(Node.prototype)).filter((e) => typeof e[1].get === \"function\" && e[0] !== \"__proto__\").map((e) => e[0]);\n handler = {\n set: (target, prop, value) => {\n if (this.readonlyAttributes.includes(prop)) {\n return false;\n }\n return Reflect.set(target, prop, value);\n },\n deleteProperty: (target, prop) => {\n if (this.readonlyAttributes.includes(prop)) {\n return false;\n }\n return Reflect.deleteProperty(target, prop);\n },\n // TODO: This is deprecated and only needed for files v3\n get: (target, prop, receiver) => {\n if (this.readonlyAttributes.includes(prop)) {\n logger.warn(`Accessing \"Node.attributes.${prop}\" is deprecated, access it directly on the Node instance.`);\n return Reflect.get(this, prop);\n }\n return Reflect.get(target, prop, receiver);\n }\n };\n constructor(data, davService) {\n validateData(data, davService || this._knownDavService);\n this._data = {\n // TODO: Remove with next major release, this is just for compatibility\n displayname: data.attributes?.displayname,\n ...data,\n attributes: {}\n };\n this._attributes = new Proxy(this._data.attributes, this.handler);\n this.update(data.attributes ?? {});\n if (davService) {\n this._knownDavService = davService;\n }\n }\n /**\n * Get the source url to this object\n * There is no setter as the source is not meant to be changed manually.\n * You can use the rename or move method to change the source.\n */\n get source() {\n return this._data.source.replace(/\\/$/i, \"\");\n }\n /**\n * Get the encoded source url to this object for requests purposes\n */\n get encodedSource() {\n const { origin } = new URL(this.source);\n return origin + encodePath(this.source.slice(origin.length));\n }\n /**\n * Get this object name\n * There is no setter as the source is not meant to be changed manually.\n * You can use the rename or move method to change the source.\n */\n get basename() {\n return basename(this.source);\n }\n /**\n * The nodes displayname\n * By default the display name and the `basename` are identical,\n * but it is possible to have a different name. This happens\n * on the files app for example for shared folders.\n */\n get displayname() {\n return this._data.displayname || this.basename;\n }\n /**\n * Set the displayname\n */\n set displayname(displayname) {\n this._data.displayname = displayname;\n }\n /**\n * Get this object's extension\n * There is no setter as the source is not meant to be changed manually.\n * You can use the rename or move method to change the source.\n */\n get extension() {\n return extname(this.source);\n }\n /**\n * Get the directory path leading to this object\n * Will use the relative path to root if available\n *\n * There is no setter as the source is not meant to be changed manually.\n * You can use the rename or move method to change the source.\n */\n get dirname() {\n if (this.root) {\n let source = this.source;\n if (this.isDavRessource) {\n source = source.split(this._knownDavService).pop();\n }\n const firstMatch = source.indexOf(this.root);\n const root = this.root.replace(/\\/$/, \"\");\n return dirname(source.slice(firstMatch + root.length) || \"/\");\n }\n const url = new URL(this.source);\n return dirname(url.pathname);\n }\n /**\n * Get the file mime\n * There is no setter as the mime is not meant to be changed\n */\n get mime() {\n return this._data.mime;\n }\n /**\n * Get the file modification time\n */\n get mtime() {\n return this._data.mtime;\n }\n /**\n * Set the file modification time\n */\n set mtime(mtime) {\n this._data.mtime = mtime;\n }\n /**\n * Get the file creation time\n * There is no setter as the creation time is not meant to be changed\n */\n get crtime() {\n return this._data.crtime;\n }\n /**\n * Get the file size\n */\n get size() {\n return this._data.size;\n }\n /**\n * Set the file size\n */\n set size(size) {\n this.updateMtime();\n this._data.size = size;\n }\n /**\n * Get the file attribute\n * This contains all additional attributes not provided by the Node class\n */\n get attributes() {\n return this._attributes;\n }\n /**\n * Get the file permissions\n */\n get permissions() {\n if (this.owner === null && !this.isDavRessource) {\n return Permission.READ;\n }\n return this._data.permissions !== void 0 ? this._data.permissions : Permission.NONE;\n }\n /**\n * Set the file permissions\n */\n set permissions(permissions) {\n this.updateMtime();\n this._data.permissions = permissions;\n }\n /**\n * Get the file owner\n * There is no setter as the owner is not meant to be changed\n */\n get owner() {\n if (!this.isDavRessource) {\n return null;\n }\n return this._data.owner;\n }\n /**\n * Is this a dav-related ressource ?\n */\n get isDavRessource() {\n return isDavRessource(this.source, this._knownDavService);\n }\n /**\n * Get the dav root of this object\n * There is no setter as the root is not meant to be changed\n */\n get root() {\n if (this._data.root) {\n return this._data.root.replace(/^(.+)\\/$/, \"$1\");\n }\n if (this.isDavRessource) {\n const root = dirname(this.source);\n return root.split(this._knownDavService).pop() || null;\n }\n return null;\n }\n /**\n * Get the absolute path of this object relative to the root\n */\n get path() {\n if (this.root) {\n let source = this.source;\n if (this.isDavRessource) {\n source = source.split(this._knownDavService).pop();\n }\n const firstMatch = source.indexOf(this.root);\n const root = this.root.replace(/\\/$/, \"\");\n return source.slice(firstMatch + root.length) || \"/\";\n }\n return (this.dirname + \"/\" + this.basename).replace(/\\/\\//g, \"/\");\n }\n /**\n * Get the node id if defined.\n * There is no setter as the fileid is not meant to be changed\n */\n get fileid() {\n return this._data?.id;\n }\n /**\n * Get the node status.\n */\n get status() {\n return this._data?.status;\n }\n /**\n * Set the node status.\n */\n set status(status) {\n this._data.status = status;\n }\n /**\n * Move the node to a new destination\n *\n * @param {string} destination the new source.\n * e.g. https://cloud.domain.com/remote.php/dav/files/emma/Photos/picture.jpg\n */\n move(destination) {\n validateData({ ...this._data, source: destination }, this._knownDavService);\n const oldBasename = this.basename;\n this._data.source = destination;\n if (this.displayname === oldBasename && this.basename !== oldBasename) {\n this.displayname = this.basename;\n }\n this.updateMtime();\n }\n /**\n * Rename the node\n * This aliases the move method for easier usage\n *\n * @param basename The new name of the node\n */\n rename(basename2) {\n if (basename2.includes(\"/\")) {\n throw new Error(\"Invalid basename\");\n }\n this.move(dirname(this.source) + \"/\" + basename2);\n }\n /**\n * Update the mtime if exists\n */\n updateMtime() {\n if (this._data.mtime) {\n this._data.mtime = /* @__PURE__ */ new Date();\n }\n }\n /**\n * Update the attributes of the node\n * Warning, updating attributes will NOT automatically update the mtime.\n *\n * @param attributes The new attributes to update on the Node attributes\n */\n update(attributes) {\n for (const [name, value] of Object.entries(attributes)) {\n try {\n if (value === void 0) {\n delete this.attributes[name];\n } else {\n this.attributes[name] = value;\n }\n } catch (e) {\n if (e instanceof TypeError) {\n continue;\n }\n throw e;\n }\n }\n }\n}\nclass File extends Node {\n get type() {\n return FileType.File;\n }\n}\nclass Folder extends Node {\n constructor(data) {\n super({\n ...data,\n mime: \"httpd/unix-directory\"\n });\n }\n get type() {\n return FileType.Folder;\n }\n get extension() {\n return null;\n }\n get mime() {\n return \"httpd/unix-directory\";\n }\n}\nfunction davGetRootPath() {\n if (isPublicShare()) {\n return `/files/${getSharingToken()}`;\n }\n return `/files/${getCurrentUser()?.uid}`;\n}\nconst davRootPath = davGetRootPath();\nfunction davGetRemoteURL() {\n const url = generateRemoteUrl(\"dav\");\n if (isPublicShare()) {\n return url.replace(\"remote.php\", \"public.php\");\n }\n return url;\n}\nconst davRemoteURL = davGetRemoteURL();\nconst davGetClient = function(remoteURL = davRemoteURL, headers = {}) {\n const client = createClient(remoteURL, { headers });\n function setHeaders(token) {\n client.setHeaders({\n ...headers,\n // Add this so the server knows it is an request from the browser\n \"X-Requested-With\": \"XMLHttpRequest\",\n // Inject user auth\n requesttoken: token ?? \"\"\n });\n }\n onRequestTokenUpdate(setHeaders);\n setHeaders(getRequestToken());\n const patcher = getPatcher();\n patcher.patch(\"fetch\", (url, options) => {\n const headers2 = options.headers;\n if (headers2?.method) {\n options.method = headers2.method;\n delete headers2.method;\n }\n return fetch(url, options);\n });\n return client;\n};\nconst getFavoriteNodes = (davClient, path = \"/\", davRoot = davRootPath) => {\n const controller = new AbortController();\n return new CancelablePromise(async (resolve, reject, onCancel) => {\n onCancel(() => controller.abort());\n try {\n const contentsResponse = await davClient.getDirectoryContents(`${davRoot}${path}`, {\n signal: controller.signal,\n details: true,\n data: davGetFavoritesReport(),\n headers: {\n // see davGetClient for patched webdav client\n method: \"REPORT\"\n },\n includeSelf: true\n });\n const nodes = contentsResponse.data.filter((node) => node.filename !== path).map((result) => davResultToNode(result, davRoot));\n resolve(nodes);\n } catch (error) {\n reject(error);\n }\n });\n};\nconst davResultToNode = function(node, filesRoot = davRootPath, remoteURL = davRemoteURL) {\n let userId = getCurrentUser()?.uid;\n if (isPublicShare()) {\n userId = userId ?? \"anonymous\";\n } else if (!userId) {\n throw new Error(\"No user id found\");\n }\n const props = node.props;\n const permissions = davParsePermissions(props?.permissions);\n const owner = String(props?.[\"owner-id\"] || userId);\n const id = props.fileid || 0;\n const nodeData = {\n id,\n source: `${remoteURL}${node.filename}`,\n mtime: new Date(Date.parse(node.lastmod)),\n mime: node.mime || \"application/octet-stream\",\n // Manually cast to work around for https://github.com/perry-mitchell/webdav-client/pull/380\n displayname: props.displayname !== void 0 ? String(props.displayname) : void 0,\n size: props?.size || Number.parseInt(props.getcontentlength || \"0\"),\n // The fileid is set to -1 for failed requests\n status: id < 0 ? NodeStatus.FAILED : void 0,\n permissions,\n owner,\n root: filesRoot,\n attributes: {\n ...node,\n ...props,\n hasPreview: props?.[\"has-preview\"]\n }\n };\n delete nodeData.attributes?.props;\n return node.type === \"file\" ? new File(nodeData) : new Folder(nodeData);\n};\nvar InvalidFilenameErrorReason = /* @__PURE__ */ ((InvalidFilenameErrorReason2) => {\n InvalidFilenameErrorReason2[\"ReservedName\"] = \"reserved name\";\n InvalidFilenameErrorReason2[\"Character\"] = \"character\";\n InvalidFilenameErrorReason2[\"Extension\"] = \"extension\";\n return InvalidFilenameErrorReason2;\n})(InvalidFilenameErrorReason || {});\nclass InvalidFilenameError extends Error {\n constructor(options) {\n super(`Invalid ${options.reason} '${options.segment}' in filename '${options.filename}'`, { cause: options });\n }\n /**\n * The filename that was validated\n */\n get filename() {\n return this.cause.filename;\n }\n /**\n * Reason why the validation failed\n */\n get reason() {\n return this.cause.reason;\n }\n /**\n * Part of the filename that caused this error\n */\n get segment() {\n return this.cause.segment;\n }\n}\nfunction validateFilename(filename) {\n const capabilities = getCapabilities().files;\n const forbiddenCharacters = capabilities.forbidden_filename_characters ?? window._oc_config?.forbidden_filenames_characters ?? [\"/\", \"\\\\\"];\n for (const character of forbiddenCharacters) {\n if (filename.includes(character)) {\n throw new InvalidFilenameError({ segment: character, reason: \"character\", filename });\n }\n }\n filename = filename.toLocaleLowerCase();\n const forbiddenFilenames = capabilities.forbidden_filenames ?? [\".htaccess\"];\n if (forbiddenFilenames.includes(filename)) {\n throw new InvalidFilenameError({\n filename,\n segment: filename,\n reason: \"reserved name\"\n /* ReservedName */\n });\n }\n const endOfBasename = filename.indexOf(\".\", 1);\n const basename2 = filename.substring(0, endOfBasename === -1 ? void 0 : endOfBasename);\n const forbiddenFilenameBasenames = capabilities.forbidden_filename_basenames ?? [];\n if (forbiddenFilenameBasenames.includes(basename2)) {\n throw new InvalidFilenameError({\n filename,\n segment: basename2,\n reason: \"reserved name\"\n /* ReservedName */\n });\n }\n const forbiddenFilenameExtensions = capabilities.forbidden_filename_extensions ?? [\".part\", \".filepart\"];\n for (const extension of forbiddenFilenameExtensions) {\n if (filename.length > extension.length && filename.endsWith(extension)) {\n throw new InvalidFilenameError({ segment: extension, reason: \"extension\", filename });\n }\n }\n}\nfunction isFilenameValid(filename) {\n try {\n validateFilename(filename);\n return true;\n } catch (error) {\n if (error instanceof InvalidFilenameError) {\n return false;\n }\n throw error;\n }\n}\nfunction getUniqueName(name, otherNames, options) {\n const opts = {\n suffix: (n) => `(${n})`,\n ignoreFileExtension: false,\n ...options\n };\n let newName = name;\n let i = 1;\n while (otherNames.includes(newName)) {\n const ext = opts.ignoreFileExtension ? \"\" : extname(name);\n const base = basename(name, ext);\n newName = `${base} ${opts.suffix(i++)}${ext}`;\n }\n return newName;\n}\nconst humanList = [\"B\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\"];\nconst humanListBinary = [\"B\", \"KiB\", \"MiB\", \"GiB\", \"TiB\", \"PiB\"];\nfunction formatFileSize(size, skipSmallSizes = false, binaryPrefixes = false, base1000 = false) {\n binaryPrefixes = binaryPrefixes && !base1000;\n if (typeof size === \"string\") {\n size = Number(size);\n }\n let order = size > 0 ? Math.floor(Math.log(size) / Math.log(base1000 ? 1e3 : 1024)) : 0;\n order = Math.min((binaryPrefixes ? humanListBinary.length : humanList.length) - 1, order);\n const readableFormat = binaryPrefixes ? humanListBinary[order] : humanList[order];\n let relativeSize = (size / Math.pow(base1000 ? 1e3 : 1024, order)).toFixed(1);\n if (skipSmallSizes === true && order === 0) {\n return (relativeSize !== \"0.0\" ? \"< 1 \" : \"0 \") + (binaryPrefixes ? humanListBinary[1] : humanList[1]);\n }\n if (order < 2) {\n relativeSize = parseFloat(relativeSize).toFixed(0);\n } else {\n relativeSize = parseFloat(relativeSize).toLocaleString(getCanonicalLocale());\n }\n return relativeSize + \" \" + readableFormat;\n}\nfunction parseFileSize(value, forceBinary = false) {\n try {\n value = `${value}`.toLocaleLowerCase().replaceAll(/\\s+/g, \"\").replaceAll(\",\", \".\");\n } catch (e) {\n return null;\n }\n const match = value.match(/^([0-9]*(\\.[0-9]*)?)([kmgtp]?)(i?)b?$/);\n if (match === null || match[1] === \".\" || match[1] === \"\") {\n return null;\n }\n const bytesArray = {\n \"\": 0,\n k: 1,\n m: 2,\n g: 3,\n t: 4,\n p: 5,\n e: 6\n };\n const decimalString = `${match[1]}`;\n const base = match[4] === \"i\" || forceBinary ? 1024 : 1e3;\n return Math.round(Number.parseFloat(decimalString) * base ** bytesArray[match[3]]);\n}\nfunction stringify(value) {\n if (value instanceof Date) {\n return value.toISOString();\n }\n return String(value);\n}\nfunction orderBy(collection, identifiers2, orders) {\n identifiers2 = identifiers2 ?? [(value) => value];\n orders = orders ?? [];\n const sorting = identifiers2.map((_, index) => (orders[index] ?? \"asc\") === \"asc\" ? 1 : -1);\n const collator = Intl.Collator(\n [getLanguage(), getCanonicalLocale()],\n {\n // handle 10 as ten and not as one-zero\n numeric: true,\n usage: \"sort\"\n }\n );\n return [...collection].sort((a, b) => {\n for (const [index, identifier] of identifiers2.entries()) {\n const value = collator.compare(stringify(identifier(a)), stringify(identifier(b)));\n if (value !== 0) {\n return value * sorting[index];\n }\n }\n return 0;\n });\n}\nvar FilesSortingMode = /* @__PURE__ */ ((FilesSortingMode2) => {\n FilesSortingMode2[\"Name\"] = \"basename\";\n FilesSortingMode2[\"Modified\"] = \"mtime\";\n FilesSortingMode2[\"Size\"] = \"size\";\n return FilesSortingMode2;\n})(FilesSortingMode || {});\nfunction sortNodes(nodes, options = {}) {\n const sortingOptions = {\n // Default to sort by name\n sortingMode: \"basename\",\n // Default to sort ascending\n sortingOrder: \"asc\",\n ...options\n };\n const basename2 = (name) => name.lastIndexOf(\".\") > 0 ? name.slice(0, name.lastIndexOf(\".\")) : name;\n const identifiers2 = [\n // 1: Sort favorites first if enabled\n ...sortingOptions.sortFavoritesFirst ? [(v) => v.attributes?.favorite !== 1] : [],\n // 2: Sort folders first if sorting by name\n ...sortingOptions.sortFoldersFirst ? [(v) => v.type !== \"folder\"] : [],\n // 3: Use sorting mode if NOT basename (to be able to use display name too)\n ...sortingOptions.sortingMode !== \"basename\" ? [(v) => v[sortingOptions.sortingMode]] : [],\n // 4: Use display name if available, fallback to name\n (v) => basename2(v.attributes?.displayname || v.basename),\n // 5: Finally, use basename if all previous sorting methods failed\n (v) => v.basename\n ];\n const orders = [\n // (for 1): always sort favorites before normal files\n ...sortingOptions.sortFavoritesFirst ? [\"asc\"] : [],\n // (for 2): always sort folders before files\n ...sortingOptions.sortFoldersFirst ? [\"asc\"] : [],\n // (for 3): Reverse if sorting by mtime as mtime higher means edited more recent -> lower\n ...sortingOptions.sortingMode === \"mtime\" ? [sortingOptions.sortingOrder === \"asc\" ? \"desc\" : \"asc\"] : [],\n // (also for 3 so make sure not to conflict with 2 and 3)\n ...sortingOptions.sortingMode !== \"mtime\" && sortingOptions.sortingMode !== \"basename\" ? [sortingOptions.sortingOrder] : [],\n // for 4: use configured sorting direction\n sortingOptions.sortingOrder,\n // for 5: use configured sorting direction\n sortingOptions.sortingOrder\n ];\n return orderBy(nodes, identifiers2, orders);\n}\nclass Navigation extends TypedEventTarget {\n _views = [];\n _currentView = null;\n /**\n * Register a new view on the navigation\n * @param view The view to register\n * @throws `Error` is thrown if a view with the same id is already registered\n */\n register(view) {\n if (this._views.find((search) => search.id === view.id)) {\n throw new Error(`View id ${view.id} is already registered`);\n }\n this._views.push(view);\n this.dispatchTypedEvent(\"update\", new CustomEvent(\"update\"));\n }\n /**\n * Remove a registered view\n * @param id The id of the view to remove\n */\n remove(id) {\n const index = this._views.findIndex((view) => view.id === id);\n if (index !== -1) {\n this._views.splice(index, 1);\n this.dispatchTypedEvent(\"update\", new CustomEvent(\"update\"));\n }\n }\n /**\n * Set the currently active view\n * @fires UpdateActiveViewEvent\n * @param view New active view\n */\n setActive(view) {\n this._currentView = view;\n const event = new CustomEvent(\"updateActive\", { detail: view });\n this.dispatchTypedEvent(\"updateActive\", event);\n }\n /**\n * The currently active files view\n */\n get active() {\n return this._currentView;\n }\n /**\n * All registered views\n */\n get views() {\n return this._views;\n }\n}\nconst getNavigation = function() {\n if (typeof window._nc_navigation === \"undefined\") {\n window._nc_navigation = new Navigation();\n logger.debug(\"Navigation service initialized\");\n }\n return window._nc_navigation;\n};\nclass Column {\n _column;\n constructor(column) {\n isValidColumn(column);\n this._column = column;\n }\n get id() {\n return this._column.id;\n }\n get title() {\n return this._column.title;\n }\n get render() {\n return this._column.render;\n }\n get sort() {\n return this._column.sort;\n }\n get summary() {\n return this._column.summary;\n }\n}\nconst isValidColumn = function(column) {\n if (!column.id || typeof column.id !== \"string\") {\n throw new Error(\"A column id is required\");\n }\n if (!column.title || typeof column.title !== \"string\") {\n throw new Error(\"A column title is required\");\n }\n if (!column.render || typeof column.render !== \"function\") {\n throw new Error(\"A render function is required\");\n }\n if (column.sort && typeof column.sort !== \"function\") {\n throw new Error(\"Column sortFunction must be a function\");\n }\n if (column.summary && typeof column.summary !== \"function\") {\n throw new Error(\"Column summary must be a function\");\n }\n return true;\n};\nfunction getDefaultExportFromCjs(x) {\n return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, \"default\") ? x[\"default\"] : x;\n}\nvar validator$2 = {};\nvar util$3 = {};\n(function(exports) {\n const nameStartChar = \":A-Za-z_\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD\";\n const nameChar = nameStartChar + \"\\\\-.\\\\d\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040\";\n const nameRegexp = \"[\" + nameStartChar + \"][\" + nameChar + \"]*\";\n const regexName = new RegExp(\"^\" + nameRegexp + \"$\");\n const getAllMatches = function(string, regex) {\n const matches = [];\n let match = regex.exec(string);\n while (match) {\n const allmatches = [];\n allmatches.startIndex = regex.lastIndex - match[0].length;\n const len = match.length;\n for (let index = 0; index < len; index++) {\n allmatches.push(match[index]);\n }\n matches.push(allmatches);\n match = regex.exec(string);\n }\n return matches;\n };\n const isName = function(string) {\n const match = regexName.exec(string);\n return !(match === null || typeof match === \"undefined\");\n };\n exports.isExist = function(v) {\n return typeof v !== \"undefined\";\n };\n exports.isEmptyObject = function(obj) {\n return Object.keys(obj).length === 0;\n };\n exports.merge = function(target, a, arrayMode) {\n if (a) {\n const keys = Object.keys(a);\n const len = keys.length;\n for (let i = 0; i < len; i++) {\n if (arrayMode === \"strict\") {\n target[keys[i]] = [a[keys[i]]];\n } else {\n target[keys[i]] = a[keys[i]];\n }\n }\n }\n };\n exports.getValue = function(v) {\n if (exports.isExist(v)) {\n return v;\n } else {\n return \"\";\n }\n };\n exports.isName = isName;\n exports.getAllMatches = getAllMatches;\n exports.nameRegexp = nameRegexp;\n})(util$3);\nconst util$2 = util$3;\nconst defaultOptions$2 = {\n allowBooleanAttributes: false,\n //A tag can have attributes without any value\n unpairedTags: []\n};\nvalidator$2.validate = function(xmlData, options) {\n options = Object.assign({}, defaultOptions$2, options);\n const tags = [];\n let tagFound = false;\n let reachedRoot = false;\n if (xmlData[0] === \"\\uFEFF\") {\n xmlData = xmlData.substr(1);\n }\n for (let i = 0; i < xmlData.length; i++) {\n if (xmlData[i] === \"<\" && xmlData[i + 1] === \"?\") {\n i += 2;\n i = readPI(xmlData, i);\n if (i.err) return i;\n } else if (xmlData[i] === \"<\") {\n let tagStartPos = i;\n i++;\n if (xmlData[i] === \"!\") {\n i = readCommentAndCDATA(xmlData, i);\n continue;\n } else {\n let closingTag = false;\n if (xmlData[i] === \"/\") {\n closingTag = true;\n i++;\n }\n let tagName = \"\";\n for (; i < xmlData.length && xmlData[i] !== \">\" && xmlData[i] !== \" \" && xmlData[i] !== \"\t\" && xmlData[i] !== \"\\n\" && xmlData[i] !== \"\\r\"; i++) {\n tagName += xmlData[i];\n }\n tagName = tagName.trim();\n if (tagName[tagName.length - 1] === \"/\") {\n tagName = tagName.substring(0, tagName.length - 1);\n i--;\n }\n if (!validateTagName(tagName)) {\n let msg;\n if (tagName.trim().length === 0) {\n msg = \"Invalid space after '<'.\";\n } else {\n msg = \"Tag '\" + tagName + \"' is an invalid name.\";\n }\n return getErrorObject(\"InvalidTag\", msg, getLineNumberForPosition(xmlData, i));\n }\n const result = readAttributeStr(xmlData, i);\n if (result === false) {\n return getErrorObject(\"InvalidAttr\", \"Attributes for '\" + tagName + \"' have open quote.\", getLineNumberForPosition(xmlData, i));\n }\n let attrStr = result.value;\n i = result.index;\n if (attrStr[attrStr.length - 1] === \"/\") {\n const attrStrStart = i - attrStr.length;\n attrStr = attrStr.substring(0, attrStr.length - 1);\n const isValid = validateAttributeString(attrStr, options);\n if (isValid === true) {\n tagFound = true;\n } else {\n return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, attrStrStart + isValid.err.line));\n }\n } else if (closingTag) {\n if (!result.tagClosed) {\n return getErrorObject(\"InvalidTag\", \"Closing tag '\" + tagName + \"' doesn't have proper closing.\", getLineNumberForPosition(xmlData, i));\n } else if (attrStr.trim().length > 0) {\n return getErrorObject(\"InvalidTag\", \"Closing tag '\" + tagName + \"' can't have attributes or invalid starting.\", getLineNumberForPosition(xmlData, tagStartPos));\n } else if (tags.length === 0) {\n return getErrorObject(\"InvalidTag\", \"Closing tag '\" + tagName + \"' has not been opened.\", getLineNumberForPosition(xmlData, tagStartPos));\n } else {\n const otg = tags.pop();\n if (tagName !== otg.tagName) {\n let openPos = getLineNumberForPosition(xmlData, otg.tagStartPos);\n return getErrorObject(\n \"InvalidTag\",\n \"Expected closing tag '\" + otg.tagName + \"' (opened in line \" + openPos.line + \", col \" + openPos.col + \") instead of closing tag '\" + tagName + \"'.\",\n getLineNumberForPosition(xmlData, tagStartPos)\n );\n }\n if (tags.length == 0) {\n reachedRoot = true;\n }\n }\n } else {\n const isValid = validateAttributeString(attrStr, options);\n if (isValid !== true) {\n return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, i - attrStr.length + isValid.err.line));\n }\n if (reachedRoot === true) {\n return getErrorObject(\"InvalidXml\", \"Multiple possible root nodes found.\", getLineNumberForPosition(xmlData, i));\n } else if (options.unpairedTags.indexOf(tagName) !== -1) ;\n else {\n tags.push({ tagName, tagStartPos });\n }\n tagFound = true;\n }\n for (i++; i < xmlData.length; i++) {\n if (xmlData[i] === \"<\") {\n if (xmlData[i + 1] === \"!\") {\n i++;\n i = readCommentAndCDATA(xmlData, i);\n continue;\n } else if (xmlData[i + 1] === \"?\") {\n i = readPI(xmlData, ++i);\n if (i.err) return i;\n } else {\n break;\n }\n } else if (xmlData[i] === \"&\") {\n const afterAmp = validateAmpersand(xmlData, i);\n if (afterAmp == -1)\n return getErrorObject(\"InvalidChar\", \"char '&' is not expected.\", getLineNumberForPosition(xmlData, i));\n i = afterAmp;\n } else {\n if (reachedRoot === true && !isWhiteSpace(xmlData[i])) {\n return getErrorObject(\"InvalidXml\", \"Extra text at the end\", getLineNumberForPosition(xmlData, i));\n }\n }\n }\n if (xmlData[i] === \"<\") {\n i--;\n }\n }\n } else {\n if (isWhiteSpace(xmlData[i])) {\n continue;\n }\n return getErrorObject(\"InvalidChar\", \"char '\" + xmlData[i] + \"' is not expected.\", getLineNumberForPosition(xmlData, i));\n }\n }\n if (!tagFound) {\n return getErrorObject(\"InvalidXml\", \"Start tag expected.\", 1);\n } else if (tags.length == 1) {\n return getErrorObject(\"InvalidTag\", \"Unclosed tag '\" + tags[0].tagName + \"'.\", getLineNumberForPosition(xmlData, tags[0].tagStartPos));\n } else if (tags.length > 0) {\n return getErrorObject(\"InvalidXml\", \"Invalid '\" + JSON.stringify(tags.map((t2) => t2.tagName), null, 4).replace(/\\r?\\n/g, \"\") + \"' found.\", { line: 1, col: 1 });\n }\n return true;\n};\nfunction isWhiteSpace(char) {\n return char === \" \" || char === \"\t\" || char === \"\\n\" || char === \"\\r\";\n}\nfunction readPI(xmlData, i) {\n const start = i;\n for (; i < xmlData.length; i++) {\n if (xmlData[i] == \"?\" || xmlData[i] == \" \") {\n const tagname = xmlData.substr(start, i - start);\n if (i > 5 && tagname === \"xml\") {\n return getErrorObject(\"InvalidXml\", \"XML declaration allowed only at the start of the document.\", getLineNumberForPosition(xmlData, i));\n } else if (xmlData[i] == \"?\" && xmlData[i + 1] == \">\") {\n i++;\n break;\n } else {\n continue;\n }\n }\n }\n return i;\n}\nfunction readCommentAndCDATA(xmlData, i) {\n if (xmlData.length > i + 5 && xmlData[i + 1] === \"-\" && xmlData[i + 2] === \"-\") {\n for (i += 3; i < xmlData.length; i++) {\n if (xmlData[i] === \"-\" && xmlData[i + 1] === \"-\" && xmlData[i + 2] === \">\") {\n i += 2;\n break;\n }\n }\n } else if (xmlData.length > i + 8 && xmlData[i + 1] === \"D\" && xmlData[i + 2] === \"O\" && xmlData[i + 3] === \"C\" && xmlData[i + 4] === \"T\" && xmlData[i + 5] === \"Y\" && xmlData[i + 6] === \"P\" && xmlData[i + 7] === \"E\") {\n let angleBracketsCount = 1;\n for (i += 8; i < xmlData.length; i++) {\n if (xmlData[i] === \"<\") {\n angleBracketsCount++;\n } else if (xmlData[i] === \">\") {\n angleBracketsCount--;\n if (angleBracketsCount === 0) {\n break;\n }\n }\n }\n } else if (xmlData.length > i + 9 && xmlData[i + 1] === \"[\" && xmlData[i + 2] === \"C\" && xmlData[i + 3] === \"D\" && xmlData[i + 4] === \"A\" && xmlData[i + 5] === \"T\" && xmlData[i + 6] === \"A\" && xmlData[i + 7] === \"[\") {\n for (i += 8; i < xmlData.length; i++) {\n if (xmlData[i] === \"]\" && xmlData[i + 1] === \"]\" && xmlData[i + 2] === \">\") {\n i += 2;\n break;\n }\n }\n }\n return i;\n}\nconst doubleQuote = '\"';\nconst singleQuote = \"'\";\nfunction readAttributeStr(xmlData, i) {\n let attrStr = \"\";\n let startChar = \"\";\n let tagClosed = false;\n for (; i < xmlData.length; i++) {\n if (xmlData[i] === doubleQuote || xmlData[i] === singleQuote) {\n if (startChar === \"\") {\n startChar = xmlData[i];\n } else if (startChar !== xmlData[i]) ;\n else {\n startChar = \"\";\n }\n } else if (xmlData[i] === \">\") {\n if (startChar === \"\") {\n tagClosed = true;\n break;\n }\n }\n attrStr += xmlData[i];\n }\n if (startChar !== \"\") {\n return false;\n }\n return {\n value: attrStr,\n index: i,\n tagClosed\n };\n}\nconst validAttrStrRegxp = new RegExp(`(\\\\s*)([^\\\\s=]+)(\\\\s*=)?(\\\\s*(['\"])(([\\\\s\\\\S])*?)\\\\5)?`, \"g\");\nfunction validateAttributeString(attrStr, options) {\n const matches = util$2.getAllMatches(attrStr, validAttrStrRegxp);\n const attrNames = {};\n for (let i = 0; i < matches.length; i++) {\n if (matches[i][1].length === 0) {\n return getErrorObject(\"InvalidAttr\", \"Attribute '\" + matches[i][2] + \"' has no space in starting.\", getPositionFromMatch(matches[i]));\n } else if (matches[i][3] !== void 0 && matches[i][4] === void 0) {\n return getErrorObject(\"InvalidAttr\", \"Attribute '\" + matches[i][2] + \"' is without value.\", getPositionFromMatch(matches[i]));\n } else if (matches[i][3] === void 0 && !options.allowBooleanAttributes) {\n return getErrorObject(\"InvalidAttr\", \"boolean attribute '\" + matches[i][2] + \"' is not allowed.\", getPositionFromMatch(matches[i]));\n }\n const attrName = matches[i][2];\n if (!validateAttrName(attrName)) {\n return getErrorObject(\"InvalidAttr\", \"Attribute '\" + attrName + \"' is an invalid name.\", getPositionFromMatch(matches[i]));\n }\n if (!attrNames.hasOwnProperty(attrName)) {\n attrNames[attrName] = 1;\n } else {\n return getErrorObject(\"InvalidAttr\", \"Attribute '\" + attrName + \"' is repeated.\", getPositionFromMatch(matches[i]));\n }\n }\n return true;\n}\nfunction validateNumberAmpersand(xmlData, i) {\n let re2 = /\\d/;\n if (xmlData[i] === \"x\") {\n i++;\n re2 = /[\\da-fA-F]/;\n }\n for (; i < xmlData.length; i++) {\n if (xmlData[i] === \";\")\n return i;\n if (!xmlData[i].match(re2))\n break;\n }\n return -1;\n}\nfunction validateAmpersand(xmlData, i) {\n i++;\n if (xmlData[i] === \";\")\n return -1;\n if (xmlData[i] === \"#\") {\n i++;\n return validateNumberAmpersand(xmlData, i);\n }\n let count = 0;\n for (; i < xmlData.length; i++, count++) {\n if (xmlData[i].match(/\\w/) && count < 20)\n continue;\n if (xmlData[i] === \";\")\n break;\n return -1;\n }\n return i;\n}\nfunction getErrorObject(code, message, lineNumber) {\n return {\n err: {\n code,\n msg: message,\n line: lineNumber.line || lineNumber,\n col: lineNumber.col\n }\n };\n}\nfunction validateAttrName(attrName) {\n return util$2.isName(attrName);\n}\nfunction validateTagName(tagname) {\n return util$2.isName(tagname);\n}\nfunction getLineNumberForPosition(xmlData, index) {\n const lines = xmlData.substring(0, index).split(/\\r?\\n/);\n return {\n line: lines.length,\n // column number is last line's length + 1, because column numbering starts at 1:\n col: lines[lines.length - 1].length + 1\n };\n}\nfunction getPositionFromMatch(match) {\n return match.startIndex + match[1].length;\n}\nvar OptionsBuilder = {};\nconst defaultOptions$1 = {\n preserveOrder: false,\n attributeNamePrefix: \"@_\",\n attributesGroupName: false,\n textNodeName: \"#text\",\n ignoreAttributes: true,\n removeNSPrefix: false,\n // remove NS from tag name or attribute name if true\n allowBooleanAttributes: false,\n //a tag can have attributes without any value\n //ignoreRootElement : false,\n parseTagValue: true,\n parseAttributeValue: false,\n trimValues: true,\n //Trim string values of tag and attributes\n cdataPropName: false,\n numberParseOptions: {\n hex: true,\n leadingZeros: true,\n eNotation: true\n },\n tagValueProcessor: function(tagName, val2) {\n return val2;\n },\n attributeValueProcessor: function(attrName, val2) {\n return val2;\n },\n stopNodes: [],\n //nested tags will not be parsed even for errors\n alwaysCreateTextNode: false,\n isArray: () => false,\n commentPropName: false,\n unpairedTags: [],\n processEntities: true,\n htmlEntities: false,\n ignoreDeclaration: false,\n ignorePiTags: false,\n transformTagName: false,\n transformAttributeName: false,\n updateTag: function(tagName, jPath, attrs) {\n return tagName;\n }\n // skipEmptyListItem: false\n};\nconst buildOptions$1 = function(options) {\n return Object.assign({}, defaultOptions$1, options);\n};\nOptionsBuilder.buildOptions = buildOptions$1;\nOptionsBuilder.defaultOptions = defaultOptions$1;\nclass XmlNode {\n constructor(tagname) {\n this.tagname = tagname;\n this.child = [];\n this[\":@\"] = {};\n }\n add(key, val2) {\n if (key === \"__proto__\") key = \"#__proto__\";\n this.child.push({ [key]: val2 });\n }\n addChild(node) {\n if (node.tagname === \"__proto__\") node.tagname = \"#__proto__\";\n if (node[\":@\"] && Object.keys(node[\":@\"]).length > 0) {\n this.child.push({ [node.tagname]: node.child, [\":@\"]: node[\":@\"] });\n } else {\n this.child.push({ [node.tagname]: node.child });\n }\n }\n}\nvar xmlNode$1 = XmlNode;\nconst util$1 = util$3;\nfunction readDocType$1(xmlData, i) {\n const entities = {};\n if (xmlData[i + 3] === \"O\" && xmlData[i + 4] === \"C\" && xmlData[i + 5] === \"T\" && xmlData[i + 6] === \"Y\" && xmlData[i + 7] === \"P\" && xmlData[i + 8] === \"E\") {\n i = i + 9;\n let angleBracketsCount = 1;\n let hasBody = false, comment = false;\n let exp = \"\";\n for (; i < xmlData.length; i++) {\n if (xmlData[i] === \"<\" && !comment) {\n if (hasBody && isEntity(xmlData, i)) {\n i += 7;\n [entityName, val, i] = readEntityExp(xmlData, i + 1);\n if (val.indexOf(\"&\") === -1)\n entities[validateEntityName(entityName)] = {\n regx: RegExp(`&${entityName};`, \"g\"),\n val\n };\n } else if (hasBody && isElement(xmlData, i)) i += 8;\n else if (hasBody && isAttlist(xmlData, i)) i += 8;\n else if (hasBody && isNotation(xmlData, i)) i += 9;\n else if (isComment) comment = true;\n else throw new Error(\"Invalid DOCTYPE\");\n angleBracketsCount++;\n exp = \"\";\n } else if (xmlData[i] === \">\") {\n if (comment) {\n if (xmlData[i - 1] === \"-\" && xmlData[i - 2] === \"-\") {\n comment = false;\n angleBracketsCount--;\n }\n } else {\n angleBracketsCount--;\n }\n if (angleBracketsCount === 0) {\n break;\n }\n } else if (xmlData[i] === \"[\") {\n hasBody = true;\n } else {\n exp += xmlData[i];\n }\n }\n if (angleBracketsCount !== 0) {\n throw new Error(`Unclosed DOCTYPE`);\n }\n } else {\n throw new Error(`Invalid Tag instead of DOCTYPE`);\n }\n return { entities, i };\n}\nfunction readEntityExp(xmlData, i) {\n let entityName2 = \"\";\n for (; i < xmlData.length && (xmlData[i] !== \"'\" && xmlData[i] !== '\"'); i++) {\n entityName2 += xmlData[i];\n }\n entityName2 = entityName2.trim();\n if (entityName2.indexOf(\" \") !== -1) throw new Error(\"External entites are not supported\");\n const startChar = xmlData[i++];\n let val2 = \"\";\n for (; i < xmlData.length && xmlData[i] !== startChar; i++) {\n val2 += xmlData[i];\n }\n return [entityName2, val2, i];\n}\nfunction isComment(xmlData, i) {\n if (xmlData[i + 1] === \"!\" && xmlData[i + 2] === \"-\" && xmlData[i + 3] === \"-\") return true;\n return false;\n}\nfunction isEntity(xmlData, i) {\n if (xmlData[i + 1] === \"!\" && xmlData[i + 2] === \"E\" && xmlData[i + 3] === \"N\" && xmlData[i + 4] === \"T\" && xmlData[i + 5] === \"I\" && xmlData[i + 6] === \"T\" && xmlData[i + 7] === \"Y\") return true;\n return false;\n}\nfunction isElement(xmlData, i) {\n if (xmlData[i + 1] === \"!\" && xmlData[i + 2] === \"E\" && xmlData[i + 3] === \"L\" && xmlData[i + 4] === \"E\" && xmlData[i + 5] === \"M\" && xmlData[i + 6] === \"E\" && xmlData[i + 7] === \"N\" && xmlData[i + 8] === \"T\") return true;\n return false;\n}\nfunction isAttlist(xmlData, i) {\n if (xmlData[i + 1] === \"!\" && xmlData[i + 2] === \"A\" && xmlData[i + 3] === \"T\" && xmlData[i + 4] === \"T\" && xmlData[i + 5] === \"L\" && xmlData[i + 6] === \"I\" && xmlData[i + 7] === \"S\" && xmlData[i + 8] === \"T\") return true;\n return false;\n}\nfunction isNotation(xmlData, i) {\n if (xmlData[i + 1] === \"!\" && xmlData[i + 2] === \"N\" && xmlData[i + 3] === \"O\" && xmlData[i + 4] === \"T\" && xmlData[i + 5] === \"A\" && xmlData[i + 6] === \"T\" && xmlData[i + 7] === \"I\" && xmlData[i + 8] === \"O\" && xmlData[i + 9] === \"N\") return true;\n return false;\n}\nfunction validateEntityName(name) {\n if (util$1.isName(name))\n return name;\n else\n throw new Error(`Invalid entity name ${name}`);\n}\nvar DocTypeReader = readDocType$1;\nconst hexRegex = /^[-+]?0x[a-fA-F0-9]+$/;\nconst numRegex = /^([\\-\\+])?(0*)(\\.[0-9]+([eE]\\-?[0-9]+)?|[0-9]+(\\.[0-9]+([eE]\\-?[0-9]+)?)?)$/;\nif (!Number.parseInt && window.parseInt) {\n Number.parseInt = window.parseInt;\n}\nif (!Number.parseFloat && window.parseFloat) {\n Number.parseFloat = window.parseFloat;\n}\nconst consider = {\n hex: true,\n leadingZeros: true,\n decimalPoint: \".\",\n eNotation: true\n //skipLike: /regex/\n};\nfunction toNumber$1(str, options = {}) {\n options = Object.assign({}, consider, options);\n if (!str || typeof str !== \"string\") return str;\n let trimmedStr = str.trim();\n if (options.skipLike !== void 0 && options.skipLike.test(trimmedStr)) return str;\n else if (options.hex && hexRegex.test(trimmedStr)) {\n return Number.parseInt(trimmedStr, 16);\n } else {\n const match = numRegex.exec(trimmedStr);\n if (match) {\n const sign = match[1];\n const leadingZeros = match[2];\n let numTrimmedByZeros = trimZeros(match[3]);\n const eNotation = match[4] || match[6];\n if (!options.leadingZeros && leadingZeros.length > 0 && sign && trimmedStr[2] !== \".\") return str;\n else if (!options.leadingZeros && leadingZeros.length > 0 && !sign && trimmedStr[1] !== \".\") return str;\n else {\n const num = Number(trimmedStr);\n const numStr = \"\" + num;\n if (numStr.search(/[eE]/) !== -1) {\n if (options.eNotation) return num;\n else return str;\n } else if (eNotation) {\n if (options.eNotation) return num;\n else return str;\n } else if (trimmedStr.indexOf(\".\") !== -1) {\n if (numStr === \"0\" && numTrimmedByZeros === \"\") return num;\n else if (numStr === numTrimmedByZeros) return num;\n else if (sign && numStr === \"-\" + numTrimmedByZeros) return num;\n else return str;\n }\n if (leadingZeros) {\n if (numTrimmedByZeros === numStr) return num;\n else if (sign + numTrimmedByZeros === numStr) return num;\n else return str;\n }\n if (trimmedStr === numStr) return num;\n else if (trimmedStr === sign + numStr) return num;\n return str;\n }\n } else {\n return str;\n }\n }\n}\nfunction trimZeros(numStr) {\n if (numStr && numStr.indexOf(\".\") !== -1) {\n numStr = numStr.replace(/0+$/, \"\");\n if (numStr === \".\") numStr = \"0\";\n else if (numStr[0] === \".\") numStr = \"0\" + numStr;\n else if (numStr[numStr.length - 1] === \".\") numStr = numStr.substr(0, numStr.length - 1);\n return numStr;\n }\n return numStr;\n}\nvar strnum = toNumber$1;\nconst util = util$3;\nconst xmlNode = xmlNode$1;\nconst readDocType = DocTypeReader;\nconst toNumber = strnum;\nlet OrderedObjParser$1 = class OrderedObjParser {\n constructor(options) {\n this.options = options;\n this.currentNode = null;\n this.tagsNodeStack = [];\n this.docTypeEntities = {};\n this.lastEntities = {\n \"apos\": { regex: /&(apos|#39|#x27);/g, val: \"'\" },\n \"gt\": { regex: /&(gt|#62|#x3E);/g, val: \">\" },\n \"lt\": { regex: /&(lt|#60|#x3C);/g, val: \"<\" },\n \"quot\": { regex: /&(quot|#34|#x22);/g, val: '\"' }\n };\n this.ampEntity = { regex: /&(amp|#38|#x26);/g, val: \"&\" };\n this.htmlEntities = {\n \"space\": { regex: /&(nbsp|#160);/g, val: \" \" },\n // \"lt\" : { regex: /&(lt|#60);/g, val: \"<\" },\n // \"gt\" : { regex: /&(gt|#62);/g, val: \">\" },\n // \"amp\" : { regex: /&(amp|#38);/g, val: \"&\" },\n // \"quot\" : { regex: /&(quot|#34);/g, val: \"\\\"\" },\n // \"apos\" : { regex: /&(apos|#39);/g, val: \"'\" },\n \"cent\": { regex: /&(cent|#162);/g, val: \"¢\" },\n \"pound\": { regex: /&(pound|#163);/g, val: \"£\" },\n \"yen\": { regex: /&(yen|#165);/g, val: \"¥\" },\n \"euro\": { regex: /&(euro|#8364);/g, val: \"€\" },\n \"copyright\": { regex: /&(copy|#169);/g, val: \"©\" },\n \"reg\": { regex: /&(reg|#174);/g, val: \"®\" },\n \"inr\": { regex: /&(inr|#8377);/g, val: \"₹\" },\n \"num_dec\": { regex: /&#([0-9]{1,7});/g, val: (_, str) => String.fromCharCode(Number.parseInt(str, 10)) },\n \"num_hex\": { regex: /&#x([0-9a-fA-F]{1,6});/g, val: (_, str) => String.fromCharCode(Number.parseInt(str, 16)) }\n };\n this.addExternalEntities = addExternalEntities;\n this.parseXml = parseXml;\n this.parseTextData = parseTextData;\n this.resolveNameSpace = resolveNameSpace;\n this.buildAttributesMap = buildAttributesMap;\n this.isItStopNode = isItStopNode;\n this.replaceEntitiesValue = replaceEntitiesValue$1;\n this.readStopNodeData = readStopNodeData;\n this.saveTextToParentTag = saveTextToParentTag;\n this.addChild = addChild;\n }\n};\nfunction addExternalEntities(externalEntities) {\n const entKeys = Object.keys(externalEntities);\n for (let i = 0; i < entKeys.length; i++) {\n const ent = entKeys[i];\n this.lastEntities[ent] = {\n regex: new RegExp(\"&\" + ent + \";\", \"g\"),\n val: externalEntities[ent]\n };\n }\n}\nfunction parseTextData(val2, tagName, jPath, dontTrim, hasAttributes, isLeafNode, escapeEntities) {\n if (val2 !== void 0) {\n if (this.options.trimValues && !dontTrim) {\n val2 = val2.trim();\n }\n if (val2.length > 0) {\n if (!escapeEntities) val2 = this.replaceEntitiesValue(val2);\n const newval = this.options.tagValueProcessor(tagName, val2, jPath, hasAttributes, isLeafNode);\n if (newval === null || newval === void 0) {\n return val2;\n } else if (typeof newval !== typeof val2 || newval !== val2) {\n return newval;\n } else if (this.options.trimValues) {\n return parseValue(val2, this.options.parseTagValue, this.options.numberParseOptions);\n } else {\n const trimmedVal = val2.trim();\n if (trimmedVal === val2) {\n return parseValue(val2, this.options.parseTagValue, this.options.numberParseOptions);\n } else {\n return val2;\n }\n }\n }\n }\n}\nfunction resolveNameSpace(tagname) {\n if (this.options.removeNSPrefix) {\n const tags = tagname.split(\":\");\n const prefix = tagname.charAt(0) === \"/\" ? \"/\" : \"\";\n if (tags[0] === \"xmlns\") {\n return \"\";\n }\n if (tags.length === 2) {\n tagname = prefix + tags[1];\n }\n }\n return tagname;\n}\nconst attrsRegx = new RegExp(`([^\\\\s=]+)\\\\s*(=\\\\s*(['\"])([\\\\s\\\\S]*?)\\\\3)?`, \"gm\");\nfunction buildAttributesMap(attrStr, jPath, tagName) {\n if (!this.options.ignoreAttributes && typeof attrStr === \"string\") {\n const matches = util.getAllMatches(attrStr, attrsRegx);\n const len = matches.length;\n const attrs = {};\n for (let i = 0; i < len; i++) {\n const attrName = this.resolveNameSpace(matches[i][1]);\n let oldVal = matches[i][4];\n let aName = this.options.attributeNamePrefix + attrName;\n if (attrName.length) {\n if (this.options.transformAttributeName) {\n aName = this.options.transformAttributeName(aName);\n }\n if (aName === \"__proto__\") aName = \"#__proto__\";\n if (oldVal !== void 0) {\n if (this.options.trimValues) {\n oldVal = oldVal.trim();\n }\n oldVal = this.replaceEntitiesValue(oldVal);\n const newVal = this.options.attributeValueProcessor(attrName, oldVal, jPath);\n if (newVal === null || newVal === void 0) {\n attrs[aName] = oldVal;\n } else if (typeof newVal !== typeof oldVal || newVal !== oldVal) {\n attrs[aName] = newVal;\n } else {\n attrs[aName] = parseValue(\n oldVal,\n this.options.parseAttributeValue,\n this.options.numberParseOptions\n );\n }\n } else if (this.options.allowBooleanAttributes) {\n attrs[aName] = true;\n }\n }\n }\n if (!Object.keys(attrs).length) {\n return;\n }\n if (this.options.attributesGroupName) {\n const attrCollection = {};\n attrCollection[this.options.attributesGroupName] = attrs;\n return attrCollection;\n }\n return attrs;\n }\n}\nconst parseXml = function(xmlData) {\n xmlData = xmlData.replace(/\\r\\n?/g, \"\\n\");\n const xmlObj = new xmlNode(\"!xml\");\n let currentNode = xmlObj;\n let textData = \"\";\n let jPath = \"\";\n for (let i = 0; i < xmlData.length; i++) {\n const ch = xmlData[i];\n if (ch === \"<\") {\n if (xmlData[i + 1] === \"/\") {\n const closeIndex = findClosingIndex(xmlData, \">\", i, \"Closing Tag is not closed.\");\n let tagName = xmlData.substring(i + 2, closeIndex).trim();\n if (this.options.removeNSPrefix) {\n const colonIndex = tagName.indexOf(\":\");\n if (colonIndex !== -1) {\n tagName = tagName.substr(colonIndex + 1);\n }\n }\n if (this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n if (currentNode) {\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n }\n const lastTagName = jPath.substring(jPath.lastIndexOf(\".\") + 1);\n if (tagName && this.options.unpairedTags.indexOf(tagName) !== -1) {\n throw new Error(`Unpaired tag can not be used as closing tag: `);\n }\n let propIndex = 0;\n if (lastTagName && this.options.unpairedTags.indexOf(lastTagName) !== -1) {\n propIndex = jPath.lastIndexOf(\".\", jPath.lastIndexOf(\".\") - 1);\n this.tagsNodeStack.pop();\n } else {\n propIndex = jPath.lastIndexOf(\".\");\n }\n jPath = jPath.substring(0, propIndex);\n currentNode = this.tagsNodeStack.pop();\n textData = \"\";\n i = closeIndex;\n } else if (xmlData[i + 1] === \"?\") {\n let tagData = readTagExp(xmlData, i, false, \"?>\");\n if (!tagData) throw new Error(\"Pi Tag is not closed.\");\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n if (this.options.ignoreDeclaration && tagData.tagName === \"?xml\" || this.options.ignorePiTags) ;\n else {\n const childNode = new xmlNode(tagData.tagName);\n childNode.add(this.options.textNodeName, \"\");\n if (tagData.tagName !== tagData.tagExp && tagData.attrExpPresent) {\n childNode[\":@\"] = this.buildAttributesMap(tagData.tagExp, jPath, tagData.tagName);\n }\n this.addChild(currentNode, childNode, jPath);\n }\n i = tagData.closeIndex + 1;\n } else if (xmlData.substr(i + 1, 3) === \"!--\") {\n const endIndex = findClosingIndex(xmlData, \"-->\", i + 4, \"Comment is not closed.\");\n if (this.options.commentPropName) {\n const comment = xmlData.substring(i + 4, endIndex - 2);\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n currentNode.add(this.options.commentPropName, [{ [this.options.textNodeName]: comment }]);\n }\n i = endIndex;\n } else if (xmlData.substr(i + 1, 2) === \"!D\") {\n const result = readDocType(xmlData, i);\n this.docTypeEntities = result.entities;\n i = result.i;\n } else if (xmlData.substr(i + 1, 2) === \"![\") {\n const closeIndex = findClosingIndex(xmlData, \"]]>\", i, \"CDATA is not closed.\") - 2;\n const tagExp = xmlData.substring(i + 9, closeIndex);\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n let val2 = this.parseTextData(tagExp, currentNode.tagname, jPath, true, false, true, true);\n if (val2 == void 0) val2 = \"\";\n if (this.options.cdataPropName) {\n currentNode.add(this.options.cdataPropName, [{ [this.options.textNodeName]: tagExp }]);\n } else {\n currentNode.add(this.options.textNodeName, val2);\n }\n i = closeIndex + 2;\n } else {\n let result = readTagExp(xmlData, i, this.options.removeNSPrefix);\n let tagName = result.tagName;\n const rawTagName = result.rawTagName;\n let tagExp = result.tagExp;\n let attrExpPresent = result.attrExpPresent;\n let closeIndex = result.closeIndex;\n if (this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n if (currentNode && textData) {\n if (currentNode.tagname !== \"!xml\") {\n textData = this.saveTextToParentTag(textData, currentNode, jPath, false);\n }\n }\n const lastTag = currentNode;\n if (lastTag && this.options.unpairedTags.indexOf(lastTag.tagname) !== -1) {\n currentNode = this.tagsNodeStack.pop();\n jPath = jPath.substring(0, jPath.lastIndexOf(\".\"));\n }\n if (tagName !== xmlObj.tagname) {\n jPath += jPath ? \".\" + tagName : tagName;\n }\n if (this.isItStopNode(this.options.stopNodes, jPath, tagName)) {\n let tagContent = \"\";\n if (tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1) {\n if (tagName[tagName.length - 1] === \"/\") {\n tagName = tagName.substr(0, tagName.length - 1);\n jPath = jPath.substr(0, jPath.length - 1);\n tagExp = tagName;\n } else {\n tagExp = tagExp.substr(0, tagExp.length - 1);\n }\n i = result.closeIndex;\n } else if (this.options.unpairedTags.indexOf(tagName) !== -1) {\n i = result.closeIndex;\n } else {\n const result2 = this.readStopNodeData(xmlData, rawTagName, closeIndex + 1);\n if (!result2) throw new Error(`Unexpected end of ${rawTagName}`);\n i = result2.i;\n tagContent = result2.tagContent;\n }\n const childNode = new xmlNode(tagName);\n if (tagName !== tagExp && attrExpPresent) {\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n if (tagContent) {\n tagContent = this.parseTextData(tagContent, tagName, jPath, true, attrExpPresent, true, true);\n }\n jPath = jPath.substr(0, jPath.lastIndexOf(\".\"));\n childNode.add(this.options.textNodeName, tagContent);\n this.addChild(currentNode, childNode, jPath);\n } else {\n if (tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1) {\n if (tagName[tagName.length - 1] === \"/\") {\n tagName = tagName.substr(0, tagName.length - 1);\n jPath = jPath.substr(0, jPath.length - 1);\n tagExp = tagName;\n } else {\n tagExp = tagExp.substr(0, tagExp.length - 1);\n }\n if (this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n const childNode = new xmlNode(tagName);\n if (tagName !== tagExp && attrExpPresent) {\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n this.addChild(currentNode, childNode, jPath);\n jPath = jPath.substr(0, jPath.lastIndexOf(\".\"));\n } else {\n const childNode = new xmlNode(tagName);\n this.tagsNodeStack.push(currentNode);\n if (tagName !== tagExp && attrExpPresent) {\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n this.addChild(currentNode, childNode, jPath);\n currentNode = childNode;\n }\n textData = \"\";\n i = closeIndex;\n }\n }\n } else {\n textData += xmlData[i];\n }\n }\n return xmlObj.child;\n};\nfunction addChild(currentNode, childNode, jPath) {\n const result = this.options.updateTag(childNode.tagname, jPath, childNode[\":@\"]);\n if (result === false) ;\n else if (typeof result === \"string\") {\n childNode.tagname = result;\n currentNode.addChild(childNode);\n } else {\n currentNode.addChild(childNode);\n }\n}\nconst replaceEntitiesValue$1 = function(val2) {\n if (this.options.processEntities) {\n for (let entityName2 in this.docTypeEntities) {\n const entity = this.docTypeEntities[entityName2];\n val2 = val2.replace(entity.regx, entity.val);\n }\n for (let entityName2 in this.lastEntities) {\n const entity = this.lastEntities[entityName2];\n val2 = val2.replace(entity.regex, entity.val);\n }\n if (this.options.htmlEntities) {\n for (let entityName2 in this.htmlEntities) {\n const entity = this.htmlEntities[entityName2];\n val2 = val2.replace(entity.regex, entity.val);\n }\n }\n val2 = val2.replace(this.ampEntity.regex, this.ampEntity.val);\n }\n return val2;\n};\nfunction saveTextToParentTag(textData, currentNode, jPath, isLeafNode) {\n if (textData) {\n if (isLeafNode === void 0) isLeafNode = Object.keys(currentNode.child).length === 0;\n textData = this.parseTextData(\n textData,\n currentNode.tagname,\n jPath,\n false,\n currentNode[\":@\"] ? Object.keys(currentNode[\":@\"]).length !== 0 : false,\n isLeafNode\n );\n if (textData !== void 0 && textData !== \"\")\n currentNode.add(this.options.textNodeName, textData);\n textData = \"\";\n }\n return textData;\n}\nfunction isItStopNode(stopNodes, jPath, currentTagName) {\n const allNodesExp = \"*.\" + currentTagName;\n for (const stopNodePath in stopNodes) {\n const stopNodeExp = stopNodes[stopNodePath];\n if (allNodesExp === stopNodeExp || jPath === stopNodeExp) return true;\n }\n return false;\n}\nfunction tagExpWithClosingIndex(xmlData, i, closingChar = \">\") {\n let attrBoundary;\n let tagExp = \"\";\n for (let index = i; index < xmlData.length; index++) {\n let ch = xmlData[index];\n if (attrBoundary) {\n if (ch === attrBoundary) attrBoundary = \"\";\n } else if (ch === '\"' || ch === \"'\") {\n attrBoundary = ch;\n } else if (ch === closingChar[0]) {\n if (closingChar[1]) {\n if (xmlData[index + 1] === closingChar[1]) {\n return {\n data: tagExp,\n index\n };\n }\n } else {\n return {\n data: tagExp,\n index\n };\n }\n } else if (ch === \"\t\") {\n ch = \" \";\n }\n tagExp += ch;\n }\n}\nfunction findClosingIndex(xmlData, str, i, errMsg) {\n const closingIndex = xmlData.indexOf(str, i);\n if (closingIndex === -1) {\n throw new Error(errMsg);\n } else {\n return closingIndex + str.length - 1;\n }\n}\nfunction readTagExp(xmlData, i, removeNSPrefix, closingChar = \">\") {\n const result = tagExpWithClosingIndex(xmlData, i + 1, closingChar);\n if (!result) return;\n let tagExp = result.data;\n const closeIndex = result.index;\n const separatorIndex = tagExp.search(/\\s/);\n let tagName = tagExp;\n let attrExpPresent = true;\n if (separatorIndex !== -1) {\n tagName = tagExp.substring(0, separatorIndex);\n tagExp = tagExp.substring(separatorIndex + 1).trimStart();\n }\n const rawTagName = tagName;\n if (removeNSPrefix) {\n const colonIndex = tagName.indexOf(\":\");\n if (colonIndex !== -1) {\n tagName = tagName.substr(colonIndex + 1);\n attrExpPresent = tagName !== result.data.substr(colonIndex + 1);\n }\n }\n return {\n tagName,\n tagExp,\n closeIndex,\n attrExpPresent,\n rawTagName\n };\n}\nfunction readStopNodeData(xmlData, tagName, i) {\n const startIndex = i;\n let openTagCount = 1;\n for (; i < xmlData.length; i++) {\n if (xmlData[i] === \"<\") {\n if (xmlData[i + 1] === \"/\") {\n const closeIndex = findClosingIndex(xmlData, \">\", i, `${tagName} is not closed`);\n let closeTagName = xmlData.substring(i + 2, closeIndex).trim();\n if (closeTagName === tagName) {\n openTagCount--;\n if (openTagCount === 0) {\n return {\n tagContent: xmlData.substring(startIndex, i),\n i: closeIndex\n };\n }\n }\n i = closeIndex;\n } else if (xmlData[i + 1] === \"?\") {\n const closeIndex = findClosingIndex(xmlData, \"?>\", i + 1, \"StopNode is not closed.\");\n i = closeIndex;\n } else if (xmlData.substr(i + 1, 3) === \"!--\") {\n const closeIndex = findClosingIndex(xmlData, \"-->\", i + 3, \"StopNode is not closed.\");\n i = closeIndex;\n } else if (xmlData.substr(i + 1, 2) === \"![\") {\n const closeIndex = findClosingIndex(xmlData, \"]]>\", i, \"StopNode is not closed.\") - 2;\n i = closeIndex;\n } else {\n const tagData = readTagExp(xmlData, i, \">\");\n if (tagData) {\n const openTagName = tagData && tagData.tagName;\n if (openTagName === tagName && tagData.tagExp[tagData.tagExp.length - 1] !== \"/\") {\n openTagCount++;\n }\n i = tagData.closeIndex;\n }\n }\n }\n }\n}\nfunction parseValue(val2, shouldParse, options) {\n if (shouldParse && typeof val2 === \"string\") {\n const newval = val2.trim();\n if (newval === \"true\") return true;\n else if (newval === \"false\") return false;\n else return toNumber(val2, options);\n } else {\n if (util.isExist(val2)) {\n return val2;\n } else {\n return \"\";\n }\n }\n}\nvar OrderedObjParser_1 = OrderedObjParser$1;\nvar node2json = {};\nfunction prettify$1(node, options) {\n return compress(node, options);\n}\nfunction compress(arr, options, jPath) {\n let text;\n const compressedObj = {};\n for (let i = 0; i < arr.length; i++) {\n const tagObj = arr[i];\n const property = propName$1(tagObj);\n let newJpath = \"\";\n if (jPath === void 0) newJpath = property;\n else newJpath = jPath + \".\" + property;\n if (property === options.textNodeName) {\n if (text === void 0) text = tagObj[property];\n else text += \"\" + tagObj[property];\n } else if (property === void 0) {\n continue;\n } else if (tagObj[property]) {\n let val2 = compress(tagObj[property], options, newJpath);\n const isLeaf = isLeafTag(val2, options);\n if (tagObj[\":@\"]) {\n assignAttributes(val2, tagObj[\":@\"], newJpath, options);\n } else if (Object.keys(val2).length === 1 && val2[options.textNodeName] !== void 0 && !options.alwaysCreateTextNode) {\n val2 = val2[options.textNodeName];\n } else if (Object.keys(val2).length === 0) {\n if (options.alwaysCreateTextNode) val2[options.textNodeName] = \"\";\n else val2 = \"\";\n }\n if (compressedObj[property] !== void 0 && compressedObj.hasOwnProperty(property)) {\n if (!Array.isArray(compressedObj[property])) {\n compressedObj[property] = [compressedObj[property]];\n }\n compressedObj[property].push(val2);\n } else {\n if (options.isArray(property, newJpath, isLeaf)) {\n compressedObj[property] = [val2];\n } else {\n compressedObj[property] = val2;\n }\n }\n }\n }\n if (typeof text === \"string\") {\n if (text.length > 0) compressedObj[options.textNodeName] = text;\n } else if (text !== void 0) compressedObj[options.textNodeName] = text;\n return compressedObj;\n}\nfunction propName$1(obj) {\n const keys = Object.keys(obj);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n if (key !== \":@\") return key;\n }\n}\nfunction assignAttributes(obj, attrMap, jpath, options) {\n if (attrMap) {\n const keys = Object.keys(attrMap);\n const len = keys.length;\n for (let i = 0; i < len; i++) {\n const atrrName = keys[i];\n if (options.isArray(atrrName, jpath + \".\" + atrrName, true, true)) {\n obj[atrrName] = [attrMap[atrrName]];\n } else {\n obj[atrrName] = attrMap[atrrName];\n }\n }\n }\n}\nfunction isLeafTag(obj, options) {\n const { textNodeName } = options;\n const propCount = Object.keys(obj).length;\n if (propCount === 0) {\n return true;\n }\n if (propCount === 1 && (obj[textNodeName] || typeof obj[textNodeName] === \"boolean\" || obj[textNodeName] === 0)) {\n return true;\n }\n return false;\n}\nnode2json.prettify = prettify$1;\nconst { buildOptions } = OptionsBuilder;\nconst OrderedObjParser2 = OrderedObjParser_1;\nconst { prettify } = node2json;\nconst validator$1 = validator$2;\nlet XMLParser$1 = class XMLParser {\n constructor(options) {\n this.externalEntities = {};\n this.options = buildOptions(options);\n }\n /**\n * Parse XML dats to JS object \n * @param {string|Buffer} xmlData \n * @param {boolean|Object} validationOption \n */\n parse(xmlData, validationOption) {\n if (typeof xmlData === \"string\") ;\n else if (xmlData.toString) {\n xmlData = xmlData.toString();\n } else {\n throw new Error(\"XML data is accepted in String or Bytes[] form.\");\n }\n if (validationOption) {\n if (validationOption === true) validationOption = {};\n const result = validator$1.validate(xmlData, validationOption);\n if (result !== true) {\n throw Error(`${result.err.msg}:${result.err.line}:${result.err.col}`);\n }\n }\n const orderedObjParser = new OrderedObjParser2(this.options);\n orderedObjParser.addExternalEntities(this.externalEntities);\n const orderedResult = orderedObjParser.parseXml(xmlData);\n if (this.options.preserveOrder || orderedResult === void 0) return orderedResult;\n else return prettify(orderedResult, this.options);\n }\n /**\n * Add Entity which is not by default supported by this library\n * @param {string} key \n * @param {string} value \n */\n addEntity(key, value) {\n if (value.indexOf(\"&\") !== -1) {\n throw new Error(\"Entity value can't have '&'\");\n } else if (key.indexOf(\"&\") !== -1 || key.indexOf(\";\") !== -1) {\n throw new Error(\"An entity must be set without '&' and ';'. Eg. use '#xD' for ' '\");\n } else if (value === \"&\") {\n throw new Error(\"An entity with value '&' is not permitted\");\n } else {\n this.externalEntities[key] = value;\n }\n }\n};\nvar XMLParser_1 = XMLParser$1;\nconst EOL = \"\\n\";\nfunction toXml(jArray, options) {\n let indentation = \"\";\n if (options.format && options.indentBy.length > 0) {\n indentation = EOL;\n }\n return arrToStr(jArray, options, \"\", indentation);\n}\nfunction arrToStr(arr, options, jPath, indentation) {\n let xmlStr = \"\";\n let isPreviousElementTag = false;\n for (let i = 0; i < arr.length; i++) {\n const tagObj = arr[i];\n const tagName = propName(tagObj);\n if (tagName === void 0) continue;\n let newJPath = \"\";\n if (jPath.length === 0) newJPath = tagName;\n else newJPath = `${jPath}.${tagName}`;\n if (tagName === options.textNodeName) {\n let tagText = tagObj[tagName];\n if (!isStopNode(newJPath, options)) {\n tagText = options.tagValueProcessor(tagName, tagText);\n tagText = replaceEntitiesValue(tagText, options);\n }\n if (isPreviousElementTag) {\n xmlStr += indentation;\n }\n xmlStr += tagText;\n isPreviousElementTag = false;\n continue;\n } else if (tagName === options.cdataPropName) {\n if (isPreviousElementTag) {\n xmlStr += indentation;\n }\n xmlStr += ``;\n isPreviousElementTag = false;\n continue;\n } else if (tagName === options.commentPropName) {\n xmlStr += indentation + ``;\n isPreviousElementTag = true;\n continue;\n } else if (tagName[0] === \"?\") {\n const attStr2 = attr_to_str(tagObj[\":@\"], options);\n const tempInd = tagName === \"?xml\" ? \"\" : indentation;\n let piTextNodeName = tagObj[tagName][0][options.textNodeName];\n piTextNodeName = piTextNodeName.length !== 0 ? \" \" + piTextNodeName : \"\";\n xmlStr += tempInd + `<${tagName}${piTextNodeName}${attStr2}?>`;\n isPreviousElementTag = true;\n continue;\n }\n let newIdentation = indentation;\n if (newIdentation !== \"\") {\n newIdentation += options.indentBy;\n }\n const attStr = attr_to_str(tagObj[\":@\"], options);\n const tagStart = indentation + `<${tagName}${attStr}`;\n const tagValue = arrToStr(tagObj[tagName], options, newJPath, newIdentation);\n if (options.unpairedTags.indexOf(tagName) !== -1) {\n if (options.suppressUnpairedNode) xmlStr += tagStart + \">\";\n else xmlStr += tagStart + \"/>\";\n } else if ((!tagValue || tagValue.length === 0) && options.suppressEmptyNode) {\n xmlStr += tagStart + \"/>\";\n } else if (tagValue && tagValue.endsWith(\">\")) {\n xmlStr += tagStart + `>${tagValue}${indentation}`;\n } else {\n xmlStr += tagStart + \">\";\n if (tagValue && indentation !== \"\" && (tagValue.includes(\"/>\") || tagValue.includes(\"`;\n }\n isPreviousElementTag = true;\n }\n return xmlStr;\n}\nfunction propName(obj) {\n const keys = Object.keys(obj);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n if (!obj.hasOwnProperty(key)) continue;\n if (key !== \":@\") return key;\n }\n}\nfunction attr_to_str(attrMap, options) {\n let attrStr = \"\";\n if (attrMap && !options.ignoreAttributes) {\n for (let attr in attrMap) {\n if (!attrMap.hasOwnProperty(attr)) continue;\n let attrVal = options.attributeValueProcessor(attr, attrMap[attr]);\n attrVal = replaceEntitiesValue(attrVal, options);\n if (attrVal === true && options.suppressBooleanAttributes) {\n attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}`;\n } else {\n attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}=\"${attrVal}\"`;\n }\n }\n }\n return attrStr;\n}\nfunction isStopNode(jPath, options) {\n jPath = jPath.substr(0, jPath.length - options.textNodeName.length - 1);\n let tagName = jPath.substr(jPath.lastIndexOf(\".\") + 1);\n for (let index in options.stopNodes) {\n if (options.stopNodes[index] === jPath || options.stopNodes[index] === \"*.\" + tagName) return true;\n }\n return false;\n}\nfunction replaceEntitiesValue(textValue, options) {\n if (textValue && textValue.length > 0 && options.processEntities) {\n for (let i = 0; i < options.entities.length; i++) {\n const entity = options.entities[i];\n textValue = textValue.replace(entity.regex, entity.val);\n }\n }\n return textValue;\n}\nvar orderedJs2Xml = toXml;\nconst buildFromOrderedJs = orderedJs2Xml;\nconst defaultOptions = {\n attributeNamePrefix: \"@_\",\n attributesGroupName: false,\n textNodeName: \"#text\",\n ignoreAttributes: true,\n cdataPropName: false,\n format: false,\n indentBy: \" \",\n suppressEmptyNode: false,\n suppressUnpairedNode: true,\n suppressBooleanAttributes: true,\n tagValueProcessor: function(key, a) {\n return a;\n },\n attributeValueProcessor: function(attrName, a) {\n return a;\n },\n preserveOrder: false,\n commentPropName: false,\n unpairedTags: [],\n entities: [\n { regex: new RegExp(\"&\", \"g\"), val: \"&\" },\n //it must be on top\n { regex: new RegExp(\">\", \"g\"), val: \">\" },\n { regex: new RegExp(\"<\", \"g\"), val: \"<\" },\n { regex: new RegExp(\"'\", \"g\"), val: \"'\" },\n { regex: new RegExp('\"', \"g\"), val: \""\" }\n ],\n processEntities: true,\n stopNodes: [],\n // transformTagName: false,\n // transformAttributeName: false,\n oneListGroup: false\n};\nfunction Builder(options) {\n this.options = Object.assign({}, defaultOptions, options);\n if (this.options.ignoreAttributes || this.options.attributesGroupName) {\n this.isAttribute = function() {\n return false;\n };\n } else {\n this.attrPrefixLen = this.options.attributeNamePrefix.length;\n this.isAttribute = isAttribute;\n }\n this.processTextOrObjNode = processTextOrObjNode;\n if (this.options.format) {\n this.indentate = indentate;\n this.tagEndChar = \">\\n\";\n this.newLine = \"\\n\";\n } else {\n this.indentate = function() {\n return \"\";\n };\n this.tagEndChar = \">\";\n this.newLine = \"\";\n }\n}\nBuilder.prototype.build = function(jObj) {\n if (this.options.preserveOrder) {\n return buildFromOrderedJs(jObj, this.options);\n } else {\n if (Array.isArray(jObj) && this.options.arrayNodeName && this.options.arrayNodeName.length > 1) {\n jObj = {\n [this.options.arrayNodeName]: jObj\n };\n }\n return this.j2x(jObj, 0).val;\n }\n};\nBuilder.prototype.j2x = function(jObj, level) {\n let attrStr = \"\";\n let val2 = \"\";\n for (let key in jObj) {\n if (!Object.prototype.hasOwnProperty.call(jObj, key)) continue;\n if (typeof jObj[key] === \"undefined\") {\n if (this.isAttribute(key)) {\n val2 += \"\";\n }\n } else if (jObj[key] === null) {\n if (this.isAttribute(key)) {\n val2 += \"\";\n } else if (key[0] === \"?\") {\n val2 += this.indentate(level) + \"<\" + key + \"?\" + this.tagEndChar;\n } else {\n val2 += this.indentate(level) + \"<\" + key + \"/\" + this.tagEndChar;\n }\n } else if (jObj[key] instanceof Date) {\n val2 += this.buildTextValNode(jObj[key], key, \"\", level);\n } else if (typeof jObj[key] !== \"object\") {\n const attr = this.isAttribute(key);\n if (attr) {\n attrStr += this.buildAttrPairStr(attr, \"\" + jObj[key]);\n } else {\n if (key === this.options.textNodeName) {\n let newval = this.options.tagValueProcessor(key, \"\" + jObj[key]);\n val2 += this.replaceEntitiesValue(newval);\n } else {\n val2 += this.buildTextValNode(jObj[key], key, \"\", level);\n }\n }\n } else if (Array.isArray(jObj[key])) {\n const arrLen = jObj[key].length;\n let listTagVal = \"\";\n let listTagAttr = \"\";\n for (let j = 0; j < arrLen; j++) {\n const item = jObj[key][j];\n if (typeof item === \"undefined\") ;\n else if (item === null) {\n if (key[0] === \"?\") val2 += this.indentate(level) + \"<\" + key + \"?\" + this.tagEndChar;\n else val2 += this.indentate(level) + \"<\" + key + \"/\" + this.tagEndChar;\n } else if (typeof item === \"object\") {\n if (this.options.oneListGroup) {\n const result = this.j2x(item, level + 1);\n listTagVal += result.val;\n if (this.options.attributesGroupName && item.hasOwnProperty(this.options.attributesGroupName)) {\n listTagAttr += result.attrStr;\n }\n } else {\n listTagVal += this.processTextOrObjNode(item, key, level);\n }\n } else {\n if (this.options.oneListGroup) {\n let textValue = this.options.tagValueProcessor(key, item);\n textValue = this.replaceEntitiesValue(textValue);\n listTagVal += textValue;\n } else {\n listTagVal += this.buildTextValNode(item, key, \"\", level);\n }\n }\n }\n if (this.options.oneListGroup) {\n listTagVal = this.buildObjectNode(listTagVal, key, listTagAttr, level);\n }\n val2 += listTagVal;\n } else {\n if (this.options.attributesGroupName && key === this.options.attributesGroupName) {\n const Ks = Object.keys(jObj[key]);\n const L = Ks.length;\n for (let j = 0; j < L; j++) {\n attrStr += this.buildAttrPairStr(Ks[j], \"\" + jObj[key][Ks[j]]);\n }\n } else {\n val2 += this.processTextOrObjNode(jObj[key], key, level);\n }\n }\n }\n return { attrStr, val: val2 };\n};\nBuilder.prototype.buildAttrPairStr = function(attrName, val2) {\n val2 = this.options.attributeValueProcessor(attrName, \"\" + val2);\n val2 = this.replaceEntitiesValue(val2);\n if (this.options.suppressBooleanAttributes && val2 === \"true\") {\n return \" \" + attrName;\n } else return \" \" + attrName + '=\"' + val2 + '\"';\n};\nfunction processTextOrObjNode(object, key, level) {\n const result = this.j2x(object, level + 1);\n if (object[this.options.textNodeName] !== void 0 && Object.keys(object).length === 1) {\n return this.buildTextValNode(object[this.options.textNodeName], key, result.attrStr, level);\n } else {\n return this.buildObjectNode(result.val, key, result.attrStr, level);\n }\n}\nBuilder.prototype.buildObjectNode = function(val2, key, attrStr, level) {\n if (val2 === \"\") {\n if (key[0] === \"?\") return this.indentate(level) + \"<\" + key + attrStr + \"?\" + this.tagEndChar;\n else {\n return this.indentate(level) + \"<\" + key + attrStr + this.closeTag(key) + this.tagEndChar;\n }\n } else {\n let tagEndExp = \"\" + val2 + tagEndExp;\n } else if (this.options.commentPropName !== false && key === this.options.commentPropName && piClosingChar.length === 0) {\n return this.indentate(level) + `` + this.newLine;\n } else {\n return this.indentate(level) + \"<\" + key + attrStr + piClosingChar + this.tagEndChar + val2 + this.indentate(level) + tagEndExp;\n }\n }\n};\nBuilder.prototype.closeTag = function(key) {\n let closeTag = \"\";\n if (this.options.unpairedTags.indexOf(key) !== -1) {\n if (!this.options.suppressUnpairedNode) closeTag = \"/\";\n } else if (this.options.suppressEmptyNode) {\n closeTag = \"/\";\n } else {\n closeTag = `>` + this.newLine;\n } else if (this.options.commentPropName !== false && key === this.options.commentPropName) {\n return this.indentate(level) + `` + this.newLine;\n } else if (key[0] === \"?\") {\n return this.indentate(level) + \"<\" + key + attrStr + \"?\" + this.tagEndChar;\n } else {\n let textValue = this.options.tagValueProcessor(key, val2);\n textValue = this.replaceEntitiesValue(textValue);\n if (textValue === \"\") {\n return this.indentate(level) + \"<\" + key + attrStr + this.closeTag(key) + this.tagEndChar;\n } else {\n return this.indentate(level) + \"<\" + key + attrStr + \">\" + textValue + \" 0 && this.options.processEntities) {\n for (let i = 0; i < this.options.entities.length; i++) {\n const entity = this.options.entities[i];\n textValue = textValue.replace(entity.regex, entity.val);\n }\n }\n return textValue;\n};\nfunction indentate(level) {\n return this.options.indentBy.repeat(level);\n}\nfunction isAttribute(name) {\n if (name.startsWith(this.options.attributeNamePrefix) && name !== this.options.textNodeName) {\n return name.substr(this.attrPrefixLen);\n } else {\n return false;\n }\n}\nvar json2xml = Builder;\nconst validator = validator$2;\nconst XMLParser2 = XMLParser_1;\nconst XMLBuilder = json2xml;\nvar fxp = {\n XMLParser: XMLParser2,\n XMLValidator: validator,\n XMLBuilder\n};\nfunction isSvg(string) {\n if (typeof string !== \"string\") {\n throw new TypeError(`Expected a \\`string\\`, got \\`${typeof string}\\``);\n }\n string = string.trim();\n if (string.length === 0) {\n return false;\n }\n if (fxp.XMLValidator.validate(string) !== true) {\n return false;\n }\n let jsonObject;\n const parser = new fxp.XMLParser();\n try {\n jsonObject = parser.parse(string);\n } catch {\n return false;\n }\n if (!jsonObject) {\n return false;\n }\n if (!Object.keys(jsonObject).some((x) => x.toLowerCase() === \"svg\")) {\n return false;\n }\n return true;\n}\nclass View {\n _view;\n constructor(view) {\n isValidView(view);\n this._view = view;\n }\n get id() {\n return this._view.id;\n }\n get name() {\n return this._view.name;\n }\n get caption() {\n return this._view.caption;\n }\n get emptyTitle() {\n return this._view.emptyTitle;\n }\n get emptyCaption() {\n return this._view.emptyCaption;\n }\n get getContents() {\n return this._view.getContents;\n }\n get icon() {\n return this._view.icon;\n }\n set icon(icon) {\n this._view.icon = icon;\n }\n get order() {\n return this._view.order;\n }\n set order(order) {\n this._view.order = order;\n }\n get params() {\n return this._view.params;\n }\n set params(params) {\n this._view.params = params;\n }\n get columns() {\n return this._view.columns;\n }\n get emptyView() {\n return this._view.emptyView;\n }\n get parent() {\n return this._view.parent;\n }\n get sticky() {\n return this._view.sticky;\n }\n get expanded() {\n return this._view.expanded;\n }\n set expanded(expanded) {\n this._view.expanded = expanded;\n }\n get defaultSortKey() {\n return this._view.defaultSortKey;\n }\n get loadChildViews() {\n return this._view.loadChildViews;\n }\n}\nconst isValidView = function(view) {\n if (!view.id || typeof view.id !== \"string\") {\n throw new Error(\"View id is required and must be a string\");\n }\n if (!view.name || typeof view.name !== \"string\") {\n throw new Error(\"View name is required and must be a string\");\n }\n if (view.columns && view.columns.length > 0 && (!view.caption || typeof view.caption !== \"string\")) {\n throw new Error(\"View caption is required for top-level views and must be a string\");\n }\n if (!view.getContents || typeof view.getContents !== \"function\") {\n throw new Error(\"View getContents is required and must be a function\");\n }\n if (!view.icon || typeof view.icon !== \"string\" || !isSvg(view.icon)) {\n throw new Error(\"View icon is required and must be a valid svg string\");\n }\n if (\"order\" in view && typeof view.order !== \"number\") {\n throw new Error(\"View order must be a number\");\n }\n if (view.columns) {\n view.columns.forEach((column) => {\n if (!(column instanceof Column)) {\n throw new Error(\"View columns must be an array of Column. Invalid column found\");\n }\n });\n }\n if (view.emptyView && typeof view.emptyView !== \"function\") {\n throw new Error(\"View emptyView must be a function\");\n }\n if (view.parent && typeof view.parent !== \"string\") {\n throw new Error(\"View parent must be a string\");\n }\n if (\"sticky\" in view && typeof view.sticky !== \"boolean\") {\n throw new Error(\"View sticky must be a boolean\");\n }\n if (\"expanded\" in view && typeof view.expanded !== \"boolean\") {\n throw new Error(\"View expanded must be a boolean\");\n }\n if (view.defaultSortKey && typeof view.defaultSortKey !== \"string\") {\n throw new Error(\"View defaultSortKey must be a string\");\n }\n if (view.loadChildViews && typeof view.loadChildViews !== \"function\") {\n throw new Error(\"View loadChildViews must be a function\");\n }\n return true;\n};\nconst debug$1 = typeof process === \"object\" && process.env && process.env.NODE_DEBUG && /\\bsemver\\b/i.test(process.env.NODE_DEBUG) ? (...args) => console.error(\"SEMVER\", ...args) : () => {\n};\nvar debug_1 = debug$1;\nconst SEMVER_SPEC_VERSION = \"2.0.0\";\nconst MAX_LENGTH$1 = 256;\nconst MAX_SAFE_INTEGER$1 = Number.MAX_SAFE_INTEGER || /* istanbul ignore next */\n9007199254740991;\nconst MAX_SAFE_COMPONENT_LENGTH = 16;\nconst MAX_SAFE_BUILD_LENGTH = MAX_LENGTH$1 - 6;\nconst RELEASE_TYPES = [\n \"major\",\n \"premajor\",\n \"minor\",\n \"preminor\",\n \"patch\",\n \"prepatch\",\n \"prerelease\"\n];\nvar constants = {\n MAX_LENGTH: MAX_LENGTH$1,\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_SAFE_INTEGER: MAX_SAFE_INTEGER$1,\n RELEASE_TYPES,\n SEMVER_SPEC_VERSION,\n FLAG_INCLUDE_PRERELEASE: 1,\n FLAG_LOOSE: 2\n};\nvar re$1 = { exports: {} };\n(function(module, exports) {\n const {\n MAX_SAFE_COMPONENT_LENGTH: MAX_SAFE_COMPONENT_LENGTH2,\n MAX_SAFE_BUILD_LENGTH: MAX_SAFE_BUILD_LENGTH2,\n MAX_LENGTH: MAX_LENGTH2\n } = constants;\n const debug2 = debug_1;\n exports = module.exports = {};\n const re2 = exports.re = [];\n const safeRe = exports.safeRe = [];\n const src = exports.src = [];\n const t2 = exports.t = {};\n let R = 0;\n const LETTERDASHNUMBER = \"[a-zA-Z0-9-]\";\n const safeRegexReplacements = [\n [\"\\\\s\", 1],\n [\"\\\\d\", MAX_LENGTH2],\n [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH2]\n ];\n const makeSafeRegex = (value) => {\n for (const [token, max] of safeRegexReplacements) {\n value = value.split(`${token}*`).join(`${token}{0,${max}}`).split(`${token}+`).join(`${token}{1,${max}}`);\n }\n return value;\n };\n const createToken = (name, value, isGlobal) => {\n const safe = makeSafeRegex(value);\n const index = R++;\n debug2(name, index, value);\n t2[name] = index;\n src[index] = value;\n re2[index] = new RegExp(value, isGlobal ? \"g\" : void 0);\n safeRe[index] = new RegExp(safe, isGlobal ? \"g\" : void 0);\n };\n createToken(\"NUMERICIDENTIFIER\", \"0|[1-9]\\\\d*\");\n createToken(\"NUMERICIDENTIFIERLOOSE\", \"\\\\d+\");\n createToken(\"NONNUMERICIDENTIFIER\", `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`);\n createToken(\"MAINVERSION\", `(${src[t2.NUMERICIDENTIFIER]})\\\\.(${src[t2.NUMERICIDENTIFIER]})\\\\.(${src[t2.NUMERICIDENTIFIER]})`);\n createToken(\"MAINVERSIONLOOSE\", `(${src[t2.NUMERICIDENTIFIERLOOSE]})\\\\.(${src[t2.NUMERICIDENTIFIERLOOSE]})\\\\.(${src[t2.NUMERICIDENTIFIERLOOSE]})`);\n createToken(\"PRERELEASEIDENTIFIER\", `(?:${src[t2.NUMERICIDENTIFIER]}|${src[t2.NONNUMERICIDENTIFIER]})`);\n createToken(\"PRERELEASEIDENTIFIERLOOSE\", `(?:${src[t2.NUMERICIDENTIFIERLOOSE]}|${src[t2.NONNUMERICIDENTIFIER]})`);\n createToken(\"PRERELEASE\", `(?:-(${src[t2.PRERELEASEIDENTIFIER]}(?:\\\\.${src[t2.PRERELEASEIDENTIFIER]})*))`);\n createToken(\"PRERELEASELOOSE\", `(?:-?(${src[t2.PRERELEASEIDENTIFIERLOOSE]}(?:\\\\.${src[t2.PRERELEASEIDENTIFIERLOOSE]})*))`);\n createToken(\"BUILDIDENTIFIER\", `${LETTERDASHNUMBER}+`);\n createToken(\"BUILD\", `(?:\\\\+(${src[t2.BUILDIDENTIFIER]}(?:\\\\.${src[t2.BUILDIDENTIFIER]})*))`);\n createToken(\"FULLPLAIN\", `v?${src[t2.MAINVERSION]}${src[t2.PRERELEASE]}?${src[t2.BUILD]}?`);\n createToken(\"FULL\", `^${src[t2.FULLPLAIN]}$`);\n createToken(\"LOOSEPLAIN\", `[v=\\\\s]*${src[t2.MAINVERSIONLOOSE]}${src[t2.PRERELEASELOOSE]}?${src[t2.BUILD]}?`);\n createToken(\"LOOSE\", `^${src[t2.LOOSEPLAIN]}$`);\n createToken(\"GTLT\", \"((?:<|>)?=?)\");\n createToken(\"XRANGEIDENTIFIERLOOSE\", `${src[t2.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`);\n createToken(\"XRANGEIDENTIFIER\", `${src[t2.NUMERICIDENTIFIER]}|x|X|\\\\*`);\n createToken(\"XRANGEPLAIN\", `[v=\\\\s]*(${src[t2.XRANGEIDENTIFIER]})(?:\\\\.(${src[t2.XRANGEIDENTIFIER]})(?:\\\\.(${src[t2.XRANGEIDENTIFIER]})(?:${src[t2.PRERELEASE]})?${src[t2.BUILD]}?)?)?`);\n createToken(\"XRANGEPLAINLOOSE\", `[v=\\\\s]*(${src[t2.XRANGEIDENTIFIERLOOSE]})(?:\\\\.(${src[t2.XRANGEIDENTIFIERLOOSE]})(?:\\\\.(${src[t2.XRANGEIDENTIFIERLOOSE]})(?:${src[t2.PRERELEASELOOSE]})?${src[t2.BUILD]}?)?)?`);\n createToken(\"XRANGE\", `^${src[t2.GTLT]}\\\\s*${src[t2.XRANGEPLAIN]}$`);\n createToken(\"XRANGELOOSE\", `^${src[t2.GTLT]}\\\\s*${src[t2.XRANGEPLAINLOOSE]}$`);\n createToken(\"COERCEPLAIN\", `${\"(^|[^\\\\d])(\\\\d{1,\"}${MAX_SAFE_COMPONENT_LENGTH2}})(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH2}}))?(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH2}}))?`);\n createToken(\"COERCE\", `${src[t2.COERCEPLAIN]}(?:$|[^\\\\d])`);\n createToken(\"COERCEFULL\", src[t2.COERCEPLAIN] + `(?:${src[t2.PRERELEASE]})?(?:${src[t2.BUILD]})?(?:$|[^\\\\d])`);\n createToken(\"COERCERTL\", src[t2.COERCE], true);\n createToken(\"COERCERTLFULL\", src[t2.COERCEFULL], true);\n createToken(\"LONETILDE\", \"(?:~>?)\");\n createToken(\"TILDETRIM\", `(\\\\s*)${src[t2.LONETILDE]}\\\\s+`, true);\n exports.tildeTrimReplace = \"$1~\";\n createToken(\"TILDE\", `^${src[t2.LONETILDE]}${src[t2.XRANGEPLAIN]}$`);\n createToken(\"TILDELOOSE\", `^${src[t2.LONETILDE]}${src[t2.XRANGEPLAINLOOSE]}$`);\n createToken(\"LONECARET\", \"(?:\\\\^)\");\n createToken(\"CARETTRIM\", `(\\\\s*)${src[t2.LONECARET]}\\\\s+`, true);\n exports.caretTrimReplace = \"$1^\";\n createToken(\"CARET\", `^${src[t2.LONECARET]}${src[t2.XRANGEPLAIN]}$`);\n createToken(\"CARETLOOSE\", `^${src[t2.LONECARET]}${src[t2.XRANGEPLAINLOOSE]}$`);\n createToken(\"COMPARATORLOOSE\", `^${src[t2.GTLT]}\\\\s*(${src[t2.LOOSEPLAIN]})$|^$`);\n createToken(\"COMPARATOR\", `^${src[t2.GTLT]}\\\\s*(${src[t2.FULLPLAIN]})$|^$`);\n createToken(\"COMPARATORTRIM\", `(\\\\s*)${src[t2.GTLT]}\\\\s*(${src[t2.LOOSEPLAIN]}|${src[t2.XRANGEPLAIN]})`, true);\n exports.comparatorTrimReplace = \"$1$2$3\";\n createToken(\"HYPHENRANGE\", `^\\\\s*(${src[t2.XRANGEPLAIN]})\\\\s+-\\\\s+(${src[t2.XRANGEPLAIN]})\\\\s*$`);\n createToken(\"HYPHENRANGELOOSE\", `^\\\\s*(${src[t2.XRANGEPLAINLOOSE]})\\\\s+-\\\\s+(${src[t2.XRANGEPLAINLOOSE]})\\\\s*$`);\n createToken(\"STAR\", \"(<|>)?=?\\\\s*\\\\*\");\n createToken(\"GTE0\", \"^\\\\s*>=\\\\s*0\\\\.0\\\\.0\\\\s*$\");\n createToken(\"GTE0PRE\", \"^\\\\s*>=\\\\s*0\\\\.0\\\\.0-0\\\\s*$\");\n})(re$1, re$1.exports);\nvar reExports = re$1.exports;\nconst looseOption = Object.freeze({ loose: true });\nconst emptyOpts = Object.freeze({});\nconst parseOptions$1 = (options) => {\n if (!options) {\n return emptyOpts;\n }\n if (typeof options !== \"object\") {\n return looseOption;\n }\n return options;\n};\nvar parseOptions_1 = parseOptions$1;\nconst numeric = /^[0-9]+$/;\nconst compareIdentifiers$1 = (a, b) => {\n const anum = numeric.test(a);\n const bnum = numeric.test(b);\n if (anum && bnum) {\n a = +a;\n b = +b;\n }\n return a === b ? 0 : anum && !bnum ? -1 : bnum && !anum ? 1 : a < b ? -1 : 1;\n};\nconst rcompareIdentifiers = (a, b) => compareIdentifiers$1(b, a);\nvar identifiers = {\n compareIdentifiers: compareIdentifiers$1,\n rcompareIdentifiers\n};\nconst debug = debug_1;\nconst { MAX_LENGTH, MAX_SAFE_INTEGER } = constants;\nconst { safeRe: re, t } = reExports;\nconst parseOptions = parseOptions_1;\nconst { compareIdentifiers } = identifiers;\nlet SemVer$2 = class SemVer {\n constructor(version, options) {\n options = parseOptions(options);\n if (version instanceof SemVer) {\n if (version.loose === !!options.loose && version.includePrerelease === !!options.includePrerelease) {\n return version;\n } else {\n version = version.version;\n }\n } else if (typeof version !== \"string\") {\n throw new TypeError(`Invalid version. Must be a string. Got type \"${typeof version}\".`);\n }\n if (version.length > MAX_LENGTH) {\n throw new TypeError(\n `version is longer than ${MAX_LENGTH} characters`\n );\n }\n debug(\"SemVer\", version, options);\n this.options = options;\n this.loose = !!options.loose;\n this.includePrerelease = !!options.includePrerelease;\n const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL]);\n if (!m) {\n throw new TypeError(`Invalid Version: ${version}`);\n }\n this.raw = version;\n this.major = +m[1];\n this.minor = +m[2];\n this.patch = +m[3];\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError(\"Invalid major version\");\n }\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError(\"Invalid minor version\");\n }\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError(\"Invalid patch version\");\n }\n if (!m[4]) {\n this.prerelease = [];\n } else {\n this.prerelease = m[4].split(\".\").map((id) => {\n if (/^[0-9]+$/.test(id)) {\n const num = +id;\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num;\n }\n }\n return id;\n });\n }\n this.build = m[5] ? m[5].split(\".\") : [];\n this.format();\n }\n format() {\n this.version = `${this.major}.${this.minor}.${this.patch}`;\n if (this.prerelease.length) {\n this.version += `-${this.prerelease.join(\".\")}`;\n }\n return this.version;\n }\n toString() {\n return this.version;\n }\n compare(other) {\n debug(\"SemVer.compare\", this.version, this.options, other);\n if (!(other instanceof SemVer)) {\n if (typeof other === \"string\" && other === this.version) {\n return 0;\n }\n other = new SemVer(other, this.options);\n }\n if (other.version === this.version) {\n return 0;\n }\n return this.compareMain(other) || this.comparePre(other);\n }\n compareMain(other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n return compareIdentifiers(this.major, other.major) || compareIdentifiers(this.minor, other.minor) || compareIdentifiers(this.patch, other.patch);\n }\n comparePre(other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n if (this.prerelease.length && !other.prerelease.length) {\n return -1;\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1;\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0;\n }\n let i = 0;\n do {\n const a = this.prerelease[i];\n const b = other.prerelease[i];\n debug(\"prerelease compare\", i, a, b);\n if (a === void 0 && b === void 0) {\n return 0;\n } else if (b === void 0) {\n return 1;\n } else if (a === void 0) {\n return -1;\n } else if (a === b) {\n continue;\n } else {\n return compareIdentifiers(a, b);\n }\n } while (++i);\n }\n compareBuild(other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n let i = 0;\n do {\n const a = this.build[i];\n const b = other.build[i];\n debug(\"build compare\", i, a, b);\n if (a === void 0 && b === void 0) {\n return 0;\n } else if (b === void 0) {\n return 1;\n } else if (a === void 0) {\n return -1;\n } else if (a === b) {\n continue;\n } else {\n return compareIdentifiers(a, b);\n }\n } while (++i);\n }\n // preminor will bump the version up to the next minor release, and immediately\n // down to pre-release. premajor and prepatch work the same way.\n inc(release, identifier, identifierBase) {\n switch (release) {\n case \"premajor\":\n this.prerelease.length = 0;\n this.patch = 0;\n this.minor = 0;\n this.major++;\n this.inc(\"pre\", identifier, identifierBase);\n break;\n case \"preminor\":\n this.prerelease.length = 0;\n this.patch = 0;\n this.minor++;\n this.inc(\"pre\", identifier, identifierBase);\n break;\n case \"prepatch\":\n this.prerelease.length = 0;\n this.inc(\"patch\", identifier, identifierBase);\n this.inc(\"pre\", identifier, identifierBase);\n break;\n case \"prerelease\":\n if (this.prerelease.length === 0) {\n this.inc(\"patch\", identifier, identifierBase);\n }\n this.inc(\"pre\", identifier, identifierBase);\n break;\n case \"major\":\n if (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0) {\n this.major++;\n }\n this.minor = 0;\n this.patch = 0;\n this.prerelease = [];\n break;\n case \"minor\":\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++;\n }\n this.patch = 0;\n this.prerelease = [];\n break;\n case \"patch\":\n if (this.prerelease.length === 0) {\n this.patch++;\n }\n this.prerelease = [];\n break;\n case \"pre\": {\n const base = Number(identifierBase) ? 1 : 0;\n if (!identifier && identifierBase === false) {\n throw new Error(\"invalid increment argument: identifier is empty\");\n }\n if (this.prerelease.length === 0) {\n this.prerelease = [base];\n } else {\n let i = this.prerelease.length;\n while (--i >= 0) {\n if (typeof this.prerelease[i] === \"number\") {\n this.prerelease[i]++;\n i = -2;\n }\n }\n if (i === -1) {\n if (identifier === this.prerelease.join(\".\") && identifierBase === false) {\n throw new Error(\"invalid increment argument: identifier already exists\");\n }\n this.prerelease.push(base);\n }\n }\n if (identifier) {\n let prerelease = [identifier, base];\n if (identifierBase === false) {\n prerelease = [identifier];\n }\n if (compareIdentifiers(this.prerelease[0], identifier) === 0) {\n if (isNaN(this.prerelease[1])) {\n this.prerelease = prerelease;\n }\n } else {\n this.prerelease = prerelease;\n }\n }\n break;\n }\n default:\n throw new Error(`invalid increment argument: ${release}`);\n }\n this.raw = this.format();\n if (this.build.length) {\n this.raw += `+${this.build.join(\".\")}`;\n }\n return this;\n }\n};\nvar semver = SemVer$2;\nconst SemVer$1 = semver;\nconst parse$1 = (version, options, throwErrors = false) => {\n if (version instanceof SemVer$1) {\n return version;\n }\n try {\n return new SemVer$1(version, options);\n } catch (er) {\n if (!throwErrors) {\n return null;\n }\n throw er;\n }\n};\nvar parse_1 = parse$1;\nconst parse = parse_1;\nconst valid = (version, options) => {\n const v = parse(version, options);\n return v ? v.version : null;\n};\nvar valid_1 = valid;\nconst valid$1 = /* @__PURE__ */ getDefaultExportFromCjs(valid_1);\nconst SemVer2 = semver;\nconst major = (a, loose) => new SemVer2(a, loose).major;\nvar major_1 = major;\nconst major$1 = /* @__PURE__ */ getDefaultExportFromCjs(major_1);\nclass ProxyBus {\n bus;\n constructor(bus2) {\n if (typeof bus2.getVersion !== \"function\" || !valid$1(bus2.getVersion())) {\n console.warn(\"Proxying an event bus with an unknown or invalid version\");\n } else if (major$1(bus2.getVersion()) !== major$1(this.getVersion())) {\n console.warn(\n \"Proxying an event bus of version \" + bus2.getVersion() + \" with \" + this.getVersion()\n );\n }\n this.bus = bus2;\n }\n getVersion() {\n return \"3.3.1\";\n }\n subscribe(name, handler) {\n this.bus.subscribe(name, handler);\n }\n unsubscribe(name, handler) {\n this.bus.unsubscribe(name, handler);\n }\n emit(name, event) {\n this.bus.emit(name, event);\n }\n}\nclass SimpleBus {\n handlers = /* @__PURE__ */ new Map();\n getVersion() {\n return \"3.3.1\";\n }\n subscribe(name, handler) {\n this.handlers.set(\n name,\n (this.handlers.get(name) || []).concat(\n handler\n )\n );\n }\n unsubscribe(name, handler) {\n this.handlers.set(\n name,\n (this.handlers.get(name) || []).filter((h) => h !== handler)\n );\n }\n emit(name, event) {\n (this.handlers.get(name) || []).forEach((h) => {\n try {\n h(event);\n } catch (e) {\n console.error(\"could not invoke event listener\", e);\n }\n });\n }\n}\nlet bus = null;\nfunction getBus() {\n if (bus !== null) {\n return bus;\n }\n if (typeof window === \"undefined\") {\n return new Proxy({}, {\n get: () => {\n return () => console.error(\n \"Window not available, EventBus can not be established!\"\n );\n }\n });\n }\n if (window.OC?._eventBus && typeof window._nc_event_bus === \"undefined\") {\n console.warn(\n \"found old event bus instance at OC._eventBus. Update your version!\"\n );\n window._nc_event_bus = window.OC._eventBus;\n }\n if (typeof window?._nc_event_bus !== \"undefined\") {\n bus = new ProxyBus(window._nc_event_bus);\n } else {\n bus = window._nc_event_bus = new SimpleBus();\n }\n return bus;\n}\nfunction emit(name, event) {\n getBus().emit(name, event);\n}\n/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nclass FileListFilter extends TypedEventTarget {\n id;\n order;\n constructor(id, order = 100) {\n super();\n this.id = id;\n this.order = order;\n }\n filter(nodes) {\n throw new Error(\"Not implemented\");\n }\n updateChips(chips) {\n this.dispatchTypedEvent(\"update:chips\", new CustomEvent(\"update:chips\", { detail: chips }));\n }\n filterUpdated() {\n this.dispatchTypedEvent(\"update:filter\", new CustomEvent(\"update:filter\"));\n }\n}\nfunction registerFileListFilter(filter) {\n if (!window._nc_filelist_filters) {\n window._nc_filelist_filters = /* @__PURE__ */ new Map();\n }\n if (window._nc_filelist_filters.has(filter.id)) {\n throw new Error(`File list filter \"${filter.id}\" already registered`);\n }\n window._nc_filelist_filters.set(filter.id, filter);\n emit(\"files:filter:added\", filter);\n}\nfunction unregisterFileListFilter(filterId) {\n if (window._nc_filelist_filters && window._nc_filelist_filters.has(filterId)) {\n window._nc_filelist_filters.delete(filterId);\n emit(\"files:filter:removed\", filterId);\n }\n}\nfunction getFileListFilters() {\n if (!window._nc_filelist_filters) {\n return [];\n }\n return [...window._nc_filelist_filters.values()];\n}\nconst addNewFileMenuEntry = function(entry) {\n const newFileMenu = getNewFileMenu();\n return newFileMenu.registerEntry(entry);\n};\nconst removeNewFileMenuEntry = function(entry) {\n const newFileMenu = getNewFileMenu();\n return newFileMenu.unregisterEntry(entry);\n};\nconst getNewFileMenuEntries = function(context) {\n const newFileMenu = getNewFileMenu();\n return newFileMenu.getEntries(context).sort((a, b) => {\n if (a.order !== void 0 && b.order !== void 0 && a.order !== b.order) {\n return a.order - b.order;\n }\n return a.displayName.localeCompare(b.displayName, void 0, { numeric: true, sensitivity: \"base\" });\n });\n};\nexport {\n Column,\n DefaultType,\n File,\n FileAction,\n FileListFilter,\n FileType,\n FilesSortingMode,\n Folder,\n Header,\n InvalidFilenameError,\n InvalidFilenameErrorReason,\n Navigation,\n NewMenuEntryCategory,\n Node,\n NodeStatus,\n Permission,\n View,\n addNewFileMenuEntry,\n davGetClient,\n davGetDefaultPropfind,\n davGetFavoritesReport,\n davGetRecentSearch,\n davGetRemoteURL,\n davGetRootPath,\n davParsePermissions,\n davRemoteURL,\n davResultToNode,\n davRootPath,\n defaultDavNamespaces,\n defaultDavProperties,\n formatFileSize,\n getDavNameSpaces,\n getDavProperties,\n getFavoriteNodes,\n getFileActions,\n getFileListFilters,\n getFileListHeaders,\n getNavigation,\n getNewFileMenuEntries,\n getUniqueName,\n isFilenameValid,\n orderBy,\n parseFileSize,\n registerDavProperty,\n registerFileAction,\n registerFileListFilter,\n registerFileListHeaders,\n removeNewFileMenuEntry,\n sortNodes,\n unregisterFileListFilter,\n validateFilename\n};\n","// Current version.\nexport var VERSION = '1.13.7';\n\n// Establish the root object, `window` (`self`) in the browser, `global`\n// on the server, or `this` in some virtual machines. We use `self`\n// instead of `window` for `WebWorker` support.\nexport var root = (typeof self == 'object' && self.self === self && self) ||\n (typeof global == 'object' && global.global === global && global) ||\n Function('return this')() ||\n {};\n\n// Save bytes in the minified (but not gzipped) version:\nexport var ArrayProto = Array.prototype, ObjProto = Object.prototype;\nexport var SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null;\n\n// Create quick reference variables for speed access to core prototypes.\nexport var push = ArrayProto.push,\n slice = ArrayProto.slice,\n toString = ObjProto.toString,\n hasOwnProperty = ObjProto.hasOwnProperty;\n\n// Modern feature detection.\nexport var supportsArrayBuffer = typeof ArrayBuffer !== 'undefined',\n supportsDataView = typeof DataView !== 'undefined';\n\n// All **ECMAScript 5+** native function implementations that we hope to use\n// are declared here.\nexport var nativeIsArray = Array.isArray,\n nativeKeys = Object.keys,\n nativeCreate = Object.create,\n nativeIsView = supportsArrayBuffer && ArrayBuffer.isView;\n\n// Create references to these builtin functions because we override them.\nexport var _isNaN = isNaN,\n _isFinite = isFinite;\n\n// Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed.\nexport var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString');\nexport var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString',\n 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString'];\n\n// The largest integer that can be represented exactly.\nexport var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1;\n","// Some functions take a variable number of arguments, or a few expected\n// arguments at the beginning and then a variable number of values to operate\n// on. This helper accumulates all remaining arguments past the function’s\n// argument length (or an explicit `startIndex`), into an array that becomes\n// the last argument. Similar to ES6’s \"rest parameter\".\nexport default function restArguments(func, startIndex) {\n startIndex = startIndex == null ? func.length - 1 : +startIndex;\n return function() {\n var length = Math.max(arguments.length - startIndex, 0),\n rest = Array(length),\n index = 0;\n for (; index < length; index++) {\n rest[index] = arguments[index + startIndex];\n }\n switch (startIndex) {\n case 0: return func.call(this, rest);\n case 1: return func.call(this, arguments[0], rest);\n case 2: return func.call(this, arguments[0], arguments[1], rest);\n }\n var args = Array(startIndex + 1);\n for (index = 0; index < startIndex; index++) {\n args[index] = arguments[index];\n }\n args[startIndex] = rest;\n return func.apply(this, args);\n };\n}\n","// Is a given variable an object?\nexport default function isObject(obj) {\n var type = typeof obj;\n return type === 'function' || (type === 'object' && !!obj);\n}\n","// Is a given value equal to null?\nexport default function isNull(obj) {\n return obj === null;\n}\n","// Is a given variable undefined?\nexport default function isUndefined(obj) {\n return obj === void 0;\n}\n","import { toString } from './_setup.js';\n\n// Is a given value a boolean?\nexport default function isBoolean(obj) {\n return obj === true || obj === false || toString.call(obj) === '[object Boolean]';\n}\n","// Is a given value a DOM element?\nexport default function isElement(obj) {\n return !!(obj && obj.nodeType === 1);\n}\n","import { toString } from './_setup.js';\n\n// Internal function for creating a `toString`-based type tester.\nexport default function tagTester(name) {\n var tag = '[object ' + name + ']';\n return function(obj) {\n return toString.call(obj) === tag;\n };\n}\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('String');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('Number');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('Date');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('RegExp');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('Error');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('Symbol');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('ArrayBuffer');\n","import tagTester from './_tagTester.js';\nimport { root } from './_setup.js';\n\nvar isFunction = tagTester('Function');\n\n// Optimize `isFunction` if appropriate. Work around some `typeof` bugs in old\n// v8, IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236).\nvar nodelist = root.document && root.document.childNodes;\nif (typeof /./ != 'function' && typeof Int8Array != 'object' && typeof nodelist != 'function') {\n isFunction = function(obj) {\n return typeof obj == 'function' || false;\n };\n}\n\nexport default isFunction;\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('Object');\n","import { supportsDataView } from './_setup.js';\nimport hasObjectTag from './_hasObjectTag.js';\n\n// In IE 10 - Edge 13, `DataView` has string tag `'[object Object]'`.\n// In IE 11, the most common among them, this problem also applies to\n// `Map`, `WeakMap` and `Set`.\n// Also, there are cases where an application can override the native\n// `DataView` object, in cases like that we can't use the constructor\n// safely and should just rely on alternate `DataView` checks\nexport var hasDataViewBug = (\n supportsDataView && (!/\\[native code\\]/.test(String(DataView)) || hasObjectTag(new DataView(new ArrayBuffer(8))))\n ),\n isIE11 = (typeof Map !== 'undefined' && hasObjectTag(new Map));\n","import tagTester from './_tagTester.js';\nimport isFunction from './isFunction.js';\nimport isArrayBuffer from './isArrayBuffer.js';\nimport { hasDataViewBug } from './_stringTagBug.js';\n\nvar isDataView = tagTester('DataView');\n\n// In IE 10 - Edge 13, we need a different heuristic\n// to determine whether an object is a `DataView`.\n// Also, in cases where the native `DataView` is\n// overridden we can't rely on the tag itself.\nfunction alternateIsDataView(obj) {\n return obj != null && isFunction(obj.getInt8) && isArrayBuffer(obj.buffer);\n}\n\nexport default (hasDataViewBug ? alternateIsDataView : isDataView);\n","import { nativeIsArray } from './_setup.js';\nimport tagTester from './_tagTester.js';\n\n// Is a given value an array?\n// Delegates to ECMA5's native `Array.isArray`.\nexport default nativeIsArray || tagTester('Array');\n","import { hasOwnProperty } from './_setup.js';\n\n// Internal function to check whether `key` is an own property name of `obj`.\nexport default function has(obj, key) {\n return obj != null && hasOwnProperty.call(obj, key);\n}\n","import tagTester from './_tagTester.js';\nimport has from './_has.js';\n\nvar isArguments = tagTester('Arguments');\n\n// Define a fallback version of the method in browsers (ahem, IE < 9), where\n// there isn't any inspectable \"Arguments\" type.\n(function() {\n if (!isArguments(arguments)) {\n isArguments = function(obj) {\n return has(obj, 'callee');\n };\n }\n}());\n\nexport default isArguments;\n","import { _isFinite } from './_setup.js';\nimport isSymbol from './isSymbol.js';\n\n// Is a given object a finite number?\nexport default function isFinite(obj) {\n return !isSymbol(obj) && _isFinite(obj) && !isNaN(parseFloat(obj));\n}\n","import { _isNaN } from './_setup.js';\nimport isNumber from './isNumber.js';\n\n// Is the given value `NaN`?\nexport default function isNaN(obj) {\n return isNumber(obj) && _isNaN(obj);\n}\n","// Predicate-generating function. Often useful outside of Underscore.\nexport default function constant(value) {\n return function() {\n return value;\n };\n}\n","import { MAX_ARRAY_INDEX } from './_setup.js';\n\n// Common internal logic for `isArrayLike` and `isBufferLike`.\nexport default function createSizePropertyCheck(getSizeProperty) {\n return function(collection) {\n var sizeProperty = getSizeProperty(collection);\n return typeof sizeProperty == 'number' && sizeProperty >= 0 && sizeProperty <= MAX_ARRAY_INDEX;\n }\n}\n","// Internal helper to generate a function to obtain property `key` from `obj`.\nexport default function shallowProperty(key) {\n return function(obj) {\n return obj == null ? void 0 : obj[key];\n };\n}\n","import shallowProperty from './_shallowProperty.js';\n\n// Internal helper to obtain the `byteLength` property of an object.\nexport default shallowProperty('byteLength');\n","import createSizePropertyCheck from './_createSizePropertyCheck.js';\nimport getByteLength from './_getByteLength.js';\n\n// Internal helper to determine whether we should spend extensive checks against\n// `ArrayBuffer` et al.\nexport default createSizePropertyCheck(getByteLength);\n","import { supportsArrayBuffer, nativeIsView, toString } from './_setup.js';\nimport isDataView from './isDataView.js';\nimport constant from './constant.js';\nimport isBufferLike from './_isBufferLike.js';\n\n// Is a given value a typed array?\nvar typedArrayPattern = /\\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\\]/;\nfunction isTypedArray(obj) {\n // `ArrayBuffer.isView` is the most future-proof, so use it when available.\n // Otherwise, fall back on the above regular expression.\n return nativeIsView ? (nativeIsView(obj) && !isDataView(obj)) :\n isBufferLike(obj) && typedArrayPattern.test(toString.call(obj));\n}\n\nexport default supportsArrayBuffer ? isTypedArray : constant(false);\n","import shallowProperty from './_shallowProperty.js';\n\n// Internal helper to obtain the `length` property of an object.\nexport default shallowProperty('length');\n","import { nonEnumerableProps, ObjProto } from './_setup.js';\nimport isFunction from './isFunction.js';\nimport has from './_has.js';\n\n// Internal helper to create a simple lookup structure.\n// `collectNonEnumProps` used to depend on `_.contains`, but this led to\n// circular imports. `emulatedSet` is a one-off solution that only works for\n// arrays of strings.\nfunction emulatedSet(keys) {\n var hash = {};\n for (var l = keys.length, i = 0; i < l; ++i) hash[keys[i]] = true;\n return {\n contains: function(key) { return hash[key] === true; },\n push: function(key) {\n hash[key] = true;\n return keys.push(key);\n }\n };\n}\n\n// Internal helper. Checks `keys` for the presence of keys in IE < 9 that won't\n// be iterated by `for key in ...` and thus missed. Extends `keys` in place if\n// needed.\nexport default function collectNonEnumProps(obj, keys) {\n keys = emulatedSet(keys);\n var nonEnumIdx = nonEnumerableProps.length;\n var constructor = obj.constructor;\n var proto = (isFunction(constructor) && constructor.prototype) || ObjProto;\n\n // Constructor is a special case.\n var prop = 'constructor';\n if (has(obj, prop) && !keys.contains(prop)) keys.push(prop);\n\n while (nonEnumIdx--) {\n prop = nonEnumerableProps[nonEnumIdx];\n if (prop in obj && obj[prop] !== proto[prop] && !keys.contains(prop)) {\n keys.push(prop);\n }\n }\n}\n","import isObject from './isObject.js';\nimport { nativeKeys, hasEnumBug } from './_setup.js';\nimport has from './_has.js';\nimport collectNonEnumProps from './_collectNonEnumProps.js';\n\n// Retrieve the names of an object's own properties.\n// Delegates to **ECMAScript 5**'s native `Object.keys`.\nexport default function keys(obj) {\n if (!isObject(obj)) return [];\n if (nativeKeys) return nativeKeys(obj);\n var keys = [];\n for (var key in obj) if (has(obj, key)) keys.push(key);\n // Ahem, IE < 9.\n if (hasEnumBug) collectNonEnumProps(obj, keys);\n return keys;\n}\n","import getLength from './_getLength.js';\nimport isArray from './isArray.js';\nimport isString from './isString.js';\nimport isArguments from './isArguments.js';\nimport keys from './keys.js';\n\n// Is a given array, string, or object empty?\n// An \"empty\" object has no enumerable own-properties.\nexport default function isEmpty(obj) {\n if (obj == null) return true;\n // Skip the more expensive `toString`-based type checks if `obj` has no\n // `.length`.\n var length = getLength(obj);\n if (typeof length == 'number' && (\n isArray(obj) || isString(obj) || isArguments(obj)\n )) return length === 0;\n return getLength(keys(obj)) === 0;\n}\n","import keys from './keys.js';\n\n// Returns whether an object has a given set of `key:value` pairs.\nexport default function isMatch(object, attrs) {\n var _keys = keys(attrs), length = _keys.length;\n if (object == null) return !length;\n var obj = Object(object);\n for (var i = 0; i < length; i++) {\n var key = _keys[i];\n if (attrs[key] !== obj[key] || !(key in obj)) return false;\n }\n return true;\n}\n","import { VERSION } from './_setup.js';\n\n// If Underscore is called as a function, it returns a wrapped object that can\n// be used OO-style. This wrapper holds altered versions of all functions added\n// through `_.mixin`. Wrapped objects may be chained.\nexport default function _(obj) {\n if (obj instanceof _) return obj;\n if (!(this instanceof _)) return new _(obj);\n this._wrapped = obj;\n}\n\n_.VERSION = VERSION;\n\n// Extracts the result from a wrapped and chained object.\n_.prototype.value = function() {\n return this._wrapped;\n};\n\n// Provide unwrapping proxies for some methods used in engine operations\n// such as arithmetic and JSON stringification.\n_.prototype.valueOf = _.prototype.toJSON = _.prototype.value;\n\n_.prototype.toString = function() {\n return String(this._wrapped);\n};\n","import getByteLength from './_getByteLength.js';\n\n// Internal function to wrap or shallow-copy an ArrayBuffer,\n// typed array or DataView to a new view, reusing the buffer.\nexport default function toBufferView(bufferSource) {\n return new Uint8Array(\n bufferSource.buffer || bufferSource,\n bufferSource.byteOffset || 0,\n getByteLength(bufferSource)\n );\n}\n","import _ from './underscore.js';\nimport { toString, SymbolProto } from './_setup.js';\nimport getByteLength from './_getByteLength.js';\nimport isTypedArray from './isTypedArray.js';\nimport isFunction from './isFunction.js';\nimport { hasDataViewBug } from './_stringTagBug.js';\nimport isDataView from './isDataView.js';\nimport keys from './keys.js';\nimport has from './_has.js';\nimport toBufferView from './_toBufferView.js';\n\n// We use this string twice, so give it a name for minification.\nvar tagDataView = '[object DataView]';\n\n// Internal recursive comparison function for `_.isEqual`.\nfunction eq(a, b, aStack, bStack) {\n // Identical objects are equal. `0 === -0`, but they aren't identical.\n // See the [Harmony `egal` proposal](https://wiki.ecmascript.org/doku.php?id=harmony:egal).\n if (a === b) return a !== 0 || 1 / a === 1 / b;\n // `null` or `undefined` only equal to itself (strict comparison).\n if (a == null || b == null) return false;\n // `NaN`s are equivalent, but non-reflexive.\n if (a !== a) return b !== b;\n // Exhaust primitive checks\n var type = typeof a;\n if (type !== 'function' && type !== 'object' && typeof b != 'object') return false;\n return deepEq(a, b, aStack, bStack);\n}\n\n// Internal recursive comparison function for `_.isEqual`.\nfunction deepEq(a, b, aStack, bStack) {\n // Unwrap any wrapped objects.\n if (a instanceof _) a = a._wrapped;\n if (b instanceof _) b = b._wrapped;\n // Compare `[[Class]]` names.\n var className = toString.call(a);\n if (className !== toString.call(b)) return false;\n // Work around a bug in IE 10 - Edge 13.\n if (hasDataViewBug && className == '[object Object]' && isDataView(a)) {\n if (!isDataView(b)) return false;\n className = tagDataView;\n }\n switch (className) {\n // These types are compared by value.\n case '[object RegExp]':\n // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i')\n case '[object String]':\n // Primitives and their corresponding object wrappers are equivalent; thus, `\"5\"` is\n // equivalent to `new String(\"5\")`.\n return '' + a === '' + b;\n case '[object Number]':\n // `NaN`s are equivalent, but non-reflexive.\n // Object(NaN) is equivalent to NaN.\n if (+a !== +a) return +b !== +b;\n // An `egal` comparison is performed for other numeric values.\n return +a === 0 ? 1 / +a === 1 / b : +a === +b;\n case '[object Date]':\n case '[object Boolean]':\n // Coerce dates and booleans to numeric primitive values. Dates are compared by their\n // millisecond representations. Note that invalid dates with millisecond representations\n // of `NaN` are not equivalent.\n return +a === +b;\n case '[object Symbol]':\n return SymbolProto.valueOf.call(a) === SymbolProto.valueOf.call(b);\n case '[object ArrayBuffer]':\n case tagDataView:\n // Coerce to typed array so we can fall through.\n return deepEq(toBufferView(a), toBufferView(b), aStack, bStack);\n }\n\n var areArrays = className === '[object Array]';\n if (!areArrays && isTypedArray(a)) {\n var byteLength = getByteLength(a);\n if (byteLength !== getByteLength(b)) return false;\n if (a.buffer === b.buffer && a.byteOffset === b.byteOffset) return true;\n areArrays = true;\n }\n if (!areArrays) {\n if (typeof a != 'object' || typeof b != 'object') return false;\n\n // Objects with different constructors are not equivalent, but `Object`s or `Array`s\n // from different frames are.\n var aCtor = a.constructor, bCtor = b.constructor;\n if (aCtor !== bCtor && !(isFunction(aCtor) && aCtor instanceof aCtor &&\n isFunction(bCtor) && bCtor instanceof bCtor)\n && ('constructor' in a && 'constructor' in b)) {\n return false;\n }\n }\n // Assume equality for cyclic structures. The algorithm for detecting cyclic\n // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.\n\n // Initializing stack of traversed objects.\n // It's done here since we only need them for objects and arrays comparison.\n aStack = aStack || [];\n bStack = bStack || [];\n var length = aStack.length;\n while (length--) {\n // Linear search. Performance is inversely proportional to the number of\n // unique nested structures.\n if (aStack[length] === a) return bStack[length] === b;\n }\n\n // Add the first object to the stack of traversed objects.\n aStack.push(a);\n bStack.push(b);\n\n // Recursively compare objects and arrays.\n if (areArrays) {\n // Compare array lengths to determine if a deep comparison is necessary.\n length = a.length;\n if (length !== b.length) return false;\n // Deep compare the contents, ignoring non-numeric properties.\n while (length--) {\n if (!eq(a[length], b[length], aStack, bStack)) return false;\n }\n } else {\n // Deep compare objects.\n var _keys = keys(a), key;\n length = _keys.length;\n // Ensure that both objects contain the same number of properties before comparing deep equality.\n if (keys(b).length !== length) return false;\n while (length--) {\n // Deep compare each member\n key = _keys[length];\n if (!(has(b, key) && eq(a[key], b[key], aStack, bStack))) return false;\n }\n }\n // Remove the first object from the stack of traversed objects.\n aStack.pop();\n bStack.pop();\n return true;\n}\n\n// Perform a deep comparison to check if two objects are equal.\nexport default function isEqual(a, b) {\n return eq(a, b);\n}\n","import isObject from './isObject.js';\nimport { hasEnumBug } from './_setup.js';\nimport collectNonEnumProps from './_collectNonEnumProps.js';\n\n// Retrieve all the enumerable property names of an object.\nexport default function allKeys(obj) {\n if (!isObject(obj)) return [];\n var keys = [];\n for (var key in obj) keys.push(key);\n // Ahem, IE < 9.\n if (hasEnumBug) collectNonEnumProps(obj, keys);\n return keys;\n}\n","import getLength from './_getLength.js';\nimport isFunction from './isFunction.js';\nimport allKeys from './allKeys.js';\n\n// Since the regular `Object.prototype.toString` type tests don't work for\n// some types in IE 11, we use a fingerprinting heuristic instead, based\n// on the methods. It's not great, but it's the best we got.\n// The fingerprint method lists are defined below.\nexport function ie11fingerprint(methods) {\n var length = getLength(methods);\n return function(obj) {\n if (obj == null) return false;\n // `Map`, `WeakMap` and `Set` have no enumerable keys.\n var keys = allKeys(obj);\n if (getLength(keys)) return false;\n for (var i = 0; i < length; i++) {\n if (!isFunction(obj[methods[i]])) return false;\n }\n // If we are testing against `WeakMap`, we need to ensure that\n // `obj` doesn't have a `forEach` method in order to distinguish\n // it from a regular `Map`.\n return methods !== weakMapMethods || !isFunction(obj[forEachName]);\n };\n}\n\n// In the interest of compact minification, we write\n// each string in the fingerprints only once.\nvar forEachName = 'forEach',\n hasName = 'has',\n commonInit = ['clear', 'delete'],\n mapTail = ['get', hasName, 'set'];\n\n// `Map`, `WeakMap` and `Set` each have slightly different\n// combinations of the above sublists.\nexport var mapMethods = commonInit.concat(forEachName, mapTail),\n weakMapMethods = commonInit.concat(mapTail),\n setMethods = ['add'].concat(commonInit, forEachName, hasName);\n","import tagTester from './_tagTester.js';\nimport { isIE11 } from './_stringTagBug.js';\nimport { ie11fingerprint, mapMethods } from './_methodFingerprint.js';\n\nexport default isIE11 ? ie11fingerprint(mapMethods) : tagTester('Map');\n","import tagTester from './_tagTester.js';\nimport { isIE11 } from './_stringTagBug.js';\nimport { ie11fingerprint, weakMapMethods } from './_methodFingerprint.js';\n\nexport default isIE11 ? ie11fingerprint(weakMapMethods) : tagTester('WeakMap');\n","import tagTester from './_tagTester.js';\nimport { isIE11 } from './_stringTagBug.js';\nimport { ie11fingerprint, setMethods } from './_methodFingerprint.js';\n\nexport default isIE11 ? ie11fingerprint(setMethods) : tagTester('Set');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('WeakSet');\n","import keys from './keys.js';\n\n// Retrieve the values of an object's properties.\nexport default function values(obj) {\n var _keys = keys(obj);\n var length = _keys.length;\n var values = Array(length);\n for (var i = 0; i < length; i++) {\n values[i] = obj[_keys[i]];\n }\n return values;\n}\n","import keys from './keys.js';\n\n// Convert an object into a list of `[key, value]` pairs.\n// The opposite of `_.object` with one argument.\nexport default function pairs(obj) {\n var _keys = keys(obj);\n var length = _keys.length;\n var pairs = Array(length);\n for (var i = 0; i < length; i++) {\n pairs[i] = [_keys[i], obj[_keys[i]]];\n }\n return pairs;\n}\n","import keys from './keys.js';\n\n// Invert the keys and values of an object. The values must be serializable.\nexport default function invert(obj) {\n var result = {};\n var _keys = keys(obj);\n for (var i = 0, length = _keys.length; i < length; i++) {\n result[obj[_keys[i]]] = _keys[i];\n }\n return result;\n}\n","import isFunction from './isFunction.js';\n\n// Return a sorted list of the function names available on the object.\nexport default function functions(obj) {\n var names = [];\n for (var key in obj) {\n if (isFunction(obj[key])) names.push(key);\n }\n return names.sort();\n}\n","// An internal function for creating assigner functions.\nexport default function createAssigner(keysFunc, defaults) {\n return function(obj) {\n var length = arguments.length;\n if (defaults) obj = Object(obj);\n if (length < 2 || obj == null) return obj;\n for (var index = 1; index < length; index++) {\n var source = arguments[index],\n keys = keysFunc(source),\n l = keys.length;\n for (var i = 0; i < l; i++) {\n var key = keys[i];\n if (!defaults || obj[key] === void 0) obj[key] = source[key];\n }\n }\n return obj;\n };\n}\n","import createAssigner from './_createAssigner.js';\nimport allKeys from './allKeys.js';\n\n// Extend a given object with all the properties in passed-in object(s).\nexport default createAssigner(allKeys);\n","import createAssigner from './_createAssigner.js';\nimport keys from './keys.js';\n\n// Assigns a given object with all the own properties in the passed-in\n// object(s).\n// (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign)\nexport default createAssigner(keys);\n","import createAssigner from './_createAssigner.js';\nimport allKeys from './allKeys.js';\n\n// Fill in a given object with default properties.\nexport default createAssigner(allKeys, true);\n","import isObject from './isObject.js';\nimport { nativeCreate } from './_setup.js';\n\n// Create a naked function reference for surrogate-prototype-swapping.\nfunction ctor() {\n return function(){};\n}\n\n// An internal function for creating a new object that inherits from another.\nexport default function baseCreate(prototype) {\n if (!isObject(prototype)) return {};\n if (nativeCreate) return nativeCreate(prototype);\n var Ctor = ctor();\n Ctor.prototype = prototype;\n var result = new Ctor;\n Ctor.prototype = null;\n return result;\n}\n","import baseCreate from './_baseCreate.js';\nimport extendOwn from './extendOwn.js';\n\n// Creates an object that inherits from the given prototype object.\n// If additional properties are provided then they will be added to the\n// created object.\nexport default function create(prototype, props) {\n var result = baseCreate(prototype);\n if (props) extendOwn(result, props);\n return result;\n}\n","import isObject from './isObject.js';\nimport isArray from './isArray.js';\nimport extend from './extend.js';\n\n// Create a (shallow-cloned) duplicate of an object.\nexport default function clone(obj) {\n if (!isObject(obj)) return obj;\n return isArray(obj) ? obj.slice() : extend({}, obj);\n}\n","// Invokes `interceptor` with the `obj` and then returns `obj`.\n// The primary purpose of this method is to \"tap into\" a method chain, in\n// order to perform operations on intermediate results within the chain.\nexport default function tap(obj, interceptor) {\n interceptor(obj);\n return obj;\n}\n","import _ from './underscore.js';\nimport isArray from './isArray.js';\n\n// Normalize a (deep) property `path` to array.\n// Like `_.iteratee`, this function can be customized.\nexport default function toPath(path) {\n return isArray(path) ? path : [path];\n}\n_.toPath = toPath;\n","import _ from './underscore.js';\nimport './toPath.js';\n\n// Internal wrapper for `_.toPath` to enable minification.\n// Similar to `cb` for `_.iteratee`.\nexport default function toPath(path) {\n return _.toPath(path);\n}\n","// Internal function to obtain a nested property in `obj` along `path`.\nexport default function deepGet(obj, path) {\n var length = path.length;\n for (var i = 0; i < length; i++) {\n if (obj == null) return void 0;\n obj = obj[path[i]];\n }\n return length ? obj : void 0;\n}\n","import toPath from './_toPath.js';\nimport deepGet from './_deepGet.js';\nimport isUndefined from './isUndefined.js';\n\n// Get the value of the (deep) property on `path` from `object`.\n// If any property in `path` does not exist or if the value is\n// `undefined`, return `defaultValue` instead.\n// The `path` is normalized through `_.toPath`.\nexport default function get(object, path, defaultValue) {\n var value = deepGet(object, toPath(path));\n return isUndefined(value) ? defaultValue : value;\n}\n","import _has from './_has.js';\nimport toPath from './_toPath.js';\n\n// Shortcut function for checking if an object has a given property directly on\n// itself (in other words, not on a prototype). Unlike the internal `has`\n// function, this public version can also traverse nested properties.\nexport default function has(obj, path) {\n path = toPath(path);\n var length = path.length;\n for (var i = 0; i < length; i++) {\n var key = path[i];\n if (!_has(obj, key)) return false;\n obj = obj[key];\n }\n return !!length;\n}\n","// Keep the identity function around for default iteratees.\nexport default function identity(value) {\n return value;\n}\n","import extendOwn from './extendOwn.js';\nimport isMatch from './isMatch.js';\n\n// Returns a predicate for checking whether an object has a given set of\n// `key:value` pairs.\nexport default function matcher(attrs) {\n attrs = extendOwn({}, attrs);\n return function(obj) {\n return isMatch(obj, attrs);\n };\n}\n","import deepGet from './_deepGet.js';\nimport toPath from './_toPath.js';\n\n// Creates a function that, when passed an object, will traverse that object’s\n// properties down the given `path`, specified as an array of keys or indices.\nexport default function property(path) {\n path = toPath(path);\n return function(obj) {\n return deepGet(obj, path);\n };\n}\n","// Internal function that returns an efficient (for current engines) version\n// of the passed-in callback, to be repeatedly applied in other Underscore\n// functions.\nexport default function optimizeCb(func, context, argCount) {\n if (context === void 0) return func;\n switch (argCount == null ? 3 : argCount) {\n case 1: return function(value) {\n return func.call(context, value);\n };\n // The 2-argument case is omitted because we’re not using it.\n case 3: return function(value, index, collection) {\n return func.call(context, value, index, collection);\n };\n case 4: return function(accumulator, value, index, collection) {\n return func.call(context, accumulator, value, index, collection);\n };\n }\n return function() {\n return func.apply(context, arguments);\n };\n}\n","import identity from './identity.js';\nimport isFunction from './isFunction.js';\nimport isObject from './isObject.js';\nimport isArray from './isArray.js';\nimport matcher from './matcher.js';\nimport property from './property.js';\nimport optimizeCb from './_optimizeCb.js';\n\n// An internal function to generate callbacks that can be applied to each\n// element in a collection, returning the desired result — either `_.identity`,\n// an arbitrary callback, a property matcher, or a property accessor.\nexport default function baseIteratee(value, context, argCount) {\n if (value == null) return identity;\n if (isFunction(value)) return optimizeCb(value, context, argCount);\n if (isObject(value) && !isArray(value)) return matcher(value);\n return property(value);\n}\n","import _ from './underscore.js';\nimport baseIteratee from './_baseIteratee.js';\n\n// External wrapper for our callback generator. Users may customize\n// `_.iteratee` if they want additional predicate/iteratee shorthand styles.\n// This abstraction hides the internal-only `argCount` argument.\nexport default function iteratee(value, context) {\n return baseIteratee(value, context, Infinity);\n}\n_.iteratee = iteratee;\n","import _ from './underscore.js';\nimport baseIteratee from './_baseIteratee.js';\nimport iteratee from './iteratee.js';\n\n// The function we call internally to generate a callback. It invokes\n// `_.iteratee` if overridden, otherwise `baseIteratee`.\nexport default function cb(value, context, argCount) {\n if (_.iteratee !== iteratee) return _.iteratee(value, context);\n return baseIteratee(value, context, argCount);\n}\n","import cb from './_cb.js';\nimport keys from './keys.js';\n\n// Returns the results of applying the `iteratee` to each element of `obj`.\n// In contrast to `_.map` it returns an object.\nexport default function mapObject(obj, iteratee, context) {\n iteratee = cb(iteratee, context);\n var _keys = keys(obj),\n length = _keys.length,\n results = {};\n for (var index = 0; index < length; index++) {\n var currentKey = _keys[index];\n results[currentKey] = iteratee(obj[currentKey], currentKey, obj);\n }\n return results;\n}\n","// Predicate-generating function. Often useful outside of Underscore.\nexport default function noop(){}\n","import noop from './noop.js';\nimport get from './get.js';\n\n// Generates a function for a given object that returns a given property.\nexport default function propertyOf(obj) {\n if (obj == null) return noop;\n return function(path) {\n return get(obj, path);\n };\n}\n","import optimizeCb from './_optimizeCb.js';\n\n// Run a function **n** times.\nexport default function times(n, iteratee, context) {\n var accum = Array(Math.max(0, n));\n iteratee = optimizeCb(iteratee, context, 1);\n for (var i = 0; i < n; i++) accum[i] = iteratee(i);\n return accum;\n}\n","// Return a random integer between `min` and `max` (inclusive).\nexport default function random(min, max) {\n if (max == null) {\n max = min;\n min = 0;\n }\n return min + Math.floor(Math.random() * (max - min + 1));\n}\n","// A (possibly faster) way to get the current timestamp as an integer.\nexport default Date.now || function() {\n return new Date().getTime();\n};\n","import keys from './keys.js';\n\n// Internal helper to generate functions for escaping and unescaping strings\n// to/from HTML interpolation.\nexport default function createEscaper(map) {\n var escaper = function(match) {\n return map[match];\n };\n // Regexes for identifying a key that needs to be escaped.\n var source = '(?:' + keys(map).join('|') + ')';\n var testRegexp = RegExp(source);\n var replaceRegexp = RegExp(source, 'g');\n return function(string) {\n string = string == null ? '' : '' + string;\n return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string;\n };\n}\n","// Internal list of HTML entities for escaping.\nexport default {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '`': '`'\n};\n","import createEscaper from './_createEscaper.js';\nimport escapeMap from './_escapeMap.js';\n\n// Function for escaping strings to HTML interpolation.\nexport default createEscaper(escapeMap);\n","import createEscaper from './_createEscaper.js';\nimport unescapeMap from './_unescapeMap.js';\n\n// Function for unescaping strings from HTML interpolation.\nexport default createEscaper(unescapeMap);\n","import invert from './invert.js';\nimport escapeMap from './_escapeMap.js';\n\n// Internal list of HTML entities for unescaping.\nexport default invert(escapeMap);\n","import _ from './underscore.js';\n\n// By default, Underscore uses ERB-style template delimiters. Change the\n// following template settings to use alternative delimiters.\nexport default _.templateSettings = {\n evaluate: /<%([\\s\\S]+?)%>/g,\n interpolate: /<%=([\\s\\S]+?)%>/g,\n escape: /<%-([\\s\\S]+?)%>/g\n};\n","import defaults from './defaults.js';\nimport _ from './underscore.js';\nimport './templateSettings.js';\n\n// When customizing `_.templateSettings`, if you don't want to define an\n// interpolation, evaluation or escaping regex, we need one that is\n// guaranteed not to match.\nvar noMatch = /(.)^/;\n\n// Certain characters need to be escaped so that they can be put into a\n// string literal.\nvar escapes = {\n \"'\": \"'\",\n '\\\\': '\\\\',\n '\\r': 'r',\n '\\n': 'n',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n};\n\nvar escapeRegExp = /\\\\|'|\\r|\\n|\\u2028|\\u2029/g;\n\nfunction escapeChar(match) {\n return '\\\\' + escapes[match];\n}\n\n// In order to prevent third-party code injection through\n// `_.templateSettings.variable`, we test it against the following regular\n// expression. It is intentionally a bit more liberal than just matching valid\n// identifiers, but still prevents possible loopholes through defaults or\n// destructuring assignment.\nvar bareIdentifier = /^\\s*(\\w|\\$)+\\s*$/;\n\n// JavaScript micro-templating, similar to John Resig's implementation.\n// Underscore templating handles arbitrary delimiters, preserves whitespace,\n// and correctly escapes quotes within interpolated code.\n// NB: `oldSettings` only exists for backwards compatibility.\nexport default function template(text, settings, oldSettings) {\n if (!settings && oldSettings) settings = oldSettings;\n settings = defaults({}, settings, _.templateSettings);\n\n // Combine delimiters into one regular expression via alternation.\n var matcher = RegExp([\n (settings.escape || noMatch).source,\n (settings.interpolate || noMatch).source,\n (settings.evaluate || noMatch).source\n ].join('|') + '|$', 'g');\n\n // Compile the template source, escaping string literals appropriately.\n var index = 0;\n var source = \"__p+='\";\n text.replace(matcher, function(match, escape, interpolate, evaluate, offset) {\n source += text.slice(index, offset).replace(escapeRegExp, escapeChar);\n index = offset + match.length;\n\n if (escape) {\n source += \"'+\\n((__t=(\" + escape + \"))==null?'':_.escape(__t))+\\n'\";\n } else if (interpolate) {\n source += \"'+\\n((__t=(\" + interpolate + \"))==null?'':__t)+\\n'\";\n } else if (evaluate) {\n source += \"';\\n\" + evaluate + \"\\n__p+='\";\n }\n\n // Adobe VMs need the match returned to produce the correct offset.\n return match;\n });\n source += \"';\\n\";\n\n var argument = settings.variable;\n if (argument) {\n // Insure against third-party code injection. (CVE-2021-23358)\n if (!bareIdentifier.test(argument)) throw new Error(\n 'variable is not a bare identifier: ' + argument\n );\n } else {\n // If a variable is not specified, place data values in local scope.\n source = 'with(obj||{}){\\n' + source + '}\\n';\n argument = 'obj';\n }\n\n source = \"var __t,__p='',__j=Array.prototype.join,\" +\n \"print=function(){__p+=__j.call(arguments,'');};\\n\" +\n source + 'return __p;\\n';\n\n var render;\n try {\n render = new Function(argument, '_', source);\n } catch (e) {\n e.source = source;\n throw e;\n }\n\n var template = function(data) {\n return render.call(this, data, _);\n };\n\n // Provide the compiled source as a convenience for precompilation.\n template.source = 'function(' + argument + '){\\n' + source + '}';\n\n return template;\n}\n","import isFunction from './isFunction.js';\nimport toPath from './_toPath.js';\n\n// Traverses the children of `obj` along `path`. If a child is a function, it\n// is invoked with its parent as context. Returns the value of the final\n// child, or `fallback` if any child is undefined.\nexport default function result(obj, path, fallback) {\n path = toPath(path);\n var length = path.length;\n if (!length) {\n return isFunction(fallback) ? fallback.call(obj) : fallback;\n }\n for (var i = 0; i < length; i++) {\n var prop = obj == null ? void 0 : obj[path[i]];\n if (prop === void 0) {\n prop = fallback;\n i = length; // Ensure we don't continue iterating.\n }\n obj = isFunction(prop) ? prop.call(obj) : prop;\n }\n return obj;\n}\n","// Generate a unique integer id (unique within the entire client session).\n// Useful for temporary DOM ids.\nvar idCounter = 0;\nexport default function uniqueId(prefix) {\n var id = ++idCounter + '';\n return prefix ? prefix + id : id;\n}\n","import _ from './underscore.js';\n\n// Start chaining a wrapped Underscore object.\nexport default function chain(obj) {\n var instance = _(obj);\n instance._chain = true;\n return instance;\n}\n","import baseCreate from './_baseCreate.js';\nimport isObject from './isObject.js';\n\n// Internal function to execute `sourceFunc` bound to `context` with optional\n// `args`. Determines whether to execute a function as a constructor or as a\n// normal function.\nexport default function executeBound(sourceFunc, boundFunc, context, callingContext, args) {\n if (!(callingContext instanceof boundFunc)) return sourceFunc.apply(context, args);\n var self = baseCreate(sourceFunc.prototype);\n var result = sourceFunc.apply(self, args);\n if (isObject(result)) return result;\n return self;\n}\n","import restArguments from './restArguments.js';\nimport executeBound from './_executeBound.js';\nimport _ from './underscore.js';\n\n// Partially apply a function by creating a version that has had some of its\n// arguments pre-filled, without changing its dynamic `this` context. `_` acts\n// as a placeholder by default, allowing any combination of arguments to be\n// pre-filled. Set `_.partial.placeholder` for a custom placeholder argument.\nvar partial = restArguments(function(func, boundArgs) {\n var placeholder = partial.placeholder;\n var bound = function() {\n var position = 0, length = boundArgs.length;\n var args = Array(length);\n for (var i = 0; i < length; i++) {\n args[i] = boundArgs[i] === placeholder ? arguments[position++] : boundArgs[i];\n }\n while (position < arguments.length) args.push(arguments[position++]);\n return executeBound(func, bound, this, this, args);\n };\n return bound;\n});\n\npartial.placeholder = _;\nexport default partial;\n","import restArguments from './restArguments.js';\nimport isFunction from './isFunction.js';\nimport executeBound from './_executeBound.js';\n\n// Create a function bound to a given object (assigning `this`, and arguments,\n// optionally).\nexport default restArguments(function(func, context, args) {\n if (!isFunction(func)) throw new TypeError('Bind must be called on a function');\n var bound = restArguments(function(callArgs) {\n return executeBound(func, bound, context, this, args.concat(callArgs));\n });\n return bound;\n});\n","import createSizePropertyCheck from './_createSizePropertyCheck.js';\nimport getLength from './_getLength.js';\n\n// Internal helper for collection methods to determine whether a collection\n// should be iterated as an array or as an object.\n// Related: https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength\n// Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094\nexport default createSizePropertyCheck(getLength);\n","import getLength from './_getLength.js';\nimport isArrayLike from './_isArrayLike.js';\nimport isArray from './isArray.js';\nimport isArguments from './isArguments.js';\n\n// Internal implementation of a recursive `flatten` function.\nexport default function flatten(input, depth, strict, output) {\n output = output || [];\n if (!depth && depth !== 0) {\n depth = Infinity;\n } else if (depth <= 0) {\n return output.concat(input);\n }\n var idx = output.length;\n for (var i = 0, length = getLength(input); i < length; i++) {\n var value = input[i];\n if (isArrayLike(value) && (isArray(value) || isArguments(value))) {\n // Flatten current level of array or arguments object.\n if (depth > 1) {\n flatten(value, depth - 1, strict, output);\n idx = output.length;\n } else {\n var j = 0, len = value.length;\n while (j < len) output[idx++] = value[j++];\n }\n } else if (!strict) {\n output[idx++] = value;\n }\n }\n return output;\n}\n","import restArguments from './restArguments.js';\nimport flatten from './_flatten.js';\nimport bind from './bind.js';\n\n// Bind a number of an object's methods to that object. Remaining arguments\n// are the method names to be bound. Useful for ensuring that all callbacks\n// defined on an object belong to it.\nexport default restArguments(function(obj, keys) {\n keys = flatten(keys, false, false);\n var index = keys.length;\n if (index < 1) throw new Error('bindAll must be passed function names');\n while (index--) {\n var key = keys[index];\n obj[key] = bind(obj[key], obj);\n }\n return obj;\n});\n","import has from './_has.js';\n\n// Memoize an expensive function by storing its results.\nexport default function memoize(func, hasher) {\n var memoize = function(key) {\n var cache = memoize.cache;\n var address = '' + (hasher ? hasher.apply(this, arguments) : key);\n if (!has(cache, address)) cache[address] = func.apply(this, arguments);\n return cache[address];\n };\n memoize.cache = {};\n return memoize;\n}\n","import restArguments from './restArguments.js';\n\n// Delays a function for the given number of milliseconds, and then calls\n// it with the arguments supplied.\nexport default restArguments(function(func, wait, args) {\n return setTimeout(function() {\n return func.apply(null, args);\n }, wait);\n});\n","import partial from './partial.js';\nimport delay from './delay.js';\nimport _ from './underscore.js';\n\n// Defers a function, scheduling it to run after the current call stack has\n// cleared.\nexport default partial(delay, _, 1);\n","import now from './now.js';\n\n// Returns a function, that, when invoked, will only be triggered at most once\n// during a given window of time. Normally, the throttled function will run\n// as much as it can, without ever going more than once per `wait` duration;\n// but if you'd like to disable the execution on the leading edge, pass\n// `{leading: false}`. To disable execution on the trailing edge, ditto.\nexport default function throttle(func, wait, options) {\n var timeout, context, args, result;\n var previous = 0;\n if (!options) options = {};\n\n var later = function() {\n previous = options.leading === false ? 0 : now();\n timeout = null;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n };\n\n var throttled = function() {\n var _now = now();\n if (!previous && options.leading === false) previous = _now;\n var remaining = wait - (_now - previous);\n context = this;\n args = arguments;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = _now;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n return result;\n };\n\n throttled.cancel = function() {\n clearTimeout(timeout);\n previous = 0;\n timeout = context = args = null;\n };\n\n return throttled;\n}\n","import restArguments from './restArguments.js';\nimport now from './now.js';\n\n// When a sequence of calls of the returned function ends, the argument\n// function is triggered. The end of a sequence is defined by the `wait`\n// parameter. If `immediate` is passed, the argument function will be\n// triggered at the beginning of the sequence instead of at the end.\nexport default function debounce(func, wait, immediate) {\n var timeout, previous, args, result, context;\n\n var later = function() {\n var passed = now() - previous;\n if (wait > passed) {\n timeout = setTimeout(later, wait - passed);\n } else {\n timeout = null;\n if (!immediate) result = func.apply(context, args);\n // This check is needed because `func` can recursively invoke `debounced`.\n if (!timeout) args = context = null;\n }\n };\n\n var debounced = restArguments(function(_args) {\n context = this;\n args = _args;\n previous = now();\n if (!timeout) {\n timeout = setTimeout(later, wait);\n if (immediate) result = func.apply(context, args);\n }\n return result;\n });\n\n debounced.cancel = function() {\n clearTimeout(timeout);\n timeout = args = context = null;\n };\n\n return debounced;\n}\n","import partial from './partial.js';\n\n// Returns the first function passed as an argument to the second,\n// allowing you to adjust arguments, run code before and after, and\n// conditionally execute the original function.\nexport default function wrap(func, wrapper) {\n return partial(wrapper, func);\n}\n","// Returns a negated version of the passed-in predicate.\nexport default function negate(predicate) {\n return function() {\n return !predicate.apply(this, arguments);\n };\n}\n","// Returns a function that is the composition of a list of functions, each\n// consuming the return value of the function that follows.\nexport default function compose() {\n var args = arguments;\n var start = args.length - 1;\n return function() {\n var i = start;\n var result = args[start].apply(this, arguments);\n while (i--) result = args[i].call(this, result);\n return result;\n };\n}\n","// Returns a function that will only be executed on and after the Nth call.\nexport default function after(times, func) {\n return function() {\n if (--times < 1) {\n return func.apply(this, arguments);\n }\n };\n}\n","// Returns a function that will only be executed up to (but not including) the\n// Nth call.\nexport default function before(times, func) {\n var memo;\n return function() {\n if (--times > 0) {\n memo = func.apply(this, arguments);\n }\n if (times <= 1) func = null;\n return memo;\n };\n}\n","import partial from './partial.js';\nimport before from './before.js';\n\n// Returns a function that will be executed at most one time, no matter how\n// often you call it. Useful for lazy initialization.\nexport default partial(before, 2);\n","import cb from './_cb.js';\nimport keys from './keys.js';\n\n// Returns the first key on an object that passes a truth test.\nexport default function findKey(obj, predicate, context) {\n predicate = cb(predicate, context);\n var _keys = keys(obj), key;\n for (var i = 0, length = _keys.length; i < length; i++) {\n key = _keys[i];\n if (predicate(obj[key], key, obj)) return key;\n }\n}\n","import cb from './_cb.js';\nimport getLength from './_getLength.js';\n\n// Internal function to generate `_.findIndex` and `_.findLastIndex`.\nexport default function createPredicateIndexFinder(dir) {\n return function(array, predicate, context) {\n predicate = cb(predicate, context);\n var length = getLength(array);\n var index = dir > 0 ? 0 : length - 1;\n for (; index >= 0 && index < length; index += dir) {\n if (predicate(array[index], index, array)) return index;\n }\n return -1;\n };\n}\n","import createPredicateIndexFinder from './_createPredicateIndexFinder.js';\n\n// Returns the first index on an array-like that passes a truth test.\nexport default createPredicateIndexFinder(1);\n","import createPredicateIndexFinder from './_createPredicateIndexFinder.js';\n\n// Returns the last index on an array-like that passes a truth test.\nexport default createPredicateIndexFinder(-1);\n","import cb from './_cb.js';\nimport getLength from './_getLength.js';\n\n// Use a comparator function to figure out the smallest index at which\n// an object should be inserted so as to maintain order. Uses binary search.\nexport default function sortedIndex(array, obj, iteratee, context) {\n iteratee = cb(iteratee, context, 1);\n var value = iteratee(obj);\n var low = 0, high = getLength(array);\n while (low < high) {\n var mid = Math.floor((low + high) / 2);\n if (iteratee(array[mid]) < value) low = mid + 1; else high = mid;\n }\n return low;\n}\n","import getLength from './_getLength.js';\nimport { slice } from './_setup.js';\nimport isNaN from './isNaN.js';\n\n// Internal function to generate the `_.indexOf` and `_.lastIndexOf` functions.\nexport default function createIndexFinder(dir, predicateFind, sortedIndex) {\n return function(array, item, idx) {\n var i = 0, length = getLength(array);\n if (typeof idx == 'number') {\n if (dir > 0) {\n i = idx >= 0 ? idx : Math.max(idx + length, i);\n } else {\n length = idx >= 0 ? Math.min(idx + 1, length) : idx + length + 1;\n }\n } else if (sortedIndex && idx && length) {\n idx = sortedIndex(array, item);\n return array[idx] === item ? idx : -1;\n }\n if (item !== item) {\n idx = predicateFind(slice.call(array, i, length), isNaN);\n return idx >= 0 ? idx + i : -1;\n }\n for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) {\n if (array[idx] === item) return idx;\n }\n return -1;\n };\n}\n","import sortedIndex from './sortedIndex.js';\nimport findIndex from './findIndex.js';\nimport createIndexFinder from './_createIndexFinder.js';\n\n// Return the position of the first occurrence of an item in an array,\n// or -1 if the item is not included in the array.\n// If the array is large and already in sort order, pass `true`\n// for **isSorted** to use binary search.\nexport default createIndexFinder(1, findIndex, sortedIndex);\n","import findLastIndex from './findLastIndex.js';\nimport createIndexFinder from './_createIndexFinder.js';\n\n// Return the position of the last occurrence of an item in an array,\n// or -1 if the item is not included in the array.\nexport default createIndexFinder(-1, findLastIndex);\n","import isArrayLike from './_isArrayLike.js';\nimport findIndex from './findIndex.js';\nimport findKey from './findKey.js';\n\n// Return the first value which passes a truth test.\nexport default function find(obj, predicate, context) {\n var keyFinder = isArrayLike(obj) ? findIndex : findKey;\n var key = keyFinder(obj, predicate, context);\n if (key !== void 0 && key !== -1) return obj[key];\n}\n","import find from './find.js';\nimport matcher from './matcher.js';\n\n// Convenience version of a common use case of `_.find`: getting the first\n// object containing specific `key:value` pairs.\nexport default function findWhere(obj, attrs) {\n return find(obj, matcher(attrs));\n}\n","import optimizeCb from './_optimizeCb.js';\nimport isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// The cornerstone for collection functions, an `each`\n// implementation, aka `forEach`.\n// Handles raw objects in addition to array-likes. Treats all\n// sparse array-likes as if they were dense.\nexport default function each(obj, iteratee, context) {\n iteratee = optimizeCb(iteratee, context);\n var i, length;\n if (isArrayLike(obj)) {\n for (i = 0, length = obj.length; i < length; i++) {\n iteratee(obj[i], i, obj);\n }\n } else {\n var _keys = keys(obj);\n for (i = 0, length = _keys.length; i < length; i++) {\n iteratee(obj[_keys[i]], _keys[i], obj);\n }\n }\n return obj;\n}\n","import cb from './_cb.js';\nimport isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// Return the results of applying the iteratee to each element.\nexport default function map(obj, iteratee, context) {\n iteratee = cb(iteratee, context);\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length,\n results = Array(length);\n for (var index = 0; index < length; index++) {\n var currentKey = _keys ? _keys[index] : index;\n results[index] = iteratee(obj[currentKey], currentKey, obj);\n }\n return results;\n}\n","import isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\nimport optimizeCb from './_optimizeCb.js';\n\n// Internal helper to create a reducing function, iterating left or right.\nexport default function createReduce(dir) {\n // Wrap code that reassigns argument variables in a separate function than\n // the one that accesses `arguments.length` to avoid a perf hit. (#1991)\n var reducer = function(obj, iteratee, memo, initial) {\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length,\n index = dir > 0 ? 0 : length - 1;\n if (!initial) {\n memo = obj[_keys ? _keys[index] : index];\n index += dir;\n }\n for (; index >= 0 && index < length; index += dir) {\n var currentKey = _keys ? _keys[index] : index;\n memo = iteratee(memo, obj[currentKey], currentKey, obj);\n }\n return memo;\n };\n\n return function(obj, iteratee, memo, context) {\n var initial = arguments.length >= 3;\n return reducer(obj, optimizeCb(iteratee, context, 4), memo, initial);\n };\n}\n","import createReduce from './_createReduce.js';\n\n// **Reduce** builds up a single result from a list of values, aka `inject`,\n// or `foldl`.\nexport default createReduce(1);\n","import createReduce from './_createReduce.js';\n\n// The right-associative version of reduce, also known as `foldr`.\nexport default createReduce(-1);\n","import cb from './_cb.js';\nimport each from './each.js';\n\n// Return all the elements that pass a truth test.\nexport default function filter(obj, predicate, context) {\n var results = [];\n predicate = cb(predicate, context);\n each(obj, function(value, index, list) {\n if (predicate(value, index, list)) results.push(value);\n });\n return results;\n}\n","import filter from './filter.js';\nimport negate from './negate.js';\nimport cb from './_cb.js';\n\n// Return all the elements for which a truth test fails.\nexport default function reject(obj, predicate, context) {\n return filter(obj, negate(cb(predicate)), context);\n}\n","import cb from './_cb.js';\nimport isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// Determine whether all of the elements pass a truth test.\nexport default function every(obj, predicate, context) {\n predicate = cb(predicate, context);\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length;\n for (var index = 0; index < length; index++) {\n var currentKey = _keys ? _keys[index] : index;\n if (!predicate(obj[currentKey], currentKey, obj)) return false;\n }\n return true;\n}\n","import cb from './_cb.js';\nimport isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// Determine if at least one element in the object passes a truth test.\nexport default function some(obj, predicate, context) {\n predicate = cb(predicate, context);\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length;\n for (var index = 0; index < length; index++) {\n var currentKey = _keys ? _keys[index] : index;\n if (predicate(obj[currentKey], currentKey, obj)) return true;\n }\n return false;\n}\n","import isArrayLike from './_isArrayLike.js';\nimport values from './values.js';\nimport indexOf from './indexOf.js';\n\n// Determine if the array or object contains a given item (using `===`).\nexport default function contains(obj, item, fromIndex, guard) {\n if (!isArrayLike(obj)) obj = values(obj);\n if (typeof fromIndex != 'number' || guard) fromIndex = 0;\n return indexOf(obj, item, fromIndex) >= 0;\n}\n","import restArguments from './restArguments.js';\nimport isFunction from './isFunction.js';\nimport map from './map.js';\nimport deepGet from './_deepGet.js';\nimport toPath from './_toPath.js';\n\n// Invoke a method (with arguments) on every item in a collection.\nexport default restArguments(function(obj, path, args) {\n var contextPath, func;\n if (isFunction(path)) {\n func = path;\n } else {\n path = toPath(path);\n contextPath = path.slice(0, -1);\n path = path[path.length - 1];\n }\n return map(obj, function(context) {\n var method = func;\n if (!method) {\n if (contextPath && contextPath.length) {\n context = deepGet(context, contextPath);\n }\n if (context == null) return void 0;\n method = context[path];\n }\n return method == null ? method : method.apply(context, args);\n });\n});\n","import map from './map.js';\nimport property from './property.js';\n\n// Convenience version of a common use case of `_.map`: fetching a property.\nexport default function pluck(obj, key) {\n return map(obj, property(key));\n}\n","import filter from './filter.js';\nimport matcher from './matcher.js';\n\n// Convenience version of a common use case of `_.filter`: selecting only\n// objects containing specific `key:value` pairs.\nexport default function where(obj, attrs) {\n return filter(obj, matcher(attrs));\n}\n","import isArrayLike from './_isArrayLike.js';\nimport values from './values.js';\nimport cb from './_cb.js';\nimport each from './each.js';\n\n// Return the maximum element (or element-based computation).\nexport default function max(obj, iteratee, context) {\n var result = -Infinity, lastComputed = -Infinity,\n value, computed;\n if (iteratee == null || (typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null)) {\n obj = isArrayLike(obj) ? obj : values(obj);\n for (var i = 0, length = obj.length; i < length; i++) {\n value = obj[i];\n if (value != null && value > result) {\n result = value;\n }\n }\n } else {\n iteratee = cb(iteratee, context);\n each(obj, function(v, index, list) {\n computed = iteratee(v, index, list);\n if (computed > lastComputed || (computed === -Infinity && result === -Infinity)) {\n result = v;\n lastComputed = computed;\n }\n });\n }\n return result;\n}\n","import isArrayLike from './_isArrayLike.js';\nimport values from './values.js';\nimport cb from './_cb.js';\nimport each from './each.js';\n\n// Return the minimum element (or element-based computation).\nexport default function min(obj, iteratee, context) {\n var result = Infinity, lastComputed = Infinity,\n value, computed;\n if (iteratee == null || (typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null)) {\n obj = isArrayLike(obj) ? obj : values(obj);\n for (var i = 0, length = obj.length; i < length; i++) {\n value = obj[i];\n if (value != null && value < result) {\n result = value;\n }\n }\n } else {\n iteratee = cb(iteratee, context);\n each(obj, function(v, index, list) {\n computed = iteratee(v, index, list);\n if (computed < lastComputed || (computed === Infinity && result === Infinity)) {\n result = v;\n lastComputed = computed;\n }\n });\n }\n return result;\n}\n","import isArray from './isArray.js';\nimport { slice } from './_setup.js';\nimport isString from './isString.js';\nimport isArrayLike from './_isArrayLike.js';\nimport map from './map.js';\nimport identity from './identity.js';\nimport values from './values.js';\n\n// Safely create a real, live array from anything iterable.\nvar reStrSymbol = /[^\\ud800-\\udfff]|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\ud800-\\udfff]/g;\nexport default function toArray(obj) {\n if (!obj) return [];\n if (isArray(obj)) return slice.call(obj);\n if (isString(obj)) {\n // Keep surrogate pair characters together.\n return obj.match(reStrSymbol);\n }\n if (isArrayLike(obj)) return map(obj, identity);\n return values(obj);\n}\n","import isArrayLike from './_isArrayLike.js';\nimport values from './values.js';\nimport getLength from './_getLength.js';\nimport random from './random.js';\nimport toArray from './toArray.js';\n\n// Sample **n** random values from a collection using the modern version of the\n// [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher–Yates_shuffle).\n// If **n** is not specified, returns a single random element.\n// The internal `guard` argument allows it to work with `_.map`.\nexport default function sample(obj, n, guard) {\n if (n == null || guard) {\n if (!isArrayLike(obj)) obj = values(obj);\n return obj[random(obj.length - 1)];\n }\n var sample = toArray(obj);\n var length = getLength(sample);\n n = Math.max(Math.min(n, length), 0);\n var last = length - 1;\n for (var index = 0; index < n; index++) {\n var rand = random(index, last);\n var temp = sample[index];\n sample[index] = sample[rand];\n sample[rand] = temp;\n }\n return sample.slice(0, n);\n}\n","import sample from './sample.js';\n\n// Shuffle a collection.\nexport default function shuffle(obj) {\n return sample(obj, Infinity);\n}\n","import cb from './_cb.js';\nimport pluck from './pluck.js';\nimport map from './map.js';\n\n// Sort the object's values by a criterion produced by an iteratee.\nexport default function sortBy(obj, iteratee, context) {\n var index = 0;\n iteratee = cb(iteratee, context);\n return pluck(map(obj, function(value, key, list) {\n return {\n value: value,\n index: index++,\n criteria: iteratee(value, key, list)\n };\n }).sort(function(left, right) {\n var a = left.criteria;\n var b = right.criteria;\n if (a !== b) {\n if (a > b || a === void 0) return 1;\n if (a < b || b === void 0) return -1;\n }\n return left.index - right.index;\n }), 'value');\n}\n","import cb from './_cb.js';\nimport each from './each.js';\n\n// An internal function used for aggregate \"group by\" operations.\nexport default function group(behavior, partition) {\n return function(obj, iteratee, context) {\n var result = partition ? [[], []] : {};\n iteratee = cb(iteratee, context);\n each(obj, function(value, index) {\n var key = iteratee(value, index, obj);\n behavior(result, value, key);\n });\n return result;\n };\n}\n","import group from './_group.js';\nimport has from './_has.js';\n\n// Groups the object's values by a criterion. Pass either a string attribute\n// to group by, or a function that returns the criterion.\nexport default group(function(result, value, key) {\n if (has(result, key)) result[key].push(value); else result[key] = [value];\n});\n","import group from './_group.js';\n\n// Indexes the object's values by a criterion, similar to `_.groupBy`, but for\n// when you know that your index values will be unique.\nexport default group(function(result, value, key) {\n result[key] = value;\n});\n","import group from './_group.js';\nimport has from './_has.js';\n\n// Counts instances of an object that group by a certain criterion. Pass\n// either a string attribute to count by, or a function that returns the\n// criterion.\nexport default group(function(result, value, key) {\n if (has(result, key)) result[key]++; else result[key] = 1;\n});\n","import group from './_group.js';\n\n// Split a collection into two arrays: one whose elements all pass the given\n// truth test, and one whose elements all do not pass the truth test.\nexport default group(function(result, value, pass) {\n result[pass ? 0 : 1].push(value);\n}, true);\n","import isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// Return the number of elements in a collection.\nexport default function size(obj) {\n if (obj == null) return 0;\n return isArrayLike(obj) ? obj.length : keys(obj).length;\n}\n","// Internal `_.pick` helper function to determine whether `key` is an enumerable\n// property name of `obj`.\nexport default function keyInObj(value, key, obj) {\n return key in obj;\n}\n","import restArguments from './restArguments.js';\nimport isFunction from './isFunction.js';\nimport optimizeCb from './_optimizeCb.js';\nimport allKeys from './allKeys.js';\nimport keyInObj from './_keyInObj.js';\nimport flatten from './_flatten.js';\n\n// Return a copy of the object only containing the allowed properties.\nexport default restArguments(function(obj, keys) {\n var result = {}, iteratee = keys[0];\n if (obj == null) return result;\n if (isFunction(iteratee)) {\n if (keys.length > 1) iteratee = optimizeCb(iteratee, keys[1]);\n keys = allKeys(obj);\n } else {\n iteratee = keyInObj;\n keys = flatten(keys, false, false);\n obj = Object(obj);\n }\n for (var i = 0, length = keys.length; i < length; i++) {\n var key = keys[i];\n var value = obj[key];\n if (iteratee(value, key, obj)) result[key] = value;\n }\n return result;\n});\n","import restArguments from './restArguments.js';\nimport isFunction from './isFunction.js';\nimport negate from './negate.js';\nimport map from './map.js';\nimport flatten from './_flatten.js';\nimport contains from './contains.js';\nimport pick from './pick.js';\n\n// Return a copy of the object without the disallowed properties.\nexport default restArguments(function(obj, keys) {\n var iteratee = keys[0], context;\n if (isFunction(iteratee)) {\n iteratee = negate(iteratee);\n if (keys.length > 1) context = keys[1];\n } else {\n keys = map(flatten(keys, false, false), String);\n iteratee = function(value, key) {\n return !contains(keys, key);\n };\n }\n return pick(obj, iteratee, context);\n});\n","import { slice } from './_setup.js';\n\n// Returns everything but the last entry of the array. Especially useful on\n// the arguments object. Passing **n** will return all the values in\n// the array, excluding the last N.\nexport default function initial(array, n, guard) {\n return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n)));\n}\n","import initial from './initial.js';\n\n// Get the first element of an array. Passing **n** will return the first N\n// values in the array. The **guard** check allows it to work with `_.map`.\nexport default function first(array, n, guard) {\n if (array == null || array.length < 1) return n == null || guard ? void 0 : [];\n if (n == null || guard) return array[0];\n return initial(array, array.length - n);\n}\n","import { slice } from './_setup.js';\n\n// Returns everything but the first entry of the `array`. Especially useful on\n// the `arguments` object. Passing an **n** will return the rest N values in the\n// `array`.\nexport default function rest(array, n, guard) {\n return slice.call(array, n == null || guard ? 1 : n);\n}\n","import rest from './rest.js';\n\n// Get the last element of an array. Passing **n** will return the last N\n// values in the array.\nexport default function last(array, n, guard) {\n if (array == null || array.length < 1) return n == null || guard ? void 0 : [];\n if (n == null || guard) return array[array.length - 1];\n return rest(array, Math.max(0, array.length - n));\n}\n","import filter from './filter.js';\n\n// Trim out all falsy values from an array.\nexport default function compact(array) {\n return filter(array, Boolean);\n}\n","import _flatten from './_flatten.js';\n\n// Flatten out an array, either recursively (by default), or up to `depth`.\n// Passing `true` or `false` as `depth` means `1` or `Infinity`, respectively.\nexport default function flatten(array, depth) {\n return _flatten(array, depth, false);\n}\n","import restArguments from './restArguments.js';\nimport flatten from './_flatten.js';\nimport filter from './filter.js';\nimport contains from './contains.js';\n\n// Take the difference between one array and a number of other arrays.\n// Only the elements present in just the first array will remain.\nexport default restArguments(function(array, rest) {\n rest = flatten(rest, true, true);\n return filter(array, function(value){\n return !contains(rest, value);\n });\n});\n","import restArguments from './restArguments.js';\nimport difference from './difference.js';\n\n// Return a version of the array that does not contain the specified value(s).\nexport default restArguments(function(array, otherArrays) {\n return difference(array, otherArrays);\n});\n","import isBoolean from './isBoolean.js';\nimport cb from './_cb.js';\nimport getLength from './_getLength.js';\nimport contains from './contains.js';\n\n// Produce a duplicate-free version of the array. If the array has already\n// been sorted, you have the option of using a faster algorithm.\n// The faster algorithm will not work with an iteratee if the iteratee\n// is not a one-to-one function, so providing an iteratee will disable\n// the faster algorithm.\nexport default function uniq(array, isSorted, iteratee, context) {\n if (!isBoolean(isSorted)) {\n context = iteratee;\n iteratee = isSorted;\n isSorted = false;\n }\n if (iteratee != null) iteratee = cb(iteratee, context);\n var result = [];\n var seen = [];\n for (var i = 0, length = getLength(array); i < length; i++) {\n var value = array[i],\n computed = iteratee ? iteratee(value, i, array) : value;\n if (isSorted && !iteratee) {\n if (!i || seen !== computed) result.push(value);\n seen = computed;\n } else if (iteratee) {\n if (!contains(seen, computed)) {\n seen.push(computed);\n result.push(value);\n }\n } else if (!contains(result, value)) {\n result.push(value);\n }\n }\n return result;\n}\n","import restArguments from './restArguments.js';\nimport uniq from './uniq.js';\nimport flatten from './_flatten.js';\n\n// Produce an array that contains the union: each distinct element from all of\n// the passed-in arrays.\nexport default restArguments(function(arrays) {\n return uniq(flatten(arrays, true, true));\n});\n","import getLength from './_getLength.js';\nimport contains from './contains.js';\n\n// Produce an array that contains every item shared between all the\n// passed-in arrays.\nexport default function intersection(array) {\n var result = [];\n var argsLength = arguments.length;\n for (var i = 0, length = getLength(array); i < length; i++) {\n var item = array[i];\n if (contains(result, item)) continue;\n var j;\n for (j = 1; j < argsLength; j++) {\n if (!contains(arguments[j], item)) break;\n }\n if (j === argsLength) result.push(item);\n }\n return result;\n}\n","import max from './max.js';\nimport getLength from './_getLength.js';\nimport pluck from './pluck.js';\n\n// Complement of zip. Unzip accepts an array of arrays and groups\n// each array's elements on shared indices.\nexport default function unzip(array) {\n var length = (array && max(array, getLength).length) || 0;\n var result = Array(length);\n\n for (var index = 0; index < length; index++) {\n result[index] = pluck(array, index);\n }\n return result;\n}\n","import restArguments from './restArguments.js';\nimport unzip from './unzip.js';\n\n// Zip together multiple lists into a single array -- elements that share\n// an index go together.\nexport default restArguments(unzip);\n","import getLength from './_getLength.js';\n\n// Converts lists into objects. Pass either a single array of `[key, value]`\n// pairs, or two parallel arrays of the same length -- one of keys, and one of\n// the corresponding values. Passing by pairs is the reverse of `_.pairs`.\nexport default function object(list, values) {\n var result = {};\n for (var i = 0, length = getLength(list); i < length; i++) {\n if (values) {\n result[list[i]] = values[i];\n } else {\n result[list[i][0]] = list[i][1];\n }\n }\n return result;\n}\n","// Generate an integer Array containing an arithmetic progression. A port of\n// the native Python `range()` function. See\n// [the Python documentation](https://docs.python.org/library/functions.html#range).\nexport default function range(start, stop, step) {\n if (stop == null) {\n stop = start || 0;\n start = 0;\n }\n if (!step) {\n step = stop < start ? -1 : 1;\n }\n\n var length = Math.max(Math.ceil((stop - start) / step), 0);\n var range = Array(length);\n\n for (var idx = 0; idx < length; idx++, start += step) {\n range[idx] = start;\n }\n\n return range;\n}\n","import { slice } from './_setup.js';\n\n// Chunk a single array into multiple arrays, each containing `count` or fewer\n// items.\nexport default function chunk(array, count) {\n if (count == null || count < 1) return [];\n var result = [];\n var i = 0, length = array.length;\n while (i < length) {\n result.push(slice.call(array, i, i += count));\n }\n return result;\n}\n","import _ from './underscore.js';\n\n// Helper function to continue chaining intermediate results.\nexport default function chainResult(instance, obj) {\n return instance._chain ? _(obj).chain() : obj;\n}\n","import _ from './underscore.js';\nimport each from './each.js';\nimport functions from './functions.js';\nimport { push } from './_setup.js';\nimport chainResult from './_chainResult.js';\n\n// Add your own custom functions to the Underscore object.\nexport default function mixin(obj) {\n each(functions(obj), function(name) {\n var func = _[name] = obj[name];\n _.prototype[name] = function() {\n var args = [this._wrapped];\n push.apply(args, arguments);\n return chainResult(this, func.apply(_, args));\n };\n });\n return _;\n}\n","import _ from './underscore.js';\nimport each from './each.js';\nimport { ArrayProto } from './_setup.js';\nimport chainResult from './_chainResult.js';\n\n// Add all mutator `Array` functions to the wrapper.\neach(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) {\n var method = ArrayProto[name];\n _.prototype[name] = function() {\n var obj = this._wrapped;\n if (obj != null) {\n method.apply(obj, arguments);\n if ((name === 'shift' || name === 'splice') && obj.length === 0) {\n delete obj[0];\n }\n }\n return chainResult(this, obj);\n };\n});\n\n// Add all accessor `Array` functions to the wrapper.\neach(['concat', 'join', 'slice'], function(name) {\n var method = ArrayProto[name];\n _.prototype[name] = function() {\n var obj = this._wrapped;\n if (obj != null) obj = method.apply(obj, arguments);\n return chainResult(this, obj);\n };\n});\n\nexport default _;\n","// Default Export\n// ==============\n// In this module, we mix our bundled exports into the `_` object and export\n// the result. This is analogous to setting `module.exports = _` in CommonJS.\n// Hence, this module is also the entry point of our UMD bundle and the package\n// entry point for CommonJS and AMD users. In other words, this is (the source\n// of) the module you are interfacing with when you do any of the following:\n//\n// ```js\n// // CommonJS\n// var _ = require('underscore');\n//\n// // AMD\n// define(['underscore'], function(_) {...});\n//\n// // UMD in the browser\n// // _ is available as a global variable\n// ```\nimport * as allExports from './index.js';\nimport { mixin } from './index.js';\n\n// Add all of the Underscore functions to the wrapper object.\nvar _ = mixin(allExports);\n// Legacy Node.js API.\n_._ = _;\n// Export the Underscore API.\nexport default _;\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 \"\" + chunkId + \"-\" + chunkId + \".js?v=\" + {\"802\":\"eddac441912aee9d7aa8\",\"1642\":\"0e50a2b32d2d64b50afa\",\"9291\":\"077955af818a227340aa\"}[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 = 1418;","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(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = 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\t1418: 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 = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\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\"] = self[\"webpackChunknextcloud\"] || [];\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__(9321)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","updatableNotification","getDefaultNotificationFunction","setDefault","callback","this","hide","$row","_","undefined","each","$","toastify","hideToast","console","error","call","showHtml","html","options","isHTML","timeout","TOAST_PERMANENT_TIMEOUT","toast","showMessage","toastElement","show","text","toString","split","join","escapeHTML","showUpdate","showTemporary","TOAST_DEFAULT_TIMEOUT","isHidden","find","length","ajaxConnectionLostHandler","showWarning","t","trailing","dynamicSlideToggleEnabled","enableDynamicSlideToggle","Apps","$el","removeClass","trigger","addClass","method","endpoint","OC","PasswordConfirmation","requiresPasswordConfirmation","type","toUpperCase","url","generateOcsUrl","data","success","requirePasswordConfirmation","bind","appConfig","window","oc_appconfig","AppConfig","getValue","app","key","defaultValue","setValue","value","getApps","getKeys","deleteKey","_oc_appswebroots","methodMap","create","update","patch","delete","read","parsePropFindResult","result","davProperties","subResult","props","href","propStat","status","properties","propKey","id","parseIdFromLocation","queryPos","indexOf","substr","parts","pop","isSuccessStatus","callPropPatch","client","model","headers","propPatch","attrs","changedProp","warn","convertModelAttributesToDavProperties","changed","then","toJSON","Backbone","VendorBackbone","Object","assign","davCall","dav","Client","baseUrl","xmlNamespaces","resolveUrl","requestToken","propFind","depth","response","propsMapping","results","body","shift","callPropFind","request","callMkCol","responseJson","locationHeader","xhr","getResponseHeader","callMethod","davSync","params","isCollection","Collection","hasInnerCollection","usePUT","collection","Error","urlError","JSON","stringify","processData","prototype","textStatus","errorThrown","context","_oc_config","rawUid","document","getElementsByTagName","getAttribute","displayName","currentUser","Dialogs","YES_NO_BUTTONS","OK_BUTTONS","FILEPICKER_TYPE_CHOOSE","FILEPICKER_TYPE_MOVE","FILEPICKER_TYPE_COPY","FILEPICKER_TYPE_COPY_MOVE","FILEPICKER_TYPE_CUSTOM","alert","title","modal","message","OK_BUTTON","info","confirm","confirmDestructive","buttons","arguments","DialogBuilder","setName","setText","setButtons","label","clicked","_getLegacyButtons","build","confirmHtml","setHTML","prompt","name","password","Promise","resolve","spawnDialog","defineAsyncComponent","inputName","isPassword","filepicker","multiselect","mimetype","FilePickerType","Choose","path","legacyCallback","fn","getPath","node","root","startsWith","slice","nodes","map","builder","getFilePickerBuilder","forEach","button","addButton","defaultButton","setButtonFactory","attributes","basename","target","push","multiSelect","file","CopyMove","Copy","icon","IconCopy","Move","IconMove","setMimeTypeFilter","filter","setFilter","fileid","mime","mtime","getTime","permissions","etag","hasPreview","mountType","quotaAvailableBytes","sharePermissions","nodeToLegacyFile","allowDirectories","allowDirectoryChooser","includes","setMultiSelect","startAt","pick","content","dialogType","allowHtml","setSeverity","dialog","_clicked","buttonList","cancel","_fileexistsshown","fileexists","original","replacement","controller","self","dialogDeferred","resampleHermite","canvas","W","H","W2","H2","Math","round","img","getContext","getImageData","img2","data2","ratio_w","ratio_h","ratio_w_half","ceil","ratio_h_half","j","i","x2","weight","weights","weights_alpha","gx_r","gx_g","gx_b","gx_a","center_y","yy","floor","dy","abs","center_x","w0","xx","dx","w","sqrt","clearRect","max","width","height","putImageData","addConflict","$conflicts","$conflict","clone","$originalDiv","$replacementDiv","Util","humanFileSize","size","formatDate","lastModified","directory","urlSpec","x","y","c","forceIcon","previewpath","Files","generatePreviewUrl","replace","css","FileReader","reader","onload","e","blob","Blob","URL","webkitURL","originalUrl","createObjectURL","image","Image","src","createElement","min","drawImage","toDataURL","readAsArrayBuffer","reject","getCroppedPreview","MimeType","getIconUrl","checkboxId","attr","append","prop","dialogName","dialogId","count","n","parent","children","_getFileExistsTemplate","$tmpl","$dlg","octemplate","dialog_name","allnewfiles","allexistingfiles","why","what","buttonlist","classes","click","onCancel","ocdialog","onContinue","closeOnEscape","closeButton","close","remove","$primaryButton","closest","updatePrimaryButton","checkedCount","on","$checkbox","fail","promise","defer","$fileexistsTemplate","filePath","tmpl","manageFromDocument","manageToken","global","emit","token","getToken","setToken","newToken","OCEventSource","joinChar","dataStr","typelessListeners","closed","listeners","encodeURIComponent","useFallBack","EventSource","iframeId","iframeCount","fallBackSources","iframe","source","onmessage","parse","listen","fallBackCallBack","done","lastLength","addEventListener","currentMenu","currentMenuToggle","hideMenus","complete","lastMenu","slideUp","apply","isAdmin","_oc_isadmin","load","loadTranslations","register","_unregister","unregister","translate","translatePlural","Handlebars","startSaving","selector","startAction","stop","finishedSaving","finishedAction","finishedSuccess","finishedError","delay","fadeOut","isPasswordConfirmationRequired","rejectCallback","confirmPassword","_plugins","targetName","plugin","plugins","getPlugins","attach","targetObject","detach","theme","_theme","_handlers","_pushState","strParams","buildQueryString","history","pushState","location","pathname","navigator","userAgent","toLowerCase","parseInt","patterns","querySelectorAll","pattern","ii","style","fill","stroke","removeAttribute","setAttribute","replaceState","hash","_cancelPop","addOnPopStateHandler","handler","_parseHashQuery","pos","_decodeQuery","query","parseUrlQuery","parseQueryString","search","_onPopState","state","chunkify","tz","charAt","m","History","computerFileSize","string","s","trim","bytes","matches","match","parseFloat","isFinite","b","k","kb","mb","gb","g","tb","pb","p","timestamp","format","TESTING","debug","moment","relativeModifiedDate","diff","fromNow","getScrollBarWidth","_scrollBarWidth","inner","outer","position","top","left","visibility","overflow","appendChild","w1","offsetWidth","w2","clientWidth","removeChild","stripTime","date","Date","getFullYear","getMonth","getDate","naturalSortCompare","a","aa","bb","aNum","Number","bNum","localeCompare","getLanguage","waitFor","interval","internalCallback","setTimeout","isCookieSetToValue","cookies","cookie","_oc_debug","webroot","_oc_webroot","lastIndexOf","coreApps","menuSpeed","PERMISSION_ALL","PERMISSION_CREATE","PERMISSION_DELETE","PERMISSION_NONE","PERMISSION_READ","PERMISSION_SHARE","PERMISSION_UPDATE","TAG_FAVORITE","fileIsBlacklisted","Config","blacklist_files_regex","appswebroots","config","dialogs","getCurrentUser","uid","isUserAdmin","L10N","_ajaxConnectionLostHandler","_processAjaxError","statusText","_reloadCalled","_userIsNavigatingAway","timer","seconds","setInterval","Notification","clearInterval","reload","registerXHRForErrorProcessing","loadCallback","readyState","errorCallback","getCapabilities","realGetCapabilities","registerMenu","$toggle","$menuEl","toggle","headerMenu","isClickableElement","event","preventDefault","is","slideToggle","showMenu","unregisterMenu","off","encodePath","dirname","isSamePath","joinPaths","getHost","host","getHostName","hostname","getPort","port","getProtocol","protocol","getCanonicalLocale","getLocale","queryString","components","part","decodeURIComponent","msg","Plugins","generateFilePath","generateUrl","get","namespaces","tail","set","getRootPath","getRootUrl","imagePath","redirect","targetURL","getRequestToken","linkTo","linkToOCS","service","version","ocsVersion","linkToRemote","generateRemoteUrl","linkToRemoteBase","realGetRootUrl","subscribe","computed","userNameInputLengthIs255","user","userInputHelperText","ArrowRight","NcButton","String","default","valueLoading","loading","Boolean","required","invertedColors","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","_vm","_c","_self","$event","$emit","scopedSlots","_u","staticClass","proxy","_v","_s","LoginButton","NcPasswordField","NcTextField","NcNoteCard","mixins","AuthMixin","username","redirectUrl","errors","Array","messages","throttleDelay","autoCompleteAllowed","directLogin","emailStates","setup","headlineText","productName","sanitize","escape","loginTimeout","loadState","timezone","Intl","DateTimeFormat","resolvedOptions","timeZone","timezoneOffset","getTimezoneOffset","resetFormTimeout","debounce","handleResetForm","isError","invalidPassword","userDisabled","errorLabel","apacheAuthFailed","csrfCheckFailed","internalException","loadingIcon","loginActionUrl","emailEnabled","every","loginText","watch","mounted","$refs","inputField","input","focus","methods","updateUsername","submit","ref","_e","_l","index","class","staticStyle","shake","domProps","bufferToBase64URLString","buffer","Uint8Array","str","charCode","fromCharCode","btoa","base64URLStringToBuffer","base64URLString","base64","padLength","padded","padEnd","binary","atob","ArrayBuffer","charCodeAt","browserSupportsWebAuthn","PublicKeyCredential","toPublicKeyCredentialDescriptor","descriptor","transports","WebAuthnError","constructor","code","cause","super","WebAuthnAbortService","createNewAbortSignal","abortError","abort","newController","AbortController","signal","cancelCeremony","attachments","toAuthenticatorAttachment","attachment","getLoggerBuilder","setApp","setUid","detectUser","NoValidCredentials","emits","fillColor","_b","$attrs","InformationIcon","LockOpenIcon","isHttps","isLocalhost","supportsWebauthn","validCredentials","authenticate","loginForm","checkValidity","async","loginName","Axios","post","allowCredentials","logger","optionsJSON","useBrowserAutofill","publicKey","challenge","globalPublicKeyCredential","isConditionalMediationAvailable","browserSupportsWebAuthnAutofill","mediation","credential","credentials","err","AbortSignal","effectiveDomain","test","rpId","identifyAuthenticationError","rawId","userHandle","authenticatorData","clientDataJSON","signature","clientExtensionResults","getClientExtensionResults","authenticatorAttachment","startWebauthnAuthentication","startAuthentication","completeAuthentication","changeUsername","authData","finishAuthentication","_ref","defaultRedirectUrl","catch","resetPasswordLink","axios","resp","resetPasswordTarget","encrypted","proceed","encryption","directives","rawName","expression","composing","isArray","_i","$$a","$$el","$$c","checked","$$i","concat","warning","clear","localStorage","sessionStorage","LoginForm","PasswordLessLoginForm","ResetPassword","UpdatePassword","passwordlessLogin","resetPassword","canResetPassword","resetPasswordUser","direct","hasPasswordless","countAlternativeLogins","alternativeLogins","hideLoginForm","passwordResetFinished","alternativeLogin","L10n","Vue","mixin","Nextcloud","extend","LoginView","$mount","exports","previousBackbone","VERSION","noConflict","emulateHTTP","emulateJSON","_listening","Events","eventSplitter","eventsApi","iteratee","events","opts","names","keys","_events","onApi","ctx","listening","_listeners","interop","listenTo","obj","_listenId","uniqueId","listeningTo","_listeningTo","Listening","tryCatchOn","handlers","offApi","stopListening","ids","isEmpty","remaining","_callback","cleanup","once","onceMap","listenToOnce","offer","args","triggerApi","objEvents","allEvents","all","triggerEvents","ev","l","a1","a2","a3","listener","unbind","Model","preinitialize","cid","cidPrefix","defaults","initialize","validationError","idAttribute","sync","has","val","_validate","unset","silent","changes","changing","_changing","_previousAttributes","current","prev","isEqual","prevId","_pending","hasChanged","changedAttributes","old","previous","previousAttributes","fetch","serverAttrs","wrapError","save","wait","validate","isNew","destroy","base","isValid","models","comparator","_reset","reset","setOptions","add","merge","addOptions","splice","array","at","singular","removed","_removeModels","added","merged","_isModel","toAdd","toMerge","toRemove","modelMap","sort","sortable","sortAttr","isString","existing","_prepareModel","_addReference","orderChanged","some","_removeReference","previousModels","unshift","_byId","modelId","where","first","findWhere","isFunction","sortBy","pluck","callbackOpts","_forwardPristineError","values","CollectionIterator","ITERATOR_VALUES","ITERATOR_KEYS","entries","ITERATOR_KEYSVALUES","_onModelEvent","$$iterator","Symbol","iterator","kind","_collection","_kind","_index","next","View","viewOptions","_ensureElement","delegateEventSplitter","tagName","render","_removeElement","setElement","element","undelegateEvents","_setElement","delegateEvents","el","delegate","eventName","undelegate","_createElement","className","_setAttributes","addUnderscoreMethods","Class","attribute","cb","defaultVal","addMethod","instance","isObject","modelMatcher","matcher","collect","reduce","foldl","inject","reduceRight","foldr","detect","select","any","include","contains","invoke","toArray","head","take","initial","rest","drop","last","without","difference","shuffle","chain","sample","partition","groupBy","countBy","indexBy","findIndex","findLastIndex","pairs","invert","omit","Base","mappings","functions","memo","dataType","contentType","_method","beforeSend","setRequestHeader","ajax","Router","routes","_bindRoutes","optionalParam","namedParam","splatParam","escapeRegExp","route","isRegExp","_routeToRegExp","router","fragment","_extractParameters","execute","navigate","optional","RegExp","exec","param","checkUrl","routeStripper","rootStripper","pathStripper","started","atRoot","getSearch","matchRoot","decodeFragment","decodeURI","getHash","getFragment","_usePushState","_wantsHashChange","start","_trailingSlash","trailingSlash","hashChange","_hasHashChange","documentMode","_useHashChange","_wantsPushState","_hasPushState","rootPath","display","tabIndex","iWindow","insertBefore","firstChild","contentWindow","open","attachEvent","_checkUrlInterval","loadUrl","removeEventListener","detachEvent","notfound","decodedFragment","_updateHash","protoProps","staticProps","child","__super__","_debug","factory","___CSS_LOADER_EXPORT___","module","_XML_CHAR_MAP","_escapeXml","ch","userName","namespace","hasOwnProperty","property","parseClarkNotation","_renderPropSet","propName","propValue","mkcol","responseType","xhrProvider","onProgress","upload","send","fulfill","onreadystatechange","resultBody","parseMultiStatus","ontimeout","XMLHttpRequest","_parsePropNode","propNode","childNodes","subNodes","nodeType","textContent","xmlBody","doc","DOMParser","parseFromString","resolver","foo","responseIterator","evaluate","XPathResult","ANY_TYPE","responseNode","iterateNext","stringValue","propStatIterator","propStatNode","propIterator","namespaceURI","localName","baseParts","parseUrl","subString","scheme","propertyName","webpackContext","req","webpackContextResolve","__webpack_require__","o","Permission","Permission2","defaultDavProperties","defaultDavNamespaces","d","nc","oc","ocs","getDavProperties","_nc_dav_properties","getDavNameSpaces","_nc_dav_namespaces","ns","davGetDefaultPropfind","davGetRecentSearch","FileType","FileType2","isDavRessource","davService","validateData","displayname","crtime","NONE","ALL","owner","NodeStatus","NodeStatus2","Node","_data","_attributes","_knownDavService","readonlyAttributes","getOwnPropertyDescriptors","Reflect","deleteProperty","receiver","Proxy","encodedSource","origin","extension","extname","firstMatch","updateMtime","READ","move","destination","oldBasename","rename","basename2","TypeError","File","Folder","davRootPath","davRemoteURL","davGetRemoteURL","davGetClient","remoteURL","setHeaders","requesttoken","headers2","getFavoriteNodes","davClient","davRoot","CancelablePromise","getDirectoryContents","details","includeSelf","filename","davResultToNode","filesRoot","userId","permString","CREATE","UPDATE","DELETE","SHARE","davParsePermissions","nodeData","lastmod","getcontentlength","FAILED","humanList","humanListBinary","formatFileSize","skipSmallSizes","binaryPrefixes","base1000","order","log","readableFormat","relativeSize","pow","toFixed","toLocaleString","toISOString","sortNodes","sortingOptions","sortingMode","sortingOrder","identifiers2","orders","sorting","collator","Collator","numeric","usage","identifier","compare","orderBy","sortFavoritesFirst","v","favorite","sortFoldersFirst","util$3","nameStartChar","nameRegexp","regexName","isExist","isEmptyObject","arrayMode","len","isName","getAllMatches","regex","allmatches","startIndex","lastIndex","OptionsBuilder","defaultOptions$1","preserveOrder","attributeNamePrefix","attributesGroupName","textNodeName","ignoreAttributes","removeNSPrefix","allowBooleanAttributes","parseTagValue","parseAttributeValue","trimValues","cdataPropName","numberParseOptions","hex","leadingZeros","eNotation","tagValueProcessor","val2","attributeValueProcessor","attrName","stopNodes","alwaysCreateTextNode","commentPropName","unpairedTags","processEntities","htmlEntities","ignoreDeclaration","ignorePiTags","transformTagName","transformAttributeName","updateTag","jPath","buildOptions","defaultOptions","node2json","compress","arr","compressedObj","tagObj","propName$1","newJpath","isLeaf","isLeafTag","assignAttributes","attrMap","jpath","atrrName","propCount","prettify","arrToStr","indentation","xmlStr","isPreviousElementTag","newJPath","tagText","isStopNode","replaceEntitiesValue","attStr2","attr_to_str","tempInd","piTextNodeName","newIdentation","indentBy","tagStart","tagValue","suppressUnpairedNode","suppressEmptyNode","endsWith","attrStr","attrVal","suppressBooleanAttributes","textValue","entities","entity","buildFromOrderedJs","jArray","oneListGroup","Builder","isAttribute","attrPrefixLen","processTextOrObjNode","indentate","tagEndChar","newLine","object","level","j2x","buildTextValNode","buildObjectNode","repeat","jObj","arrayNodeName","buildAttrPairStr","newval","arrLen","listTagVal","listTagAttr","item","Ks","L","closeTag","tagEndExp","piClosingChar","debug_1","process","env","NODE_DEBUG","constants","MAX_LENGTH","MAX_SAFE_COMPONENT_LENGTH","MAX_SAFE_BUILD_LENGTH","MAX_LENGTH$1","MAX_SAFE_INTEGER","RELEASE_TYPES","SEMVER_SPEC_VERSION","FLAG_INCLUDE_PRERELEASE","FLAG_LOOSE","re$1","MAX_SAFE_COMPONENT_LENGTH2","MAX_SAFE_BUILD_LENGTH2","MAX_LENGTH2","debug2","re2","re","safeRe","t2","R","LETTERDASHNUMBER","safeRegexReplacements","createToken","isGlobal","safe","makeSafeRegex","NUMERICIDENTIFIER","NUMERICIDENTIFIERLOOSE","NONNUMERICIDENTIFIER","PRERELEASEIDENTIFIER","PRERELEASEIDENTIFIERLOOSE","BUILDIDENTIFIER","MAINVERSION","PRERELEASE","BUILD","FULLPLAIN","MAINVERSIONLOOSE","PRERELEASELOOSE","LOOSEPLAIN","XRANGEIDENTIFIER","XRANGEIDENTIFIERLOOSE","GTLT","XRANGEPLAIN","XRANGEPLAINLOOSE","COERCEPLAIN","COERCE","COERCEFULL","LONETILDE","tildeTrimReplace","LONECARET","caretTrimReplace","comparatorTrimReplace","reExports","freeze","loose","compareIdentifiers$1","anum","bnum","identifiers","compareIdentifiers","rcompareIdentifiers","Function","ArrayProto","ObjProto","SymbolProto","supportsArrayBuffer","supportsDataView","DataView","nativeIsArray","nativeKeys","nativeCreate","nativeIsView","isView","_isNaN","isNaN","_isFinite","hasEnumBug","propertyIsEnumerable","nonEnumerableProps","MAX_ARRAY_INDEX","restArguments","func","isNull","isUndefined","isBoolean","isElement","tagTester","tag","nodelist","Int8Array","hasDataViewBug","isIE11","Map","isDataView","getInt8","isArrayBuffer","isArguments","isSymbol","isNumber","constant","createSizePropertyCheck","getSizeProperty","sizeProperty","shallowProperty","typedArrayPattern","collectNonEnumProps","emulatedSet","nonEnumIdx","proto","isMatch","_keys","_wrapped","toBufferView","bufferSource","byteOffset","valueOf","tagDataView","eq","aStack","bStack","deepEq","areArrays","aCtor","bCtor","allKeys","ie11fingerprint","weakMapMethods","forEachName","commonInit","mapTail","mapMethods","setMethods","createAssigner","keysFunc","baseCreate","Ctor","extendOwn","tap","interceptor","toPath","deepGet","identity","optimizeCb","argCount","accumulator","baseIteratee","Infinity","mapObject","currentKey","noop","propertyOf","times","accum","random","now","createEscaper","escaper","testRegexp","replaceRegexp","templateSettings","interpolate","noMatch","escapes","escapeChar","bareIdentifier","template","settings","oldSettings","offset","argument","variable","fallback","idCounter","prefix","_chain","executeBound","sourceFunc","boundFunc","callingContext","partial","boundArgs","placeholder","bound","callArgs","flatten","strict","output","idx","memoize","hasher","cache","address","throttle","later","leading","throttled","_now","clearTimeout","immediate","passed","debounced","_args","wrap","wrapper","negate","predicate","compose","after","before","findKey","createPredicateIndexFinder","dir","sortedIndex","low","high","mid","createIndexFinder","predicateFind","createReduce","reducer","list","fromIndex","guard","contextPath","lastComputed","reStrSymbol","rand","temp","criteria","right","group","behavior","pass","keyInObj","compact","otherArrays","uniq","isSorted","seen","arrays","intersection","argsLength","unzip","range","step","chunk","chainResult","__webpack_module_cache__","moduleId","cachedModule","loaded","__webpack_modules__","O","chunkIds","priority","notFulfilled","fulfilled","r","getter","__esModule","definition","defineProperty","enumerable","f","chunkId","promises","u","globalThis","script","needAttach","scripts","charset","onScriptComplete","onerror","doneFns","parentNode","toStringTag","nmd","paths","scriptUrl","importScripts","currentScript","baseURI","installedChunks","installedChunkData","errorType","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"core-login.js?v=c300a0d8811773d47e10","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/load script","webpack:///nextcloud/core/src/OC/notification.js","webpack:///nextcloud/core/src/OC/xhr-error.js","webpack:///nextcloud/core/src/OC/apps.js","webpack:///nextcloud/core/src/OCP/appconfig.js","webpack:///nextcloud/core/src/OC/appconfig.js","webpack:///nextcloud/core/src/OC/appswebroots.js","webpack:///nextcloud/core/src/OC/backbone-webdav.js","webpack:///nextcloud/core/src/OC/backbone.js","webpack:///nextcloud/core/src/OC/query-string.js","webpack:///nextcloud/core/src/OC/config.js","webpack:///nextcloud/core/src/OC/currentuser.js","webpack:///nextcloud/core/src/OC/dialogs.js","webpack:///nextcloud/core/src/OC/requesttoken.js","webpack:///nextcloud/core/src/OC/eventsource.js","webpack:///nextcloud/core/src/OC/menu.js","webpack:///nextcloud/core/src/OC/constants.js","webpack:///nextcloud/core/src/OC/admin.js","webpack:///nextcloud/core/src/OC/l10n.js","webpack:///nextcloud/core/src/OC/routing.js","webpack:///nextcloud/core/src/OC/msg.js","webpack:///nextcloud/core/src/OC/password-confirmation.js","webpack:///nextcloud/core/src/OC/plugins.js","webpack:///nextcloud/core/src/OC/theme.js","webpack:///nextcloud/core/src/OC/util-history.js","webpack:///nextcloud/core/src/OC/util.js","webpack:///nextcloud/core/src/OC/debug.js","webpack:///nextcloud/core/src/OC/webroot.js","webpack:///nextcloud/core/src/OC/index.js","webpack:///nextcloud/core/src/OC/capabilities.js","webpack:///nextcloud/core/src/OC/host.js","webpack:///nextcloud/core/src/OC/get_set.js","webpack:///nextcloud/core/src/OC/navigation.js","webpack://nextcloud/./core/src/views/Login.vue?ae59","webpack:///nextcloud/core/src/mixins/auth.js","webpack://nextcloud/./core/src/components/login/LoginButton.vue?82aa","webpack:///nextcloud/core/src/components/login/LoginButton.vue","webpack:///nextcloud/core/src/components/login/LoginButton.vue?vue&type=script&lang=js","webpack://nextcloud/./core/src/components/login/LoginButton.vue?ebeb","webpack://nextcloud/./core/src/components/login/LoginButton.vue?14f0","webpack:///nextcloud/core/src/components/login/LoginForm.vue?vue&type=script&lang=js","webpack:///nextcloud/core/src/components/login/LoginForm.vue","webpack://nextcloud/./core/src/components/login/LoginForm.vue?2577","webpack://nextcloud/./core/src/components/login/LoginForm.vue?a678","webpack://nextcloud/./core/src/components/login/LoginForm.vue?4366","webpack:///nextcloud/node_modules/@simplewebauthn/browser/dist/bundle/index.js","webpack:///nextcloud/core/src/logger.js","webpack:///nextcloud/core/src/services/WebAuthnAuthenticationService.ts","webpack:///nextcloud/node_modules/vue-material-design-icons/Information.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/Information.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/Information.vue?8a14","webpack:///nextcloud/node_modules/vue-material-design-icons/Information.vue?vue&type=template&id=70e6f3ef","webpack:///nextcloud/node_modules/vue-material-design-icons/LockOpen.vue?vue&type=script&lang=js","webpack:///nextcloud/node_modules/vue-material-design-icons/LockOpen.vue","webpack://nextcloud/./node_modules/vue-material-design-icons/LockOpen.vue?104d","webpack:///nextcloud/node_modules/vue-material-design-icons/LockOpen.vue?vue&type=template&id=1b7ea4e7","webpack:///nextcloud/core/src/components/login/PasswordLessLoginForm.vue","webpack:///nextcloud/core/src/components/login/PasswordLessLoginForm.vue?vue&type=script&lang=js","webpack://nextcloud/./core/src/components/login/PasswordLessLoginForm.vue?5774","webpack://nextcloud/./core/src/components/login/PasswordLessLoginForm.vue?09eb","webpack://nextcloud/./core/src/components/login/PasswordLessLoginForm.vue?16ec","webpack://nextcloud/./core/src/components/login/ResetPassword.vue?7cf3","webpack:///nextcloud/core/src/components/login/ResetPassword.vue","webpack:///nextcloud/core/src/components/login/ResetPassword.vue?vue&type=script&lang=js","webpack://nextcloud/./core/src/components/login/ResetPassword.vue?c140","webpack://nextcloud/./core/src/components/login/ResetPassword.vue?9d75","webpack:///nextcloud/core/src/components/login/UpdatePassword.vue?vue&type=script&lang=js","webpack:///nextcloud/core/src/components/login/UpdatePassword.vue","webpack://nextcloud/./core/src/components/login/UpdatePassword.vue?6d61","webpack://nextcloud/./core/src/components/login/UpdatePassword.vue?30ca","webpack://nextcloud/./core/src/components/login/UpdatePassword.vue?1c8f","webpack:///nextcloud/core/src/views/Login.vue","webpack:///nextcloud/core/src/views/Login.vue?vue&type=script&lang=js","webpack://nextcloud/./core/src/views/Login.vue?f290","webpack://nextcloud/./core/src/views/Login.vue?3468","webpack:///nextcloud/core/src/mixins/Nextcloud.js","webpack:///nextcloud/core/src/login.js","webpack:///nextcloud/node_modules/backbone/backbone.js","webpack:///nextcloud/core/src/components/login/LoginButton.vue?vue&type=style&index=0&id=6acd8f45&prod&lang=scss&scoped=true","webpack:///nextcloud/core/src/components/login/LoginForm.vue?vue&type=style&index=0&id=f18886ec&prod&lang=scss&scoped=true","webpack:///nextcloud/core/src/components/login/PasswordLessLoginForm.vue?vue&type=style&index=0&id=4a6bfc86&prod&lang=scss&scoped=true","webpack:///nextcloud/core/src/components/login/ResetPassword.vue?vue&type=style&index=0&id=586305cf&prod&lang=scss&scoped=true","webpack:///nextcloud/core/src/views/Login.vue?vue&type=style&index=0&id=6adceba0&prod&lang=scss","webpack:///nextcloud/core/src/components/login/UpdatePassword.vue?vue&type=style&index=0&id=6bdd5975&prod&scoped=true&lang=css","webpack:///nextcloud/node_modules/davclient.js/lib/client.js","webpack:///nextcloud/node_modules/moment/locale|sync|/^\\.\\/.*$","webpack:///nextcloud/node_modules/@nextcloud/files/dist/index.mjs","webpack:///nextcloud/node_modules/underscore/modules/_setup.js","webpack:///nextcloud/node_modules/underscore/modules/restArguments.js","webpack:///nextcloud/node_modules/underscore/modules/isObject.js","webpack:///nextcloud/node_modules/underscore/modules/isNull.js","webpack:///nextcloud/node_modules/underscore/modules/isUndefined.js","webpack:///nextcloud/node_modules/underscore/modules/isBoolean.js","webpack:///nextcloud/node_modules/underscore/modules/isElement.js","webpack:///nextcloud/node_modules/underscore/modules/_tagTester.js","webpack:///nextcloud/node_modules/underscore/modules/isString.js","webpack:///nextcloud/node_modules/underscore/modules/isNumber.js","webpack:///nextcloud/node_modules/underscore/modules/isDate.js","webpack:///nextcloud/node_modules/underscore/modules/isRegExp.js","webpack:///nextcloud/node_modules/underscore/modules/isError.js","webpack:///nextcloud/node_modules/underscore/modules/isSymbol.js","webpack:///nextcloud/node_modules/underscore/modules/isArrayBuffer.js","webpack:///nextcloud/node_modules/underscore/modules/isFunction.js","webpack:///nextcloud/node_modules/underscore/modules/_hasObjectTag.js","webpack:///nextcloud/node_modules/underscore/modules/_stringTagBug.js","webpack:///nextcloud/node_modules/underscore/modules/isDataView.js","webpack:///nextcloud/node_modules/underscore/modules/isArray.js","webpack:///nextcloud/node_modules/underscore/modules/_has.js","webpack:///nextcloud/node_modules/underscore/modules/isArguments.js","webpack:///nextcloud/node_modules/underscore/modules/isFinite.js","webpack:///nextcloud/node_modules/underscore/modules/isNaN.js","webpack:///nextcloud/node_modules/underscore/modules/constant.js","webpack:///nextcloud/node_modules/underscore/modules/_createSizePropertyCheck.js","webpack:///nextcloud/node_modules/underscore/modules/_shallowProperty.js","webpack:///nextcloud/node_modules/underscore/modules/_getByteLength.js","webpack:///nextcloud/node_modules/underscore/modules/_isBufferLike.js","webpack:///nextcloud/node_modules/underscore/modules/isTypedArray.js","webpack:///nextcloud/node_modules/underscore/modules/_getLength.js","webpack:///nextcloud/node_modules/underscore/modules/_collectNonEnumProps.js","webpack:///nextcloud/node_modules/underscore/modules/keys.js","webpack:///nextcloud/node_modules/underscore/modules/isEmpty.js","webpack:///nextcloud/node_modules/underscore/modules/isMatch.js","webpack:///nextcloud/node_modules/underscore/modules/underscore.js","webpack:///nextcloud/node_modules/underscore/modules/_toBufferView.js","webpack:///nextcloud/node_modules/underscore/modules/isEqual.js","webpack:///nextcloud/node_modules/underscore/modules/allKeys.js","webpack:///nextcloud/node_modules/underscore/modules/_methodFingerprint.js","webpack:///nextcloud/node_modules/underscore/modules/isMap.js","webpack:///nextcloud/node_modules/underscore/modules/isWeakMap.js","webpack:///nextcloud/node_modules/underscore/modules/isSet.js","webpack:///nextcloud/node_modules/underscore/modules/isWeakSet.js","webpack:///nextcloud/node_modules/underscore/modules/values.js","webpack:///nextcloud/node_modules/underscore/modules/pairs.js","webpack:///nextcloud/node_modules/underscore/modules/invert.js","webpack:///nextcloud/node_modules/underscore/modules/functions.js","webpack:///nextcloud/node_modules/underscore/modules/_createAssigner.js","webpack:///nextcloud/node_modules/underscore/modules/extend.js","webpack:///nextcloud/node_modules/underscore/modules/extendOwn.js","webpack:///nextcloud/node_modules/underscore/modules/defaults.js","webpack:///nextcloud/node_modules/underscore/modules/_baseCreate.js","webpack:///nextcloud/node_modules/underscore/modules/create.js","webpack:///nextcloud/node_modules/underscore/modules/clone.js","webpack:///nextcloud/node_modules/underscore/modules/tap.js","webpack:///nextcloud/node_modules/underscore/modules/toPath.js","webpack:///nextcloud/node_modules/underscore/modules/_toPath.js","webpack:///nextcloud/node_modules/underscore/modules/_deepGet.js","webpack:///nextcloud/node_modules/underscore/modules/get.js","webpack:///nextcloud/node_modules/underscore/modules/has.js","webpack:///nextcloud/node_modules/underscore/modules/identity.js","webpack:///nextcloud/node_modules/underscore/modules/matcher.js","webpack:///nextcloud/node_modules/underscore/modules/property.js","webpack:///nextcloud/node_modules/underscore/modules/_optimizeCb.js","webpack:///nextcloud/node_modules/underscore/modules/_baseIteratee.js","webpack:///nextcloud/node_modules/underscore/modules/iteratee.js","webpack:///nextcloud/node_modules/underscore/modules/_cb.js","webpack:///nextcloud/node_modules/underscore/modules/mapObject.js","webpack:///nextcloud/node_modules/underscore/modules/noop.js","webpack:///nextcloud/node_modules/underscore/modules/propertyOf.js","webpack:///nextcloud/node_modules/underscore/modules/times.js","webpack:///nextcloud/node_modules/underscore/modules/random.js","webpack:///nextcloud/node_modules/underscore/modules/now.js","webpack:///nextcloud/node_modules/underscore/modules/_createEscaper.js","webpack:///nextcloud/node_modules/underscore/modules/_escapeMap.js","webpack:///nextcloud/node_modules/underscore/modules/escape.js","webpack:///nextcloud/node_modules/underscore/modules/unescape.js","webpack:///nextcloud/node_modules/underscore/modules/_unescapeMap.js","webpack:///nextcloud/node_modules/underscore/modules/templateSettings.js","webpack:///nextcloud/node_modules/underscore/modules/template.js","webpack:///nextcloud/node_modules/underscore/modules/result.js","webpack:///nextcloud/node_modules/underscore/modules/uniqueId.js","webpack:///nextcloud/node_modules/underscore/modules/chain.js","webpack:///nextcloud/node_modules/underscore/modules/_executeBound.js","webpack:///nextcloud/node_modules/underscore/modules/partial.js","webpack:///nextcloud/node_modules/underscore/modules/bind.js","webpack:///nextcloud/node_modules/underscore/modules/_isArrayLike.js","webpack:///nextcloud/node_modules/underscore/modules/_flatten.js","webpack:///nextcloud/node_modules/underscore/modules/bindAll.js","webpack:///nextcloud/node_modules/underscore/modules/memoize.js","webpack:///nextcloud/node_modules/underscore/modules/delay.js","webpack:///nextcloud/node_modules/underscore/modules/defer.js","webpack:///nextcloud/node_modules/underscore/modules/throttle.js","webpack:///nextcloud/node_modules/underscore/modules/debounce.js","webpack:///nextcloud/node_modules/underscore/modules/wrap.js","webpack:///nextcloud/node_modules/underscore/modules/negate.js","webpack:///nextcloud/node_modules/underscore/modules/compose.js","webpack:///nextcloud/node_modules/underscore/modules/after.js","webpack:///nextcloud/node_modules/underscore/modules/before.js","webpack:///nextcloud/node_modules/underscore/modules/once.js","webpack:///nextcloud/node_modules/underscore/modules/findKey.js","webpack:///nextcloud/node_modules/underscore/modules/_createPredicateIndexFinder.js","webpack:///nextcloud/node_modules/underscore/modules/findIndex.js","webpack:///nextcloud/node_modules/underscore/modules/findLastIndex.js","webpack:///nextcloud/node_modules/underscore/modules/sortedIndex.js","webpack:///nextcloud/node_modules/underscore/modules/_createIndexFinder.js","webpack:///nextcloud/node_modules/underscore/modules/indexOf.js","webpack:///nextcloud/node_modules/underscore/modules/lastIndexOf.js","webpack:///nextcloud/node_modules/underscore/modules/find.js","webpack:///nextcloud/node_modules/underscore/modules/findWhere.js","webpack:///nextcloud/node_modules/underscore/modules/each.js","webpack:///nextcloud/node_modules/underscore/modules/map.js","webpack:///nextcloud/node_modules/underscore/modules/_createReduce.js","webpack:///nextcloud/node_modules/underscore/modules/reduce.js","webpack:///nextcloud/node_modules/underscore/modules/reduceRight.js","webpack:///nextcloud/node_modules/underscore/modules/filter.js","webpack:///nextcloud/node_modules/underscore/modules/reject.js","webpack:///nextcloud/node_modules/underscore/modules/every.js","webpack:///nextcloud/node_modules/underscore/modules/some.js","webpack:///nextcloud/node_modules/underscore/modules/contains.js","webpack:///nextcloud/node_modules/underscore/modules/invoke.js","webpack:///nextcloud/node_modules/underscore/modules/pluck.js","webpack:///nextcloud/node_modules/underscore/modules/where.js","webpack:///nextcloud/node_modules/underscore/modules/max.js","webpack:///nextcloud/node_modules/underscore/modules/min.js","webpack:///nextcloud/node_modules/underscore/modules/toArray.js","webpack:///nextcloud/node_modules/underscore/modules/sample.js","webpack:///nextcloud/node_modules/underscore/modules/shuffle.js","webpack:///nextcloud/node_modules/underscore/modules/sortBy.js","webpack:///nextcloud/node_modules/underscore/modules/_group.js","webpack:///nextcloud/node_modules/underscore/modules/groupBy.js","webpack:///nextcloud/node_modules/underscore/modules/indexBy.js","webpack:///nextcloud/node_modules/underscore/modules/countBy.js","webpack:///nextcloud/node_modules/underscore/modules/partition.js","webpack:///nextcloud/node_modules/underscore/modules/size.js","webpack:///nextcloud/node_modules/underscore/modules/_keyInObj.js","webpack:///nextcloud/node_modules/underscore/modules/pick.js","webpack:///nextcloud/node_modules/underscore/modules/omit.js","webpack:///nextcloud/node_modules/underscore/modules/initial.js","webpack:///nextcloud/node_modules/underscore/modules/first.js","webpack:///nextcloud/node_modules/underscore/modules/rest.js","webpack:///nextcloud/node_modules/underscore/modules/last.js","webpack:///nextcloud/node_modules/underscore/modules/compact.js","webpack:///nextcloud/node_modules/underscore/modules/flatten.js","webpack:///nextcloud/node_modules/underscore/modules/difference.js","webpack:///nextcloud/node_modules/underscore/modules/without.js","webpack:///nextcloud/node_modules/underscore/modules/uniq.js","webpack:///nextcloud/node_modules/underscore/modules/union.js","webpack:///nextcloud/node_modules/underscore/modules/intersection.js","webpack:///nextcloud/node_modules/underscore/modules/unzip.js","webpack:///nextcloud/node_modules/underscore/modules/zip.js","webpack:///nextcloud/node_modules/underscore/modules/object.js","webpack:///nextcloud/node_modules/underscore/modules/range.js","webpack:///nextcloud/node_modules/underscore/modules/chunk.js","webpack:///nextcloud/node_modules/underscore/modules/_chainResult.js","webpack:///nextcloud/node_modules/underscore/modules/mixin.js","webpack:///nextcloud/node_modules/underscore/modules/underscore-array-methods.js","webpack:///nextcloud/node_modules/underscore/modules/index-default.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 = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\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:\";\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\tscript.timeout = 120;\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};","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport _ from 'underscore'\n/** @typedef {import('jquery')} jQuery */\nimport $ from 'jquery'\nimport { showMessage, TOAST_DEFAULT_TIMEOUT, TOAST_PERMANENT_TIMEOUT } from '@nextcloud/dialogs'\n\n/**\n * @todo Write documentation\n * @deprecated 17.0.0 use the `@nextcloud/dialogs` package instead\n * @namespace OC.Notification\n */\nexport default {\n\n\tupdatableNotification: null,\n\n\tgetDefaultNotificationFunction: null,\n\n\t/**\n\t * @param {Function} callback callback function\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tsetDefault(callback) {\n\t\tthis.getDefaultNotificationFunction = callback\n\t},\n\n\t/**\n\t * Hides a notification.\n\t *\n\t * If a row is given, only hide that one.\n\t * If no row is given, hide all notifications.\n\t *\n\t * @param {jQuery} [$row] notification row\n\t * @param {Function} [callback] callback\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\thide($row, callback) {\n\t\tif (_.isFunction($row)) {\n\t\t\t// first arg is the callback\n\t\t\tcallback = $row\n\t\t\t$row = undefined\n\t\t}\n\n\t\tif (!$row) {\n\t\t\tconsole.error('Missing argument $row in OC.Notification.hide() call, caller needs to be adjusted to only dismiss its own notification')\n\t\t\treturn\n\t\t}\n\n\t\t// remove the row directly\n\t\t$row.each(function() {\n\t\t\tif ($(this)[0].toastify) {\n\t\t\t\t$(this)[0].toastify.hideToast()\n\t\t\t} else {\n\t\t\t\tconsole.error('cannot hide toast because object is not set')\n\t\t\t}\n\t\t\tif (this === this.updatableNotification) {\n\t\t\t\tthis.updatableNotification = null\n\t\t\t}\n\t\t})\n\t\tif (callback) {\n\t\t\tcallback.call()\n\t\t}\n\t\tif (this.getDefaultNotificationFunction) {\n\t\t\tthis.getDefaultNotificationFunction()\n\t\t}\n\t},\n\n\t/**\n\t * Shows a notification as HTML without being sanitized before.\n\t * If you pass unsanitized user input this may lead to a XSS vulnerability.\n\t * Consider using show() instead of showHTML()\n\t *\n\t * @param {string} html Message to display\n\t * @param {object} [options] options\n\t * @param {string} [options.type] notification type\n\t * @param {number} [options.timeout] timeout value, defaults to 0 (permanent)\n\t * @return {jQuery} jQuery element for notification row\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshowHtml(html, options) {\n\t\toptions = options || {}\n\t\toptions.isHTML = true\n\t\toptions.timeout = (!options.timeout) ? TOAST_PERMANENT_TIMEOUT : options.timeout\n\t\tconst toast = showMessage(html, options)\n\t\ttoast.toastElement.toastify = toast\n\t\treturn $(toast.toastElement)\n\t},\n\n\t/**\n\t * Shows a sanitized notification\n\t *\n\t * @param {string} text Message to display\n\t * @param {object} [options] options\n\t * @param {string} [options.type] notification type\n\t * @param {number} [options.timeout] timeout value, defaults to 0 (permanent)\n\t * @return {jQuery} jQuery element for notification row\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshow(text, options) {\n\t\tconst escapeHTML = function(text) {\n\t\t\treturn text.toString()\n\t\t\t\t.split('&').join('&')\n\t\t\t\t.split('<').join('<')\n\t\t\t\t.split('>').join('>')\n\t\t\t\t.split('\"').join('"')\n\t\t\t\t.split('\\'').join(''')\n\t\t}\n\n\t\toptions = options || {}\n\t\toptions.timeout = (!options.timeout) ? TOAST_PERMANENT_TIMEOUT : options.timeout\n\t\tconst toast = showMessage(escapeHTML(text), options)\n\t\ttoast.toastElement.toastify = toast\n\t\treturn $(toast.toastElement)\n\t},\n\n\t/**\n\t * Updates (replaces) a sanitized notification.\n\t *\n\t * @param {string} text Message to display\n\t * @return {jQuery} JQuery element for notification row\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshowUpdate(text) {\n\t\tif (this.updatableNotification) {\n\t\t\tthis.updatableNotification.hideToast()\n\t\t}\n\t\tthis.updatableNotification = showMessage(text, { timeout: TOAST_PERMANENT_TIMEOUT })\n\t\tthis.updatableNotification.toastElement.toastify = this.updatableNotification\n\t\treturn $(this.updatableNotification.toastElement)\n\t},\n\n\t/**\n\t * Shows a notification that disappears after x seconds, default is\n\t * 7 seconds\n\t *\n\t * @param {string} text Message to show\n\t * @param {Array} [options] options array\n\t * @param {number} [options.timeout] timeout in seconds, if this is 0 it will show the message permanently\n\t * @param {boolean} [options.isHTML] an indicator for HTML notifications (true) or text (false)\n\t * @param {string} [options.type] notification type\n\t * @return {jQuery} the toast element\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshowTemporary(text, options) {\n\t\toptions = options || {}\n\t\toptions.timeout = options.timeout || TOAST_DEFAULT_TIMEOUT\n\t\tconst toast = showMessage(text, options)\n\t\ttoast.toastElement.toastify = toast\n\t\treturn $(toast.toastElement)\n\t},\n\n\t/**\n\t * Returns whether a notification is hidden.\n\t *\n\t * @return {boolean}\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tisHidden() {\n\t\treturn !$('#content').find('.toastify').length\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 _ from 'underscore'\nimport $ from 'jquery'\n\nimport OC from './index.js'\nimport Notification from './notification.js'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { showWarning } from '@nextcloud/dialogs'\n\n/**\n * Warn users that the connection to the server was lost temporarily\n *\n * This function is throttled to prevent stacked notifications.\n * After 7sec the first notification is gone, then we can show another one\n * if necessary.\n */\nexport const ajaxConnectionLostHandler = _.throttle(() => {\n\tshowWarning(t('core', 'Connection to server lost'))\n}, 7 * 1000, { trailing: false })\n\n/**\n * Process ajax error, redirects to main page\n * if an error/auth error status was returned.\n *\n * @param {XMLHttpRequest} xhr xhr request\n */\nexport const processAjaxError = xhr => {\n\t// purposefully aborted request ?\n\t// OC._userIsNavigatingAway needed to distinguish Ajax calls cancelled by navigating away\n\t// from calls cancelled by failed cross-domain Ajax due to SSO redirect\n\tif (xhr.status === 0 && (xhr.statusText === 'abort' || xhr.statusText === 'timeout' || OC._reloadCalled)) {\n\t\treturn\n\t}\n\n\tif ([302, 303, 307, 401].includes(xhr.status) && getCurrentUser()) {\n\t\t// sometimes \"beforeunload\" happens later, so need to defer the reload a bit\n\t\tsetTimeout(function() {\n\t\t\tif (!OC._userIsNavigatingAway && !OC._reloadCalled) {\n\t\t\t\tlet timer = 0\n\t\t\t\tconst seconds = 5\n\t\t\t\tconst interval = setInterval(function() {\n\t\t\t\t\tNotification.showUpdate(n('core', 'Problem loading page, reloading in %n second', 'Problem loading page, reloading in %n seconds', seconds - timer))\n\t\t\t\t\tif (timer >= seconds) {\n\t\t\t\t\t\tclearInterval(interval)\n\t\t\t\t\t\tOC.reload()\n\t\t\t\t\t}\n\t\t\t\t\ttimer++\n\t\t\t\t}, 1000, // 1 second interval\n\t\t\t\t)\n\n\t\t\t\t// only call reload once\n\t\t\t\tOC._reloadCalled = true\n\t\t\t}\n\t\t}, 100)\n\t} else if (xhr.status === 0) {\n\t\t// Connection lost (e.g. WiFi disconnected or server is down)\n\t\tsetTimeout(function() {\n\t\t\tif (!OC._userIsNavigatingAway && !OC._reloadCalled) {\n\t\t\t\t// TODO: call method above directly\n\t\t\t\tOC._ajaxConnectionLostHandler()\n\t\t\t}\n\t\t}, 100)\n\t}\n}\n\n/**\n * Registers XmlHttpRequest object for global error processing.\n *\n * This means that if this XHR object returns 401 or session timeout errors,\n * the current page will automatically be reloaded.\n *\n * @param {XMLHttpRequest} xhr xhr request\n */\nexport const registerXHRForErrorProcessing = xhr => {\n\tconst loadCallback = () => {\n\t\tif (xhr.readyState !== 4) {\n\t\t\treturn\n\t\t}\n\n\t\tif ((xhr.status >= 200 && xhr.status < 300) || xhr.status === 304) {\n\t\t\treturn\n\t\t}\n\n\t\t// fire jquery global ajax error handler\n\t\t$(document).trigger(new $.Event('ajaxError'), xhr)\n\t}\n\n\tconst errorCallback = () => {\n\t\t// fire jquery global ajax error handler\n\t\t$(document).trigger(new $.Event('ajaxError'), xhr)\n\t}\n\n\tif (xhr.addEventListener) {\n\t\txhr.addEventListener('load', loadCallback)\n\t\txhr.addEventListener('error', errorCallback)\n\t}\n\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-FileCopyrightText: 2014 ownCloud, Inc.\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport $ from 'jquery'\n\nlet dynamicSlideToggleEnabled = false\n\nconst Apps = {\n\tenableDynamicSlideToggle() {\n\t\tdynamicSlideToggleEnabled = true\n\t},\n}\n\n/**\n * Shows the #app-sidebar and add .with-app-sidebar to subsequent siblings\n *\n * @param {object} [$el] sidebar element to show, defaults to $('#app-sidebar')\n */\nApps.showAppSidebar = function($el) {\n\tconst $appSidebar = $el || $('#app-sidebar')\n\t$appSidebar.removeClass('disappear').show()\n\t$('#app-content').trigger(new $.Event('appresized'))\n}\n\n/**\n * Shows the #app-sidebar and removes .with-app-sidebar from subsequent\n * siblings\n *\n * @param {object} [$el] sidebar element to hide, defaults to $('#app-sidebar')\n */\nApps.hideAppSidebar = function($el) {\n\tconst $appSidebar = $el || $('#app-sidebar')\n\t$appSidebar.hide().addClass('disappear')\n\t$('#app-content').trigger(new $.Event('appresized'))\n}\n\n/**\n * Provides a way to slide down a target area through a button and slide it\n * up if the user clicks somewhere else. Used for the news app settings and\n * add new field.\n *\n * Usage:\n * \n *
    I'm sliding up
    \n */\nexport const registerAppsSlideToggle = () => {\n\tlet buttons = $('[data-apps-slide-toggle]')\n\n\tif (buttons.length === 0) {\n\t\t$('#app-navigation').addClass('without-app-settings')\n\t}\n\n\t$(document).click(function(event) {\n\n\t\tif (dynamicSlideToggleEnabled) {\n\t\t\tbuttons = $('[data-apps-slide-toggle]')\n\t\t}\n\n\t\tbuttons.each(function(index, button) {\n\n\t\t\tconst areaSelector = $(button).data('apps-slide-toggle')\n\t\t\tconst area = $(areaSelector)\n\n\t\t\t/**\n\t\t\t *\n\t\t\t */\n\t\t\tfunction hideArea() {\n\t\t\t\tarea.slideUp(OC.menuSpeed * 4, function() {\n\t\t\t\t\tarea.trigger(new $.Event('hide'))\n\t\t\t\t})\n\t\t\t\tarea.removeClass('opened')\n\t\t\t\t$(button).removeClass('opened')\n\t\t\t\t$(button).attr('aria-expanded', 'false')\n\t\t\t}\n\n\t\t\t/**\n\t\t\t *\n\t\t\t */\n\t\t\tfunction showArea() {\n\t\t\t\tarea.slideDown(OC.menuSpeed * 4, function() {\n\t\t\t\t\tarea.trigger(new $.Event('show'))\n\t\t\t\t})\n\t\t\t\tarea.addClass('opened')\n\t\t\t\t$(button).addClass('opened')\n\t\t\t\t$(button).attr('aria-expanded', 'true')\n\t\t\t\tconst input = $(areaSelector + ' [autofocus]')\n\t\t\t\tif (input.length === 1) {\n\t\t\t\t\tinput.focus()\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// do nothing if the area is animated\n\t\t\tif (!area.is(':animated')) {\n\n\t\t\t\t// button toggles the area\n\t\t\t\tif ($(button).is($(event.target).closest('[data-apps-slide-toggle]'))) {\n\t\t\t\t\tif (area.is(':visible')) {\n\t\t\t\t\t\thideArea()\n\t\t\t\t\t} else {\n\t\t\t\t\t\tshowArea()\n\t\t\t\t\t}\n\n\t\t\t\t\t// all other areas that have not been clicked but are open\n\t\t\t\t\t// should be slid up\n\t\t\t\t} else {\n\t\t\t\t\tconst closest = $(event.target).closest(areaSelector)\n\t\t\t\t\tif (area.is(':visible') && closest[0] !== area[0]) {\n\t\t\t\t\t\thideArea()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\n\t})\n}\n\nexport default Apps\n","/**\n * SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors\n * SPDX-FileCopyrightText: 2016 ownCloud, Inc.\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport $ from 'jquery'\nimport { generateOcsUrl } from '@nextcloud/router'\n\nimport OC from '../OC/index.js'\n\n/**\n * @param {string} method 'post' or 'delete'\n * @param {string} endpoint endpoint\n * @param {object} [options] destructuring object\n * @param {object} [options.data] option data\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n */\nfunction call(method, endpoint, options) {\n\tif ((method === 'post' || method === 'delete') && OC.PasswordConfirmation.requiresPasswordConfirmation()) {\n\t\tOC.PasswordConfirmation.requirePasswordConfirmation(_.bind(call, this, method, endpoint, options))\n\t\treturn\n\t}\n\n\toptions = options || {}\n\t$.ajax({\n\t\ttype: method.toUpperCase(),\n\t\turl: generateOcsUrl('apps/provisioning_api/api/v1/config/apps') + endpoint,\n\t\tdata: options.data || {},\n\t\tsuccess: options.success,\n\t\terror: options.error,\n\t})\n}\n\n/**\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @since 11.0.0\n */\nexport function getApps(options) {\n\tcall('get', '', options)\n}\n\n/**\n * @param {string} app app id\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n * @since 11.0.0\n */\nexport function getKeys(app, options) {\n\tcall('get', '/' + app, options)\n}\n\n/**\n * @param {string} app app id\n * @param {string} key key\n * @param {string | Function} defaultValue default value\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n * @since 11.0.0\n */\nexport function getValue(app, key, defaultValue, options) {\n\toptions = options || {}\n\toptions.data = {\n\t\tdefaultValue,\n\t}\n\n\tcall('get', '/' + app + '/' + key, options)\n}\n\n/**\n * @param {string} app app id\n * @param {string} key key\n * @param {string} value value\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n * @since 11.0.0\n */\nexport function setValue(app, key, value, options) {\n\toptions = options || {}\n\toptions.data = {\n\t\tvalue,\n\t}\n\n\tcall('post', '/' + app + '/' + key, options)\n}\n\n/**\n * @param {string} app app id\n * @param {string} key key\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n * @since 11.0.0\n */\nexport function deleteKey(app, key, options) {\n\tcall('delete', '/' + app + '/' + key, options)\n}\n","/**\n * SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors\n * SPDX-FileCopyrightText: 2014 ownCloud, Inc.\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/* eslint-disable */\n import { getValue, setValue, getApps, getKeys, deleteKey } from '../OCP/appconfig.js'\n\nexport const appConfig = window.oc_appconfig || {}\n\n/**\n * @namespace\n * @deprecated 16.0.0 Use OCP.AppConfig instead\n */\nexport const AppConfig = {\n\t/**\n\t * @deprecated Use OCP.AppConfig.getValue() instead\n\t */\n\tgetValue: function(app, key, defaultValue, callback) {\n\t\tgetValue(app, key, defaultValue, {\n\t\t\tsuccess: callback\n\t\t})\n\t},\n\n\t/**\n\t * @deprecated Use OCP.AppConfig.setValue() instead\n\t */\n\tsetValue: function(app, key, value) {\n\t\tsetValue(app, key, value)\n\t},\n\n\t/**\n\t * @deprecated Use OCP.AppConfig.getApps() instead\n\t */\n\tgetApps: function(callback) {\n\t\tgetApps({\n\t\t\tsuccess: callback\n\t\t})\n\t},\n\n\t/**\n\t * @deprecated Use OCP.AppConfig.getKeys() instead\n\t */\n\tgetKeys: function(app, callback) {\n\t\tgetKeys(app, {\n\t\t\tsuccess: callback\n\t\t})\n\t},\n\n\t/**\n\t * @deprecated Use OCP.AppConfig.deleteKey() instead\n\t */\n\tdeleteKey: function(app, key) {\n\t\tdeleteKey(app, key)\n\t}\n\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nconst appswebroots = (window._oc_appswebroots !== undefined) ? window._oc_appswebroots : false\n\nexport default appswebroots\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/* eslint-disable */\nimport _ from 'underscore'\nimport { dav } from 'davclient.js'\n\nconst methodMap = {\n\tcreate: 'POST',\n\tupdate: 'PROPPATCH',\n\tpatch: 'PROPPATCH',\n\tdelete: 'DELETE',\n\tread: 'PROPFIND'\n}\n\n// Throw an error when a URL is needed, and none is supplied.\nfunction urlError() {\n\tthrow new Error('A \"url\" property or function must be specified')\n}\n\n/**\n * Convert a single propfind result to JSON\n *\n * @param {Object} result\n * @param {Object} davProperties properties mapping\n */\nfunction parsePropFindResult(result, davProperties) {\n\tif (_.isArray(result)) {\n\t\treturn _.map(result, function(subResult) {\n\t\t\treturn parsePropFindResult(subResult, davProperties)\n\t\t})\n\t}\n\tvar props = {\n\t\thref: result.href\n\t}\n\n\t_.each(result.propStat, function(propStat) {\n\t\tif (propStat.status !== 'HTTP/1.1 200 OK') {\n\t\t\treturn\n\t\t}\n\n\t\tfor (var key in propStat.properties) {\n\t\t\tvar propKey = key\n\t\t\tif (key in davProperties) {\n\t\t\t\tpropKey = davProperties[key]\n\t\t\t}\n\t\t\tprops[propKey] = propStat.properties[key]\n\t\t}\n\t})\n\n\tif (!props.id) {\n\t\t// parse id from href\n\t\tprops.id = parseIdFromLocation(props.href)\n\t}\n\n\treturn props\n}\n\n/**\n * Parse ID from location\n *\n * @param {string} url url\n * @returns {string} id\n */\nfunction parseIdFromLocation(url) {\n\tvar queryPos = url.indexOf('?')\n\tif (queryPos > 0) {\n\t\turl = url.substr(0, queryPos)\n\t}\n\n\tvar parts = url.split('/')\n\tvar result\n\tdo {\n\t\tresult = parts[parts.length - 1]\n\t\tparts.pop()\n\t\t// note: first result can be empty when there is a trailing slash,\n\t\t// so we take the part before that\n\t} while (!result && parts.length > 0)\n\n\treturn result\n}\n\nfunction isSuccessStatus(status) {\n\treturn status >= 200 && status <= 299\n}\n\nfunction convertModelAttributesToDavProperties(attrs, davProperties) {\n\tvar props = {}\n\tvar key\n\tfor (key in attrs) {\n\t\tvar changedProp = davProperties[key]\n\t\tvar value = attrs[key]\n\t\tif (!changedProp) {\n\t\t\tconsole.warn('No matching DAV property for property \"' + key)\n\t\t\tchangedProp = key\n\t\t}\n\t\tif (_.isBoolean(value) || _.isNumber(value)) {\n\t\t\t// convert to string\n\t\t\tvalue = '' + value\n\t\t}\n\t\tprops[changedProp] = value\n\t}\n\treturn props\n}\n\nfunction callPropFind(client, options, model, headers) {\n\treturn client.propFind(\n\t\toptions.url,\n\t\t_.values(options.davProperties) || [],\n\t\toptions.depth,\n\t\theaders\n\t).then(function(response) {\n\t\tif (isSuccessStatus(response.status)) {\n\t\t\tif (_.isFunction(options.success)) {\n\t\t\t\tvar propsMapping = _.invert(options.davProperties)\n\t\t\t\tvar results = parsePropFindResult(response.body, propsMapping)\n\t\t\t\tif (options.depth > 0) {\n\t\t\t\t\t// discard root entry\n\t\t\t\t\tresults.shift()\n\t\t\t\t}\n\n\t\t\t\toptions.success(results)\n\n\t\t\t}\n\t\t} else if (_.isFunction(options.error)) {\n\t\t\toptions.error(response)\n\t\t}\n\t})\n}\n\nfunction callPropPatch(client, options, model, headers) {\n\treturn client.propPatch(\n\t\toptions.url,\n\t\tconvertModelAttributesToDavProperties(model.changed, options.davProperties),\n\t\theaders\n\t).then(function(result) {\n\t\tif (isSuccessStatus(result.status)) {\n\t\t\tif (_.isFunction(options.success)) {\n\t\t\t\t// pass the object's own values because the server\n\t\t\t\t// does not return the updated model\n\t\t\t\toptions.success(model.toJSON())\n\t\t\t}\n\t\t} else if (_.isFunction(options.error)) {\n\t\t\toptions.error(result)\n\t\t}\n\t})\n\n}\n\nfunction callMkCol(client, options, model, headers) {\n\t// call MKCOL without data, followed by PROPPATCH\n\treturn client.request(\n\t\toptions.type,\n\t\toptions.url,\n\t\theaders,\n\t\tnull\n\t).then(function(result) {\n\t\tif (!isSuccessStatus(result.status)) {\n\t\t\tif (_.isFunction(options.error)) {\n\t\t\t\toptions.error(result)\n\t\t\t}\n\t\t\treturn\n\t\t}\n\n\t\tcallPropPatch(client, options, model, headers)\n\t})\n}\n\nfunction callMethod(client, options, model, headers) {\n\theaders['Content-Type'] = 'application/json'\n\treturn client.request(\n\t\toptions.type,\n\t\toptions.url,\n\t\theaders,\n\t\toptions.data\n\t).then(function(result) {\n\t\tif (!isSuccessStatus(result.status)) {\n\t\t\tif (_.isFunction(options.error)) {\n\t\t\t\toptions.error(result)\n\t\t\t}\n\t\t\treturn\n\t\t}\n\n\t\tif (_.isFunction(options.success)) {\n\t\t\tif (options.type === 'PUT' || options.type === 'POST' || options.type === 'MKCOL') {\n\t\t\t\t// pass the object's own values because the server\n\t\t\t\t// does not return anything\n\t\t\t\tvar responseJson = result.body || model.toJSON()\n\t\t\t\tvar locationHeader = result.xhr.getResponseHeader('Content-Location')\n\t\t\t\tif (options.type === 'POST' && locationHeader) {\n\t\t\t\t\tresponseJson.id = parseIdFromLocation(locationHeader)\n\t\t\t\t}\n\t\t\t\toptions.success(responseJson)\n\t\t\t\treturn\n\t\t\t}\n\t\t\t// if multi-status, parse\n\t\t\tif (result.status === 207) {\n\t\t\t\tvar propsMapping = _.invert(options.davProperties)\n\t\t\t\toptions.success(parsePropFindResult(result.body, propsMapping))\n\t\t\t} else {\n\t\t\t\toptions.success(result.body)\n\t\t\t}\n\t\t}\n\t})\n}\n\nexport const davCall = (options, model) => {\n\tvar client = new dav.Client({\n\t\tbaseUrl: options.url,\n\t\txmlNamespaces: _.extend({\n\t\t\t'DAV:': 'd',\n\t\t\t'http://owncloud.org/ns': 'oc'\n\t\t}, options.xmlNamespaces || {})\n\t})\n\tclient.resolveUrl = function() {\n\t\treturn options.url\n\t}\n\tvar headers = _.extend({\n\t\t'X-Requested-With': 'XMLHttpRequest',\n\t\t'requesttoken': OC.requestToken\n\t}, options.headers)\n\tif (options.type === 'PROPFIND') {\n\t\treturn callPropFind(client, options, model, headers)\n\t} else if (options.type === 'PROPPATCH') {\n\t\treturn callPropPatch(client, options, model, headers)\n\t} else if (options.type === 'MKCOL') {\n\t\treturn callMkCol(client, options, model, headers)\n\t} else {\n\t\treturn callMethod(client, options, model, headers)\n\t}\n}\n\n/**\n * DAV transport\n */\nexport const davSync = Backbone => (method, model, options) => {\n\tvar params = { type: methodMap[method] || method }\n\tvar isCollection = (model instanceof Backbone.Collection)\n\n\tif (method === 'update') {\n\t\t// if a model has an inner collection, it must define an\n\t\t// attribute \"hasInnerCollection\" that evaluates to true\n\t\tif (model.hasInnerCollection) {\n\t\t\t// if the model itself is a Webdav collection, use MKCOL\n\t\t\tparams.type = 'MKCOL'\n\t\t} else if (model.usePUT || (model.collection && model.collection.usePUT)) {\n\t\t\t// use PUT instead of PROPPATCH\n\t\t\tparams.type = 'PUT'\n\t\t}\n\t}\n\n\t// Ensure that we have a URL.\n\tif (!options.url) {\n\t\tparams.url = _.result(model, 'url') || urlError()\n\t}\n\n\t// Ensure that we have the appropriate request data.\n\tif (options.data == null && model && (method === 'create' || method === 'update' || method === 'patch')) {\n\t\tparams.data = JSON.stringify(options.attrs || model.toJSON(options))\n\t}\n\n\t// Don't process data on a non-GET request.\n\tif (params.type !== 'PROPFIND') {\n\t\tparams.processData = false\n\t}\n\n\tif (params.type === 'PROPFIND' || params.type === 'PROPPATCH') {\n\t\tvar davProperties = model.davProperties\n\t\tif (!davProperties && model.model) {\n\t\t\t// use dav properties from model in case of collection\n\t\t\tdavProperties = model.model.prototype.davProperties\n\t\t}\n\t\tif (davProperties) {\n\t\t\tif (_.isFunction(davProperties)) {\n\t\t\t\tparams.davProperties = davProperties.call(model)\n\t\t\t} else {\n\t\t\t\tparams.davProperties = davProperties\n\t\t\t}\n\t\t}\n\n\t\tparams.davProperties = _.extend(params.davProperties || {}, options.davProperties)\n\n\t\tif (_.isUndefined(options.depth)) {\n\t\t\tif (isCollection) {\n\t\t\t\toptions.depth = 1\n\t\t\t} else {\n\t\t\t\toptions.depth = 0\n\t\t\t}\n\t\t}\n\t}\n\n\t// Pass along `textStatus` and `errorThrown` from jQuery.\n\tvar error = options.error\n\toptions.error = function(xhr, textStatus, errorThrown) {\n\t\toptions.textStatus = textStatus\n\t\toptions.errorThrown = errorThrown\n\t\tif (error) {\n\t\t\terror.call(options.context, xhr, textStatus, errorThrown)\n\t\t}\n\t}\n\n\t// Make the request, allowing the user to override any Ajax options.\n\tvar xhr = options.xhr = Backbone.davCall(_.extend(params, options), model)\n\tmodel.trigger('request', model, xhr, options)\n\treturn xhr\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport VendorBackbone from 'backbone'\nimport { davCall, davSync } from './backbone-webdav.js'\n\nconst Backbone = VendorBackbone.noConflict()\n\n// Patch Backbone for DAV\nObject.assign(Backbone, {\n\tdavCall,\n\tdavSync: davSync(Backbone),\n})\n\nexport default Backbone\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport $ from 'jquery'\n\n/**\n * Parses a URL query string into a JS map\n *\n * @param {string} queryString query string in the format param1=1234¶m2=abcde¶m3=xyz\n * @return {Record} map containing key/values matching the URL parameters\n */\nexport const parse = queryString => {\n\tlet pos\n\tlet components\n\tconst result = {}\n\tlet key\n\tif (!queryString) {\n\t\treturn null\n\t}\n\tpos = queryString.indexOf('?')\n\tif (pos >= 0) {\n\t\tqueryString = queryString.substr(pos + 1)\n\t}\n\tconst parts = queryString.replace(/\\+/g, '%20').split('&')\n\tfor (let i = 0; i < parts.length; i++) {\n\t\t// split on first equal sign\n\t\tconst part = parts[i]\n\t\tpos = part.indexOf('=')\n\t\tif (pos >= 0) {\n\t\t\tcomponents = [\n\t\t\t\tpart.substr(0, pos),\n\t\t\t\tpart.substr(pos + 1),\n\t\t\t]\n\t\t} else {\n\t\t\t// key only\n\t\t\tcomponents = [part]\n\t\t}\n\t\tif (!components.length) {\n\t\t\tcontinue\n\t\t}\n\t\tkey = decodeURIComponent(components[0])\n\t\tif (!key) {\n\t\t\tcontinue\n\t\t}\n\t\t// if equal sign was there, return string\n\t\tif (components.length > 1) {\n\t\t\tresult[key] = decodeURIComponent(components[1])\n\t\t} else {\n\t\t\t// no equal sign => null value\n\t\t\tresult[key] = null\n\t\t}\n\t}\n\treturn result\n}\n\n/**\n * Builds a URL query from a JS map.\n *\n * @param {Record} params map containing key/values matching the URL parameters\n * @return {string} String containing a URL query (without question) mark\n */\nexport const build = params => {\n\tif (!params) {\n\t\treturn ''\n\t}\n\treturn $.map(params, function(value, key) {\n\t\tlet s = encodeURIComponent(key)\n\t\tif (value !== null && typeof (value) !== 'undefined') {\n\t\t\ts += '=' + encodeURIComponent(value)\n\t\t}\n\t\treturn s\n\t}).join('&')\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nconst config = window._oc_config || {}\n\nexport default config\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nconst rawUid = document\n\t.getElementsByTagName('head')[0]\n\t.getAttribute('data-user')\nconst displayName = document\n\t.getElementsByTagName('head')[0]\n\t.getAttribute('data-user-displayname')\n\nexport const currentUser = rawUid !== undefined ? rawUid : false\n\nexport const getCurrentUser = () => {\n\treturn {\n\t\tuid: currentUser,\n\t\tdisplayName,\n\t}\n}\n","/**\n * SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors\n * SPDX-FileCopyrightText: 2015 ownCloud, Inc.\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/* eslint-disable */\nimport _ from 'underscore'\nimport $ from 'jquery'\n\nimport IconMove from '@mdi/svg/svg/folder-move.svg?raw'\nimport IconCopy from '@mdi/svg/svg/folder-multiple.svg?raw'\n\nimport OC from './index.js'\nimport { DialogBuilder, FilePickerType, getFilePickerBuilder, spawnDialog } from '@nextcloud/dialogs'\nimport { translate as t } from '@nextcloud/l10n'\nimport { basename } from 'path'\nimport { defineAsyncComponent } from 'vue'\n\n/**\n * this class to ease the usage of jquery dialogs\n */\nconst Dialogs = {\n\t// dialog button types\n\t/** @deprecated use `@nextcloud/dialogs` */\n\tYES_NO_BUTTONS: 70,\n\t/** @deprecated use `@nextcloud/dialogs` */\n\tOK_BUTTONS: 71,\n\n\t/** @deprecated use FilePickerType from `@nextcloud/dialogs` */\n\tFILEPICKER_TYPE_CHOOSE: 1,\n\t/** @deprecated use FilePickerType from `@nextcloud/dialogs` */\n\tFILEPICKER_TYPE_MOVE: 2,\n\t/** @deprecated use FilePickerType from `@nextcloud/dialogs` */\n\tFILEPICKER_TYPE_COPY: 3,\n\t/** @deprecated use FilePickerType from `@nextcloud/dialogs` */\n\tFILEPICKER_TYPE_COPY_MOVE: 4,\n\t/** @deprecated use FilePickerType from `@nextcloud/dialogs` */\n\tFILEPICKER_TYPE_CUSTOM: 5,\n\n\t/**\n\t * displays alert dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK\n\t * @param {boolean} [modal] make the dialog modal\n\t *\n\t * @deprecated 30.0.0 Use `@nextcloud/dialogs` instead or build your own with `@nextcloud/vue` NcDialog\n\t */\n\talert: function(text, title, callback, modal) {\n\t\tthis.message(\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\t'alert',\n\t\t\tDialogs.OK_BUTTON,\n\t\t\tcallback,\n\t\t\tmodal\n\t\t)\n\t},\n\n\t/**\n\t * displays info dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK\n\t * @param {boolean} [modal] make the dialog modal\n\t *\n\t * @deprecated 30.0.0 Use `@nextcloud/dialogs` instead or build your own with `@nextcloud/vue` NcDialog\n\t */\n\tinfo: function(text, title, callback, modal) {\n\t\tthis.message(text, title, 'info', Dialogs.OK_BUTTON, callback, modal)\n\t},\n\n\t/**\n\t * displays confirmation dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @returns {Promise}\n\t *\n\t * @deprecated 30.0.0 Use `@nextcloud/dialogs` instead or build your own with `@nextcloud/vue` NcDialog\n\t */\n\tconfirm: function(text, title, callback, modal) {\n\t\treturn this.message(\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\t'notice',\n\t\t\tDialogs.YES_NO_BUTTONS,\n\t\t\tcallback,\n\t\t\tmodal\n\t\t)\n\t},\n\t/**\n\t * displays confirmation dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {(number|{type: number, confirm: string, cancel: string, confirmClasses: string})} buttons text content of buttons\n\t * @param {function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @returns {Promise}\n\t *\n\t * @deprecated 30.0.0 Use `@nextcloud/dialogs` instead or build your own with `@nextcloud/vue` NcDialog\n\t */\n\tconfirmDestructive: function(text, title, buttons = Dialogs.OK_BUTTONS, callback = () => {}, modal) {\n\t\treturn (new DialogBuilder())\n\t\t\t.setName(title)\n\t\t\t.setText(text)\n\t\t\t.setButtons(\n\t\t\t\tbuttons === Dialogs.OK_BUTTONS\n\t\t\t\t? [\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: t('core', 'Yes'),\n\t\t\t\t\t\ttype: 'error',\n\t\t\t\t\t\tcallback: () => {\n\t\t\t\t\t\t\tcallback.clicked = true\n\t\t\t\t\t\t\tcallback(true)\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t\t: Dialogs._getLegacyButtons(buttons, callback)\n\t\t\t)\n\t\t\t.build()\n\t\t\t.show()\n\t\t\t.then(() => {\n\t\t\t\tif (!callback.clicked) {\n\t\t\t\t\tcallback(false)\n\t\t\t\t}\n\t\t\t})\n\t},\n\t/**\n\t * displays confirmation dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @returns {Promise}\n\t *\n\t * @deprecated 30.0.0 Use `@nextcloud/dialogs` instead or build your own with `@nextcloud/vue` NcDialog\n\t */\n\tconfirmHtml: function(text, title, callback, modal) {\n\t\treturn (new DialogBuilder())\n\t\t\t.setName(title)\n\t\t\t.setText('')\n\t\t\t.setButtons([\n\t\t\t\t{\n\t\t\t\t\tlabel: t('core', 'No'),\n\t\t\t\t\tcallback: () => {},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: t('core', 'Yes'),\n\t\t\t\t\ttype: 'primary',\n\t\t\t\t\tcallback: () => {\n\t\t\t\t\t\tcallback.clicked = true\n\t\t\t\t\t\tcallback(true)\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t])\n\t\t\t.build()\n\t\t\t.setHTML(text)\n\t\t\t.show()\n\t\t\t.then(() => {\n\t\t\t\tif (!callback.clicked) {\n\t\t\t\t\tcallback(false)\n\t\t\t\t}\n\t\t\t})\n\t},\n\t/**\n\t * displays prompt dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @param {string} name name of the input field\n\t * @param {boolean} password whether the input should be a password input\n\t * @returns {Promise}\n\t *\n\t * @deprecated Use NcDialog from `@nextcloud/vue` instead\n\t */\n\tprompt: function(text, title, callback, modal, name, password) {\n\t\treturn new Promise((resolve) => {\n\t\t\tspawnDialog(\n\t\t\t\tdefineAsyncComponent(() => import('../components/LegacyDialogPrompt.vue')),\n\t\t\t\t{\n\t\t\t\t\ttext,\n\t\t\t\t\tname: title,\n\t\t\t\t\tcallback,\n\t\t\t\t\tinputName: name,\n\t\t\t\t\tisPassword: !!password\n\t\t\t\t},\n\t\t\t\t(...args) => {\n\t\t\t\t\tcallback(...args)\n\t\t\t\t\tresolve()\n\t\t\t\t},\n\t\t\t)\n\t\t})\n\t},\n\n\t/**\n\t * Legacy wrapper to the new Vue based filepicker from `@nextcloud/dialogs`\n\t *\n\t * Prefer to use the Vue filepicker directly instead.\n\t *\n\t * In order to pick several types of mime types they need to be passed as an\n\t * array of strings.\n\t *\n\t * When no mime type filter is given only files can be selected. In order to\n\t * be able to select both files and folders \"['*', 'httpd/unix-directory']\"\n\t * should be used instead.\n\t *\n\t * @param {string} title dialog title\n\t * @param {Function} callback which will be triggered when user presses Choose\n\t * @param {boolean} [multiselect] whether it should be possible to select multiple files\n\t * @param {string[]} [mimetype] mimetype to filter by - directories will always be included\n\t * @param {boolean} [_modal] do not use\n\t * @param {string} [type] Type of file picker : Choose, copy, move, copy and move\n\t * @param {string} [path] path to the folder that the the file can be picket from\n\t * @param {object} [options] additonal options that need to be set\n\t * @param {Function} [options.filter] filter function for advanced filtering\n\t * @param {boolean} [options.allowDirectoryChooser] Allow to select directories\n\t * @deprecated since 27.1.0 use the filepicker from `@nextcloud/dialogs` instead\n\t */\n\tfilepicker(title, callback, multiselect = false, mimetype = undefined, _modal = undefined, type = FilePickerType.Choose, path = undefined, options = undefined) {\n\n\t\t/**\n\t\t * Create legacy callback wrapper to support old filepicker syntax\n\t\t * @param fn The original callback\n\t\t * @param type The file picker type which was used to pick the file(s)\n\t\t */\n\t\tconst legacyCallback = (fn, type) => {\n\t\t\tconst getPath = (node) => {\n\t\t\t\tconst root = node?.root || ''\n\t\t\t\tlet path = node?.path || ''\n\t\t\t\t// TODO: Fix this in @nextcloud/files\n\t\t\t\tif (path.startsWith(root)) {\n\t\t\t\t\tpath = path.slice(root.length) || '/'\n\t\t\t\t}\n\t\t\t\treturn path\n\t\t\t}\n\n\t\t\tif (multiselect) {\n\t\t\t\treturn (nodes) => fn(nodes.map(getPath), type)\n\t\t\t} else {\n\t\t\t\treturn (nodes) => fn(getPath(nodes[0]), type)\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Coverting a Node into a legacy file info to support the OC.dialogs.filepicker filter function\n\t\t * @param node The node to convert\n\t\t */\n\t\tconst nodeToLegacyFile = (node) => ({\n\t\t\tid: node.fileid || null,\n\t\t\tpath: node.path,\n\t\t\tmimetype: node.mime || null,\n\t\t\tmtime: node.mtime?.getTime() || null,\n\t\t\tpermissions: node.permissions,\n\t\t\tname: node.attributes?.displayName || node.basename,\n\t\t\tetag: node.attributes?.etag || null,\n\t\t\thasPreview: node.attributes?.hasPreview || null,\n\t\t\tmountType: node.attributes?.mountType || null,\n\t\t\tquotaAvailableBytes: node.attributes?.quotaAvailableBytes || null,\n\t\t\ticon: null,\n\t\t\tsharePermissions: null,\n\t\t})\n\n\t\tconst builder = getFilePickerBuilder(title)\n\n\t\t// Setup buttons\n\t\tif (type === this.FILEPICKER_TYPE_CUSTOM) {\n\t\t\t(options.buttons || []).forEach((button) => {\n\t\t\t\tbuilder.addButton({\n\t\t\t\t\tcallback: legacyCallback(callback, button.type),\n\t\t\t\t\tlabel: button.text,\n\t\t\t\t\ttype: button.defaultButton ? 'primary' : 'secondary',\n\t\t\t\t})\n\t\t\t})\n\t\t} else {\n\t\t\tbuilder.setButtonFactory((nodes, path) => {\n\t\t\t\tconst buttons = []\n\t\t\t\tconst node = nodes?.[0]?.attributes?.displayName || nodes?.[0]?.basename\n\t\t\t\tconst target = node || basename(path)\n\n\t\t\t\tif (type === FilePickerType.Choose) {\n\t\t\t\t\tbuttons.push({\n\t\t\t\t\t\tcallback: legacyCallback(callback, FilePickerType.Choose),\n\t\t\t\t\t\tlabel: node && !this.multiSelect ? t('core', 'Choose {file}', { file: node }) : t('core', 'Choose'),\n\t\t\t\t\t\ttype: 'primary',\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tif (type === FilePickerType.CopyMove || type === FilePickerType.Copy) {\n\t\t\t\t\tbuttons.push({\n\t\t\t\t\t\tcallback: legacyCallback(callback, FilePickerType.Copy),\n\t\t\t\t\t\tlabel: target ? t('core', 'Copy to {target}', { target }) : t('core', 'Copy'),\n\t\t\t\t\t\ttype: 'primary',\n\t\t\t\t\t\ticon: IconCopy,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tif (type === FilePickerType.Move || type === FilePickerType.CopyMove) {\n\t\t\t\t\tbuttons.push({\n\t\t\t\t\t\tcallback: legacyCallback(callback, FilePickerType.Move),\n\t\t\t\t\t\tlabel: target ? t('core', 'Move to {target}', { target }) : t('core', 'Move'),\n\t\t\t\t\t\ttype: type === FilePickerType.Move ? 'primary' : 'secondary',\n\t\t\t\t\t\ticon: IconMove,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\treturn buttons\n\t\t\t})\n\t\t}\n\n\t\tif (mimetype) {\n\t\t\tbuilder.setMimeTypeFilter(typeof mimetype === 'string' ? [mimetype] : (mimetype || []))\n\t\t}\n\t\tif (typeof options?.filter === 'function') {\n\t\t\tbuilder.setFilter((node) => options.filter(nodeToLegacyFile(node)))\n\t\t}\n\t\tbuilder.allowDirectories(options?.allowDirectoryChooser === true || mimetype?.includes('httpd/unix-directory') || false)\n\t\t\t.setMultiSelect(multiselect)\n\t\t\t.startAt(path)\n\t\t\t.build()\n\t\t\t.pick()\n\t},\n\n\t/**\n\t * Displays raw dialog\n\t * You better use a wrapper instead ...\n\t *\n\t * @deprecated 30.0.0 Use `@nextcloud/dialogs` instead or build your own with `@nextcloud/vue` NcDialog\n\t */\n\tmessage: function(content, title, dialogType, buttons, callback = () => {}, modal, allowHtml) {\n\t\tconst builder = (new DialogBuilder())\n\t\t\t.setName(title)\n\t\t\t.setText(allowHtml ? '' : content)\n\t\t\t.setButtons(Dialogs._getLegacyButtons(buttons, callback))\n\n\t\tswitch (dialogType) {\n\t\t\tcase 'alert':\n\t\t\t\tbuilder.setSeverity('warning')\n\t\t\t\tbreak\n\t\t\tcase 'notice':\n\t\t\t\tbuilder.setSeverity('info')\n\t\t\t\tbreak\n\t\t\tdefault:\n\t\t\t\tbreak\n\t\t}\n\n\t\tconst dialog = builder.build()\n\t\n\t\tif (allowHtml) {\n\t\t\tdialog.setHTML(content)\n\t\t}\n\n\t\treturn dialog.show().then(() => {\n\t\t\tif(!callback._clicked) {\n\t\t\t\tcallback(false)\n\t\t\t}\n\t\t})\n\t},\n\n\t/**\n\t * Helper for legacy API\n\t * @deprecated\n\t */\n\t_getLegacyButtons(buttons, callback) {\n\t\tconst buttonList = []\n\n\t\tswitch (typeof buttons === 'object' ? buttons.type : buttons) {\n\t\t\tcase Dialogs.YES_NO_BUTTONS:\n\t\t\t\tbuttonList.push({\n\t\t\t\t\tlabel: buttons?.cancel ?? t('core', 'No'),\n\t\t\t\t\tcallback: () => {\n\t\t\t\t\t\tcallback._clicked = true\n\t\t\t\t\t\tcallback(false)\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t\tbuttonList.push({\n\t\t\t\t\tlabel: buttons?.confirm ?? t('core', 'Yes'),\n\t\t\t\t\ttype: 'primary',\n\t\t\t\t\tcallback: () => {\n\t\t\t\t\t\tcallback._clicked = true\n\t\t\t\t\t\tcallback(true)\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t\tbreak\n\t\t\tcase Dialogs.OK_BUTTONS:\n\t\t\t\tbuttonList.push({\n\t\t\t\t\tlabel: buttons?.confirm ?? t('core', 'OK'),\n\t\t\t\t\ttype: 'primary',\n\t\t\t\t\tcallback: () => {\n\t\t\t\t\t\tcallback._clicked = true\n\t\t\t\t\t\tcallback(true)\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t\tbreak\n\t\t\tdefault:\n\t\t\t\tconsole.error('Invalid call to OC.dialogs')\n\t\t\t\tbreak\n\t\t}\n\t\treturn buttonList\n\t},\n\n\t_fileexistsshown: false,\n\t/**\n\t * Displays file exists dialog\n\t * @param {object} data upload object\n\t * @param {object} original file with name, size and mtime\n\t * @param {object} replacement file with name, size and mtime\n\t * @param {object} controller with onCancel, onSkip, onReplace and onRename methods\n\t * @returns {Promise} jquery promise that resolves after the dialog template was loaded\n\t *\n\t * @deprecated 29.0.0 Use openConflictPicker from the @nextcloud/upload package instead\n\t */\n\tfileexists: function(data, original, replacement, controller) {\n\t\tvar self = this\n\t\tvar dialogDeferred = new $.Deferred()\n\n\t\tvar getCroppedPreview = function(file) {\n\t\t\tvar deferred = new $.Deferred()\n\t\t\t// Only process image files.\n\t\t\tvar type = file.type && file.type.split('/').shift()\n\t\t\tif (window.FileReader && type === 'image') {\n\t\t\t\tvar reader = new FileReader()\n\t\t\t\treader.onload = function(e) {\n\t\t\t\t\tvar blob = new Blob([e.target.result])\n\t\t\t\t\twindow.URL = window.URL || window.webkitURL\n\t\t\t\t\tvar originalUrl = window.URL.createObjectURL(blob)\n\t\t\t\t\tvar image = new Image()\n\t\t\t\t\timage.src = originalUrl\n\t\t\t\t\timage.onload = function() {\n\t\t\t\t\t\tvar url = crop(image)\n\t\t\t\t\t\tdeferred.resolve(url)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treader.readAsArrayBuffer(file)\n\t\t\t} else {\n\t\t\t\tdeferred.reject()\n\t\t\t}\n\t\t\treturn deferred\n\t\t}\n\n\t\tvar crop = function(img) {\n\t\t\tvar canvas = document.createElement('canvas')\n\t\t\tvar targetSize = 96\n\t\t\tvar width = img.width\n\t\t\tvar height = img.height\n\t\t\tvar x; var y; var size\n\n\t\t\t// Calculate the width and height, constraining the proportions\n\t\t\tif (width > height) {\n\t\t\t\ty = 0\n\t\t\t\tx = (width - height) / 2\n\t\t\t} else {\n\t\t\t\ty = (height - width) / 2\n\t\t\t\tx = 0\n\t\t\t}\n\t\t\tsize = Math.min(width, height)\n\n\t\t\t// Set canvas size to the cropped area\n\t\t\tcanvas.width = size\n\t\t\tcanvas.height = size\n\t\t\tvar ctx = canvas.getContext('2d')\n\t\t\tctx.drawImage(img, x, y, size, size, 0, 0, size, size)\n\n\t\t\t// Resize the canvas to match the destination (right size uses 96px)\n\t\t\tresampleHermite(canvas, size, size, targetSize, targetSize)\n\n\t\t\treturn canvas.toDataURL('image/png', 0.7)\n\t\t}\n\n\t\t/**\n\t\t * Fast image resize/resample using Hermite filter with JavaScript.\n\t\t *\n\t\t * @author: ViliusL\n\t\t *\n\t\t * @param {*} canvas\n\t\t * @param {number} W\n\t\t * @param {number} H\n\t\t * @param {number} W2\n\t\t * @param {number} H2\n\t\t */\n\t\tvar resampleHermite = function(canvas, W, H, W2, H2) {\n\t\t\tW2 = Math.round(W2)\n\t\t\tH2 = Math.round(H2)\n\t\t\tvar img = canvas.getContext('2d').getImageData(0, 0, W, H)\n\t\t\tvar img2 = canvas.getContext('2d').getImageData(0, 0, W2, H2)\n\t\t\tvar data = img.data\n\t\t\tvar data2 = img2.data\n\t\t\tvar ratio_w = W / W2\n\t\t\tvar ratio_h = H / H2\n\t\t\tvar ratio_w_half = Math.ceil(ratio_w / 2)\n\t\t\tvar ratio_h_half = Math.ceil(ratio_h / 2)\n\n\t\t\tfor (var j = 0; j < H2; j++) {\n\t\t\t\tfor (var i = 0; i < W2; i++) {\n\t\t\t\t\tvar x2 = (i + j * W2) * 4\n\t\t\t\t\tvar weight = 0\n\t\t\t\t\tvar weights = 0\n\t\t\t\t\tvar weights_alpha = 0\n\t\t\t\t\tvar gx_r = 0\n\t\t\t\t\tvar gx_g = 0\n\t\t\t\t\tvar gx_b = 0\n\t\t\t\t\tvar gx_a = 0\n\t\t\t\t\tvar center_y = (j + 0.5) * ratio_h\n\t\t\t\t\tfor (var yy = Math.floor(j * ratio_h); yy < (j + 1) * ratio_h; yy++) {\n\t\t\t\t\t\tvar dy = Math.abs(center_y - (yy + 0.5)) / ratio_h_half\n\t\t\t\t\t\tvar center_x = (i + 0.5) * ratio_w\n\t\t\t\t\t\tvar w0 = dy * dy // pre-calc part of w\n\t\t\t\t\t\tfor (var xx = Math.floor(i * ratio_w); xx < (i + 1) * ratio_w; xx++) {\n\t\t\t\t\t\t\tvar dx = Math.abs(center_x - (xx + 0.5)) / ratio_w_half\n\t\t\t\t\t\t\tvar w = Math.sqrt(w0 + dx * dx)\n\t\t\t\t\t\t\tif (w >= -1 && w <= 1) {\n\t\t\t\t\t\t\t\t// hermite filter\n\t\t\t\t\t\t\t\tweight = 2 * w * w * w - 3 * w * w + 1\n\t\t\t\t\t\t\t\tif (weight > 0) {\n\t\t\t\t\t\t\t\t\tdx = 4 * (xx + yy * W)\n\t\t\t\t\t\t\t\t\t// alpha\n\t\t\t\t\t\t\t\t\tgx_a += weight * data[dx + 3]\n\t\t\t\t\t\t\t\t\tweights_alpha += weight\n\t\t\t\t\t\t\t\t\t// colors\n\t\t\t\t\t\t\t\t\tif (data[dx + 3] < 255) { weight = weight * data[dx + 3] / 250 }\n\t\t\t\t\t\t\t\t\tgx_r += weight * data[dx]\n\t\t\t\t\t\t\t\t\tgx_g += weight * data[dx + 1]\n\t\t\t\t\t\t\t\t\tgx_b += weight * data[dx + 2]\n\t\t\t\t\t\t\t\t\tweights += weight\n\t\t\t\t\t\t\t\t}\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\tdata2[x2] = gx_r / weights\n\t\t\t\t\tdata2[x2 + 1] = gx_g / weights\n\t\t\t\t\tdata2[x2 + 2] = gx_b / weights\n\t\t\t\t\tdata2[x2 + 3] = gx_a / weights_alpha\n\t\t\t\t}\n\t\t\t}\n\t\t\tcanvas.getContext('2d').clearRect(0, 0, Math.max(W, W2), Math.max(H, H2))\n\t\t\tcanvas.width = W2\n\t\t\tcanvas.height = H2\n\t\t\tcanvas.getContext('2d').putImageData(img2, 0, 0)\n\t\t}\n\n\t\tvar addConflict = function($conflicts, original, replacement) {\n\n\t\t\tvar $conflict = $conflicts.find('.template').clone().removeClass('template').addClass('conflict')\n\t\t\tvar $originalDiv = $conflict.find('.original')\n\t\t\tvar $replacementDiv = $conflict.find('.replacement')\n\n\t\t\t$conflict.data('data', data)\n\n\t\t\t$conflict.find('.filename').text(original.name)\n\t\t\t$originalDiv.find('.size').text(OC.Util.humanFileSize(original.size))\n\t\t\t$originalDiv.find('.mtime').text(OC.Util.formatDate(original.mtime))\n\t\t\t// ie sucks\n\t\t\tif (replacement.size && replacement.lastModified) {\n\t\t\t\t$replacementDiv.find('.size').text(OC.Util.humanFileSize(replacement.size))\n\t\t\t\t$replacementDiv.find('.mtime').text(OC.Util.formatDate(replacement.lastModified))\n\t\t\t}\n\t\t\tvar path = original.directory + '/' + original.name\n\t\t\tvar urlSpec = {\n\t\t\t\tfile: path,\n\t\t\t\tx: 96,\n\t\t\t\ty: 96,\n\t\t\t\tc: original.etag,\n\t\t\t\tforceIcon: 0\n\t\t\t}\n\t\t\tvar previewpath = Files.generatePreviewUrl(urlSpec)\n\t\t\t// Escaping single quotes\n\t\t\tpreviewpath = previewpath.replace(/'/g, '%27')\n\t\t\t$originalDiv.find('.icon').css({ 'background-image': \"url('\" + previewpath + \"')\" })\n\t\t\tgetCroppedPreview(replacement).then(\n\t\t\t\tfunction(path) {\n\t\t\t\t\t$replacementDiv.find('.icon').css('background-image', 'url(' + path + ')')\n\t\t\t\t}, function() {\n\t\t\t\t\tpath = OC.MimeType.getIconUrl(replacement.type)\n\t\t\t\t\t$replacementDiv.find('.icon').css('background-image', 'url(' + path + ')')\n\t\t\t\t}\n\t\t\t)\n\t\t\t// connect checkboxes with labels\n\t\t\tvar checkboxId = $conflicts.find('.conflict').length\n\t\t\t$originalDiv.find('input:checkbox').attr('id', 'checkbox_original_' + checkboxId)\n\t\t\t$replacementDiv.find('input:checkbox').attr('id', 'checkbox_replacement_' + checkboxId)\n\n\t\t\t$conflicts.append($conflict)\n\n\t\t\t// set more recent mtime bold\n\t\t\t// ie sucks\n\t\t\tif (replacement.lastModified > original.mtime) {\n\t\t\t\t$replacementDiv.find('.mtime').css('font-weight', 'bold')\n\t\t\t} else if (replacement.lastModified < original.mtime) {\n\t\t\t\t$originalDiv.find('.mtime').css('font-weight', 'bold')\n\t\t\t} else {\n\t\t\t\t// TODO add to same mtime collection?\n\t\t\t}\n\n\t\t\t// set bigger size bold\n\t\t\tif (replacement.size && replacement.size > original.size) {\n\t\t\t\t$replacementDiv.find('.size').css('font-weight', 'bold')\n\t\t\t} else if (replacement.size && replacement.size < original.size) {\n\t\t\t\t$originalDiv.find('.size').css('font-weight', 'bold')\n\t\t\t} else {\n\t\t\t\t// TODO add to same size collection?\n\t\t\t}\n\n\t\t\t// TODO show skip action for files with same size and mtime in bottom row\n\n\t\t\t// always keep readonly files\n\n\t\t\tif (original.status === 'readonly') {\n\t\t\t\t$originalDiv\n\t\t\t\t\t.addClass('readonly')\n\t\t\t\t\t.find('input[type=\"checkbox\"]')\n\t\t\t\t\t.prop('checked', true)\n\t\t\t\t\t.prop('disabled', true)\n\t\t\t\t$originalDiv.find('.message')\n\t\t\t\t\t.text(t('core', 'read-only'))\n\t\t\t}\n\t\t}\n\t\t// var selection = controller.getSelection(data.originalFiles);\n\t\t// if (selection.defaultAction) {\n\t\t//\tcontroller[selection.defaultAction](data);\n\t\t// } else {\n\t\tvar dialogName = 'oc-dialog-fileexists-content'\n\t\tvar dialogId = '#' + dialogName\n\t\tif (this._fileexistsshown) {\n\t\t\t// add conflict\n\n\t\t\tvar $conflicts = $(dialogId + ' .conflicts')\n\t\t\taddConflict($conflicts, original, replacement)\n\n\t\t\tvar count = $(dialogId + ' .conflict').length\n\t\t\tvar title = n('core',\n\t\t\t\t'{count} file conflict',\n\t\t\t\t'{count} file conflicts',\n\t\t\t\tcount,\n\t\t\t\t{ count: count }\n\t\t\t)\n\t\t\t$(dialogId).parent().children('.oc-dialog-title').text(title)\n\n\t\t\t// recalculate dimensions\n\t\t\t$(window).trigger('resize')\n\t\t\tdialogDeferred.resolve()\n\t\t} else {\n\t\t\t// create dialog\n\t\t\tthis._fileexistsshown = true\n\t\t\t$.when(this._getFileExistsTemplate()).then(function($tmpl) {\n\t\t\t\tvar title = t('core', 'One file conflict')\n\t\t\t\tvar $dlg = $tmpl.octemplate({\n\t\t\t\t\tdialog_name: dialogName,\n\t\t\t\t\ttitle: title,\n\t\t\t\t\ttype: 'fileexists',\n\n\t\t\t\t\tallnewfiles: t('core', 'New Files'),\n\t\t\t\t\tallexistingfiles: t('core', 'Already existing files'),\n\n\t\t\t\t\twhy: t('core', 'Which files do you want to keep?'),\n\t\t\t\t\twhat: t('core', 'If you select both versions, the copied file will have a number added to its name.')\n\t\t\t\t})\n\t\t\t\t$('body').append($dlg)\n\n\t\t\t\tif (original && replacement) {\n\t\t\t\t\tvar $conflicts = $dlg.find('.conflicts')\n\t\t\t\t\taddConflict($conflicts, original, replacement)\n\t\t\t\t}\n\n\t\t\t\tvar buttonlist = [{\n\t\t\t\t\ttext: t('core', 'Cancel'),\n\t\t\t\t\tclasses: 'cancel',\n\t\t\t\t\tclick: function() {\n\t\t\t\t\t\tif (typeof controller.onCancel !== 'undefined') {\n\t\t\t\t\t\t\tcontroller.onCancel(data)\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttext: t('core', 'Continue'),\n\t\t\t\t\tclasses: 'continue',\n\t\t\t\t\tclick: function() {\n\t\t\t\t\t\tif (typeof controller.onContinue !== 'undefined') {\n\t\t\t\t\t\t\tcontroller.onContinue($(dialogId + ' .conflict'))\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t}\n\t\t\t\t}]\n\n\t\t\t\t$(dialogId).ocdialog({\n\t\t\t\t\twidth: 500,\n\t\t\t\t\tcloseOnEscape: true,\n\t\t\t\t\tmodal: true,\n\t\t\t\t\tbuttons: buttonlist,\n\t\t\t\t\tcloseButton: null,\n\t\t\t\t\tclose: function() {\n\t\t\t\t\t\tself._fileexistsshown = false\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t$(this).ocdialog('destroy').remove()\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t// ignore\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\n\t\t\t\t$(dialogId).css('height', 'auto')\n\n\t\t\t\tvar $primaryButton = $dlg.closest('.oc-dialog').find('button.continue')\n\t\t\t\t$primaryButton.prop('disabled', true)\n\n\t\t\t\tfunction updatePrimaryButton() {\n\t\t\t\t\tvar checkedCount = $dlg.find('.conflicts .checkbox:checked').length\n\t\t\t\t\t$primaryButton.prop('disabled', checkedCount === 0)\n\t\t\t\t}\n\n\t\t\t\t// add checkbox toggling actions\n\t\t\t\t$(dialogId).find('.allnewfiles').on('click', function() {\n\t\t\t\t\tvar $checkboxes = $(dialogId).find('.conflict .replacement input[type=\"checkbox\"]')\n\t\t\t\t\t$checkboxes.prop('checked', $(this).prop('checked'))\n\t\t\t\t})\n\t\t\t\t$(dialogId).find('.allexistingfiles').on('click', function() {\n\t\t\t\t\tvar $checkboxes = $(dialogId).find('.conflict .original:not(.readonly) input[type=\"checkbox\"]')\n\t\t\t\t\t$checkboxes.prop('checked', $(this).prop('checked'))\n\t\t\t\t})\n\t\t\t\t$(dialogId).find('.conflicts').on('click', '.replacement,.original:not(.readonly)', function() {\n\t\t\t\t\tvar $checkbox = $(this).find('input[type=\"checkbox\"]')\n\t\t\t\t\t$checkbox.prop('checked', !$checkbox.prop('checked'))\n\t\t\t\t})\n\t\t\t\t$(dialogId).find('.conflicts').on('click', '.replacement input[type=\"checkbox\"],.original:not(.readonly) input[type=\"checkbox\"]', function() {\n\t\t\t\t\tvar $checkbox = $(this)\n\t\t\t\t\t$checkbox.prop('checked', !$checkbox.prop('checked'))\n\t\t\t\t})\n\n\t\t\t\t// update counters\n\t\t\t\t$(dialogId).on('click', '.replacement,.allnewfiles', function() {\n\t\t\t\t\tvar count = $(dialogId).find('.conflict .replacement input[type=\"checkbox\"]:checked').length\n\t\t\t\t\tif (count === $(dialogId + ' .conflict').length) {\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles').prop('checked', true)\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles + .count').text(t('core', '(all selected)'))\n\t\t\t\t\t} else if (count > 0) {\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles + .count').text(t('core', '({count} selected)', { count: count }))\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles + .count').text('')\n\t\t\t\t\t}\n\t\t\t\t\tupdatePrimaryButton()\n\t\t\t\t})\n\t\t\t\t$(dialogId).on('click', '.original,.allexistingfiles', function() {\n\t\t\t\t\tvar count = $(dialogId).find('.conflict .original input[type=\"checkbox\"]:checked').length\n\t\t\t\t\tif (count === $(dialogId + ' .conflict').length) {\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles').prop('checked', true)\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles + .count').text(t('core', '(all selected)'))\n\t\t\t\t\t} else if (count > 0) {\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles + .count')\n\t\t\t\t\t\t\t.text(t('core', '({count} selected)', { count: count }))\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles + .count').text('')\n\t\t\t\t\t}\n\t\t\t\t\tupdatePrimaryButton()\n\t\t\t\t})\n\n\t\t\t\tdialogDeferred.resolve()\n\t\t\t})\n\t\t\t\t.fail(function() {\n\t\t\t\t\tdialogDeferred.reject()\n\t\t\t\t\talert(t('core', 'Error loading file exists template'))\n\t\t\t\t})\n\t\t}\n\t\t// }\n\t\treturn dialogDeferred.promise()\n\t},\n\n\t_getFileExistsTemplate: function() {\n\t\tvar defer = $.Deferred()\n\t\tif (!this.$fileexistsTemplate) {\n\t\t\tvar self = this\n\t\t\t$.get(OC.filePath('core', 'templates/legacy', 'fileexists.html'), function(tmpl) {\n\t\t\t\tself.$fileexistsTemplate = $(tmpl)\n\t\t\t\tdefer.resolve(self.$fileexistsTemplate)\n\t\t\t})\n\t\t\t\t.fail(function() {\n\t\t\t\t\tdefer.reject()\n\t\t\t\t})\n\t\t} else {\n\t\t\tdefer.resolve(this.$fileexistsTemplate)\n\t\t}\n\t\treturn defer.promise()\n\t},\n}\n\nexport default Dialogs\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { emit } from '@nextcloud/event-bus'\n\n/**\n * @private\n * @param {Document} global the document to read the initial value from\n * @param {Function} emit the function to invoke for every new token\n * @return {object}\n */\nexport const manageToken = (global, emit) => {\n\tlet token = global.getElementsByTagName('head')[0].getAttribute('data-requesttoken')\n\n\treturn {\n\t\tgetToken: () => token,\n\t\tsetToken: newToken => {\n\t\t\ttoken = newToken\n\n\t\t\temit('csrf-token-update', {\n\t\t\t\ttoken,\n\t\t\t})\n\t\t},\n\t}\n}\n\nconst manageFromDocument = manageToken(document, emit)\n\n/**\n * @return {string}\n */\nexport const getToken = manageFromDocument.getToken\n\n/**\n * @param {string} newToken new token\n */\nexport const setToken = manageFromDocument.setToken\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-FileCopyrightText: 2015 ownCloud, Inc.\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/* eslint-disable */\nimport $ from 'jquery'\n\nimport { getToken } from './requesttoken.js'\n\n/**\n * Create a new event source\n * @param {string} src\n * @param {object} [data] to be send as GET\n *\n * @constructs OCEventSource\n */\nconst OCEventSource = function(src, data) {\n\tvar dataStr = ''\n\tvar name\n\tvar joinChar\n\tthis.typelessListeners = []\n\tthis.closed = false\n\tthis.listeners = {}\n\tif (data) {\n\t\tfor (name in data) {\n\t\t\tdataStr += name + '=' + encodeURIComponent(data[name]) + '&'\n\t\t}\n\t}\n\tdataStr += 'requesttoken=' + encodeURIComponent(getToken())\n\tif (!this.useFallBack && typeof EventSource !== 'undefined') {\n\t\tjoinChar = '&'\n\t\tif (src.indexOf('?') === -1) {\n\t\t\tjoinChar = '?'\n\t\t}\n\t\tthis.source = new EventSource(src + joinChar + dataStr)\n\t\tthis.source.onmessage = function(e) {\n\t\t\tfor (var i = 0; i < this.typelessListeners.length; i++) {\n\t\t\t\tthis.typelessListeners[i](JSON.parse(e.data))\n\t\t\t}\n\t\t}.bind(this)\n\t} else {\n\t\tvar iframeId = 'oc_eventsource_iframe_' + OCEventSource.iframeCount\n\t\tOCEventSource.fallBackSources[OCEventSource.iframeCount] = this\n\t\tthis.iframe = $('')\n\t\tthis.iframe.attr('id', iframeId)\n\t\tthis.iframe.hide()\n\n\t\tjoinChar = '&'\n\t\tif (src.indexOf('?') === -1) {\n\t\t\tjoinChar = '?'\n\t\t}\n\t\tthis.iframe.attr('src', src + joinChar + 'fallback=true&fallback_id=' + OCEventSource.iframeCount + '&' + dataStr)\n\t\t$('body').append(this.iframe)\n\t\tthis.useFallBack = true\n\t\tOCEventSource.iframeCount++\n\t}\n\t// add close listener\n\tthis.listen('__internal__', function(data) {\n\t\tif (data === 'close') {\n\t\t\tthis.close()\n\t\t}\n\t}.bind(this))\n}\nOCEventSource.fallBackSources = []\nOCEventSource.iframeCount = 0// number of fallback iframes\nOCEventSource.fallBackCallBack = function(id, type, data) {\n\tOCEventSource.fallBackSources[id].fallBackCallBack(type, data)\n}\nOCEventSource.prototype = {\n\ttypelessListeners: [],\n\tiframe: null,\n\tlisteners: {}, // only for fallback\n\tuseFallBack: false,\n\t/**\n\t * Fallback callback for browsers that don't have the\n\t * native EventSource object.\n\t *\n\t * Calls the registered listeners.\n\t *\n\t * @private\n\t * @param {String} type event type\n\t * @param {Object} data received data\n\t */\n\tfallBackCallBack: function(type, data) {\n\t\tvar i\n\t\t// ignore messages that might appear after closing\n\t\tif (this.closed) {\n\t\t\treturn\n\t\t}\n\t\tif (type) {\n\t\t\tif (typeof this.listeners.done !== 'undefined') {\n\t\t\t\tfor (i = 0; i < this.listeners[type].length; i++) {\n\t\t\t\t\tthis.listeners[type][i](data)\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor (i = 0; i < this.typelessListeners.length; i++) {\n\t\t\t\tthis.typelessListeners[i](data)\n\t\t\t}\n\t\t}\n\t},\n\tlastLength: 0, // for fallback\n\t/**\n\t * Listen to a given type of events.\n\t *\n\t * @param {String} type event type\n\t * @param {Function} callback event callback\n\t */\n\tlisten: function(type, callback) {\n\t\tif (callback && callback.call) {\n\n\t\t\tif (type) {\n\t\t\t\tif (this.useFallBack) {\n\t\t\t\t\tif (!this.listeners[type]) {\n\t\t\t\t\t\tthis.listeners[type] = []\n\t\t\t\t\t}\n\t\t\t\t\tthis.listeners[type].push(callback)\n\t\t\t\t} else {\n\t\t\t\t\tthis.source.addEventListener(type, function(e) {\n\t\t\t\t\t\tif (typeof e.data !== 'undefined') {\n\t\t\t\t\t\t\tcallback(JSON.parse(e.data))\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcallback('')\n\t\t\t\t\t\t}\n\t\t\t\t\t}, false)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.typelessListeners.push(callback)\n\t\t\t}\n\t\t}\n\t},\n\t/**\n\t * Closes this event source.\n\t */\n\tclose: function() {\n\t\tthis.closed = true\n\t\tif (typeof this.source !== 'undefined') {\n\t\t\tthis.source.close()\n\t\t}\n\t}\n}\n\nexport default OCEventSource\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport _ from 'underscore'\n/** @typedef {import('jquery')} jQuery */\nimport $ from 'jquery'\n\nimport { menuSpeed } from './constants.js'\n\nexport let currentMenu = null\nexport let currentMenuToggle = null\n\n/**\n * For menu toggling\n *\n * @param {jQuery} $toggle the toggle element\n * @param {jQuery} $menuEl the menu container element\n * @param {Function | undefined} toggle callback invoked everytime the menu is opened\n * @param {boolean} headerMenu is this a top right header menu?\n * @return {void}\n */\nexport const registerMenu = function($toggle, $menuEl, toggle, headerMenu) {\n\t$menuEl.addClass('menu')\n\tconst isClickableElement = $toggle.prop('tagName') === 'A' || $toggle.prop('tagName') === 'BUTTON'\n\n\t// On link and button, the enter key trigger a click event\n\t// Only use the click to avoid two fired events\n\t$toggle.on(isClickableElement ? 'click.menu' : 'click.menu keyup.menu', function(event) {\n\t\t// prevent the link event (append anchor to URL)\n\t\tevent.preventDefault()\n\n\t\t// allow enter key as a trigger\n\t\tif (event.key && event.key !== 'Enter') {\n\t\t\treturn\n\t\t}\n\n\t\tif ($menuEl.is(currentMenu)) {\n\t\t\thideMenus()\n\t\t\treturn\n\t\t} else if (currentMenu) {\n\t\t\t// another menu was open?\n\t\t\t// close it\n\t\t\thideMenus()\n\t\t}\n\n\t\tif (headerMenu === true) {\n\t\t\t$menuEl.parent().addClass('openedMenu')\n\t\t}\n\n\t\t// Set menu to expanded\n\t\t$toggle.attr('aria-expanded', true)\n\n\t\t$menuEl.slideToggle(menuSpeed, toggle)\n\t\tcurrentMenu = $menuEl\n\t\tcurrentMenuToggle = $toggle\n\t})\n}\n\n/**\n * Unregister a previously registered menu\n *\n * @param {jQuery} $toggle the toggle element\n * @param {jQuery} $menuEl the menu container element\n */\nexport const unregisterMenu = ($toggle, $menuEl) => {\n\t// close menu if opened\n\tif ($menuEl.is(currentMenu)) {\n\t\thideMenus()\n\t}\n\t$toggle.off('click.menu').removeClass('menutoggle')\n\t$menuEl.removeClass('menu')\n}\n\n/**\n * Hides any open menus\n *\n * @param {Function} complete callback when the hiding animation is done\n */\nexport const hideMenus = function(complete) {\n\tif (currentMenu) {\n\t\tconst lastMenu = currentMenu\n\t\tcurrentMenu.trigger(new $.Event('beforeHide'))\n\t\tcurrentMenu.slideUp(menuSpeed, function() {\n\t\t\tlastMenu.trigger(new $.Event('afterHide'))\n\t\t\tif (complete) {\n\t\t\t\tcomplete.apply(this, arguments)\n\t\t\t}\n\t\t})\n\t}\n\n\t// Set menu to closed\n\t$('.menutoggle').attr('aria-expanded', false)\n\tif (currentMenuToggle) {\n\t\tcurrentMenuToggle.attr('aria-expanded', false)\n\t}\n\n\t$('.openedMenu').removeClass('openedMenu')\n\tcurrentMenu = null\n\tcurrentMenuToggle = null\n}\n\n/**\n * Shows a given element as menu\n *\n * @param {object} [$toggle] menu toggle\n * @param {object} $menuEl menu element\n * @param {Function} complete callback when the showing animation is done\n */\nexport const showMenu = ($toggle, $menuEl, complete) => {\n\tif ($menuEl.is(currentMenu)) {\n\t\treturn\n\t}\n\thideMenus()\n\tcurrentMenu = $menuEl\n\tcurrentMenuToggle = $toggle\n\t$menuEl.trigger(new $.Event('beforeShow'))\n\t$menuEl.show()\n\t$menuEl.trigger(new $.Event('afterShow'))\n\t// no animation\n\tif (_.isFunction(complete)) {\n\t\tcomplete()\n\t}\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nexport const coreApps = ['', 'admin', 'log', 'core/search', 'core', '3rdparty']\nexport const menuSpeed = 50\nexport const PERMISSION_NONE = 0\nexport const PERMISSION_CREATE = 4\nexport const PERMISSION_READ = 1\nexport const PERMISSION_UPDATE = 2\nexport const PERMISSION_DELETE = 8\nexport const PERMISSION_SHARE = 16\nexport const PERMISSION_ALL = 31\nexport const TAG_FAVORITE = '_$!!$_'\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nconst isAdmin = !!window._oc_isadmin\n\n/**\n * Returns whether the current user is an administrator\n *\n * @return {boolean} true if the user is an admin, false otherwise\n * @since 9.0.0\n */\nexport const isUserAdmin = () => isAdmin\n","/**\n * SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors\n * SPDX-FileCopyrightText: 2014 ownCloud, Inc.\n * SPDX-FileCopyrightText: 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport Handlebars from 'handlebars'\nimport {\n\tloadTranslations,\n\ttranslate,\n\ttranslatePlural,\n\tregister,\n\tunregister,\n} from '@nextcloud/l10n'\n\n/**\n * L10N namespace with localization functions.\n *\n * @namespace OC.L10n\n * @deprecated 26.0.0 use https://www.npmjs.com/package/@nextcloud/l10n\n */\nconst L10n = {\n\n\t/**\n\t * Load an app's translation bundle if not loaded already.\n\t *\n\t * @deprecated 26.0.0 use `loadTranslations` from https://www.npmjs.com/package/@nextcloud/l10n\n\t *\n\t * @param {string} appName name of the app\n\t * @param {Function} callback callback to be called when\n\t * the translations are loaded\n\t * @return {Promise} promise\n\t */\n\tload: loadTranslations,\n\n\t/**\n\t * Register an app's translation bundle.\n\t *\n\t * @deprecated 26.0.0 use `register` from https://www.npmjs.com/package/@nextcloud/l10\n\t *\n\t * @param {string} appName name of the app\n\t * @param {Record} bundle bundle\n\t */\n\tregister,\n\n\t/**\n\t * @private\n\t * @deprecated 26.0.0 use `unregister` from https://www.npmjs.com/package/@nextcloud/l10n\n\t */\n\t_unregister: unregister,\n\n\t/**\n\t * Translate a string\n\t *\n\t * @deprecated 26.0.0 use `translate` from https://www.npmjs.com/package/@nextcloud/l10n\n\t *\n\t * @param {string} app the id of the app for which to translate the string\n\t * @param {string} text the string to translate\n\t * @param {object} [vars] map of placeholder key to value\n\t * @param {number} [count] number to replace %n with\n\t * @param {Array} [options] options array\n\t * @param {boolean} [options.escape=true] enable/disable auto escape of placeholders (by default enabled)\n\t * @param {boolean} [options.sanitize=true] enable/disable sanitization (by default enabled)\n\t * @return {string}\n\t */\n\ttranslate,\n\n\t/**\n\t * Translate a plural string\n\t *\n\t * @deprecated 26.0.0 use `translatePlural` from https://www.npmjs.com/package/@nextcloud/l10n\n\t *\n\t * @param {string} app the id of the app for which to translate the string\n\t * @param {string} textSingular the string to translate for exactly one object\n\t * @param {string} textPlural the string to translate for n objects\n\t * @param {number} count number to determine whether to use singular or plural\n\t * @param {object} [vars] map of placeholder key to value\n\t * @param {Array} [options] options array\n\t * @param {boolean} [options.escape=true] enable/disable auto escape of placeholders (by default enabled)\n\t * @return {string} Translated string\n\t */\n\ttranslatePlural,\n}\n\nexport default L10n\n\nHandlebars.registerHelper('t', function(app, text) {\n\treturn translate(app, text)\n})\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport {\n\tgetRootUrl as realGetRootUrl,\n} from '@nextcloud/router'\n\n/**\n * Creates a relative url for remote use\n *\n * @param {string} service id\n * @return {string} the url\n */\nexport const linkToRemoteBase = service => {\n\treturn realGetRootUrl() + '/remote.php/' + service\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport $ from 'jquery'\n\n/**\n * A little class to manage a status field for a \"saving\" process.\n * It can be used to display a starting message (e.g. \"Saving...\") and then\n * replace it with a green success message or a red error message.\n *\n * @namespace OC.msg\n */\nexport default {\n\t/**\n\t * Displayes a \"Saving...\" message in the given message placeholder\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t */\n\tstartSaving(selector) {\n\t\tthis.startAction(selector, t('core', 'Saving …'))\n\t},\n\n\t/**\n\t * Displayes a custom message in the given message placeholder\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {string} message Plain text message to display (no HTML allowed)\n\t */\n\tstartAction(selector, message) {\n\t\t$(selector).text(message)\n\t\t\t.removeClass('success')\n\t\t\t.removeClass('error')\n\t\t\t.stop(true, true)\n\t\t\t.show()\n\t},\n\n\t/**\n\t * Displayes an success/error message in the given selector\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {object} response Response of the server\n\t * @param {object} response.data Data of the servers response\n\t * @param {string} response.data.message Plain text message to display (no HTML allowed)\n\t * @param {string} response.status is being used to decide whether the message\n\t * is displayed as an error/success\n\t */\n\tfinishedSaving(selector, response) {\n\t\tthis.finishedAction(selector, response)\n\t},\n\n\t/**\n\t * Displayes an success/error message in the given selector\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {object} response Response of the server\n\t * @param {object} response.data Data of the servers response\n\t * @param {string} response.data.message Plain text message to display (no HTML allowed)\n\t * @param {string} response.status is being used to decide whether the message\n\t * is displayed as an error/success\n\t */\n\tfinishedAction(selector, response) {\n\t\tif (response.status === 'success') {\n\t\t\tthis.finishedSuccess(selector, response.data.message)\n\t\t} else {\n\t\t\tthis.finishedError(selector, response.data.message)\n\t\t}\n\t},\n\n\t/**\n\t * Displayes an success message in the given selector\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {string} message Plain text success message to display (no HTML allowed)\n\t */\n\tfinishedSuccess(selector, message) {\n\t\t$(selector).text(message)\n\t\t\t.addClass('success')\n\t\t\t.removeClass('error')\n\t\t\t.stop(true, true)\n\t\t\t.delay(3000)\n\t\t\t.fadeOut(900)\n\t\t\t.show()\n\t},\n\n\t/**\n\t * Displayes an error message in the given selector\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {string} message Plain text error message to display (no HTML allowed)\n\t */\n\tfinishedError(selector, message) {\n\t\t$(selector).text(message)\n\t\t\t.addClass('error')\n\t\t\t.removeClass('success')\n\t\t\t.show()\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 { confirmPassword, isPasswordConfirmationRequired } from '@nextcloud/password-confirmation'\nimport '@nextcloud/password-confirmation/dist/style.css'\n\n/**\n * @namespace OC.PasswordConfirmation\n */\nexport default {\n\n\trequiresPasswordConfirmation() {\n\t\treturn isPasswordConfirmationRequired()\n\t},\n\n\t/**\n\t * @param {Function} callback success callback function\n\t * @param {object} options options currently not used by confirmPassword\n\t * @param {Function} rejectCallback error callback function\n\t */\n\trequirePasswordConfirmation(callback, options, rejectCallback) {\n\t\tconfirmPassword().then(callback, rejectCallback)\n\t},\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nexport default {\n\n\t/**\n\t * @type {Array.}\n\t */\n\t_plugins: {},\n\n\t/**\n\t * Register plugin\n\t *\n\t * @param {string} targetName app name / class name to hook into\n\t * @param {OC.Plugin} plugin plugin\n\t */\n\tregister(targetName, plugin) {\n\t\tlet plugins = this._plugins[targetName]\n\t\tif (!plugins) {\n\t\t\tplugins = this._plugins[targetName] = []\n\t\t}\n\t\tplugins.push(plugin)\n\t},\n\n\t/**\n\t * Returns all plugin registered to the given target\n\t * name / app name / class name.\n\t *\n\t * @param {string} targetName app name / class name to hook into\n\t * @return {Array.} array of plugins\n\t */\n\tgetPlugins(targetName) {\n\t\treturn this._plugins[targetName] || []\n\t},\n\n\t/**\n\t * Call attach() on all plugins registered to the given target name.\n\t *\n\t * @param {string} targetName app name / class name\n\t * @param {object} targetObject to be extended\n\t * @param {object} [options] options\n\t */\n\tattach(targetName, targetObject, options) {\n\t\tconst plugins = this.getPlugins(targetName)\n\t\tfor (let i = 0; i < plugins.length; i++) {\n\t\t\tif (plugins[i].attach) {\n\t\t\t\tplugins[i].attach(targetObject, options)\n\t\t\t}\n\t\t}\n\t},\n\n\t/**\n\t * Call detach() on all plugins registered to the given target name.\n\t *\n\t * @param {string} targetName app name / class name\n\t * @param {object} targetObject to be extended\n\t * @param {object} [options] options\n\t */\n\tdetach(targetName, targetObject, options) {\n\t\tconst plugins = this.getPlugins(targetName)\n\t\tfor (let i = 0; i < plugins.length; i++) {\n\t\t\tif (plugins[i].detach) {\n\t\t\t\tplugins[i].detach(targetObject, options)\n\t\t\t}\n\t\t}\n\t},\n\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nexport const theme = window._theme || {}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport _ from 'underscore'\nimport OC from './index.js'\n\n/**\n * Utility class for the history API,\n * includes fallback to using the URL hash when\n * the browser doesn't support the history API.\n *\n * @namespace OC.Util.History\n */\nexport default {\n\n\t_handlers: [],\n\n\t/**\n\t * Push the current URL parameters to the history stack\n\t * and change the visible URL.\n\t * Note: this includes a workaround for IE8/IE9 that uses\n\t * the hash part instead of the search part.\n\t *\n\t * @param {object | string} params to append to the URL, can be either a string\n\t * or a map\n\t * @param {string} [url] URL to be used, otherwise the current URL will be used,\n\t * using the params as query string\n\t * @param {boolean} [replace] whether to replace instead of pushing\n\t */\n\t_pushState(params, url, replace) {\n\t\tlet strParams\n\t\tif (typeof (params) === 'string') {\n\t\t\tstrParams = params\n\t\t} else {\n\t\t\tstrParams = OC.buildQueryString(params)\n\t\t}\n\n\t\tif (window.history.pushState) {\n\t\t\turl = url || location.pathname + '?' + strParams\n\t\t\t// Workaround for bug with SVG and window.history.pushState on Firefox < 51\n\t\t\t// https://bugzilla.mozilla.org/show_bug.cgi?id=652991\n\t\t\tconst isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1\n\t\t\tif (isFirefox && parseInt(navigator.userAgent.split('/').pop()) < 51) {\n\t\t\t\tconst patterns = document.querySelectorAll('[fill^=\"url(#\"], [stroke^=\"url(#\"], [filter^=\"url(#invert\"]')\n\t\t\t\tfor (let i = 0, ii = patterns.length, pattern; i < ii; i++) {\n\t\t\t\t\tpattern = patterns[i]\n\t\t\t\t\t// eslint-disable-next-line no-self-assign\n\t\t\t\t\tpattern.style.fill = pattern.style.fill\n\t\t\t\t\t// eslint-disable-next-line no-self-assign\n\t\t\t\t\tpattern.style.stroke = pattern.style.stroke\n\t\t\t\t\tpattern.removeAttribute('filter')\n\t\t\t\t\tpattern.setAttribute('filter', 'url(#invert)')\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (replace) {\n\t\t\t\twindow.history.replaceState(params, '', url)\n\t\t\t} else {\n\t\t\t\twindow.history.pushState(params, '', url)\n\t\t\t}\n\t\t} else {\n\t\t\t// use URL hash for IE8\n\t\t\twindow.location.hash = '?' + strParams\n\t\t\t// inhibit next onhashchange that just added itself\n\t\t\t// to the event queue\n\t\t\tthis._cancelPop = true\n\t\t}\n\t},\n\n\t/**\n\t * Push the current URL parameters to the history stack\n\t * and change the visible URL.\n\t * Note: this includes a workaround for IE8/IE9 that uses\n\t * the hash part instead of the search part.\n\t *\n\t * @param {object | string} params to append to the URL, can be either a string or a map\n\t * @param {string} [url] URL to be used, otherwise the current URL will be used, using the params as query string\n\t */\n\tpushState(params, url) {\n\t\tthis._pushState(params, url, false)\n\t},\n\n\t/**\n\t * Push the current URL parameters to the history stack\n\t * and change the visible URL.\n\t * Note: this includes a workaround for IE8/IE9 that uses\n\t * the hash part instead of the search part.\n\t *\n\t * @param {object | string} params to append to the URL, can be either a string\n\t * or a map\n\t * @param {string} [url] URL to be used, otherwise the current URL will be used,\n\t * using the params as query string\n\t */\n\treplaceState(params, url) {\n\t\tthis._pushState(params, url, true)\n\t},\n\n\t/**\n\t * Add a popstate handler\n\t *\n\t * @param {Function} handler handler\n\t */\n\taddOnPopStateHandler(handler) {\n\t\tthis._handlers.push(handler)\n\t},\n\n\t/**\n\t * Parse a query string from the hash part of the URL.\n\t * (workaround for IE8 / IE9)\n\t *\n\t * @return {string}\n\t */\n\t_parseHashQuery() {\n\t\tconst hash = window.location.hash\n\t\tconst pos = hash.indexOf('?')\n\t\tif (pos >= 0) {\n\t\t\treturn hash.substr(pos + 1)\n\t\t}\n\t\tif (hash.length) {\n\t\t\t// remove hash sign\n\t\t\treturn hash.substr(1)\n\t\t}\n\t\treturn ''\n\t},\n\n\t_decodeQuery(query) {\n\t\treturn query.replace(/\\+/g, ' ')\n\t},\n\n\t/**\n\t * Parse the query/search part of the URL.\n\t * Also try and parse it from the URL hash (for IE8)\n\t *\n\t * @return {object} map of parameters\n\t */\n\tparseUrlQuery() {\n\t\tconst query = this._parseHashQuery()\n\t\tlet params\n\t\t// try and parse from URL hash first\n\t\tif (query) {\n\t\t\tparams = OC.parseQueryString(this._decodeQuery(query))\n\t\t}\n\t\t// else read from query attributes\n\t\tparams = _.extend(params || {}, OC.parseQueryString(this._decodeQuery(location.search)))\n\t\treturn params || {}\n\t},\n\n\t_onPopState(e) {\n\t\tif (this._cancelPop) {\n\t\t\tthis._cancelPop = false\n\t\t\treturn\n\t\t}\n\t\tlet params\n\t\tif (!this._handlers.length) {\n\t\t\treturn\n\t\t}\n\t\tparams = (e && e.state)\n\t\tif (_.isString(params)) {\n\t\t\tparams = OC.parseQueryString(params)\n\t\t} else if (!params) {\n\t\t\tparams = this.parseUrlQuery() || {}\n\t\t}\n\t\tfor (let i = 0; i < this._handlers.length; i++) {\n\t\t\tthis._handlers[i](params)\n\t\t}\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 moment from 'moment'\n\nimport History from './util-history.js'\nimport OC from './index.js'\nimport { formatFileSize as humanFileSize } from '@nextcloud/files'\n\n/**\n * @param {any} t -\n */\nfunction chunkify(t) {\n\t// Adapted from http://my.opera.com/GreyWyvern/blog/show.dml/1671288\n\tconst tz = []\n\tlet x = 0\n\tlet y = -1\n\tlet n = 0\n\tlet c\n\n\twhile (x < t.length) {\n\t\tc = t.charAt(x)\n\t\t// only include the dot in strings\n\t\tconst m = ((!n && c === '.') || (c >= '0' && c <= '9'))\n\t\tif (m !== n) {\n\t\t\t// next chunk\n\t\t\ty++\n\t\t\ttz[y] = ''\n\t\t\tn = m\n\t\t}\n\t\ttz[y] += c\n\t\tx++\n\t}\n\treturn tz\n}\n\n/**\n * Utility functions\n *\n * @namespace OC.Util\n */\nexport default {\n\n\tHistory,\n\n\t/**\n\t * @deprecated use https://nextcloud.github.io/nextcloud-files/functions/formatFileSize.html\n\t */\n\thumanFileSize,\n\n\t/**\n\t * Returns a file size in bytes from a humanly readable string\n\t * Makes 2kB to 2048.\n\t * Inspired by computerFileSize in helper.php\n\t *\n\t * @param {string} string file size in human-readable format\n\t * @return {number} or null if string could not be parsed\n\t *\n\t *\n\t */\n\tcomputerFileSize(string) {\n\t\tif (typeof string !== 'string') {\n\t\t\treturn null\n\t\t}\n\n\t\tconst s = string.toLowerCase().trim()\n\t\tlet bytes = null\n\n\t\tconst bytesArray = {\n\t\t\tb: 1,\n\t\t\tk: 1024,\n\t\t\tkb: 1024,\n\t\t\tmb: 1024 * 1024,\n\t\t\tm: 1024 * 1024,\n\t\t\tgb: 1024 * 1024 * 1024,\n\t\t\tg: 1024 * 1024 * 1024,\n\t\t\ttb: 1024 * 1024 * 1024 * 1024,\n\t\t\tt: 1024 * 1024 * 1024 * 1024,\n\t\t\tpb: 1024 * 1024 * 1024 * 1024 * 1024,\n\t\t\tp: 1024 * 1024 * 1024 * 1024 * 1024,\n\t\t}\n\n\t\tconst matches = s.match(/^[\\s+]?([0-9]*)(\\.([0-9]+))?( +)?([kmgtp]?b?)$/i)\n\t\tif (matches !== null) {\n\t\t\tbytes = parseFloat(s)\n\t\t\tif (!isFinite(bytes)) {\n\t\t\t\treturn null\n\t\t\t}\n\t\t} else {\n\t\t\treturn null\n\t\t}\n\t\tif (matches[5]) {\n\t\t\tbytes = bytes * bytesArray[matches[5]]\n\t\t}\n\n\t\tbytes = Math.round(bytes)\n\t\treturn bytes\n\t},\n\n\t/**\n\t * @param {string|number} timestamp timestamp\n\t * @param {string} format date format, see momentjs docs\n\t * @return {string} timestamp formatted as requested\n\t */\n\tformatDate(timestamp, format) {\n\t\tif (window.TESTING === undefined) {\n\t\t\tOC.debug && console.warn('OC.Util.formatDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment')\n\t\t}\n\t\tformat = format || 'LLL'\n\t\treturn moment(timestamp).format(format)\n\t},\n\n\t/**\n\t * @param {string|number} timestamp timestamp\n\t * @return {string} human readable difference from now\n\t */\n\trelativeModifiedDate(timestamp) {\n\t\tif (window.TESTING === undefined) {\n\t\t\tOC.debug && console.warn('OC.Util.relativeModifiedDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment')\n\t\t}\n\t\tconst diff = moment().diff(moment(timestamp))\n\t\tif (diff >= 0 && diff < 45000) {\n\t\t\treturn t('core', 'seconds ago')\n\t\t}\n\t\treturn moment(timestamp).fromNow()\n\t},\n\n\t/**\n\t * Returns the width of a generic browser scrollbar\n\t *\n\t * @return {number} width of scrollbar\n\t */\n\tgetScrollBarWidth() {\n\t\tif (this._scrollBarWidth) {\n\t\t\treturn this._scrollBarWidth\n\t\t}\n\n\t\tconst inner = document.createElement('p')\n\t\tinner.style.width = '100%'\n\t\tinner.style.height = '200px'\n\n\t\tconst outer = document.createElement('div')\n\t\touter.style.position = 'absolute'\n\t\touter.style.top = '0px'\n\t\touter.style.left = '0px'\n\t\touter.style.visibility = 'hidden'\n\t\touter.style.width = '200px'\n\t\touter.style.height = '150px'\n\t\touter.style.overflow = 'hidden'\n\t\touter.appendChild(inner)\n\n\t\tdocument.body.appendChild(outer)\n\t\tconst w1 = inner.offsetWidth\n\t\touter.style.overflow = 'scroll'\n\t\tlet w2 = inner.offsetWidth\n\t\tif (w1 === w2) {\n\t\t\tw2 = outer.clientWidth\n\t\t}\n\n\t\tdocument.body.removeChild(outer)\n\n\t\tthis._scrollBarWidth = (w1 - w2)\n\n\t\treturn this._scrollBarWidth\n\t},\n\n\t/**\n\t * Remove the time component from a given date\n\t *\n\t * @param {Date} date date\n\t * @return {Date} date with stripped time\n\t */\n\tstripTime(date) {\n\t\t// FIXME: likely to break when crossing DST\n\t\t// would be better to use a library like momentJS\n\t\treturn new Date(date.getFullYear(), date.getMonth(), date.getDate())\n\t},\n\n\t/**\n\t * Compare two strings to provide a natural sort\n\t *\n\t * @param {string} a first string to compare\n\t * @param {string} b second string to compare\n\t * @return {number} -1 if b comes before a, 1 if a comes before b\n\t * or 0 if the strings are identical\n\t */\n\tnaturalSortCompare(a, b) {\n\t\tlet x\n\t\tconst aa = chunkify(a)\n\t\tconst bb = chunkify(b)\n\n\t\tfor (x = 0; aa[x] && bb[x]; x++) {\n\t\t\tif (aa[x] !== bb[x]) {\n\t\t\t\tconst aNum = Number(aa[x]); const bNum = Number(bb[x])\n\t\t\t\t// note: == is correct here\n\t\t\t\t/* eslint-disable-next-line */\n\t\t\t\tif (aNum == aa[x] && bNum == bb[x]) {\n\t\t\t\t\treturn aNum - bNum\n\t\t\t\t} else {\n\t\t\t\t\t// Note: This locale setting isn't supported by all browsers but for the ones\n\t\t\t\t\t// that do there will be more consistency between client-server sorting\n\t\t\t\t\treturn aa[x].localeCompare(bb[x], OC.getLanguage())\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn aa.length - bb.length\n\t},\n\n\t/**\n\t * Calls the callback in a given interval until it returns true\n\t *\n\t * @param {Function} callback function to call on success\n\t * @param {number} interval in milliseconds\n\t */\n\twaitFor(callback, interval) {\n\t\tconst internalCallback = function() {\n\t\t\tif (callback() !== true) {\n\t\t\t\tsetTimeout(internalCallback, interval)\n\t\t\t}\n\t\t}\n\n\t\tinternalCallback()\n\t},\n\n\t/**\n\t * Checks if a cookie with the given name is present and is set to the provided value.\n\t *\n\t * @param {string} name name of the cookie\n\t * @param {string} value value of the cookie\n\t * @return {boolean} true if the cookie with the given name has the given value\n\t */\n\tisCookieSetToValue(name, value) {\n\t\tconst cookies = document.cookie.split(';')\n\t\tfor (let i = 0; i < cookies.length; i++) {\n\t\t\tconst cookie = cookies[i].split('=')\n\t\t\tif (cookie[0].trim() === name && cookie[1].trim() === value) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\t\treturn false\n\t},\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nconst base = window._oc_debug\n\nexport const debug = base\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nlet webroot = window._oc_webroot\n\nif (typeof webroot === 'undefined') {\n\twebroot = location.pathname\n\tconst pos = webroot.indexOf('/index.php/')\n\tif (pos !== -1) {\n\t\twebroot = webroot.substr(0, pos)\n\t} else {\n\t\twebroot = webroot.substr(0, webroot.lastIndexOf('/'))\n\t}\n}\n\nexport default webroot\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { subscribe } from '@nextcloud/event-bus'\n\nimport {\n\tajaxConnectionLostHandler,\n\tprocessAjaxError,\n\tregisterXHRForErrorProcessing,\n} from './xhr-error.js'\nimport Apps from './apps.js'\nimport { AppConfig, appConfig } from './appconfig.js'\nimport appswebroots from './appswebroots.js'\nimport Backbone from './backbone.js'\nimport {\n\tbasename,\n\tdirname,\n\tencodePath,\n\tisSamePath,\n\tjoinPaths,\n} from '@nextcloud/paths'\nimport {\n\tbuild as buildQueryString,\n\tparse as parseQueryString,\n} from './query-string.js'\nimport Config from './config.js'\nimport {\n\tcoreApps,\n\tmenuSpeed,\n\tPERMISSION_ALL,\n\tPERMISSION_CREATE,\n\tPERMISSION_DELETE,\n\tPERMISSION_NONE,\n\tPERMISSION_READ,\n\tPERMISSION_SHARE,\n\tPERMISSION_UPDATE,\n\tTAG_FAVORITE,\n} from './constants.js'\nimport { currentUser, getCurrentUser } from './currentuser.js'\nimport Dialogs from './dialogs.js'\nimport EventSource from './eventsource.js'\nimport { get, set } from './get_set.js'\nimport { getCapabilities } from './capabilities.js'\nimport {\n\tgetHost,\n\tgetHostName,\n\tgetPort,\n\tgetProtocol,\n} from './host.js'\nimport {\n\tgetToken as getRequestToken,\n} from './requesttoken.js'\nimport {\n\thideMenus,\n\tregisterMenu,\n\tshowMenu,\n\tunregisterMenu,\n} from './menu.js'\nimport { isUserAdmin } from './admin.js'\nimport L10N from './l10n.js'\nimport {\n\tgetCanonicalLocale,\n\tgetLanguage,\n\tgetLocale,\n} from '@nextcloud/l10n'\n\nimport {\n\tgenerateUrl,\n\tgenerateFilePath,\n\tgenerateOcsUrl,\n\tgenerateRemoteUrl,\n\tgetRootUrl,\n\timagePath,\n\tlinkTo,\n} from '@nextcloud/router'\n\nimport {\n\tlinkToRemoteBase,\n} from './routing.js'\nimport msg from './msg.js'\nimport Notification from './notification.js'\nimport PasswordConfirmation from './password-confirmation.js'\nimport Plugins from './plugins.js'\nimport { theme } from './theme.js'\nimport Util from './util.js'\nimport { debug } from './debug.js'\nimport { redirect, reload } from './navigation.js'\nimport webroot from './webroot.js'\n\n/** @namespace OC */\nexport default {\n\t/*\n\t * Constants\n\t */\n\tcoreApps,\n\tmenuSpeed,\n\tPERMISSION_ALL,\n\tPERMISSION_CREATE,\n\tPERMISSION_DELETE,\n\tPERMISSION_NONE,\n\tPERMISSION_READ,\n\tPERMISSION_SHARE,\n\tPERMISSION_UPDATE,\n\tTAG_FAVORITE,\n\n\t/*\n\t * Deprecated helpers to be removed\n\t */\n\t/**\n\t * Check if a user file is allowed to be handled.\n\t *\n\t * @param {string} file to check\n\t * @return {boolean}\n\t * @deprecated 17.0.0\n\t */\n\tfileIsBlacklisted: file => !!(file.match(Config.blacklist_files_regex)),\n\tApps,\n\tAppConfig,\n\tappConfig,\n\tappswebroots,\n\tBackbone,\n\tconfig: Config,\n\t/**\n\t * Currently logged in user or null if none\n\t *\n\t * @type {string}\n\t * @deprecated use `getCurrentUser` from https://www.npmjs.com/package/@nextcloud/auth\n\t */\n\tcurrentUser,\n\tdialogs: Dialogs,\n\tEventSource,\n\t/**\n\t * Returns the currently logged in user or null if there is no logged in\n\t * user (public page mode)\n\t *\n\t * @since 9.0.0\n\t * @deprecated 19.0.0 use `getCurrentUser` from https://www.npmjs.com/package/@nextcloud/auth\n\t */\n\tgetCurrentUser,\n\tisUserAdmin,\n\tL10N,\n\n\t/**\n\t * Ajax error handlers\n\t *\n\t * @todo remove from here and keep internally -> requires new tests\n\t */\n\t_ajaxConnectionLostHandler: ajaxConnectionLostHandler,\n\t_processAjaxError: processAjaxError,\n\tregisterXHRForErrorProcessing,\n\n\t/**\n\t * Capabilities\n\t *\n\t * @type {Array}\n\t * @deprecated 20.0.0 use @nextcloud/capabilities instead\n\t */\n\tgetCapabilities,\n\n\t/*\n\t * Legacy menu helpers\n\t */\n\thideMenus,\n\tregisterMenu,\n\tshowMenu,\n\tunregisterMenu,\n\n\t/*\n\t * Path helpers\n\t */\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tbasename,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tencodePath,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tdirname,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tisSamePath,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tjoinPaths,\n\n\t/**\n\t * Host (url) helpers\n\t */\n\tgetHost,\n\tgetHostName,\n\tgetPort,\n\tgetProtocol,\n\n\t/**\n\t * @deprecated 20.0.0 use `getCanonicalLocale` from https://www.npmjs.com/package/@nextcloud/l10n\n\t */\n\tgetCanonicalLocale,\n\t/**\n\t * @deprecated 26.0.0 use `getLocale` from https://www.npmjs.com/package/@nextcloud/l10n\n\t */\n\tgetLocale,\n\t/**\n\t * @deprecated 26.0.0 use `getLanguage` from https://www.npmjs.com/package/@nextcloud/l10n\n\t */\n\tgetLanguage,\n\n\t/**\n\t * Query string helpers\n\t */\n\tbuildQueryString,\n\tparseQueryString,\n\n\tmsg,\n\tNotification,\n\t/**\n\t * @deprecated 28.0.0 use methods from '@nextcloud/password-confirmation'\n\t */\n\tPasswordConfirmation,\n\tPlugins,\n\ttheme,\n\tUtil,\n\tdebug,\n\t/**\n\t * @deprecated 19.0.0 use `generateFilePath` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tfilePath: generateFilePath,\n\t/**\n\t * @deprecated 19.0.0 use `generateUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tgenerateUrl,\n\t/**\n\t * @deprecated 19.0.0 use https://lodash.com/docs#get\n\t */\n\tget: get(window),\n\t/**\n\t * @deprecated 19.0.0 use https://lodash.com/docs#set\n\t */\n\tset: set(window),\n\t/**\n\t * @deprecated 19.0.0 use `getRootUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tgetRootPath: getRootUrl,\n\t/**\n\t * @deprecated 19.0.0 use `imagePath` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\timagePath,\n\tredirect,\n\treload,\n\trequestToken: getRequestToken(),\n\t/**\n\t * @deprecated 19.0.0 use `linkTo` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tlinkTo,\n\t/**\n\t * @param {string} service service name\n\t * @param {number} version OCS API version\n\t * @return {string} OCS API base path\n\t * @deprecated 19.0.0 use `generateOcsUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tlinkToOCS: (service, version) => {\n\t\treturn generateOcsUrl(service, {}, {\n\t\t\tocsVersion: version || 1,\n\t\t}) + '/'\n\t},\n\t/**\n\t * @deprecated 19.0.0 use `generateRemoteUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tlinkToRemote: generateRemoteUrl,\n\tlinkToRemoteBase,\n\t/**\n\t * Relative path to Nextcloud root.\n\t * For example: \"/nextcloud\"\n\t *\n\t * @type {string}\n\t *\n\t * @deprecated 19.0.0 use `getRootUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t * @see OC#getRootPath\n\t */\n\twebroot,\n}\n\n// Keep the request token prop in sync\nsubscribe('csrf-token-update', e => {\n\tOC.requestToken = e.token\n\n\t// Logging might help debug (Sentry) issues\n\tconsole.info('OC.requestToken changed', e.token)\n})\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getCapabilities as realGetCapabilities } from '@nextcloud/capabilities'\n\n/**\n * Returns the capabilities\n *\n * @return {Array} capabilities\n *\n * @since 14.0.0\n */\nexport const getCapabilities = () => {\n\tOC.debug && console.warn('OC.getCapabilities is deprecated and will be removed in Nextcloud 21. See @nextcloud/capabilities')\n\treturn realGetCapabilities()\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nexport const getProtocol = () => window.location.protocol.split(':')[0]\n\n/**\n * Returns the host used to access this Nextcloud instance\n * Host is sometimes the same as the hostname but now always.\n *\n * Examples:\n * http://example.com => example.com\n * https://example.com => example.com\n * http://example.com:8080 => example.com:8080\n *\n * @return {string} host\n *\n * @since 8.2.0\n * @deprecated 17.0.0 use window.location.host directly\n */\nexport const getHost = () => window.location.host\n\n/**\n * Returns the hostname used to access this Nextcloud instance\n * The hostname is always stripped of the port\n *\n * @return {string} hostname\n * @since 9.0.0\n * @deprecated 17.0.0 use window.location.hostname directly\n */\nexport const getHostName = () => window.location.hostname\n\n/**\n * Returns the port number used to access this Nextcloud instance\n *\n * @return {number} port number\n *\n * @since 8.2.0\n * @deprecated 17.0.0 use window.location.port directly\n */\nexport const getPort = () => window.location.port\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nexport const get = context => name => {\n\tconst namespaces = name.split('.')\n\tconst tail = namespaces.pop()\n\n\tfor (let i = 0; i < namespaces.length; i++) {\n\t\tcontext = context[namespaces[i]]\n\t\tif (!context) {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn context[tail]\n}\n\n/**\n * Set a variable by name\n *\n * @param {string} context context\n * @return {Function} setter\n * @deprecated 19.0.0 use https://lodash.com/docs#set\n */\nexport const set = context => (name, value) => {\n\tconst namespaces = name.split('.')\n\tconst tail = namespaces.pop()\n\n\tfor (let i = 0; i < namespaces.length; i++) {\n\t\tif (!context[namespaces[i]]) {\n\t\t\tcontext[namespaces[i]] = {}\n\t\t}\n\t\tcontext = context[namespaces[i]]\n\t}\n\tcontext[tail] = value\n\treturn value\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nexport const redirect = targetURL => { window.location = targetURL }\n\n/**\n * Reloads the current page\n *\n * @deprecated 17.0.0 use window.location.reload directly\n */\nexport const reload = () => { window.location.reload() }\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"guest-box login-box\"},[(!_vm.hideLoginForm || _vm.directLogin)?[_c('transition',{attrs:{\"name\":\"fade\",\"mode\":\"out-in\"}},[(!_vm.passwordlessLogin && !_vm.resetPassword && _vm.resetPasswordTarget === '')?_c('div',[_c('LoginForm',{attrs:{\"username\":_vm.user,\"redirect-url\":_vm.redirectUrl,\"direct-login\":_vm.directLogin,\"messages\":_vm.messages,\"errors\":_vm.errors,\"throttle-delay\":_vm.throttleDelay,\"auto-complete-allowed\":_vm.autoCompleteAllowed,\"email-states\":_vm.emailStates},on:{\"update:username\":function($event){_vm.user=$event},\"submit\":function($event){_vm.loading = true}}}),_vm._v(\" \"),(_vm.canResetPassword && _vm.resetPasswordLink !== '')?_c('a',{staticClass:\"login-box__link\",attrs:{\"id\":\"lost-password\",\"href\":_vm.resetPasswordLink}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Forgot password?'))+\"\\n\\t\\t\\t\\t\")]):(_vm.canResetPassword && !_vm.resetPassword)?_c('a',{staticClass:\"login-box__link\",attrs:{\"id\":\"lost-password\",\"href\":_vm.resetPasswordLink},on:{\"click\":function($event){$event.preventDefault();_vm.resetPassword = true}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Forgot password?'))+\"\\n\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.hasPasswordless)?[(_vm.countAlternativeLogins)?_c('div',{staticClass:\"alternative-logins\"},[(_vm.hasPasswordless)?_c('a',{staticClass:\"button\",class:{ 'single-alt-login-option': _vm.countAlternativeLogins },attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();_vm.passwordlessLogin = true}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Log in with a device'))+\"\\n\\t\\t\\t\\t\\t\\t\")]):_vm._e()]):_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();_vm.passwordlessLogin = true}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Log in with a device'))+\"\\n\\t\\t\\t\\t\\t\")])]:_vm._e()],2):(!_vm.loading && _vm.passwordlessLogin)?_c('div',{key:\"reset-pw-less\",staticClass:\"login-additional login-passwordless\"},[_c('PasswordLessLoginForm',{attrs:{\"username\":_vm.user,\"redirect-url\":_vm.redirectUrl,\"auto-complete-allowed\":_vm.autoCompleteAllowed,\"is-https\":_vm.isHttps,\"is-localhost\":_vm.isLocalhost},on:{\"update:username\":function($event){_vm.user=$event},\"submit\":function($event){_vm.loading = true}}}),_vm._v(\" \"),_c('NcButton',{attrs:{\"type\":\"tertiary\",\"aria-label\":_vm.t('core', 'Back to login form'),\"wide\":true},on:{\"click\":function($event){_vm.passwordlessLogin = false}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Back'))+\"\\n\\t\\t\\t\\t\")])],1):(!_vm.loading && _vm.canResetPassword)?_c('div',{key:\"reset-can-reset\",staticClass:\"login-additional\"},[_c('div',{staticClass:\"lost-password-container\"},[(_vm.resetPassword)?_c('ResetPassword',{attrs:{\"username\":_vm.user,\"reset-password-link\":_vm.resetPasswordLink},on:{\"update:username\":function($event){_vm.user=$event},\"abort\":function($event){_vm.resetPassword = false}}}):_vm._e()],1)]):(_vm.resetPasswordTarget !== '')?_c('div',[_c('UpdatePassword',{attrs:{\"username\":_vm.user,\"reset-password-target\":_vm.resetPasswordTarget},on:{\"update:username\":function($event){_vm.user=$event},\"done\":_vm.passwordResetFinished}})],1):_vm._e()])]:[_c('transition',{attrs:{\"name\":\"fade\",\"mode\":\"out-in\"}},[_c('NcNoteCard',{attrs:{\"type\":\"info\",\"title\":_vm.t('core', 'Login form is disabled.')}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'The Nextcloud login form is disabled. Use another login option if available or contact your administration.'))+\"\\n\\t\\t\\t\")])],1)],_vm._v(\" \"),_c('div',{staticClass:\"alternative-logins\",attrs:{\"id\":\"alternative-logins\"}},_vm._l((_vm.alternativeLogins),function(alternativeLogin,index){return _c('NcButton',{key:index,class:[alternativeLogin.class],attrs:{\"type\":\"secondary\",\"wide\":true,\"role\":\"link\",\"href\":alternativeLogin.href}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(alternativeLogin.name)+\"\\n\\t\\t\")])}),1)],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\nexport default {\n\n\tcomputed: {\n\t\tuserNameInputLengthIs255() {\n\t\t\treturn this.user.length >= 255\n\t\t},\n\t\tuserInputHelperText() {\n\t\t\tif (this.userNameInputLengthIs255) {\n\t\t\t\treturn t('core', 'Email length is at max (255)')\n\t\t\t}\n\t\t\treturn undefined\n\t\t},\n\t},\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcButton',{attrs:{\"type\":\"primary\",\"native-type\":\"submit\",\"wide\":true,\"disabled\":_vm.loading},on:{\"click\":function($event){return _vm.$emit('click')}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.loading)?_c('div',{staticClass:\"submit-wrapper__icon icon-loading-small-dark\"}):_c('ArrowRight',{staticClass:\"submit-wrapper__icon\"})]},proxy:true}])},[_vm._v(\"\\n\\t\"+_vm._s(!_vm.loading ? _vm.value : _vm.valueLoading)+\"\\n\\t\")])\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!./LoginButton.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!./LoginButton.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!./LoginButton.vue?vue&type=style&index=0&id=6acd8f45&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \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!./LoginButton.vue?vue&type=style&index=0&id=6acd8f45&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./LoginButton.vue?vue&type=template&id=6acd8f45&scoped=true\"\nimport script from \"./LoginButton.vue?vue&type=script&lang=js\"\nexport * from \"./LoginButton.vue?vue&type=script&lang=js\"\nimport style0 from \"./LoginButton.vue?vue&type=style&index=0&id=6acd8f45&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 \"6acd8f45\",\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!./LoginForm.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!./LoginForm.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!./LoginForm.vue?vue&type=style&index=0&id=f18886ec&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \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!./LoginForm.vue?vue&type=style&index=0&id=f18886ec&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./LoginForm.vue?vue&type=template&id=f18886ec&scoped=true\"\nimport script from \"./LoginForm.vue?vue&type=script&lang=js\"\nexport * from \"./LoginForm.vue?vue&type=script&lang=js\"\nimport style0 from \"./LoginForm.vue?vue&type=style&index=0&id=f18886ec&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 \"f18886ec\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form',{ref:\"loginForm\",staticClass:\"login-form\",attrs:{\"method\":\"post\",\"name\":\"login\",\"action\":_vm.loginActionUrl},on:{\"submit\":_vm.submit}},[_c('fieldset',{staticClass:\"login-form__fieldset\",attrs:{\"data-login-form\":\"\"}},[(_vm.apacheAuthFailed)?_c('NcNoteCard',{attrs:{\"title\":_vm.t('core', 'Server side authentication failed!'),\"type\":\"warning\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Please contact your administrator.'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.csrfCheckFailed)?_c('NcNoteCard',{attrs:{\"heading\":_vm.t('core', 'Temporary error'),\"type\":\"error\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Please try again.'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.messages.length > 0)?_c('NcNoteCard',_vm._l((_vm.messages),function(message,index){return _c('div',{key:index},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(message)),_c('br')])}),0):_vm._e(),_vm._v(\" \"),(_vm.internalException)?_c('NcNoteCard',{class:_vm.t('core', 'An internal error occurred.'),attrs:{\"type\":\"warning\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Please try again or contact your administrator.'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"hidden\",attrs:{\"id\":\"message\"}},[_c('img',{staticClass:\"float-spinner\",attrs:{\"alt\":\"\",\"src\":_vm.loadingIcon}}),_vm._v(\" \"),_c('span',{attrs:{\"id\":\"messageText\"}}),_vm._v(\" \"),_c('div',{staticStyle:{\"clear\":\"both\"}})]),_vm._v(\" \"),_c('h2',{staticClass:\"login-form__headline\",attrs:{\"data-login-form-headline\":\"\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.headlineText)+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('NcTextField',{ref:\"user\",class:{shake: _vm.invalidPassword},attrs:{\"id\":\"user\",\"label\":_vm.loginText,\"name\":\"user\",\"maxlength\":255,\"value\":_vm.user,\"autocapitalize\":\"none\",\"spellchecking\":false,\"autocomplete\":_vm.autoCompleteAllowed ? 'username' : 'off',\"required\":\"\",\"error\":_vm.userNameInputLengthIs255,\"helper-text\":_vm.userInputHelperText,\"data-login-form-input-user\":\"\"},on:{\"update:value\":function($event){_vm.user=$event},\"change\":_vm.updateUsername}}),_vm._v(\" \"),_c('NcPasswordField',{ref:\"password\",class:{shake: _vm.invalidPassword},attrs:{\"id\":\"password\",\"name\":\"password\",\"value\":_vm.password,\"spellchecking\":false,\"autocapitalize\":\"none\",\"autocomplete\":_vm.autoCompleteAllowed ? 'current-password' : 'off',\"label\":_vm.t('core', 'Password'),\"helper-text\":_vm.errorLabel,\"error\":_vm.isError,\"data-login-form-input-password\":\"\",\"required\":\"\"},on:{\"update:value\":function($event){_vm.password=$event}}}),_vm._v(\" \"),_c('LoginButton',{attrs:{\"data-login-form-submit\":\"\",\"loading\":_vm.loading}}),_vm._v(\" \"),(_vm.redirectUrl)?_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"redirect_url\"},domProps:{\"value\":_vm.redirectUrl}}):_vm._e(),_vm._v(\" \"),_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"timezone\"},domProps:{\"value\":_vm.timezone}}),_vm._v(\" \"),_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"timezone_offset\"},domProps:{\"value\":_vm.timezoneOffset}}),_vm._v(\" \"),_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"requesttoken\"},domProps:{\"value\":_vm.requestToken}}),_vm._v(\" \"),(_vm.directLogin)?_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"direct\",\"value\":\"1\"}}):_vm._e()],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/* [@simplewebauthn/browser@10.0.0] */\nfunction bufferToBase64URLString(buffer) {\n const bytes = new Uint8Array(buffer);\n let str = '';\n for (const charCode of bytes) {\n str += String.fromCharCode(charCode);\n }\n const base64String = btoa(str);\n return base64String.replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=/g, '');\n}\n\nfunction base64URLStringToBuffer(base64URLString) {\n const base64 = base64URLString.replace(/-/g, '+').replace(/_/g, '/');\n const padLength = (4 - (base64.length % 4)) % 4;\n const padded = base64.padEnd(base64.length + padLength, '=');\n const binary = atob(padded);\n const buffer = new ArrayBuffer(binary.length);\n const bytes = new Uint8Array(buffer);\n for (let i = 0; i < binary.length; i++) {\n bytes[i] = binary.charCodeAt(i);\n }\n return buffer;\n}\n\nfunction browserSupportsWebAuthn() {\n return (window?.PublicKeyCredential !== undefined &&\n typeof window.PublicKeyCredential === 'function');\n}\n\nfunction toPublicKeyCredentialDescriptor(descriptor) {\n const { id } = descriptor;\n return {\n ...descriptor,\n id: base64URLStringToBuffer(id),\n transports: descriptor.transports,\n };\n}\n\nfunction isValidDomain(hostname) {\n return (hostname === 'localhost' ||\n /^([a-z0-9]+(-[a-z0-9]+)*\\.)+[a-z]{2,}$/i.test(hostname));\n}\n\nclass WebAuthnError extends Error {\n constructor({ message, code, cause, name, }) {\n super(message, { cause });\n this.name = name ?? cause.name;\n this.code = code;\n }\n}\n\nfunction identifyRegistrationError({ error, options, }) {\n const { publicKey } = options;\n if (!publicKey) {\n throw Error('options was missing required publicKey property');\n }\n if (error.name === 'AbortError') {\n if (options.signal instanceof AbortSignal) {\n return new WebAuthnError({\n message: 'Registration ceremony was sent an abort signal',\n code: 'ERROR_CEREMONY_ABORTED',\n cause: error,\n });\n }\n }\n else if (error.name === 'ConstraintError') {\n if (publicKey.authenticatorSelection?.requireResidentKey === true) {\n return new WebAuthnError({\n message: 'Discoverable credentials were required but no available authenticator supported it',\n code: 'ERROR_AUTHENTICATOR_MISSING_DISCOVERABLE_CREDENTIAL_SUPPORT',\n cause: error,\n });\n }\n else if (publicKey.authenticatorSelection?.userVerification === 'required') {\n return new WebAuthnError({\n message: 'User verification was required but no available authenticator supported it',\n code: 'ERROR_AUTHENTICATOR_MISSING_USER_VERIFICATION_SUPPORT',\n cause: error,\n });\n }\n }\n else if (error.name === 'InvalidStateError') {\n return new WebAuthnError({\n message: 'The authenticator was previously registered',\n code: 'ERROR_AUTHENTICATOR_PREVIOUSLY_REGISTERED',\n cause: error,\n });\n }\n else if (error.name === 'NotAllowedError') {\n return new WebAuthnError({\n message: error.message,\n code: 'ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY',\n cause: error,\n });\n }\n else if (error.name === 'NotSupportedError') {\n const validPubKeyCredParams = publicKey.pubKeyCredParams.filter((param) => param.type === 'public-key');\n if (validPubKeyCredParams.length === 0) {\n return new WebAuthnError({\n message: 'No entry in pubKeyCredParams was of type \"public-key\"',\n code: 'ERROR_MALFORMED_PUBKEYCREDPARAMS',\n cause: error,\n });\n }\n return new WebAuthnError({\n message: 'No available authenticator supported any of the specified pubKeyCredParams algorithms',\n code: 'ERROR_AUTHENTICATOR_NO_SUPPORTED_PUBKEYCREDPARAMS_ALG',\n cause: error,\n });\n }\n else if (error.name === 'SecurityError') {\n const effectiveDomain = window.location.hostname;\n if (!isValidDomain(effectiveDomain)) {\n return new WebAuthnError({\n message: `${window.location.hostname} is an invalid domain`,\n code: 'ERROR_INVALID_DOMAIN',\n cause: error,\n });\n }\n else if (publicKey.rp.id !== effectiveDomain) {\n return new WebAuthnError({\n message: `The RP ID \"${publicKey.rp.id}\" is invalid for this domain`,\n code: 'ERROR_INVALID_RP_ID',\n cause: error,\n });\n }\n }\n else if (error.name === 'TypeError') {\n if (publicKey.user.id.byteLength < 1 || publicKey.user.id.byteLength > 64) {\n return new WebAuthnError({\n message: 'User ID was not between 1 and 64 characters',\n code: 'ERROR_INVALID_USER_ID_LENGTH',\n cause: error,\n });\n }\n }\n else if (error.name === 'UnknownError') {\n return new WebAuthnError({\n message: 'The authenticator was unable to process the specified options, or could not create a new credential',\n code: 'ERROR_AUTHENTICATOR_GENERAL_ERROR',\n cause: error,\n });\n }\n return error;\n}\n\nclass BaseWebAuthnAbortService {\n createNewAbortSignal() {\n if (this.controller) {\n const abortError = new Error('Cancelling existing WebAuthn API call for new one');\n abortError.name = 'AbortError';\n this.controller.abort(abortError);\n }\n const newController = new AbortController();\n this.controller = newController;\n return newController.signal;\n }\n cancelCeremony() {\n if (this.controller) {\n const abortError = new Error('Manually cancelling existing WebAuthn API call');\n abortError.name = 'AbortError';\n this.controller.abort(abortError);\n this.controller = undefined;\n }\n }\n}\nconst WebAuthnAbortService = new BaseWebAuthnAbortService();\n\nconst attachments = ['cross-platform', 'platform'];\nfunction toAuthenticatorAttachment(attachment) {\n if (!attachment) {\n return;\n }\n if (attachments.indexOf(attachment) < 0) {\n return;\n }\n return attachment;\n}\n\nasync function startRegistration(optionsJSON) {\n if (!browserSupportsWebAuthn()) {\n throw new Error('WebAuthn is not supported in this browser');\n }\n const publicKey = {\n ...optionsJSON,\n challenge: base64URLStringToBuffer(optionsJSON.challenge),\n user: {\n ...optionsJSON.user,\n id: base64URLStringToBuffer(optionsJSON.user.id),\n },\n excludeCredentials: optionsJSON.excludeCredentials?.map(toPublicKeyCredentialDescriptor),\n };\n const options = { publicKey };\n options.signal = WebAuthnAbortService.createNewAbortSignal();\n let credential;\n try {\n credential = (await navigator.credentials.create(options));\n }\n catch (err) {\n throw identifyRegistrationError({ error: err, options });\n }\n if (!credential) {\n throw new Error('Registration was not completed');\n }\n const { id, rawId, response, type } = credential;\n let transports = undefined;\n if (typeof response.getTransports === 'function') {\n transports = response.getTransports();\n }\n let responsePublicKeyAlgorithm = undefined;\n if (typeof response.getPublicKeyAlgorithm === 'function') {\n try {\n responsePublicKeyAlgorithm = response.getPublicKeyAlgorithm();\n }\n catch (error) {\n warnOnBrokenImplementation('getPublicKeyAlgorithm()', error);\n }\n }\n let responsePublicKey = undefined;\n if (typeof response.getPublicKey === 'function') {\n try {\n const _publicKey = response.getPublicKey();\n if (_publicKey !== null) {\n responsePublicKey = bufferToBase64URLString(_publicKey);\n }\n }\n catch (error) {\n warnOnBrokenImplementation('getPublicKey()', error);\n }\n }\n let responseAuthenticatorData;\n if (typeof response.getAuthenticatorData === 'function') {\n try {\n responseAuthenticatorData = bufferToBase64URLString(response.getAuthenticatorData());\n }\n catch (error) {\n warnOnBrokenImplementation('getAuthenticatorData()', error);\n }\n }\n return {\n id,\n rawId: bufferToBase64URLString(rawId),\n response: {\n attestationObject: bufferToBase64URLString(response.attestationObject),\n clientDataJSON: bufferToBase64URLString(response.clientDataJSON),\n transports,\n publicKeyAlgorithm: responsePublicKeyAlgorithm,\n publicKey: responsePublicKey,\n authenticatorData: responseAuthenticatorData,\n },\n type,\n clientExtensionResults: credential.getClientExtensionResults(),\n authenticatorAttachment: toAuthenticatorAttachment(credential.authenticatorAttachment),\n };\n}\nfunction warnOnBrokenImplementation(methodName, cause) {\n console.warn(`The browser extension that intercepted this WebAuthn API call incorrectly implemented ${methodName}. You should report this error to them.\\n`, cause);\n}\n\nfunction browserSupportsWebAuthnAutofill() {\n if (!browserSupportsWebAuthn()) {\n return new Promise((resolve) => resolve(false));\n }\n const globalPublicKeyCredential = window\n .PublicKeyCredential;\n if (globalPublicKeyCredential.isConditionalMediationAvailable === undefined) {\n return new Promise((resolve) => resolve(false));\n }\n return globalPublicKeyCredential.isConditionalMediationAvailable();\n}\n\nfunction identifyAuthenticationError({ error, options, }) {\n const { publicKey } = options;\n if (!publicKey) {\n throw Error('options was missing required publicKey property');\n }\n if (error.name === 'AbortError') {\n if (options.signal instanceof AbortSignal) {\n return new WebAuthnError({\n message: 'Authentication ceremony was sent an abort signal',\n code: 'ERROR_CEREMONY_ABORTED',\n cause: error,\n });\n }\n }\n else if (error.name === 'NotAllowedError') {\n return new WebAuthnError({\n message: error.message,\n code: 'ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY',\n cause: error,\n });\n }\n else if (error.name === 'SecurityError') {\n const effectiveDomain = window.location.hostname;\n if (!isValidDomain(effectiveDomain)) {\n return new WebAuthnError({\n message: `${window.location.hostname} is an invalid domain`,\n code: 'ERROR_INVALID_DOMAIN',\n cause: error,\n });\n }\n else if (publicKey.rpId !== effectiveDomain) {\n return new WebAuthnError({\n message: `The RP ID \"${publicKey.rpId}\" is invalid for this domain`,\n code: 'ERROR_INVALID_RP_ID',\n cause: error,\n });\n }\n }\n else if (error.name === 'UnknownError') {\n return new WebAuthnError({\n message: 'The authenticator was unable to process the specified options, or could not create a new assertion signature',\n code: 'ERROR_AUTHENTICATOR_GENERAL_ERROR',\n cause: error,\n });\n }\n return error;\n}\n\nasync function startAuthentication(optionsJSON, useBrowserAutofill = false) {\n if (!browserSupportsWebAuthn()) {\n throw new Error('WebAuthn is not supported in this browser');\n }\n let allowCredentials;\n if (optionsJSON.allowCredentials?.length !== 0) {\n allowCredentials = optionsJSON.allowCredentials?.map(toPublicKeyCredentialDescriptor);\n }\n const publicKey = {\n ...optionsJSON,\n challenge: base64URLStringToBuffer(optionsJSON.challenge),\n allowCredentials,\n };\n const options = {};\n if (useBrowserAutofill) {\n if (!(await browserSupportsWebAuthnAutofill())) {\n throw Error('Browser does not support WebAuthn autofill');\n }\n const eligibleInputs = document.querySelectorAll(\"input[autocomplete$='webauthn']\");\n if (eligibleInputs.length < 1) {\n throw Error('No with \"webauthn\" as the only or last value in its `autocomplete` attribute was detected');\n }\n options.mediation = 'conditional';\n publicKey.allowCredentials = [];\n }\n options.publicKey = publicKey;\n options.signal = WebAuthnAbortService.createNewAbortSignal();\n let credential;\n try {\n credential = (await navigator.credentials.get(options));\n }\n catch (err) {\n throw identifyAuthenticationError({ error: err, options });\n }\n if (!credential) {\n throw new Error('Authentication was not completed');\n }\n const { id, rawId, response, type } = credential;\n let userHandle = undefined;\n if (response.userHandle) {\n userHandle = bufferToBase64URLString(response.userHandle);\n }\n return {\n id,\n rawId: bufferToBase64URLString(rawId),\n response: {\n authenticatorData: bufferToBase64URLString(response.authenticatorData),\n clientDataJSON: bufferToBase64URLString(response.clientDataJSON),\n signature: bufferToBase64URLString(response.signature),\n userHandle,\n },\n type,\n clientExtensionResults: credential.getClientExtensionResults(),\n authenticatorAttachment: toAuthenticatorAttachment(credential.authenticatorAttachment),\n };\n}\n\nfunction platformAuthenticatorIsAvailable() {\n if (!browserSupportsWebAuthn()) {\n return new Promise((resolve) => resolve(false));\n }\n return PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable();\n}\n\nexport { WebAuthnAbortService, WebAuthnError, base64URLStringToBuffer, browserSupportsWebAuthn, browserSupportsWebAuthnAutofill, bufferToBase64URLString, platformAuthenticatorIsAvailable, startAuthentication, startRegistration };\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\nconst 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 * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { startAuthentication as startWebauthnAuthentication } from '@simplewebauthn/browser';\nimport { generateUrl } from '@nextcloud/router';\nimport Axios from '@nextcloud/axios';\nimport logger from '../logger';\nexport class NoValidCredentials extends Error {\n}\n/**\n * Start webautn authentication\n * This loads the challenge, connects to the authenticator and returns the repose that needs to be sent to the server.\n *\n * @param loginName Name to login\n */\nexport async function startAuthentication(loginName) {\n const url = generateUrl('/login/webauthn/start');\n const { data } = await Axios.post(url, { loginName });\n if (!data.allowCredentials || data.allowCredentials.length === 0) {\n logger.error('No valid credentials returned for webauthn');\n throw new NoValidCredentials();\n }\n return await startWebauthnAuthentication(data);\n}\n/**\n * Verify webauthn authentication\n * @param authData The authentication data to sent to the server\n */\nexport async function finishAuthentication(authData) {\n const url = generateUrl('/login/webauthn/finish');\n const { data } = await Axios.post(url, { data: JSON.stringify(authData) });\n return data;\n}\n","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Information.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Information.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Information.vue?vue&type=template&id=70e6f3ef\"\nimport script from \"./Information.vue?vue&type=script&lang=js\"\nexport * from \"./Information.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 information-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\":\"M13,9H11V7H13M13,17H11V11H13M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./LockOpen.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./LockOpen.vue?vue&type=script&lang=js\"","\n\n","import { render, staticRenderFns } from \"./LockOpen.vue?vue&type=template&id=1b7ea4e7\"\nimport script from \"./LockOpen.vue?vue&type=script&lang=js\"\nexport * from \"./LockOpen.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 lock-open-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\":\"M18,8A2,2 0 0,1 20,10V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V10A2,2 0 0,1 6,8H15V6A3,3 0 0,0 12,3A3,3 0 0,0 9,6H7A5,5 0 0,1 12,1A5,5 0 0,1 17,6V8H18M12,17A2,2 0 0,0 14,15A2,2 0 0,0 12,13A2,2 0 0,0 10,15A2,2 0 0,0 12,17Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\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!./PasswordLessLoginForm.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!./PasswordLessLoginForm.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!./PasswordLessLoginForm.vue?vue&type=style&index=0&id=4a6bfc86&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \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!./PasswordLessLoginForm.vue?vue&type=style&index=0&id=4a6bfc86&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./PasswordLessLoginForm.vue?vue&type=template&id=4a6bfc86&scoped=true\"\nimport script from \"./PasswordLessLoginForm.vue?vue&type=script&lang=js\"\nexport * from \"./PasswordLessLoginForm.vue?vue&type=script&lang=js\"\nimport style0 from \"./PasswordLessLoginForm.vue?vue&type=style&index=0&id=4a6bfc86&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 \"4a6bfc86\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return ((_vm.isHttps || _vm.isLocalhost) && _vm.supportsWebauthn)?_c('form',{ref:\"loginForm\",attrs:{\"method\":\"post\",\"name\":\"login\"},on:{\"submit\":function($event){$event.preventDefault();return _vm.submit.apply(null, arguments)}}},[_c('h2',[_vm._v(_vm._s(_vm.t('core', 'Log in with a device')))]),_vm._v(\" \"),_c('fieldset',[_c('NcTextField',{attrs:{\"required\":\"\",\"value\":_vm.user,\"autocomplete\":_vm.autoCompleteAllowed ? 'on' : 'off',\"error\":!_vm.validCredentials,\"label\":_vm.t('core', 'Login or email'),\"placeholder\":_vm.t('core', 'Login or email'),\"helper-text\":!_vm.validCredentials ? _vm.t('core', 'Your account is not setup for passwordless login.') : ''},on:{\"update:value\":_vm.changeUsername}}),_vm._v(\" \"),(_vm.validCredentials)?_c('LoginButton',{attrs:{\"loading\":_vm.loading},on:{\"click\":_vm.authenticate}}):_vm._e()],1)]):(!_vm.supportsWebauthn)?_c('div',{staticClass:\"update\"},[_c('InformationIcon',{attrs:{\"size\":\"70\"}}),_vm._v(\" \"),_c('h2',[_vm._v(_vm._s(_vm.t('core', 'Browser not supported')))]),_vm._v(\" \"),_c('p',{staticClass:\"infogroup\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('core', 'Passwordless authentication is not supported in your browser.'))+\"\\n\\t\")])],1):(!_vm.isHttps && !_vm.isLocalhost)?_c('div',{staticClass:\"update\"},[_c('LockOpenIcon',{attrs:{\"size\":\"70\"}}),_vm._v(\" \"),_c('h2',[_vm._v(_vm._s(_vm.t('core', 'Your connection is not secure')))]),_vm._v(\" \"),_c('p',{staticClass:\"infogroup\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('core', 'Passwordless authentication is only available over a secure connection.'))+\"\\n\\t\")])],1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form',{staticClass:\"login-form\",on:{\"submit\":function($event){$event.preventDefault();return _vm.submit.apply(null, arguments)}}},[_c('fieldset',{staticClass:\"login-form__fieldset\"},[_c('NcTextField',{attrs:{\"id\":\"user\",\"value\":_vm.user,\"name\":\"user\",\"maxlength\":255,\"autocapitalize\":\"off\",\"label\":_vm.t('core', 'Login or email'),\"error\":_vm.userNameInputLengthIs255,\"helper-text\":_vm.userInputHelperText,\"required\":\"\"},on:{\"update:value\":function($event){_vm.user=$event},\"change\":_vm.updateUsername}}),_vm._v(\" \"),_c('LoginButton',{attrs:{\"value\":_vm.t('core', 'Reset password')}}),_vm._v(\" \"),(_vm.message === 'send-success')?_c('NcNoteCard',{attrs:{\"type\":\"success\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'If this account exists, a password reset message has been sent to its email address. If you do not receive it, verify your email address and/or Login, check your spam/junk folders or ask your local administration for help.'))+\"\\n\\t\\t\")]):(_vm.message === 'send-error')?_c('NcNoteCard',{attrs:{\"type\":\"error\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Couldn\\'t send reset email. Please contact your administrator.'))+\"\\n\\t\\t\")]):(_vm.message === 'reset-error')?_c('NcNoteCard',{attrs:{\"type\":\"error\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Password cannot be changed. Please contact your administrator.'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('a',{staticClass:\"login-form__link\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.$emit('abort')}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Back to login'))+\"\\n\\t\\t\")])],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!./ResetPassword.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!./ResetPassword.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!./ResetPassword.vue?vue&type=style&index=0&id=586305cf&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \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!./ResetPassword.vue?vue&type=style&index=0&id=586305cf&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./ResetPassword.vue?vue&type=template&id=586305cf&scoped=true\"\nimport script from \"./ResetPassword.vue?vue&type=script&lang=js\"\nexport * from \"./ResetPassword.vue?vue&type=script&lang=js\"\nimport style0 from \"./ResetPassword.vue?vue&type=style&index=0&id=586305cf&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 \"586305cf\",\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!./UpdatePassword.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!./UpdatePassword.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/vue-loader/lib/index.js??vue-loader-options!./UpdatePassword.vue?vue&type=style&index=0&id=6bdd5975&prod&scoped=true&lang=css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \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!./UpdatePassword.vue?vue&type=style&index=0&id=6bdd5975&prod&scoped=true&lang=css\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UpdatePassword.vue?vue&type=template&id=6bdd5975&scoped=true\"\nimport script from \"./UpdatePassword.vue?vue&type=script&lang=js\"\nexport * from \"./UpdatePassword.vue?vue&type=script&lang=js\"\nimport style0 from \"./UpdatePassword.vue?vue&type=style&index=0&id=6bdd5975&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 \"6bdd5975\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form',{on:{\"submit\":function($event){$event.preventDefault();return _vm.submit.apply(null, arguments)}}},[_c('fieldset',[_c('p',[_c('label',{staticClass:\"infield\",attrs:{\"for\":\"password\"}},[_vm._v(_vm._s(_vm.t('core', 'New password')))]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.password),expression:\"password\"}],attrs:{\"id\":\"password\",\"type\":\"password\",\"name\":\"password\",\"autocomplete\":\"new-password\",\"autocapitalize\":\"none\",\"spellcheck\":\"false\",\"required\":\"\",\"placeholder\":_vm.t('core', 'New password')},domProps:{\"value\":(_vm.password)},on:{\"input\":function($event){if($event.target.composing)return;_vm.password=$event.target.value}}})]),_vm._v(\" \"),(_vm.encrypted)?_c('div',{staticClass:\"update\"},[_c('p',[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Your files are encrypted. There will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.proceed),expression:\"proceed\"}],staticClass:\"checkbox\",attrs:{\"id\":\"encrypted-continue\",\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.proceed)?_vm._i(_vm.proceed,null)>-1:(_vm.proceed)},on:{\"change\":function($event){var $$a=_vm.proceed,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.proceed=$$a.concat([$$v]))}else{$$i>-1&&(_vm.proceed=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.proceed=$$c}}}}),_vm._v(\" \"),_c('label',{attrs:{\"for\":\"encrypted-continue\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'I know what I\\'m doing'))+\"\\n\\t\\t\\t\")])]):_vm._e(),_vm._v(\" \"),_c('LoginButton',{attrs:{\"loading\":_vm.loading,\"value\":_vm.t('core', 'Reset password'),\"value-loading\":_vm.t('core', 'Resetting password')}}),_vm._v(\" \"),(_vm.error && _vm.message)?_c('p',{class:{warning: _vm.error}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.message)+\"\\n\\t\\t\")]):_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!./Login.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!./Login.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!./Login.vue?vue&type=style&index=0&id=6adceba0&prod&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \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!./Login.vue?vue&type=style&index=0&id=6adceba0&prod&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Login.vue?vue&type=template&id=6adceba0\"\nimport script from \"./Login.vue?vue&type=script&lang=js\"\nexport * from \"./Login.vue?vue&type=script&lang=js\"\nimport style0 from \"./Login.vue?vue&type=style&index=0&id=6adceba0&prod&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 null,\n null\n \n)\n\nexport default component.exports","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport L10n from '../OC/l10n.js'\nimport OC from '../OC/index.js'\n\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tOC,\n\t\t}\n\t},\n\tmethods: {\n\t\tt: L10n.translate.bind(L10n),\n\t\tn: L10n.translatePlural.bind(L10n),\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 Vue from 'vue'\n\n// eslint-disable-next-line no-unused-vars\nimport OC from './OC/index.js' // TODO: Not needed but L10n breaks if removed\nimport LoginView from './views/Login.vue'\nimport Nextcloud from './mixins/Nextcloud.js'\n\nVue.mixin(Nextcloud)\n\nconst View = Vue.extend(LoginView)\nnew View().$mount('#login')\n","// Backbone.js 1.6.0\n\n// (c) 2010-2024 Jeremy Ashkenas and DocumentCloud\n// Backbone may be freely distributed under the MIT license.\n// For all details and documentation:\n// http://backbonejs.org\n\n(function(factory) {\n\n // Establish the root object, `window` (`self`) in the browser, or `global` on the server.\n // We use `self` instead of `window` for `WebWorker` support.\n var root = typeof self == 'object' && self.self === self && self ||\n typeof global == 'object' && global.global === global && global;\n\n // Set up Backbone appropriately for the environment. Start with AMD.\n if (typeof define === 'function' && define.amd) {\n define(['underscore', 'jquery', 'exports'], function(_, $, exports) {\n // Export global even in AMD case in case this script is loaded with\n // others that may still expect a global Backbone.\n root.Backbone = factory(root, exports, _, $);\n });\n\n // Next for Node.js or CommonJS. jQuery may not be needed as a module.\n } else if (typeof exports !== 'undefined') {\n var _ = require('underscore'), $;\n try { $ = require('jquery'); } catch (e) {}\n factory(root, exports, _, $);\n\n // Finally, as a browser global.\n } else {\n root.Backbone = factory(root, {}, root._, root.jQuery || root.Zepto || root.ender || root.$);\n }\n\n})(function(root, Backbone, _, $) {\n\n // Initial Setup\n // -------------\n\n // Save the previous value of the `Backbone` variable, so that it can be\n // restored later on, if `noConflict` is used.\n var previousBackbone = root.Backbone;\n\n // Create a local reference to a common array method we'll want to use later.\n var slice = Array.prototype.slice;\n\n // Current version of the library. Keep in sync with `package.json`.\n Backbone.VERSION = '1.6.0';\n\n // For Backbone's purposes, jQuery, Zepto, Ender, or My Library (kidding) owns\n // the `$` variable.\n Backbone.$ = $;\n\n // Runs Backbone.js in *noConflict* mode, returning the `Backbone` variable\n // to its previous owner. Returns a reference to this Backbone object.\n Backbone.noConflict = function() {\n root.Backbone = previousBackbone;\n return this;\n };\n\n // Turn on `emulateHTTP` to support legacy HTTP servers. Setting this option\n // will fake `\"PATCH\"`, `\"PUT\"` and `\"DELETE\"` requests via the `_method` parameter and\n // set a `X-Http-Method-Override` header.\n Backbone.emulateHTTP = false;\n\n // Turn on `emulateJSON` to support legacy servers that can't deal with direct\n // `application/json` requests ... this will encode the body as\n // `application/x-www-form-urlencoded` instead and will send the model in a\n // form param named `model`.\n Backbone.emulateJSON = false;\n\n // Backbone.Events\n // ---------------\n\n // A module that can be mixed in to *any object* in order to provide it with\n // a custom event channel. You may bind a callback to an event with `on` or\n // remove with `off`; `trigger`-ing an event fires all callbacks in\n // succession.\n //\n // var object = {};\n // _.extend(object, Backbone.Events);\n // object.on('expand', function(){ alert('expanded'); });\n // object.trigger('expand');\n //\n var Events = Backbone.Events = {};\n\n // Regular expression used to split event strings.\n var eventSplitter = /\\s+/;\n\n // A private global variable to share between listeners and listenees.\n var _listening;\n\n // Iterates over the standard `event, callback` (as well as the fancy multiple\n // space-separated events `\"change blur\", callback` and jQuery-style event\n // maps `{event: callback}`).\n var eventsApi = function(iteratee, events, name, callback, opts) {\n var i = 0, names;\n if (name && typeof name === 'object') {\n // Handle event maps.\n if (callback !== void 0 && 'context' in opts && opts.context === void 0) opts.context = callback;\n for (names = _.keys(name); i < names.length ; i++) {\n events = eventsApi(iteratee, events, names[i], name[names[i]], opts);\n }\n } else if (name && eventSplitter.test(name)) {\n // Handle space-separated event names by delegating them individually.\n for (names = name.split(eventSplitter); i < names.length; i++) {\n events = iteratee(events, names[i], callback, opts);\n }\n } else {\n // Finally, standard events.\n events = iteratee(events, name, callback, opts);\n }\n return events;\n };\n\n // Bind an event to a `callback` function. Passing `\"all\"` will bind\n // the callback to all events fired.\n Events.on = function(name, callback, context) {\n this._events = eventsApi(onApi, this._events || {}, name, callback, {\n context: context,\n ctx: this,\n listening: _listening\n });\n\n if (_listening) {\n var listeners = this._listeners || (this._listeners = {});\n listeners[_listening.id] = _listening;\n // Allow the listening to use a counter, instead of tracking\n // callbacks for library interop\n _listening.interop = false;\n }\n\n return this;\n };\n\n // Inversion-of-control versions of `on`. Tell *this* object to listen to\n // an event in another object... keeping track of what it's listening to\n // for easier unbinding later.\n Events.listenTo = function(obj, name, callback) {\n if (!obj) return this;\n var id = obj._listenId || (obj._listenId = _.uniqueId('l'));\n var listeningTo = this._listeningTo || (this._listeningTo = {});\n var listening = _listening = listeningTo[id];\n\n // This object is not listening to any other events on `obj` yet.\n // Setup the necessary references to track the listening callbacks.\n if (!listening) {\n this._listenId || (this._listenId = _.uniqueId('l'));\n listening = _listening = listeningTo[id] = new Listening(this, obj);\n }\n\n // Bind callbacks on obj.\n var error = tryCatchOn(obj, name, callback, this);\n _listening = void 0;\n\n if (error) throw error;\n // If the target obj is not Backbone.Events, track events manually.\n if (listening.interop) listening.on(name, callback);\n\n return this;\n };\n\n // The reducing API that adds a callback to the `events` object.\n var onApi = function(events, name, callback, options) {\n if (callback) {\n var handlers = events[name] || (events[name] = []);\n var context = options.context, ctx = options.ctx, listening = options.listening;\n if (listening) listening.count++;\n\n handlers.push({callback: callback, context: context, ctx: context || ctx, listening: listening});\n }\n return events;\n };\n\n // An try-catch guarded #on function, to prevent poisoning the global\n // `_listening` variable.\n var tryCatchOn = function(obj, name, callback, context) {\n try {\n obj.on(name, callback, context);\n } catch (e) {\n return e;\n }\n };\n\n // Remove one or many callbacks. If `context` is null, removes all\n // callbacks with that function. If `callback` is null, removes all\n // callbacks for the event. If `name` is null, removes all bound\n // callbacks for all events.\n Events.off = function(name, callback, context) {\n if (!this._events) return this;\n this._events = eventsApi(offApi, this._events, name, callback, {\n context: context,\n listeners: this._listeners\n });\n\n return this;\n };\n\n // Tell this object to stop listening to either specific events ... or\n // to every object it's currently listening to.\n Events.stopListening = function(obj, name, callback) {\n var listeningTo = this._listeningTo;\n if (!listeningTo) return this;\n\n var ids = obj ? [obj._listenId] : _.keys(listeningTo);\n for (var i = 0; i < ids.length; i++) {\n var listening = listeningTo[ids[i]];\n\n // If listening doesn't exist, this object is not currently\n // listening to obj. Break out early.\n if (!listening) break;\n\n listening.obj.off(name, callback, this);\n if (listening.interop) listening.off(name, callback);\n }\n if (_.isEmpty(listeningTo)) this._listeningTo = void 0;\n\n return this;\n };\n\n // The reducing API that removes a callback from the `events` object.\n var offApi = function(events, name, callback, options) {\n if (!events) return;\n\n var context = options.context, listeners = options.listeners;\n var i = 0, names;\n\n // Delete all event listeners and \"drop\" events.\n if (!name && !context && !callback) {\n for (names = _.keys(listeners); i < names.length; i++) {\n listeners[names[i]].cleanup();\n }\n return;\n }\n\n names = name ? [name] : _.keys(events);\n for (; i < names.length; i++) {\n name = names[i];\n var handlers = events[name];\n\n // Bail out if there are no events stored.\n if (!handlers) break;\n\n // Find any remaining events.\n var remaining = [];\n for (var j = 0; j < handlers.length; j++) {\n var handler = handlers[j];\n if (\n callback && callback !== handler.callback &&\n callback !== handler.callback._callback ||\n context && context !== handler.context\n ) {\n remaining.push(handler);\n } else {\n var listening = handler.listening;\n if (listening) listening.off(name, callback);\n }\n }\n\n // Replace events if there are any remaining. Otherwise, clean up.\n if (remaining.length) {\n events[name] = remaining;\n } else {\n delete events[name];\n }\n }\n\n return events;\n };\n\n // Bind an event to only be triggered a single time. After the first time\n // the callback is invoked, its listener will be removed. If multiple events\n // are passed in using the space-separated syntax, the handler will fire\n // once for each event, not once for a combination of all events.\n Events.once = function(name, callback, context) {\n // Map the event into a `{event: once}` object.\n var events = eventsApi(onceMap, {}, name, callback, this.off.bind(this));\n if (typeof name === 'string' && context == null) callback = void 0;\n return this.on(events, callback, context);\n };\n\n // Inversion-of-control versions of `once`.\n Events.listenToOnce = function(obj, name, callback) {\n // Map the event into a `{event: once}` object.\n var events = eventsApi(onceMap, {}, name, callback, this.stopListening.bind(this, obj));\n return this.listenTo(obj, events);\n };\n\n // Reduces the event callbacks into a map of `{event: onceWrapper}`.\n // `offer` unbinds the `onceWrapper` after it has been called.\n var onceMap = function(map, name, callback, offer) {\n if (callback) {\n var once = map[name] = _.once(function() {\n offer(name, once);\n callback.apply(this, arguments);\n });\n once._callback = callback;\n }\n return map;\n };\n\n // Trigger one or many events, firing all bound callbacks. Callbacks are\n // passed the same arguments as `trigger` is, apart from the event name\n // (unless you're listening on `\"all\"`, which will cause your callback to\n // receive the true name of the event as the first argument).\n Events.trigger = function(name) {\n if (!this._events) return this;\n\n var length = Math.max(0, arguments.length - 1);\n var args = Array(length);\n for (var i = 0; i < length; i++) args[i] = arguments[i + 1];\n\n eventsApi(triggerApi, this._events, name, void 0, args);\n return this;\n };\n\n // Handles triggering the appropriate event callbacks.\n var triggerApi = function(objEvents, name, callback, args) {\n if (objEvents) {\n var events = objEvents[name];\n var allEvents = objEvents.all;\n if (events && allEvents) allEvents = allEvents.slice();\n if (events) triggerEvents(events, args);\n if (allEvents) triggerEvents(allEvents, [name].concat(args));\n }\n return objEvents;\n };\n\n // A difficult-to-believe, but optimized internal dispatch function for\n // triggering events. Tries to keep the usual cases speedy (most internal\n // Backbone events have 3 arguments).\n var triggerEvents = function(events, args) {\n var ev, i = -1, l = events.length, a1 = args[0], a2 = args[1], a3 = args[2];\n switch (args.length) {\n case 0: while (++i < l) (ev = events[i]).callback.call(ev.ctx); return;\n case 1: while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1); return;\n case 2: while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1, a2); return;\n case 3: while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1, a2, a3); return;\n default: while (++i < l) (ev = events[i]).callback.apply(ev.ctx, args); return;\n }\n };\n\n // A listening class that tracks and cleans up memory bindings\n // when all callbacks have been offed.\n var Listening = function(listener, obj) {\n this.id = listener._listenId;\n this.listener = listener;\n this.obj = obj;\n this.interop = true;\n this.count = 0;\n this._events = void 0;\n };\n\n Listening.prototype.on = Events.on;\n\n // Offs a callback (or several).\n // Uses an optimized counter if the listenee uses Backbone.Events.\n // Otherwise, falls back to manual tracking to support events\n // library interop.\n Listening.prototype.off = function(name, callback) {\n var cleanup;\n if (this.interop) {\n this._events = eventsApi(offApi, this._events, name, callback, {\n context: void 0,\n listeners: void 0\n });\n cleanup = !this._events;\n } else {\n this.count--;\n cleanup = this.count === 0;\n }\n if (cleanup) this.cleanup();\n };\n\n // Cleans up memory bindings between the listener and the listenee.\n Listening.prototype.cleanup = function() {\n delete this.listener._listeningTo[this.obj._listenId];\n if (!this.interop) delete this.obj._listeners[this.id];\n };\n\n // Aliases for backwards compatibility.\n Events.bind = Events.on;\n Events.unbind = Events.off;\n\n // Allow the `Backbone` object to serve as a global event bus, for folks who\n // want global \"pubsub\" in a convenient place.\n _.extend(Backbone, Events);\n\n // Backbone.Model\n // --------------\n\n // Backbone **Models** are the basic data object in the framework --\n // frequently representing a row in a table in a database on your server.\n // A discrete chunk of data and a bunch of useful, related methods for\n // performing computations and transformations on that data.\n\n // Create a new model with the specified attributes. A client id (`cid`)\n // is automatically generated and assigned for you.\n var Model = Backbone.Model = function(attributes, options) {\n var attrs = attributes || {};\n options || (options = {});\n this.preinitialize.apply(this, arguments);\n this.cid = _.uniqueId(this.cidPrefix);\n this.attributes = {};\n if (options.collection) this.collection = options.collection;\n if (options.parse) attrs = this.parse(attrs, options) || {};\n var defaults = _.result(this, 'defaults');\n\n // Just _.defaults would work fine, but the additional _.extends\n // is in there for historical reasons. See #3843.\n attrs = _.defaults(_.extend({}, defaults, attrs), defaults);\n\n this.set(attrs, options);\n this.changed = {};\n this.initialize.apply(this, arguments);\n };\n\n // Attach all inheritable methods to the Model prototype.\n _.extend(Model.prototype, Events, {\n\n // A hash of attributes whose current and previous value differ.\n changed: null,\n\n // The value returned during the last failed validation.\n validationError: null,\n\n // The default name for the JSON `id` attribute is `\"id\"`. MongoDB and\n // CouchDB users may want to set this to `\"_id\"`.\n idAttribute: 'id',\n\n // The prefix is used to create the client id which is used to identify models locally.\n // You may want to override this if you're experiencing name clashes with model ids.\n cidPrefix: 'c',\n\n // preinitialize is an empty function by default. You can override it with a function\n // or object. preinitialize will run before any instantiation logic is run in the Model.\n preinitialize: function(){},\n\n // Initialize is an empty function by default. Override it with your own\n // initialization logic.\n initialize: function(){},\n\n // Return a copy of the model's `attributes` object.\n toJSON: function(options) {\n return _.clone(this.attributes);\n },\n\n // Proxy `Backbone.sync` by default -- but override this if you need\n // custom syncing semantics for *this* particular model.\n sync: function() {\n return Backbone.sync.apply(this, arguments);\n },\n\n // Get the value of an attribute.\n get: function(attr) {\n return this.attributes[attr];\n },\n\n // Get the HTML-escaped value of an attribute.\n escape: function(attr) {\n return _.escape(this.get(attr));\n },\n\n // Returns `true` if the attribute contains a value that is not null\n // or undefined.\n has: function(attr) {\n return this.get(attr) != null;\n },\n\n // Special-cased proxy to underscore's `_.matches` method.\n matches: function(attrs) {\n return !!_.iteratee(attrs, this)(this.attributes);\n },\n\n // Set a hash of model attributes on the object, firing `\"change\"`. This is\n // the core primitive operation of a model, updating the data and notifying\n // anyone who needs to know about the change in state. The heart of the beast.\n set: function(key, val, options) {\n if (key == null) return this;\n\n // Handle both `\"key\", value` and `{key: value}` -style arguments.\n var attrs;\n if (typeof key === 'object') {\n attrs = key;\n options = val;\n } else {\n (attrs = {})[key] = val;\n }\n\n options || (options = {});\n\n // Run validation.\n if (!this._validate(attrs, options)) return false;\n\n // Extract attributes and options.\n var unset = options.unset;\n var silent = options.silent;\n var changes = [];\n var changing = this._changing;\n this._changing = true;\n\n if (!changing) {\n this._previousAttributes = _.clone(this.attributes);\n this.changed = {};\n }\n\n var current = this.attributes;\n var changed = this.changed;\n var prev = this._previousAttributes;\n\n // For each `set` attribute, update or delete the current value.\n for (var attr in attrs) {\n val = attrs[attr];\n if (!_.isEqual(current[attr], val)) changes.push(attr);\n if (!_.isEqual(prev[attr], val)) {\n changed[attr] = val;\n } else {\n delete changed[attr];\n }\n unset ? delete current[attr] : current[attr] = val;\n }\n\n // Update the `id`.\n if (this.idAttribute in attrs) {\n var prevId = this.id;\n this.id = this.get(this.idAttribute);\n this.trigger('changeId', this, prevId, options);\n }\n\n // Trigger all relevant attribute changes.\n if (!silent) {\n if (changes.length) this._pending = options;\n for (var i = 0; i < changes.length; i++) {\n this.trigger('change:' + changes[i], this, current[changes[i]], options);\n }\n }\n\n // You might be wondering why there's a `while` loop here. Changes can\n // be recursively nested within `\"change\"` events.\n if (changing) return this;\n if (!silent) {\n while (this._pending) {\n options = this._pending;\n this._pending = false;\n this.trigger('change', this, options);\n }\n }\n this._pending = false;\n this._changing = false;\n return this;\n },\n\n // Remove an attribute from the model, firing `\"change\"`. `unset` is a noop\n // if the attribute doesn't exist.\n unset: function(attr, options) {\n return this.set(attr, void 0, _.extend({}, options, {unset: true}));\n },\n\n // Clear all attributes on the model, firing `\"change\"`.\n clear: function(options) {\n var attrs = {};\n for (var key in this.attributes) attrs[key] = void 0;\n return this.set(attrs, _.extend({}, options, {unset: true}));\n },\n\n // Determine if the model has changed since the last `\"change\"` event.\n // If you specify an attribute name, determine if that attribute has changed.\n hasChanged: function(attr) {\n if (attr == null) return !_.isEmpty(this.changed);\n return _.has(this.changed, attr);\n },\n\n // Return an object containing all the attributes that have changed, or\n // false if there are no changed attributes. Useful for determining what\n // parts of a view need to be updated and/or what attributes need to be\n // persisted to the server. Unset attributes will be set to undefined.\n // You can also pass an attributes object to diff against the model,\n // determining if there *would be* a change.\n changedAttributes: function(diff) {\n if (!diff) return this.hasChanged() ? _.clone(this.changed) : false;\n var old = this._changing ? this._previousAttributes : this.attributes;\n var changed = {};\n var hasChanged;\n for (var attr in diff) {\n var val = diff[attr];\n if (_.isEqual(old[attr], val)) continue;\n changed[attr] = val;\n hasChanged = true;\n }\n return hasChanged ? changed : false;\n },\n\n // Get the previous value of an attribute, recorded at the time the last\n // `\"change\"` event was fired.\n previous: function(attr) {\n if (attr == null || !this._previousAttributes) return null;\n return this._previousAttributes[attr];\n },\n\n // Get all of the attributes of the model at the time of the previous\n // `\"change\"` event.\n previousAttributes: function() {\n return _.clone(this._previousAttributes);\n },\n\n // Fetch the model from the server, merging the response with the model's\n // local attributes. Any changed attributes will trigger a \"change\" event.\n fetch: function(options) {\n options = _.extend({parse: true}, options);\n var model = this;\n var success = options.success;\n options.success = function(resp) {\n var serverAttrs = options.parse ? model.parse(resp, options) : resp;\n if (!model.set(serverAttrs, options)) return false;\n if (success) success.call(options.context, model, resp, options);\n model.trigger('sync', model, resp, options);\n };\n wrapError(this, options);\n return this.sync('read', this, options);\n },\n\n // Set a hash of model attributes, and sync the model to the server.\n // If the server returns an attributes hash that differs, the model's\n // state will be `set` again.\n save: function(key, val, options) {\n // Handle both `\"key\", value` and `{key: value}` -style arguments.\n var attrs;\n if (key == null || typeof key === 'object') {\n attrs = key;\n options = val;\n } else {\n (attrs = {})[key] = val;\n }\n\n options = _.extend({validate: true, parse: true}, options);\n var wait = options.wait;\n\n // If we're not waiting and attributes exist, save acts as\n // `set(attr).save(null, opts)` with validation. Otherwise, check if\n // the model will be valid when the attributes, if any, are set.\n if (attrs && !wait) {\n if (!this.set(attrs, options)) return false;\n } else if (!this._validate(attrs, options)) {\n return false;\n }\n\n // After a successful server-side save, the client is (optionally)\n // updated with the server-side state.\n var model = this;\n var success = options.success;\n var attributes = this.attributes;\n options.success = function(resp) {\n // Ensure attributes are restored during synchronous saves.\n model.attributes = attributes;\n var serverAttrs = options.parse ? model.parse(resp, options) : resp;\n if (wait) serverAttrs = _.extend({}, attrs, serverAttrs);\n if (serverAttrs && !model.set(serverAttrs, options)) return false;\n if (success) success.call(options.context, model, resp, options);\n model.trigger('sync', model, resp, options);\n };\n wrapError(this, options);\n\n // Set temporary attributes if `{wait: true}` to properly find new ids.\n if (attrs && wait) this.attributes = _.extend({}, attributes, attrs);\n\n var method = this.isNew() ? 'create' : options.patch ? 'patch' : 'update';\n if (method === 'patch' && !options.attrs) options.attrs = attrs;\n var xhr = this.sync(method, this, options);\n\n // Restore attributes.\n this.attributes = attributes;\n\n return xhr;\n },\n\n // Destroy this model on the server if it was already persisted.\n // Optimistically removes the model from its collection, if it has one.\n // If `wait: true` is passed, waits for the server to respond before removal.\n destroy: function(options) {\n options = options ? _.clone(options) : {};\n var model = this;\n var success = options.success;\n var wait = options.wait;\n\n var destroy = function() {\n model.stopListening();\n model.trigger('destroy', model, model.collection, options);\n };\n\n options.success = function(resp) {\n if (wait) destroy();\n if (success) success.call(options.context, model, resp, options);\n if (!model.isNew()) model.trigger('sync', model, resp, options);\n };\n\n var xhr = false;\n if (this.isNew()) {\n _.defer(options.success);\n } else {\n wrapError(this, options);\n xhr = this.sync('delete', this, options);\n }\n if (!wait) destroy();\n return xhr;\n },\n\n // Default URL for the model's representation on the server -- if you're\n // using Backbone's restful methods, override this to change the endpoint\n // that will be called.\n url: function() {\n var base =\n _.result(this, 'urlRoot') ||\n _.result(this.collection, 'url') ||\n urlError();\n if (this.isNew()) return base;\n var id = this.get(this.idAttribute);\n return base.replace(/[^\\/]$/, '$&/') + encodeURIComponent(id);\n },\n\n // **parse** converts a response into the hash of attributes to be `set` on\n // the model. The default implementation is just to pass the response along.\n parse: function(resp, options) {\n return resp;\n },\n\n // Create a new model with identical attributes to this one.\n clone: function() {\n return new this.constructor(this.attributes);\n },\n\n // A model is new if it has never been saved to the server, and lacks an id.\n isNew: function() {\n return !this.has(this.idAttribute);\n },\n\n // Check if the model is currently in a valid state.\n isValid: function(options) {\n return this._validate({}, _.extend({}, options, {validate: true}));\n },\n\n // Run validation against the next complete set of model attributes,\n // returning `true` if all is well. Otherwise, fire an `\"invalid\"` event.\n _validate: function(attrs, options) {\n if (!options.validate || !this.validate) return true;\n attrs = _.extend({}, this.attributes, attrs);\n var error = this.validationError = this.validate(attrs, options) || null;\n if (!error) return true;\n this.trigger('invalid', this, error, _.extend(options, {validationError: error}));\n return false;\n }\n\n });\n\n // Backbone.Collection\n // -------------------\n\n // If models tend to represent a single row of data, a Backbone Collection is\n // more analogous to a table full of data ... or a small slice or page of that\n // table, or a collection of rows that belong together for a particular reason\n // -- all of the messages in this particular folder, all of the documents\n // belonging to this particular author, and so on. Collections maintain\n // indexes of their models, both in order, and for lookup by `id`.\n\n // Create a new **Collection**, perhaps to contain a specific type of `model`.\n // If a `comparator` is specified, the Collection will maintain\n // its models in sort order, as they're added and removed.\n var Collection = Backbone.Collection = function(models, options) {\n options || (options = {});\n this.preinitialize.apply(this, arguments);\n if (options.model) this.model = options.model;\n if (options.comparator !== void 0) this.comparator = options.comparator;\n this._reset();\n this.initialize.apply(this, arguments);\n if (models) this.reset(models, _.extend({silent: true}, options));\n };\n\n // Default options for `Collection#set`.\n var setOptions = {add: true, remove: true, merge: true};\n var addOptions = {add: true, remove: false};\n\n // Splices `insert` into `array` at index `at`.\n var splice = function(array, insert, at) {\n at = Math.min(Math.max(at, 0), array.length);\n var tail = Array(array.length - at);\n var length = insert.length;\n var i;\n for (i = 0; i < tail.length; i++) tail[i] = array[i + at];\n for (i = 0; i < length; i++) array[i + at] = insert[i];\n for (i = 0; i < tail.length; i++) array[i + length + at] = tail[i];\n };\n\n // Define the Collection's inheritable methods.\n _.extend(Collection.prototype, Events, {\n\n // The default model for a collection is just a **Backbone.Model**.\n // This should be overridden in most cases.\n model: Model,\n\n\n // preinitialize is an empty function by default. You can override it with a function\n // or object. preinitialize will run before any instantiation logic is run in the Collection.\n preinitialize: function(){},\n\n // Initialize is an empty function by default. Override it with your own\n // initialization logic.\n initialize: function(){},\n\n // The JSON representation of a Collection is an array of the\n // models' attributes.\n toJSON: function(options) {\n return this.map(function(model) { return model.toJSON(options); });\n },\n\n // Proxy `Backbone.sync` by default.\n sync: function() {\n return Backbone.sync.apply(this, arguments);\n },\n\n // Add a model, or list of models to the set. `models` may be Backbone\n // Models or raw JavaScript objects to be converted to Models, or any\n // combination of the two.\n add: function(models, options) {\n return this.set(models, _.extend({merge: false}, options, addOptions));\n },\n\n // Remove a model, or a list of models from the set.\n remove: function(models, options) {\n options = _.extend({}, options);\n var singular = !_.isArray(models);\n models = singular ? [models] : models.slice();\n var removed = this._removeModels(models, options);\n if (!options.silent && removed.length) {\n options.changes = {added: [], merged: [], removed: removed};\n this.trigger('update', this, options);\n }\n return singular ? removed[0] : removed;\n },\n\n // Update a collection by `set`-ing a new list of models, adding new ones,\n // removing models that are no longer present, and merging models that\n // already exist in the collection, as necessary. Similar to **Model#set**,\n // the core operation for updating the data contained by the collection.\n set: function(models, options) {\n if (models == null) return;\n\n options = _.extend({}, setOptions, options);\n if (options.parse && !this._isModel(models)) {\n models = this.parse(models, options) || [];\n }\n\n var singular = !_.isArray(models);\n models = singular ? [models] : models.slice();\n\n var at = options.at;\n if (at != null) at = +at;\n if (at > this.length) at = this.length;\n if (at < 0) at += this.length + 1;\n\n var set = [];\n var toAdd = [];\n var toMerge = [];\n var toRemove = [];\n var modelMap = {};\n\n var add = options.add;\n var merge = options.merge;\n var remove = options.remove;\n\n var sort = false;\n var sortable = this.comparator && at == null && options.sort !== false;\n var sortAttr = _.isString(this.comparator) ? this.comparator : null;\n\n // Turn bare objects into model references, and prevent invalid models\n // from being added.\n var model, i;\n for (i = 0; i < models.length; i++) {\n model = models[i];\n\n // If a duplicate is found, prevent it from being added and\n // optionally merge it into the existing model.\n var existing = this.get(model);\n if (existing) {\n if (merge && model !== existing) {\n var attrs = this._isModel(model) ? model.attributes : model;\n if (options.parse) attrs = existing.parse(attrs, options);\n existing.set(attrs, options);\n toMerge.push(existing);\n if (sortable && !sort) sort = existing.hasChanged(sortAttr);\n }\n if (!modelMap[existing.cid]) {\n modelMap[existing.cid] = true;\n set.push(existing);\n }\n models[i] = existing;\n\n // If this is a new, valid model, push it to the `toAdd` list.\n } else if (add) {\n model = models[i] = this._prepareModel(model, options);\n if (model) {\n toAdd.push(model);\n this._addReference(model, options);\n modelMap[model.cid] = true;\n set.push(model);\n }\n }\n }\n\n // Remove stale models.\n if (remove) {\n for (i = 0; i < this.length; i++) {\n model = this.models[i];\n if (!modelMap[model.cid]) toRemove.push(model);\n }\n if (toRemove.length) this._removeModels(toRemove, options);\n }\n\n // See if sorting is needed, update `length` and splice in new models.\n var orderChanged = false;\n var replace = !sortable && add && remove;\n if (set.length && replace) {\n orderChanged = this.length !== set.length || _.some(this.models, function(m, index) {\n return m !== set[index];\n });\n this.models.length = 0;\n splice(this.models, set, 0);\n this.length = this.models.length;\n } else if (toAdd.length) {\n if (sortable) sort = true;\n splice(this.models, toAdd, at == null ? this.length : at);\n this.length = this.models.length;\n }\n\n // Silently sort the collection if appropriate.\n if (sort) this.sort({silent: true});\n\n // Unless silenced, it's time to fire all appropriate add/sort/update events.\n if (!options.silent) {\n for (i = 0; i < toAdd.length; i++) {\n if (at != null) options.index = at + i;\n model = toAdd[i];\n model.trigger('add', model, this, options);\n }\n if (sort || orderChanged) this.trigger('sort', this, options);\n if (toAdd.length || toRemove.length || toMerge.length) {\n options.changes = {\n added: toAdd,\n removed: toRemove,\n merged: toMerge\n };\n this.trigger('update', this, options);\n }\n }\n\n // Return the added (or merged) model (or models).\n return singular ? models[0] : models;\n },\n\n // When you have more items than you want to add or remove individually,\n // you can reset the entire set with a new list of models, without firing\n // any granular `add` or `remove` events. Fires `reset` when finished.\n // Useful for bulk operations and optimizations.\n reset: function(models, options) {\n options = options ? _.clone(options) : {};\n for (var i = 0; i < this.models.length; i++) {\n this._removeReference(this.models[i], options);\n }\n options.previousModels = this.models;\n this._reset();\n models = this.add(models, _.extend({silent: true}, options));\n if (!options.silent) this.trigger('reset', this, options);\n return models;\n },\n\n // Add a model to the end of the collection.\n push: function(model, options) {\n return this.add(model, _.extend({at: this.length}, options));\n },\n\n // Remove a model from the end of the collection.\n pop: function(options) {\n var model = this.at(this.length - 1);\n return this.remove(model, options);\n },\n\n // Add a model to the beginning of the collection.\n unshift: function(model, options) {\n return this.add(model, _.extend({at: 0}, options));\n },\n\n // Remove a model from the beginning of the collection.\n shift: function(options) {\n var model = this.at(0);\n return this.remove(model, options);\n },\n\n // Slice out a sub-array of models from the collection.\n slice: function() {\n return slice.apply(this.models, arguments);\n },\n\n // Get a model from the set by id, cid, model object with id or cid\n // properties, or an attributes object that is transformed through modelId.\n get: function(obj) {\n if (obj == null) return void 0;\n return this._byId[obj] ||\n this._byId[this.modelId(this._isModel(obj) ? obj.attributes : obj, obj.idAttribute)] ||\n obj.cid && this._byId[obj.cid];\n },\n\n // Returns `true` if the model is in the collection.\n has: function(obj) {\n return this.get(obj) != null;\n },\n\n // Get the model at the given index.\n at: function(index) {\n if (index < 0) index += this.length;\n return this.models[index];\n },\n\n // Return models with matching attributes. Useful for simple cases of\n // `filter`.\n where: function(attrs, first) {\n return this[first ? 'find' : 'filter'](attrs);\n },\n\n // Return the first model with matching attributes. Useful for simple cases\n // of `find`.\n findWhere: function(attrs) {\n return this.where(attrs, true);\n },\n\n // Force the collection to re-sort itself. You don't need to call this under\n // normal circumstances, as the set will maintain sort order as each item\n // is added.\n sort: function(options) {\n var comparator = this.comparator;\n if (!comparator) throw new Error('Cannot sort a set without a comparator');\n options || (options = {});\n\n var length = comparator.length;\n if (_.isFunction(comparator)) comparator = comparator.bind(this);\n\n // Run sort based on type of `comparator`.\n if (length === 1 || _.isString(comparator)) {\n this.models = this.sortBy(comparator);\n } else {\n this.models.sort(comparator);\n }\n if (!options.silent) this.trigger('sort', this, options);\n return this;\n },\n\n // Pluck an attribute from each model in the collection.\n pluck: function(attr) {\n return this.map(attr + '');\n },\n\n // Fetch the default set of models for this collection, resetting the\n // collection when they arrive. If `reset: true` is passed, the response\n // data will be passed through the `reset` method instead of `set`.\n fetch: function(options) {\n options = _.extend({parse: true}, options);\n var success = options.success;\n var collection = this;\n options.success = function(resp) {\n var method = options.reset ? 'reset' : 'set';\n collection[method](resp, options);\n if (success) success.call(options.context, collection, resp, options);\n collection.trigger('sync', collection, resp, options);\n };\n wrapError(this, options);\n return this.sync('read', this, options);\n },\n\n // Create a new instance of a model in this collection. Add the model to the\n // collection immediately, unless `wait: true` is passed, in which case we\n // wait for the server to agree.\n create: function(model, options) {\n options = options ? _.clone(options) : {};\n var wait = options.wait;\n model = this._prepareModel(model, options);\n if (!model) return false;\n if (!wait) this.add(model, options);\n var collection = this;\n var success = options.success;\n options.success = function(m, resp, callbackOpts) {\n if (wait) {\n m.off('error', collection._forwardPristineError, collection);\n collection.add(m, callbackOpts);\n }\n if (success) success.call(callbackOpts.context, m, resp, callbackOpts);\n };\n // In case of wait:true, our collection is not listening to any\n // of the model's events yet, so it will not forward the error\n // event. In this special case, we need to listen for it\n // separately and handle the event just once.\n // (The reason we don't need to do this for the sync event is\n // in the success handler above: we add the model first, which\n // causes the collection to listen, and then invoke the callback\n // that triggers the event.)\n if (wait) {\n model.once('error', this._forwardPristineError, this);\n }\n model.save(null, options);\n return model;\n },\n\n // **parse** converts a response into a list of models to be added to the\n // collection. The default implementation is just to pass it through.\n parse: function(resp, options) {\n return resp;\n },\n\n // Create a new collection with an identical list of models as this one.\n clone: function() {\n return new this.constructor(this.models, {\n model: this.model,\n comparator: this.comparator\n });\n },\n\n // Define how to uniquely identify models in the collection.\n modelId: function(attrs, idAttribute) {\n return attrs[idAttribute || this.model.prototype.idAttribute || 'id'];\n },\n\n // Get an iterator of all models in this collection.\n values: function() {\n return new CollectionIterator(this, ITERATOR_VALUES);\n },\n\n // Get an iterator of all model IDs in this collection.\n keys: function() {\n return new CollectionIterator(this, ITERATOR_KEYS);\n },\n\n // Get an iterator of all [ID, model] tuples in this collection.\n entries: function() {\n return new CollectionIterator(this, ITERATOR_KEYSVALUES);\n },\n\n // Private method to reset all internal state. Called when the collection\n // is first initialized or reset.\n _reset: function() {\n this.length = 0;\n this.models = [];\n this._byId = {};\n },\n\n // Prepare a hash of attributes (or other model) to be added to this\n // collection.\n _prepareModel: function(attrs, options) {\n if (this._isModel(attrs)) {\n if (!attrs.collection) attrs.collection = this;\n return attrs;\n }\n options = options ? _.clone(options) : {};\n options.collection = this;\n\n var model;\n if (this.model.prototype) {\n model = new this.model(attrs, options);\n } else {\n // ES class methods didn't have prototype\n model = this.model(attrs, options);\n }\n\n if (!model.validationError) return model;\n this.trigger('invalid', this, model.validationError, options);\n return false;\n },\n\n // Internal method called by both remove and set.\n _removeModels: function(models, options) {\n var removed = [];\n for (var i = 0; i < models.length; i++) {\n var model = this.get(models[i]);\n if (!model) continue;\n\n var index = this.indexOf(model);\n this.models.splice(index, 1);\n this.length--;\n\n // Remove references before triggering 'remove' event to prevent an\n // infinite loop. #3693\n delete this._byId[model.cid];\n var id = this.modelId(model.attributes, model.idAttribute);\n if (id != null) delete this._byId[id];\n\n if (!options.silent) {\n options.index = index;\n model.trigger('remove', model, this, options);\n }\n\n removed.push(model);\n this._removeReference(model, options);\n }\n if (models.length > 0 && !options.silent) delete options.index;\n return removed;\n },\n\n // Method for checking whether an object should be considered a model for\n // the purposes of adding to the collection.\n _isModel: function(model) {\n return model instanceof Model;\n },\n\n // Internal method to create a model's ties to a collection.\n _addReference: function(model, options) {\n this._byId[model.cid] = model;\n var id = this.modelId(model.attributes, model.idAttribute);\n if (id != null) this._byId[id] = model;\n model.on('all', this._onModelEvent, this);\n },\n\n // Internal method to sever a model's ties to a collection.\n _removeReference: function(model, options) {\n delete this._byId[model.cid];\n var id = this.modelId(model.attributes, model.idAttribute);\n if (id != null) delete this._byId[id];\n if (this === model.collection) delete model.collection;\n model.off('all', this._onModelEvent, this);\n },\n\n // Internal method called every time a model in the set fires an event.\n // Sets need to update their indexes when models change ids. All other\n // events simply proxy through. \"add\" and \"remove\" events that originate\n // in other collections are ignored.\n _onModelEvent: function(event, model, collection, options) {\n if (model) {\n if ((event === 'add' || event === 'remove') && collection !== this) return;\n if (event === 'destroy') this.remove(model, options);\n if (event === 'changeId') {\n var prevId = this.modelId(model.previousAttributes(), model.idAttribute);\n var id = this.modelId(model.attributes, model.idAttribute);\n if (prevId != null) delete this._byId[prevId];\n if (id != null) this._byId[id] = model;\n }\n }\n this.trigger.apply(this, arguments);\n },\n\n // Internal callback method used in `create`. It serves as a\n // stand-in for the `_onModelEvent` method, which is not yet bound\n // during the `wait` period of the `create` call. We still want to\n // forward any `'error'` event at the end of the `wait` period,\n // hence a customized callback.\n _forwardPristineError: function(model, collection, options) {\n // Prevent double forward if the model was already in the\n // collection before the call to `create`.\n if (this.has(model)) return;\n this._onModelEvent('error', model, collection, options);\n }\n });\n\n // Defining an @@iterator method implements JavaScript's Iterable protocol.\n // In modern ES2015 browsers, this value is found at Symbol.iterator.\n /* global Symbol */\n var $$iterator = typeof Symbol === 'function' && Symbol.iterator;\n if ($$iterator) {\n Collection.prototype[$$iterator] = Collection.prototype.values;\n }\n\n // CollectionIterator\n // ------------------\n\n // A CollectionIterator implements JavaScript's Iterator protocol, allowing the\n // use of `for of` loops in modern browsers and interoperation between\n // Backbone.Collection and other JavaScript functions and third-party libraries\n // which can operate on Iterables.\n var CollectionIterator = function(collection, kind) {\n this._collection = collection;\n this._kind = kind;\n this._index = 0;\n };\n\n // This \"enum\" defines the three possible kinds of values which can be emitted\n // by a CollectionIterator that correspond to the values(), keys() and entries()\n // methods on Collection, respectively.\n var ITERATOR_VALUES = 1;\n var ITERATOR_KEYS = 2;\n var ITERATOR_KEYSVALUES = 3;\n\n // All Iterators should themselves be Iterable.\n if ($$iterator) {\n CollectionIterator.prototype[$$iterator] = function() {\n return this;\n };\n }\n\n CollectionIterator.prototype.next = function() {\n if (this._collection) {\n\n // Only continue iterating if the iterated collection is long enough.\n if (this._index < this._collection.length) {\n var model = this._collection.at(this._index);\n this._index++;\n\n // Construct a value depending on what kind of values should be iterated.\n var value;\n if (this._kind === ITERATOR_VALUES) {\n value = model;\n } else {\n var id = this._collection.modelId(model.attributes, model.idAttribute);\n if (this._kind === ITERATOR_KEYS) {\n value = id;\n } else { // ITERATOR_KEYSVALUES\n value = [id, model];\n }\n }\n return {value: value, done: false};\n }\n\n // Once exhausted, remove the reference to the collection so future\n // calls to the next method always return done.\n this._collection = void 0;\n }\n\n return {value: void 0, done: true};\n };\n\n // Backbone.View\n // -------------\n\n // Backbone Views are almost more convention than they are actual code. A View\n // is simply a JavaScript object that represents a logical chunk of UI in the\n // DOM. This might be a single item, an entire list, a sidebar or panel, or\n // even the surrounding frame which wraps your whole app. Defining a chunk of\n // UI as a **View** allows you to define your DOM events declaratively, without\n // having to worry about render order ... and makes it easy for the view to\n // react to specific changes in the state of your models.\n\n // Creating a Backbone.View creates its initial element outside of the DOM,\n // if an existing element is not provided...\n var View = Backbone.View = function(options) {\n this.cid = _.uniqueId('view');\n this.preinitialize.apply(this, arguments);\n _.extend(this, _.pick(options, viewOptions));\n this._ensureElement();\n this.initialize.apply(this, arguments);\n };\n\n // Cached regex to split keys for `delegate`.\n var delegateEventSplitter = /^(\\S+)\\s*(.*)$/;\n\n // List of view options to be set as properties.\n var viewOptions = ['model', 'collection', 'el', 'id', 'attributes', 'className', 'tagName', 'events'];\n\n // Set up all inheritable **Backbone.View** properties and methods.\n _.extend(View.prototype, Events, {\n\n // The default `tagName` of a View's element is `\"div\"`.\n tagName: 'div',\n\n // jQuery delegate for element lookup, scoped to DOM elements within the\n // current view. This should be preferred to global lookups where possible.\n $: function(selector) {\n return this.$el.find(selector);\n },\n\n // preinitialize is an empty function by default. You can override it with a function\n // or object. preinitialize will run before any instantiation logic is run in the View\n preinitialize: function(){},\n\n // Initialize is an empty function by default. Override it with your own\n // initialization logic.\n initialize: function(){},\n\n // **render** is the core function that your view should override, in order\n // to populate its element (`this.el`), with the appropriate HTML. The\n // convention is for **render** to always return `this`.\n render: function() {\n return this;\n },\n\n // Remove this view by taking the element out of the DOM, and removing any\n // applicable Backbone.Events listeners.\n remove: function() {\n this._removeElement();\n this.stopListening();\n return this;\n },\n\n // Remove this view's element from the document and all event listeners\n // attached to it. Exposed for subclasses using an alternative DOM\n // manipulation API.\n _removeElement: function() {\n this.$el.remove();\n },\n\n // Change the view's element (`this.el` property) and re-delegate the\n // view's events on the new element.\n setElement: function(element) {\n this.undelegateEvents();\n this._setElement(element);\n this.delegateEvents();\n return this;\n },\n\n // Creates the `this.el` and `this.$el` references for this view using the\n // given `el`. `el` can be a CSS selector or an HTML string, a jQuery\n // context or an element. Subclasses can override this to utilize an\n // alternative DOM manipulation API and are only required to set the\n // `this.el` property.\n _setElement: function(el) {\n this.$el = el instanceof Backbone.$ ? el : Backbone.$(el);\n this.el = this.$el[0];\n },\n\n // Set callbacks, where `this.events` is a hash of\n //\n // *{\"event selector\": \"callback\"}*\n //\n // {\n // 'mousedown .title': 'edit',\n // 'click .button': 'save',\n // 'click .open': function(e) { ... }\n // }\n //\n // pairs. Callbacks will be bound to the view, with `this` set properly.\n // Uses event delegation for efficiency.\n // Omitting the selector binds the event to `this.el`.\n delegateEvents: function(events) {\n events || (events = _.result(this, 'events'));\n if (!events) return this;\n this.undelegateEvents();\n for (var key in events) {\n var method = events[key];\n if (!_.isFunction(method)) method = this[method];\n if (!method) continue;\n var match = key.match(delegateEventSplitter);\n this.delegate(match[1], match[2], method.bind(this));\n }\n return this;\n },\n\n // Add a single event listener to the view's element (or a child element\n // using `selector`). This only works for delegate-able events: not `focus`,\n // `blur`, and not `change`, `submit`, and `reset` in Internet Explorer.\n delegate: function(eventName, selector, listener) {\n this.$el.on(eventName + '.delegateEvents' + this.cid, selector, listener);\n return this;\n },\n\n // Clears all callbacks previously bound to the view by `delegateEvents`.\n // You usually don't need to use this, but may wish to if you have multiple\n // Backbone views attached to the same DOM element.\n undelegateEvents: function() {\n if (this.$el) this.$el.off('.delegateEvents' + this.cid);\n return this;\n },\n\n // A finer-grained `undelegateEvents` for removing a single delegated event.\n // `selector` and `listener` are both optional.\n undelegate: function(eventName, selector, listener) {\n this.$el.off(eventName + '.delegateEvents' + this.cid, selector, listener);\n return this;\n },\n\n // Produces a DOM element to be assigned to your view. Exposed for\n // subclasses using an alternative DOM manipulation API.\n _createElement: function(tagName) {\n return document.createElement(tagName);\n },\n\n // Ensure that the View has a DOM element to render into.\n // If `this.el` is a string, pass it through `$()`, take the first\n // matching element, and re-assign it to `el`. Otherwise, create\n // an element from the `id`, `className` and `tagName` properties.\n _ensureElement: function() {\n if (!this.el) {\n var attrs = _.extend({}, _.result(this, 'attributes'));\n if (this.id) attrs.id = _.result(this, 'id');\n if (this.className) attrs['class'] = _.result(this, 'className');\n this.setElement(this._createElement(_.result(this, 'tagName')));\n this._setAttributes(attrs);\n } else {\n this.setElement(_.result(this, 'el'));\n }\n },\n\n // Set attributes from a hash on this view's element. Exposed for\n // subclasses using an alternative DOM manipulation API.\n _setAttributes: function(attributes) {\n this.$el.attr(attributes);\n }\n\n });\n\n // Proxy Backbone class methods to Underscore functions, wrapping the model's\n // `attributes` object or collection's `models` array behind the scenes.\n //\n // collection.filter(function(model) { return model.get('age') > 10 });\n // collection.each(this.addView);\n //\n // `Function#apply` can be slow so we use the method's arg count, if we know it.\n var addMethod = function(base, length, method, attribute) {\n switch (length) {\n case 1: return function() {\n return base[method](this[attribute]);\n };\n case 2: return function(value) {\n return base[method](this[attribute], value);\n };\n case 3: return function(iteratee, context) {\n return base[method](this[attribute], cb(iteratee, this), context);\n };\n case 4: return function(iteratee, defaultVal, context) {\n return base[method](this[attribute], cb(iteratee, this), defaultVal, context);\n };\n default: return function() {\n var args = slice.call(arguments);\n args.unshift(this[attribute]);\n return base[method].apply(base, args);\n };\n }\n };\n\n var addUnderscoreMethods = function(Class, base, methods, attribute) {\n _.each(methods, function(length, method) {\n if (base[method]) Class.prototype[method] = addMethod(base, length, method, attribute);\n });\n };\n\n // Support `collection.sortBy('attr')` and `collection.findWhere({id: 1})`.\n var cb = function(iteratee, instance) {\n if (_.isFunction(iteratee)) return iteratee;\n if (_.isObject(iteratee) && !instance._isModel(iteratee)) return modelMatcher(iteratee);\n if (_.isString(iteratee)) return function(model) { return model.get(iteratee); };\n return iteratee;\n };\n var modelMatcher = function(attrs) {\n var matcher = _.matches(attrs);\n return function(model) {\n return matcher(model.attributes);\n };\n };\n\n // Underscore methods that we want to implement on the Collection.\n // 90% of the core usefulness of Backbone Collections is actually implemented\n // right here:\n var collectionMethods = {forEach: 3, each: 3, map: 3, collect: 3, reduce: 0,\n foldl: 0, inject: 0, reduceRight: 0, foldr: 0, find: 3, detect: 3, filter: 3,\n select: 3, reject: 3, every: 3, all: 3, some: 3, any: 3, include: 3, includes: 3,\n contains: 3, invoke: 0, max: 3, min: 3, toArray: 1, size: 1, first: 3,\n head: 3, take: 3, initial: 3, rest: 3, tail: 3, drop: 3, last: 3,\n without: 0, difference: 0, indexOf: 3, shuffle: 1, lastIndexOf: 3,\n isEmpty: 1, chain: 1, sample: 3, partition: 3, groupBy: 3, countBy: 3,\n sortBy: 3, indexBy: 3, findIndex: 3, findLastIndex: 3};\n\n\n // Underscore methods that we want to implement on the Model, mapped to the\n // number of arguments they take.\n var modelMethods = {keys: 1, values: 1, pairs: 1, invert: 1, pick: 0,\n omit: 0, chain: 1, isEmpty: 1};\n\n // Mix in each Underscore method as a proxy to `Collection#models`.\n\n _.each([\n [Collection, collectionMethods, 'models'],\n [Model, modelMethods, 'attributes']\n ], function(config) {\n var Base = config[0],\n methods = config[1],\n attribute = config[2];\n\n Base.mixin = function(obj) {\n var mappings = _.reduce(_.functions(obj), function(memo, name) {\n memo[name] = 0;\n return memo;\n }, {});\n addUnderscoreMethods(Base, obj, mappings, attribute);\n };\n\n addUnderscoreMethods(Base, _, methods, attribute);\n });\n\n // Backbone.sync\n // -------------\n\n // Override this function to change the manner in which Backbone persists\n // models to the server. You will be passed the type of request, and the\n // model in question. By default, makes a RESTful Ajax request\n // to the model's `url()`. Some possible customizations could be:\n //\n // * Use `setTimeout` to batch rapid-fire updates into a single request.\n // * Send up the models as XML instead of JSON.\n // * Persist models via WebSockets instead of Ajax.\n //\n // Turn on `Backbone.emulateHTTP` in order to send `PUT` and `DELETE` requests\n // as `POST`, with a `_method` parameter containing the true HTTP method,\n // as well as all requests with the body as `application/x-www-form-urlencoded`\n // instead of `application/json` with the model in a param named `model`.\n // Useful when interfacing with server-side languages like **PHP** that make\n // it difficult to read the body of `PUT` requests.\n Backbone.sync = function(method, model, options) {\n var type = methodMap[method];\n\n // Default options, unless specified.\n _.defaults(options || (options = {}), {\n emulateHTTP: Backbone.emulateHTTP,\n emulateJSON: Backbone.emulateJSON\n });\n\n // Default JSON-request options.\n var params = {type: type, dataType: 'json'};\n\n // Ensure that we have a URL.\n if (!options.url) {\n params.url = _.result(model, 'url') || urlError();\n }\n\n // Ensure that we have the appropriate request data.\n if (options.data == null && model && (method === 'create' || method === 'update' || method === 'patch')) {\n params.contentType = 'application/json';\n params.data = JSON.stringify(options.attrs || model.toJSON(options));\n }\n\n // For older servers, emulate JSON by encoding the request into an HTML-form.\n if (options.emulateJSON) {\n params.contentType = 'application/x-www-form-urlencoded';\n params.data = params.data ? {model: params.data} : {};\n }\n\n // For older servers, emulate HTTP by mimicking the HTTP method with `_method`\n // And an `X-HTTP-Method-Override` header.\n if (options.emulateHTTP && (type === 'PUT' || type === 'DELETE' || type === 'PATCH')) {\n params.type = 'POST';\n if (options.emulateJSON) params.data._method = type;\n var beforeSend = options.beforeSend;\n options.beforeSend = function(xhr) {\n xhr.setRequestHeader('X-HTTP-Method-Override', type);\n if (beforeSend) return beforeSend.apply(this, arguments);\n };\n }\n\n // Don't process data on a non-GET request.\n if (params.type !== 'GET' && !options.emulateJSON) {\n params.processData = false;\n }\n\n // Pass along `textStatus` and `errorThrown` from jQuery.\n var error = options.error;\n options.error = function(xhr, textStatus, errorThrown) {\n options.textStatus = textStatus;\n options.errorThrown = errorThrown;\n if (error) error.call(options.context, xhr, textStatus, errorThrown);\n };\n\n // Make the request, allowing the user to override any Ajax options.\n var xhr = options.xhr = Backbone.ajax(_.extend(params, options));\n model.trigger('request', model, xhr, options);\n return xhr;\n };\n\n // Map from CRUD to HTTP for our default `Backbone.sync` implementation.\n var methodMap = {\n 'create': 'POST',\n 'update': 'PUT',\n 'patch': 'PATCH',\n 'delete': 'DELETE',\n 'read': 'GET'\n };\n\n // Set the default implementation of `Backbone.ajax` to proxy through to `$`.\n // Override this if you'd like to use a different library.\n Backbone.ajax = function() {\n return Backbone.$.ajax.apply(Backbone.$, arguments);\n };\n\n // Backbone.Router\n // ---------------\n\n // Routers map faux-URLs to actions, and fire events when routes are\n // matched. Creating a new one sets its `routes` hash, if not set statically.\n var Router = Backbone.Router = function(options) {\n options || (options = {});\n this.preinitialize.apply(this, arguments);\n if (options.routes) this.routes = options.routes;\n this._bindRoutes();\n this.initialize.apply(this, arguments);\n };\n\n // Cached regular expressions for matching named param parts and splatted\n // parts of route strings.\n var optionalParam = /\\((.*?)\\)/g;\n var namedParam = /(\\(\\?)?:\\w+/g;\n var splatParam = /\\*\\w+/g;\n var escapeRegExp = /[\\-{}\\[\\]+?.,\\\\\\^$|#\\s]/g;\n\n // Set up all inheritable **Backbone.Router** properties and methods.\n _.extend(Router.prototype, Events, {\n\n // preinitialize is an empty function by default. You can override it with a function\n // or object. preinitialize will run before any instantiation logic is run in the Router.\n preinitialize: function(){},\n\n // Initialize is an empty function by default. Override it with your own\n // initialization logic.\n initialize: function(){},\n\n // Manually bind a single named route to a callback. For example:\n //\n // this.route('search/:query/p:num', 'search', function(query, num) {\n // ...\n // });\n //\n route: function(route, name, callback) {\n if (!_.isRegExp(route)) route = this._routeToRegExp(route);\n if (_.isFunction(name)) {\n callback = name;\n name = '';\n }\n if (!callback) callback = this[name];\n var router = this;\n Backbone.history.route(route, function(fragment) {\n var args = router._extractParameters(route, fragment);\n if (router.execute(callback, args, name) !== false) {\n router.trigger.apply(router, ['route:' + name].concat(args));\n router.trigger('route', name, args);\n Backbone.history.trigger('route', router, name, args);\n }\n });\n return this;\n },\n\n // Execute a route handler with the provided parameters. This is an\n // excellent place to do pre-route setup or post-route cleanup.\n execute: function(callback, args, name) {\n if (callback) callback.apply(this, args);\n },\n\n // Simple proxy to `Backbone.history` to save a fragment into the history.\n navigate: function(fragment, options) {\n Backbone.history.navigate(fragment, options);\n return this;\n },\n\n // Bind all defined routes to `Backbone.history`. We have to reverse the\n // order of the routes here to support behavior where the most general\n // routes can be defined at the bottom of the route map.\n _bindRoutes: function() {\n if (!this.routes) return;\n this.routes = _.result(this, 'routes');\n var route, routes = _.keys(this.routes);\n while ((route = routes.pop()) != null) {\n this.route(route, this.routes[route]);\n }\n },\n\n // Convert a route string into a regular expression, suitable for matching\n // against the current location hash.\n _routeToRegExp: function(route) {\n route = route.replace(escapeRegExp, '\\\\$&')\n .replace(optionalParam, '(?:$1)?')\n .replace(namedParam, function(match, optional) {\n return optional ? match : '([^/?]+)';\n })\n .replace(splatParam, '([^?]*?)');\n return new RegExp('^' + route + '(?:\\\\?([\\\\s\\\\S]*))?$');\n },\n\n // Given a route, and a URL fragment that it matches, return the array of\n // extracted decoded parameters. Empty or unmatched parameters will be\n // treated as `null` to normalize cross-browser behavior.\n _extractParameters: function(route, fragment) {\n var params = route.exec(fragment).slice(1);\n return _.map(params, function(param, i) {\n // Don't decode the search params.\n if (i === params.length - 1) return param || null;\n return param ? decodeURIComponent(param) : null;\n });\n }\n\n });\n\n // Backbone.History\n // ----------------\n\n // Handles cross-browser history management, based on either\n // [pushState](http://diveintohtml5.info/history.html) and real URLs, or\n // [onhashchange](https://developer.mozilla.org/en-US/docs/DOM/window.onhashchange)\n // and URL fragments. If the browser supports neither (old IE, natch),\n // falls back to polling.\n var History = Backbone.History = function() {\n this.handlers = [];\n this.checkUrl = this.checkUrl.bind(this);\n\n // Ensure that `History` can be used outside of the browser.\n if (typeof window !== 'undefined') {\n this.location = window.location;\n this.history = window.history;\n }\n };\n\n // Cached regex for stripping a leading hash/slash and trailing space.\n var routeStripper = /^[#\\/]|\\s+$/g;\n\n // Cached regex for stripping leading and trailing slashes.\n var rootStripper = /^\\/+|\\/+$/g;\n\n // Cached regex for stripping urls of hash.\n var pathStripper = /#.*$/;\n\n // Has the history handling already been started?\n History.started = false;\n\n // Set up all inheritable **Backbone.History** properties and methods.\n _.extend(History.prototype, Events, {\n\n // The default interval to poll for hash changes, if necessary, is\n // twenty times a second.\n interval: 50,\n\n // Are we at the app root?\n atRoot: function() {\n var path = this.location.pathname.replace(/[^\\/]$/, '$&/');\n return path === this.root && !this.getSearch();\n },\n\n // Does the pathname match the root?\n matchRoot: function() {\n var path = this.decodeFragment(this.location.pathname);\n var rootPath = path.slice(0, this.root.length - 1) + '/';\n return rootPath === this.root;\n },\n\n // Unicode characters in `location.pathname` are percent encoded so they're\n // decoded for comparison. `%25` should not be decoded since it may be part\n // of an encoded parameter.\n decodeFragment: function(fragment) {\n return decodeURI(fragment.replace(/%25/g, '%2525'));\n },\n\n // In IE6, the hash fragment and search params are incorrect if the\n // fragment contains `?`.\n getSearch: function() {\n var match = this.location.href.replace(/#.*/, '').match(/\\?.+/);\n return match ? match[0] : '';\n },\n\n // Gets the true hash value. Cannot use location.hash directly due to bug\n // in Firefox where location.hash will always be decoded.\n getHash: function(window) {\n var match = (window || this).location.href.match(/#(.*)$/);\n return match ? match[1] : '';\n },\n\n // Get the pathname and search params, without the root.\n getPath: function() {\n var path = this.decodeFragment(\n this.location.pathname + this.getSearch()\n ).slice(this.root.length - 1);\n return path.charAt(0) === '/' ? path.slice(1) : path;\n },\n\n // Get the cross-browser normalized URL fragment from the path or hash.\n getFragment: function(fragment) {\n if (fragment == null) {\n if (this._usePushState || !this._wantsHashChange) {\n fragment = this.getPath();\n } else {\n fragment = this.getHash();\n }\n }\n return fragment.replace(routeStripper, '');\n },\n\n // Start the hash change handling, returning `true` if the current URL matches\n // an existing route, and `false` otherwise.\n start: function(options) {\n if (History.started) throw new Error('Backbone.history has already been started');\n History.started = true;\n\n // Figure out the initial configuration. Do we need an iframe?\n // Is pushState desired ... is it available?\n this.options = _.extend({root: '/'}, this.options, options);\n this.root = this.options.root;\n this._trailingSlash = this.options.trailingSlash;\n this._wantsHashChange = this.options.hashChange !== false;\n this._hasHashChange = 'onhashchange' in window && (document.documentMode === void 0 || document.documentMode > 7);\n this._useHashChange = this._wantsHashChange && this._hasHashChange;\n this._wantsPushState = !!this.options.pushState;\n this._hasPushState = !!(this.history && this.history.pushState);\n this._usePushState = this._wantsPushState && this._hasPushState;\n this.fragment = this.getFragment();\n\n // Normalize root to always include a leading and trailing slash.\n this.root = ('/' + this.root + '/').replace(rootStripper, '/');\n\n // Transition from hashChange to pushState or vice versa if both are\n // requested.\n if (this._wantsHashChange && this._wantsPushState) {\n\n // If we've started off with a route from a `pushState`-enabled\n // browser, but we're currently in a browser that doesn't support it...\n if (!this._hasPushState && !this.atRoot()) {\n var rootPath = this.root.slice(0, -1) || '/';\n this.location.replace(rootPath + '#' + this.getPath());\n // Return immediately as browser will do redirect to new url\n return true;\n\n // Or if we've started out with a hash-based route, but we're currently\n // in a browser where it could be `pushState`-based instead...\n } else if (this._hasPushState && this.atRoot()) {\n this.navigate(this.getHash(), {replace: true});\n }\n\n }\n\n // Proxy an iframe to handle location events if the browser doesn't\n // support the `hashchange` event, HTML5 history, or the user wants\n // `hashChange` but not `pushState`.\n if (!this._hasHashChange && this._wantsHashChange && !this._usePushState) {\n this.iframe = document.createElement('iframe');\n this.iframe.src = 'javascript:0';\n this.iframe.style.display = 'none';\n this.iframe.tabIndex = -1;\n var body = document.body;\n // Using `appendChild` will throw on IE < 9 if the document is not ready.\n var iWindow = body.insertBefore(this.iframe, body.firstChild).contentWindow;\n iWindow.document.open();\n iWindow.document.close();\n iWindow.location.hash = '#' + this.fragment;\n }\n\n // Add a cross-platform `addEventListener` shim for older browsers.\n var addEventListener = window.addEventListener || function(eventName, listener) {\n return attachEvent('on' + eventName, listener);\n };\n\n // Depending on whether we're using pushState or hashes, and whether\n // 'onhashchange' is supported, determine how we check the URL state.\n if (this._usePushState) {\n addEventListener('popstate', this.checkUrl, false);\n } else if (this._useHashChange && !this.iframe) {\n addEventListener('hashchange', this.checkUrl, false);\n } else if (this._wantsHashChange) {\n this._checkUrlInterval = setInterval(this.checkUrl, this.interval);\n }\n\n if (!this.options.silent) return this.loadUrl();\n },\n\n // Disable Backbone.history, perhaps temporarily. Not useful in a real app,\n // but possibly useful for unit testing Routers.\n stop: function() {\n // Add a cross-platform `removeEventListener` shim for older browsers.\n var removeEventListener = window.removeEventListener || function(eventName, listener) {\n return detachEvent('on' + eventName, listener);\n };\n\n // Remove window listeners.\n if (this._usePushState) {\n removeEventListener('popstate', this.checkUrl, false);\n } else if (this._useHashChange && !this.iframe) {\n removeEventListener('hashchange', this.checkUrl, false);\n }\n\n // Clean up the iframe if necessary.\n if (this.iframe) {\n document.body.removeChild(this.iframe);\n this.iframe = null;\n }\n\n // Some environments will throw when clearing an undefined interval.\n if (this._checkUrlInterval) clearInterval(this._checkUrlInterval);\n History.started = false;\n },\n\n // Add a route to be tested when the fragment changes. Routes added later\n // may override previous routes.\n route: function(route, callback) {\n this.handlers.unshift({route: route, callback: callback});\n },\n\n // Checks the current URL to see if it has changed, and if it has,\n // calls `loadUrl`, normalizing across the hidden iframe.\n checkUrl: function(e) {\n var current = this.getFragment();\n\n // If the user pressed the back button, the iframe's hash will have\n // changed and we should use that for comparison.\n if (current === this.fragment && this.iframe) {\n current = this.getHash(this.iframe.contentWindow);\n }\n\n if (current === this.fragment) {\n if (!this.matchRoot()) return this.notfound();\n return false;\n }\n if (this.iframe) this.navigate(current);\n this.loadUrl();\n },\n\n // Attempt to load the current URL fragment. If a route succeeds with a\n // match, returns `true`. If no defined routes matches the fragment,\n // returns `false`.\n loadUrl: function(fragment) {\n // If the root doesn't match, no routes can match either.\n if (!this.matchRoot()) return this.notfound();\n fragment = this.fragment = this.getFragment(fragment);\n return _.some(this.handlers, function(handler) {\n if (handler.route.test(fragment)) {\n handler.callback(fragment);\n return true;\n }\n }) || this.notfound();\n },\n\n // When no route could be matched, this method is called internally to\n // trigger the `'notfound'` event. It returns `false` so that it can be used\n // in tail position.\n notfound: function() {\n this.trigger('notfound');\n return false;\n },\n\n // Save a fragment into the hash history, or replace the URL state if the\n // 'replace' option is passed. You are responsible for properly URL-encoding\n // the fragment in advance.\n //\n // The options object can contain `trigger: true` if you wish to have the\n // route callback be fired (not usually desirable), or `replace: true`, if\n // you wish to modify the current URL without adding an entry to the history.\n navigate: function(fragment, options) {\n if (!History.started) return false;\n if (!options || options === true) options = {trigger: !!options};\n\n // Normalize the fragment.\n fragment = this.getFragment(fragment || '');\n\n // Strip trailing slash on the root unless _trailingSlash is true\n var rootPath = this.root;\n if (!this._trailingSlash && (fragment === '' || fragment.charAt(0) === '?')) {\n rootPath = rootPath.slice(0, -1) || '/';\n }\n var url = rootPath + fragment;\n\n // Strip the fragment of the query and hash for matching.\n fragment = fragment.replace(pathStripper, '');\n\n // Decode for matching.\n var decodedFragment = this.decodeFragment(fragment);\n\n if (this.fragment === decodedFragment) return;\n this.fragment = decodedFragment;\n\n // If pushState is available, we use it to set the fragment as a real URL.\n if (this._usePushState) {\n this.history[options.replace ? 'replaceState' : 'pushState']({}, document.title, url);\n\n // If hash changes haven't been explicitly disabled, update the hash\n // fragment to store history.\n } else if (this._wantsHashChange) {\n this._updateHash(this.location, fragment, options.replace);\n if (this.iframe && fragment !== this.getHash(this.iframe.contentWindow)) {\n var iWindow = this.iframe.contentWindow;\n\n // Opening and closing the iframe tricks IE7 and earlier to push a\n // history entry on hash-tag change. When replace is true, we don't\n // want this.\n if (!options.replace) {\n iWindow.document.open();\n iWindow.document.close();\n }\n\n this._updateHash(iWindow.location, fragment, options.replace);\n }\n\n // If you've told us that you explicitly don't want fallback hashchange-\n // based history, then `navigate` becomes a page refresh.\n } else {\n return this.location.assign(url);\n }\n if (options.trigger) return this.loadUrl(fragment);\n },\n\n // Update the hash location, either replacing the current entry, or adding\n // a new one to the browser history.\n _updateHash: function(location, fragment, replace) {\n if (replace) {\n var href = location.href.replace(/(javascript:|#).*$/, '');\n location.replace(href + '#' + fragment);\n } else {\n // Some browsers require that `hash` contains a leading #.\n location.hash = '#' + fragment;\n }\n }\n\n });\n\n // Create the default Backbone.history.\n Backbone.history = new History;\n\n // Helpers\n // -------\n\n // Helper function to correctly set up the prototype chain for subclasses.\n // Similar to `goog.inherits`, but uses a hash of prototype properties and\n // class properties to be extended.\n var extend = function(protoProps, staticProps) {\n var parent = this;\n var child;\n\n // The constructor function for the new subclass is either defined by you\n // (the \"constructor\" property in your `extend` definition), or defaulted\n // by us to simply call the parent constructor.\n if (protoProps && _.has(protoProps, 'constructor')) {\n child = protoProps.constructor;\n } else {\n child = function(){ return parent.apply(this, arguments); };\n }\n\n // Add static properties to the constructor function, if supplied.\n _.extend(child, parent, staticProps);\n\n // Set the prototype chain to inherit from `parent`, without calling\n // `parent`'s constructor function and add the prototype properties.\n child.prototype = _.create(parent.prototype, protoProps);\n child.prototype.constructor = child;\n\n // Set a convenience property in case the parent's prototype is needed\n // later.\n child.__super__ = parent.prototype;\n\n return child;\n };\n\n // Set up inheritance for the model, collection, router, view and history.\n Model.extend = Collection.extend = Router.extend = View.extend = History.extend = extend;\n\n // Throw an error when a URL is needed, and none is supplied.\n var urlError = function() {\n throw new Error('A \"url\" property or function must be specified');\n };\n\n // Wrap an optional error callback with a fallback error event.\n var wrapError = function(model, options) {\n var error = options.error;\n options.error = function(resp) {\n if (error) error.call(options.context, model, resp, options);\n model.trigger('error', model, resp, options);\n };\n };\n\n // Provide useful information when things go wrong. This method is not meant\n // to be used directly; it merely provides the necessary introspection for the\n // external `debugInfo` function.\n Backbone._debug = function() {\n return {root: root, _: _};\n };\n\n return Backbone;\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, `.button-vue[data-v-6acd8f45]{margin-top:.5rem}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/LoginButton.vue\"],\"names\":[],\"mappings\":\"AACA,6BACC,gBAAA\",\"sourcesContent\":[\"\\n.button-vue {\\n\\tmargin-top: .5rem;\\n}\\n\"],\"sourceRoot\":\"\"}]);\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, `.login-form[data-v-f18886ec]{text-align:start;font-size:1rem}.login-form__fieldset[data-v-f18886ec]{width:100%;display:flex;flex-direction:column;gap:.5rem}.login-form__headline[data-v-f18886ec]{text-align:center;overflow-wrap:anywhere}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/LoginForm.vue\"],\"names\":[],\"mappings\":\"AACA,6BACC,gBAAA,CACA,cAAA,CAEA,uCACC,UAAA,CACA,YAAA,CACA,qBAAA,CACA,SAAA,CAGD,uCACC,iBAAA,CACA,sBAAA\",\"sourcesContent\":[\"\\n.login-form {\\n\\ttext-align: start;\\n\\tfont-size: 1rem;\\n\\n\\t&__fieldset {\\n\\t\\twidth: 100%;\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tgap: .5rem;\\n\\t}\\n\\n\\t&__headline {\\n\\t\\ttext-align: center;\\n\\t\\toverflow-wrap: anywhere;\\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, `fieldset[data-v-4a6bfc86]{display:flex;flex-direction:column;gap:.5rem}fieldset[data-v-4a6bfc86] label{text-align:initial}.update[data-v-4a6bfc86]{margin:0 auto}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/PasswordLessLoginForm.vue\"],\"names\":[],\"mappings\":\"AACA,0BACC,YAAA,CACA,qBAAA,CACA,SAAA,CAEA,gCACC,kBAAA,CAIF,yBACC,aAAA\",\"sourcesContent\":[\"\\nfieldset {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tgap: 0.5rem;\\n\\n\\t:deep(label) {\\n\\t\\ttext-align: initial;\\n\\t}\\n}\\n\\n.update {\\n\\tmargin: 0 auto;\\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, `.login-form[data-v-586305cf]{text-align:start;font-size:1rem}.login-form__fieldset[data-v-586305cf]{width:100%;display:flex;flex-direction:column;gap:.5rem}.login-form__link[data-v-586305cf]{display:block;font-weight:normal !important;cursor:pointer;font-size:var(--default-font-size);text-align:center;padding:.5rem 1rem 1rem 1rem}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/ResetPassword.vue\"],\"names\":[],\"mappings\":\"AACA,6BACC,gBAAA,CACA,cAAA,CAEA,uCACC,UAAA,CACA,YAAA,CACA,qBAAA,CACA,SAAA,CAGD,mCACC,aAAA,CACA,6BAAA,CACA,cAAA,CACA,kCAAA,CACA,iBAAA,CACA,4BAAA\",\"sourcesContent\":[\"\\n.login-form {\\n\\ttext-align: start;\\n\\tfont-size: 1rem;\\n\\n\\t&__fieldset {\\n\\t\\twidth: 100%;\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tgap: .5rem;\\n\\t}\\n\\n\\t&__link {\\n\\t\\tdisplay: block;\\n\\t\\tfont-weight: normal !important;\\n\\t\\tcursor: pointer;\\n\\t\\tfont-size: var(--default-font-size);\\n\\t\\ttext-align: center;\\n\\t\\tpadding: .5rem 1rem 1rem 1rem;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\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, `body{font-size:var(--default-font-size)}.login-box{width:320px;box-sizing:border-box}.login-box__link{display:block;padding:1rem;font-size:var(--default-font-size);text-align:center;font-weight:normal !important}.fade-enter-active,.fade-leave-active{transition:opacity .3s}.fade-enter,.fade-leave-to{opacity:0}.alternative-logins{display:flex;flex-direction:column;gap:.75rem}.alternative-logins .button-vue{box-sizing:border-box}.login-passwordless .button-vue{margin-top:.5rem}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/views/Login.vue\"],\"names\":[],\"mappings\":\"AACA,KACC,kCAAA,CAGD,WAEC,WAAA,CACA,qBAAA,CAEA,iBACC,aAAA,CACA,YAAA,CACA,kCAAA,CACA,iBAAA,CACA,6BAAA,CAIF,sCACC,sBAAA,CAED,2BACC,SAAA,CAGD,oBACC,YAAA,CACA,qBAAA,CACA,UAAA,CAEA,gCACC,qBAAA,CAKD,gCACC,gBAAA\",\"sourcesContent\":[\"\\nbody {\\n\\tfont-size: var(--default-font-size);\\n}\\n\\n.login-box {\\n\\t// Same size as dashboard panels\\n\\twidth: 320px;\\n\\tbox-sizing: border-box;\\n\\n\\t&__link {\\n\\t\\tdisplay: block;\\n\\t\\tpadding: 1rem;\\n\\t\\tfont-size: var(--default-font-size);\\n\\t\\ttext-align: center;\\n\\t\\tfont-weight: normal !important;\\n\\t}\\n}\\n\\n.fade-enter-active, .fade-leave-active {\\n\\ttransition: opacity .3s;\\n}\\n.fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ {\\n\\topacity: 0;\\n}\\n\\n.alternative-logins {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tgap: 0.75rem;\\n\\n\\t.button-vue {\\n\\t\\tbox-sizing: border-box;\\n\\t}\\n}\\n\\n.login-passwordless {\\n\\t.button-vue {\\n\\t\\tmargin-top: 0.5rem;\\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, `\nfieldset[data-v-6bdd5975] {\n\ttext-align: center;\n}\ninput[type=submit][data-v-6bdd5975] {\n\tmargin-top: 20px;\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/UpdatePassword.vue\"],\"names\":[],\"mappings\":\";AA2HA;CACA,kBAAA;AACA;AAEA;CACA,gBAAA;AACA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","/*\n * vim: expandtab shiftwidth=4 softtabstop=4\n */\n\n/* global dav */\nvar dav = dav || {}\n\ndav._XML_CHAR_MAP = {\n '<': '<',\n '>': '>',\n '&': '&',\n '\"': '"',\n \"'\": '''\n};\n\ndav._escapeXml = function(s) {\n return s.replace(/[<>&\"']/g, function (ch) {\n return dav._XML_CHAR_MAP[ch];\n });\n};\n\ndav.Client = function(options) {\n var i;\n for(i in options) {\n this[i] = options[i];\n }\n\n};\n\ndav.Client.prototype = {\n\n baseUrl : null,\n\n userName : null,\n\n password : null,\n\n\n xmlNamespaces : {\n 'DAV:' : 'd'\n },\n\n /**\n * Generates a propFind request.\n *\n * @param {string} url Url to do the propfind request on\n * @param {Array} properties List of properties to retrieve.\n * @param {string} depth \"0\", \"1\" or \"infinity\"\n * @param {Object} [headers] headers\n * @return {Promise}\n */\n propFind : function(url, properties, depth, headers) {\n\n if(typeof depth === \"undefined\") {\n depth = '0';\n }\n\n // depth header must be a string, in case a number was passed in\n depth = '' + depth;\n\n headers = headers || {};\n\n headers['Depth'] = depth;\n headers['Content-Type'] = 'application/xml; charset=utf-8';\n\n var body =\n '\\n' +\n '\\n';\n\n for(var ii in properties) {\n if (!properties.hasOwnProperty(ii)) {\n continue;\n }\n\n var property = this.parseClarkNotation(properties[ii]);\n if (this.xmlNamespaces[property.namespace]) {\n body+=' <' + this.xmlNamespaces[property.namespace] + ':' + property.name + ' />\\n';\n } else {\n body+=' \\n';\n }\n\n }\n body+=' \\n';\n body+='';\n\n return this.request('PROPFIND', url, headers, body).then(\n function(result) {\n\n if (depth === '0') {\n return {\n status: result.status,\n body: result.body[0],\n xhr: result.xhr\n };\n } else {\n return {\n status: result.status,\n body: result.body,\n xhr: result.xhr\n };\n }\n\n }.bind(this)\n );\n\n },\n\n /**\n * Renders a \"d:set\" block for the given properties.\n *\n * @param {Object.} properties\n * @return {String} XML \"\" block\n */\n _renderPropSet: function(properties) {\n var body = ' \\n' +\n ' \\n';\n\n for(var ii in properties) {\n if (!properties.hasOwnProperty(ii)) {\n continue;\n }\n\n var property = this.parseClarkNotation(ii);\n var propName;\n var propValue = properties[ii];\n if (this.xmlNamespaces[property.namespace]) {\n propName = this.xmlNamespaces[property.namespace] + ':' + property.name;\n } else {\n propName = 'x:' + property.name + ' xmlns:x=\"' + property.namespace + '\"';\n }\n\n // FIXME: hard-coded for now until we allow properties to\n // specify whether to be escaped or not\n if (propName !== 'd:resourcetype') {\n propValue = dav._escapeXml(propValue);\n }\n body += ' <' + propName + '>' + propValue + '\\n';\n }\n body +=' \\n';\n body +=' \\n';\n return body;\n },\n\n /**\n * Generates a propPatch request.\n *\n * @param {string} url Url to do the proppatch request on\n * @param {Object.} properties List of properties to store.\n * @param {Object} [headers] headers\n * @return {Promise}\n */\n propPatch : function(url, properties, headers) {\n headers = headers || {};\n\n headers['Content-Type'] = 'application/xml; charset=utf-8';\n\n var body =\n '\\n' +\n '} [properties] list of properties to store.\n * @param {Object} [headers] headers\n * @return {Promise}\n */\n mkcol : function(url, properties, headers) {\n var body = '';\n headers = headers || {};\n headers['Content-Type'] = 'application/xml; charset=utf-8';\n\n if (properties) {\n body =\n '\\n' +\n ' 0) {\n var subNodes = [];\n // filter out text nodes\n for (var j = 0; j < propNode.childNodes.length; j++) {\n var node = propNode.childNodes[j];\n if (node.nodeType === 1) {\n subNodes.push(node);\n }\n }\n if (subNodes.length) {\n content = subNodes;\n }\n }\n\n return content || propNode.textContent || propNode.text || '';\n },\n\n /**\n * Parses a multi-status response body.\n *\n * @param {string} xmlBody\n * @param {Array}\n */\n parseMultiStatus : function(xmlBody) {\n\n var parser = new DOMParser();\n var doc = parser.parseFromString(xmlBody, \"application/xml\");\n\n var resolver = function(foo) {\n var ii;\n for(ii in this.xmlNamespaces) {\n if (this.xmlNamespaces[ii] === foo) {\n return ii;\n }\n }\n }.bind(this);\n\n var responseIterator = doc.evaluate('/d:multistatus/d:response', doc, resolver, XPathResult.ANY_TYPE, null);\n\n var result = [];\n var responseNode = responseIterator.iterateNext();\n\n while(responseNode) {\n\n var response = {\n href : null,\n propStat : []\n };\n\n response.href = doc.evaluate('string(d:href)', responseNode, resolver, XPathResult.ANY_TYPE, null).stringValue;\n\n var propStatIterator = doc.evaluate('d:propstat', responseNode, resolver, XPathResult.ANY_TYPE, null);\n var propStatNode = propStatIterator.iterateNext();\n\n while(propStatNode) {\n var propStat = {\n status : doc.evaluate('string(d:status)', propStatNode, resolver, XPathResult.ANY_TYPE, null).stringValue,\n properties : {},\n };\n\n var propIterator = doc.evaluate('d:prop/*', propStatNode, resolver, XPathResult.ANY_TYPE, null);\n\n var propNode = propIterator.iterateNext();\n while(propNode) {\n var content = this._parsePropNode(propNode);\n propStat.properties['{' + propNode.namespaceURI + '}' + propNode.localName] = content;\n propNode = propIterator.iterateNext();\n\n }\n response.propStat.push(propStat);\n propStatNode = propStatIterator.iterateNext();\n\n\n }\n\n result.push(response);\n responseNode = responseIterator.iterateNext();\n\n }\n\n return result;\n\n },\n\n /**\n * Takes a relative url, and maps it to an absolute url, using the baseUrl\n *\n * @param {string} url\n * @return {string}\n */\n resolveUrl : function(url) {\n\n // Note: this is rudamentary.. not sure yet if it handles every case.\n if (/^https?:\\/\\//i.test(url)) {\n // absolute\n return url;\n }\n\n var baseParts = this.parseUrl(this.baseUrl);\n if (url.charAt('/')) {\n // Url starts with a slash\n return baseParts.root + url;\n }\n\n // Url does not start with a slash, we need grab the base url right up until the last slash.\n var newUrl = baseParts.root + '/';\n if (baseParts.path.lastIndexOf('/')!==-1) {\n newUrl = newUrl = baseParts.path.subString(0, baseParts.path.lastIndexOf('/')) + '/';\n }\n newUrl+=url;\n return url;\n\n },\n\n /**\n * Parses a url and returns its individual components.\n *\n * @param {String} url\n * @return {Object}\n */\n parseUrl : function(url) {\n\n var parts = url.match(/^(?:([A-Za-z]+):)?(\\/{0,3})([0-9.\\-A-Za-z]+)(?::(\\d+))?(?:\\/([^?#]*))?(?:\\?([^#]*))?(?:#(.*))?$/);\n var result = {\n url : parts[0],\n scheme : parts[1],\n host : parts[3],\n port : parts[4],\n path : parts[5],\n query : parts[6],\n fragment : parts[7],\n };\n result.root =\n result.scheme + '://' +\n result.host +\n (result.port ? ':' + result.port : '');\n\n return result;\n\n },\n\n parseClarkNotation : function(propertyName) {\n\n var result = propertyName.match(/^{([^}]+)}(.*)$/);\n if (!result) {\n return;\n }\n\n return {\n name : result[2],\n namespace : result[1]\n };\n\n }\n\n};\n\nif (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\n module.exports.Client = dav.Client;\n}\n","var map = {\n\t\"./af\": 25177,\n\t\"./af.js\": 25177,\n\t\"./ar\": 61509,\n\t\"./ar-dz\": 41488,\n\t\"./ar-dz.js\": 41488,\n\t\"./ar-kw\": 58676,\n\t\"./ar-kw.js\": 58676,\n\t\"./ar-ly\": 42353,\n\t\"./ar-ly.js\": 42353,\n\t\"./ar-ma\": 24496,\n\t\"./ar-ma.js\": 24496,\n\t\"./ar-ps\": 6947,\n\t\"./ar-ps.js\": 6947,\n\t\"./ar-sa\": 60301,\n\t\"./ar-sa.js\": 60301,\n\t\"./ar-tn\": 89756,\n\t\"./ar-tn.js\": 89756,\n\t\"./ar.js\": 61509,\n\t\"./az\": 95533,\n\t\"./az.js\": 95533,\n\t\"./be\": 28959,\n\t\"./be.js\": 28959,\n\t\"./bg\": 47777,\n\t\"./bg.js\": 47777,\n\t\"./bm\": 54903,\n\t\"./bm.js\": 54903,\n\t\"./bn\": 61290,\n\t\"./bn-bd\": 17357,\n\t\"./bn-bd.js\": 17357,\n\t\"./bn.js\": 61290,\n\t\"./bo\": 31545,\n\t\"./bo.js\": 31545,\n\t\"./br\": 11470,\n\t\"./br.js\": 11470,\n\t\"./bs\": 44429,\n\t\"./bs.js\": 44429,\n\t\"./ca\": 7306,\n\t\"./ca.js\": 7306,\n\t\"./cs\": 56464,\n\t\"./cs.js\": 56464,\n\t\"./cv\": 73635,\n\t\"./cv.js\": 73635,\n\t\"./cy\": 64226,\n\t\"./cy.js\": 64226,\n\t\"./da\": 93601,\n\t\"./da.js\": 93601,\n\t\"./de\": 77853,\n\t\"./de-at\": 26111,\n\t\"./de-at.js\": 26111,\n\t\"./de-ch\": 54697,\n\t\"./de-ch.js\": 54697,\n\t\"./de.js\": 77853,\n\t\"./dv\": 60708,\n\t\"./dv.js\": 60708,\n\t\"./el\": 54691,\n\t\"./el.js\": 54691,\n\t\"./en-au\": 53872,\n\t\"./en-au.js\": 53872,\n\t\"./en-ca\": 28298,\n\t\"./en-ca.js\": 28298,\n\t\"./en-gb\": 56195,\n\t\"./en-gb.js\": 56195,\n\t\"./en-ie\": 66584,\n\t\"./en-ie.js\": 66584,\n\t\"./en-il\": 65543,\n\t\"./en-il.js\": 65543,\n\t\"./en-in\": 9033,\n\t\"./en-in.js\": 9033,\n\t\"./en-nz\": 79402,\n\t\"./en-nz.js\": 79402,\n\t\"./en-sg\": 43004,\n\t\"./en-sg.js\": 43004,\n\t\"./eo\": 32934,\n\t\"./eo.js\": 32934,\n\t\"./es\": 97650,\n\t\"./es-do\": 20838,\n\t\"./es-do.js\": 20838,\n\t\"./es-mx\": 17730,\n\t\"./es-mx.js\": 17730,\n\t\"./es-us\": 56575,\n\t\"./es-us.js\": 56575,\n\t\"./es.js\": 97650,\n\t\"./et\": 3035,\n\t\"./et.js\": 3035,\n\t\"./eu\": 3508,\n\t\"./eu.js\": 3508,\n\t\"./fa\": 119,\n\t\"./fa.js\": 119,\n\t\"./fi\": 90527,\n\t\"./fi.js\": 90527,\n\t\"./fil\": 95995,\n\t\"./fil.js\": 95995,\n\t\"./fo\": 52477,\n\t\"./fo.js\": 52477,\n\t\"./fr\": 85498,\n\t\"./fr-ca\": 26435,\n\t\"./fr-ca.js\": 26435,\n\t\"./fr-ch\": 37892,\n\t\"./fr-ch.js\": 37892,\n\t\"./fr.js\": 85498,\n\t\"./fy\": 37071,\n\t\"./fy.js\": 37071,\n\t\"./ga\": 41734,\n\t\"./ga.js\": 41734,\n\t\"./gd\": 70217,\n\t\"./gd.js\": 70217,\n\t\"./gl\": 77329,\n\t\"./gl.js\": 77329,\n\t\"./gom-deva\": 32124,\n\t\"./gom-deva.js\": 32124,\n\t\"./gom-latn\": 93383,\n\t\"./gom-latn.js\": 93383,\n\t\"./gu\": 95050,\n\t\"./gu.js\": 95050,\n\t\"./he\": 11713,\n\t\"./he.js\": 11713,\n\t\"./hi\": 43861,\n\t\"./hi.js\": 43861,\n\t\"./hr\": 26308,\n\t\"./hr.js\": 26308,\n\t\"./hu\": 90609,\n\t\"./hu.js\": 90609,\n\t\"./hy-am\": 17160,\n\t\"./hy-am.js\": 17160,\n\t\"./id\": 74063,\n\t\"./id.js\": 74063,\n\t\"./is\": 89374,\n\t\"./is.js\": 89374,\n\t\"./it\": 88383,\n\t\"./it-ch\": 21827,\n\t\"./it-ch.js\": 21827,\n\t\"./it.js\": 88383,\n\t\"./ja\": 23827,\n\t\"./ja.js\": 23827,\n\t\"./jv\": 89722,\n\t\"./jv.js\": 89722,\n\t\"./ka\": 41794,\n\t\"./ka.js\": 41794,\n\t\"./kk\": 27088,\n\t\"./kk.js\": 27088,\n\t\"./km\": 96870,\n\t\"./km.js\": 96870,\n\t\"./kn\": 84451,\n\t\"./kn.js\": 84451,\n\t\"./ko\": 63164,\n\t\"./ko.js\": 63164,\n\t\"./ku\": 98174,\n\t\"./ku-kmr\": 6181,\n\t\"./ku-kmr.js\": 6181,\n\t\"./ku.js\": 98174,\n\t\"./ky\": 78474,\n\t\"./ky.js\": 78474,\n\t\"./lb\": 79680,\n\t\"./lb.js\": 79680,\n\t\"./lo\": 15867,\n\t\"./lo.js\": 15867,\n\t\"./lt\": 45766,\n\t\"./lt.js\": 45766,\n\t\"./lv\": 69532,\n\t\"./lv.js\": 69532,\n\t\"./me\": 58076,\n\t\"./me.js\": 58076,\n\t\"./mi\": 41848,\n\t\"./mi.js\": 41848,\n\t\"./mk\": 30306,\n\t\"./mk.js\": 30306,\n\t\"./ml\": 73739,\n\t\"./ml.js\": 73739,\n\t\"./mn\": 99053,\n\t\"./mn.js\": 99053,\n\t\"./mr\": 86169,\n\t\"./mr.js\": 86169,\n\t\"./ms\": 73386,\n\t\"./ms-my\": 92297,\n\t\"./ms-my.js\": 92297,\n\t\"./ms.js\": 73386,\n\t\"./mt\": 77075,\n\t\"./mt.js\": 77075,\n\t\"./my\": 72264,\n\t\"./my.js\": 72264,\n\t\"./nb\": 22274,\n\t\"./nb.js\": 22274,\n\t\"./ne\": 8235,\n\t\"./ne.js\": 8235,\n\t\"./nl\": 92572,\n\t\"./nl-be\": 43784,\n\t\"./nl-be.js\": 43784,\n\t\"./nl.js\": 92572,\n\t\"./nn\": 54566,\n\t\"./nn.js\": 54566,\n\t\"./oc-lnc\": 69330,\n\t\"./oc-lnc.js\": 69330,\n\t\"./pa-in\": 29849,\n\t\"./pa-in.js\": 29849,\n\t\"./pl\": 94418,\n\t\"./pl.js\": 94418,\n\t\"./pt\": 79834,\n\t\"./pt-br\": 48303,\n\t\"./pt-br.js\": 48303,\n\t\"./pt.js\": 79834,\n\t\"./ro\": 24457,\n\t\"./ro.js\": 24457,\n\t\"./ru\": 82271,\n\t\"./ru.js\": 82271,\n\t\"./sd\": 1221,\n\t\"./sd.js\": 1221,\n\t\"./se\": 33478,\n\t\"./se.js\": 33478,\n\t\"./si\": 17538,\n\t\"./si.js\": 17538,\n\t\"./sk\": 5784,\n\t\"./sk.js\": 5784,\n\t\"./sl\": 46637,\n\t\"./sl.js\": 46637,\n\t\"./sq\": 86794,\n\t\"./sq.js\": 86794,\n\t\"./sr\": 45719,\n\t\"./sr-cyrl\": 3322,\n\t\"./sr-cyrl.js\": 3322,\n\t\"./sr.js\": 45719,\n\t\"./ss\": 56000,\n\t\"./ss.js\": 56000,\n\t\"./sv\": 41011,\n\t\"./sv.js\": 41011,\n\t\"./sw\": 40748,\n\t\"./sw.js\": 40748,\n\t\"./ta\": 11025,\n\t\"./ta.js\": 11025,\n\t\"./te\": 11885,\n\t\"./te.js\": 11885,\n\t\"./tet\": 28861,\n\t\"./tet.js\": 28861,\n\t\"./tg\": 86571,\n\t\"./tg.js\": 86571,\n\t\"./th\": 55802,\n\t\"./th.js\": 55802,\n\t\"./tk\": 59527,\n\t\"./tk.js\": 59527,\n\t\"./tl-ph\": 29231,\n\t\"./tl-ph.js\": 29231,\n\t\"./tlh\": 31052,\n\t\"./tlh.js\": 31052,\n\t\"./tr\": 85096,\n\t\"./tr.js\": 85096,\n\t\"./tzl\": 79846,\n\t\"./tzl.js\": 79846,\n\t\"./tzm\": 81765,\n\t\"./tzm-latn\": 97711,\n\t\"./tzm-latn.js\": 97711,\n\t\"./tzm.js\": 81765,\n\t\"./ug-cn\": 48414,\n\t\"./ug-cn.js\": 48414,\n\t\"./uk\": 16618,\n\t\"./uk.js\": 16618,\n\t\"./ur\": 57777,\n\t\"./ur.js\": 57777,\n\t\"./uz\": 57609,\n\t\"./uz-latn\": 72475,\n\t\"./uz-latn.js\": 72475,\n\t\"./uz.js\": 57609,\n\t\"./vi\": 21135,\n\t\"./vi.js\": 21135,\n\t\"./x-pseudo\": 64051,\n\t\"./x-pseudo.js\": 64051,\n\t\"./yo\": 82218,\n\t\"./yo.js\": 82218,\n\t\"./zh-cn\": 52648,\n\t\"./zh-cn.js\": 52648,\n\t\"./zh-hk\": 1632,\n\t\"./zh-hk.js\": 1632,\n\t\"./zh-mo\": 31541,\n\t\"./zh-mo.js\": 31541,\n\t\"./zh-tw\": 50304,\n\t\"./zh-tw.js\": 50304\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 35358;","import { getLoggerBuilder } from \"@nextcloud/logger\";\nimport { getCurrentUser, onRequestTokenUpdate, getRequestToken } from \"@nextcloud/auth\";\nimport { join, basename, extname, dirname } from \"path\";\nimport { encodePath } from \"@nextcloud/paths\";\nimport { generateRemoteUrl } from \"@nextcloud/router\";\nimport { CancelablePromise } from \"cancelable-promise\";\nimport { createClient, getPatcher } from \"webdav\";\nimport { isPublicShare, getSharingToken } from \"@nextcloud/sharing/public\";\nimport { getCapabilities } from \"@nextcloud/capabilities\";\nimport { getCanonicalLocale, getLanguage } from \"@nextcloud/l10n\";\nimport { TypedEventTarget } from \"typescript-event-target\";\nconst logger = getLoggerBuilder().setApp(\"@nextcloud/files\").detectUser().build();\nvar NewMenuEntryCategory = /* @__PURE__ */ ((NewMenuEntryCategory2) => {\n NewMenuEntryCategory2[NewMenuEntryCategory2[\"UploadFromDevice\"] = 0] = \"UploadFromDevice\";\n NewMenuEntryCategory2[NewMenuEntryCategory2[\"CreateNew\"] = 1] = \"CreateNew\";\n NewMenuEntryCategory2[NewMenuEntryCategory2[\"Other\"] = 2] = \"Other\";\n return NewMenuEntryCategory2;\n})(NewMenuEntryCategory || {});\nclass NewFileMenu {\n _entries = [];\n registerEntry(entry) {\n this.validateEntry(entry);\n entry.category = entry.category ?? 1;\n this._entries.push(entry);\n }\n unregisterEntry(entry) {\n const entryIndex = typeof entry === \"string\" ? this.getEntryIndex(entry) : this.getEntryIndex(entry.id);\n if (entryIndex === -1) {\n logger.warn(\"Entry not found, nothing removed\", { entry, entries: this.getEntries() });\n return;\n }\n this._entries.splice(entryIndex, 1);\n }\n /**\n * Get the list of registered entries\n *\n * @param {Folder} context the creation context. Usually the current folder\n */\n getEntries(context) {\n if (context) {\n return this._entries.filter((entry) => typeof entry.enabled === \"function\" ? entry.enabled(context) : true);\n }\n return this._entries;\n }\n getEntryIndex(id) {\n return this._entries.findIndex((entry) => entry.id === id);\n }\n validateEntry(entry) {\n if (!entry.id || !entry.displayName || !(entry.iconSvgInline || entry.iconClass) || !entry.handler) {\n throw new Error(\"Invalid entry\");\n }\n if (typeof entry.id !== \"string\" || typeof entry.displayName !== \"string\") {\n throw new Error(\"Invalid id or displayName property\");\n }\n if (entry.iconClass && typeof entry.iconClass !== \"string\" || entry.iconSvgInline && typeof entry.iconSvgInline !== \"string\") {\n throw new Error(\"Invalid icon provided\");\n }\n if (entry.enabled !== void 0 && typeof entry.enabled !== \"function\") {\n throw new Error(\"Invalid enabled property\");\n }\n if (typeof entry.handler !== \"function\") {\n throw new Error(\"Invalid handler property\");\n }\n if (\"order\" in entry && typeof entry.order !== \"number\") {\n throw new Error(\"Invalid order property\");\n }\n if (this.getEntryIndex(entry.id) !== -1) {\n throw new Error(\"Duplicate entry\");\n }\n }\n}\nconst getNewFileMenu = function() {\n if (typeof window._nc_newfilemenu === \"undefined\") {\n window._nc_newfilemenu = new NewFileMenu();\n logger.debug(\"NewFileMenu initialized\");\n }\n return window._nc_newfilemenu;\n};\nvar DefaultType = /* @__PURE__ */ ((DefaultType2) => {\n DefaultType2[\"DEFAULT\"] = \"default\";\n DefaultType2[\"HIDDEN\"] = \"hidden\";\n return DefaultType2;\n})(DefaultType || {});\nclass FileAction {\n _action;\n constructor(action) {\n this.validateAction(action);\n this._action = action;\n }\n get id() {\n return this._action.id;\n }\n get displayName() {\n return this._action.displayName;\n }\n get title() {\n return this._action.title;\n }\n get iconSvgInline() {\n return this._action.iconSvgInline;\n }\n get enabled() {\n return this._action.enabled;\n }\n get exec() {\n return this._action.exec;\n }\n get execBatch() {\n return this._action.execBatch;\n }\n get order() {\n return this._action.order;\n }\n get parent() {\n return this._action.parent;\n }\n get default() {\n return this._action.default;\n }\n get inline() {\n return this._action.inline;\n }\n get renderInline() {\n return this._action.renderInline;\n }\n validateAction(action) {\n if (!action.id || typeof action.id !== \"string\") {\n throw new Error(\"Invalid id\");\n }\n if (!action.displayName || typeof action.displayName !== \"function\") {\n throw new Error(\"Invalid displayName function\");\n }\n if (\"title\" in action && typeof action.title !== \"function\") {\n throw new Error(\"Invalid title function\");\n }\n if (!action.iconSvgInline || typeof action.iconSvgInline !== \"function\") {\n throw new Error(\"Invalid iconSvgInline function\");\n }\n if (!action.exec || typeof action.exec !== \"function\") {\n throw new Error(\"Invalid exec function\");\n }\n if (\"enabled\" in action && typeof action.enabled !== \"function\") {\n throw new Error(\"Invalid enabled function\");\n }\n if (\"execBatch\" in action && typeof action.execBatch !== \"function\") {\n throw new Error(\"Invalid execBatch function\");\n }\n if (\"order\" in action && typeof action.order !== \"number\") {\n throw new Error(\"Invalid order\");\n }\n if (\"parent\" in action && typeof action.parent !== \"string\") {\n throw new Error(\"Invalid parent\");\n }\n if (action.default && !Object.values(DefaultType).includes(action.default)) {\n throw new Error(\"Invalid default\");\n }\n if (\"inline\" in action && typeof action.inline !== \"function\") {\n throw new Error(\"Invalid inline function\");\n }\n if (\"renderInline\" in action && typeof action.renderInline !== \"function\") {\n throw new Error(\"Invalid renderInline function\");\n }\n }\n}\nconst registerFileAction = function(action) {\n if (typeof window._nc_fileactions === \"undefined\") {\n window._nc_fileactions = [];\n logger.debug(\"FileActions initialized\");\n }\n if (window._nc_fileactions.find((search) => search.id === action.id)) {\n logger.error(`FileAction ${action.id} already registered`, { action });\n return;\n }\n window._nc_fileactions.push(action);\n};\nconst getFileActions = function() {\n if (typeof window._nc_fileactions === \"undefined\") {\n window._nc_fileactions = [];\n logger.debug(\"FileActions initialized\");\n }\n return window._nc_fileactions;\n};\nclass Header {\n _header;\n constructor(header) {\n this.validateHeader(header);\n this._header = header;\n }\n get id() {\n return this._header.id;\n }\n get order() {\n return this._header.order;\n }\n get enabled() {\n return this._header.enabled;\n }\n get render() {\n return this._header.render;\n }\n get updated() {\n return this._header.updated;\n }\n validateHeader(header) {\n if (!header.id || !header.render || !header.updated) {\n throw new Error(\"Invalid header: id, render and updated are required\");\n }\n if (typeof header.id !== \"string\") {\n throw new Error(\"Invalid id property\");\n }\n if (header.enabled !== void 0 && typeof header.enabled !== \"function\") {\n throw new Error(\"Invalid enabled property\");\n }\n if (header.render && typeof header.render !== \"function\") {\n throw new Error(\"Invalid render property\");\n }\n if (header.updated && typeof header.updated !== \"function\") {\n throw new Error(\"Invalid updated property\");\n }\n }\n}\nconst registerFileListHeaders = function(header) {\n if (typeof window._nc_filelistheader === \"undefined\") {\n window._nc_filelistheader = [];\n logger.debug(\"FileListHeaders initialized\");\n }\n if (window._nc_filelistheader.find((search) => search.id === header.id)) {\n logger.error(`Header ${header.id} already registered`, { header });\n return;\n }\n window._nc_filelistheader.push(header);\n};\nconst getFileListHeaders = function() {\n if (typeof window._nc_filelistheader === \"undefined\") {\n window._nc_filelistheader = [];\n logger.debug(\"FileListHeaders initialized\");\n }\n return window._nc_filelistheader;\n};\nvar Permission = /* @__PURE__ */ ((Permission2) => {\n Permission2[Permission2[\"NONE\"] = 0] = \"NONE\";\n Permission2[Permission2[\"CREATE\"] = 4] = \"CREATE\";\n Permission2[Permission2[\"READ\"] = 1] = \"READ\";\n Permission2[Permission2[\"UPDATE\"] = 2] = \"UPDATE\";\n Permission2[Permission2[\"DELETE\"] = 8] = \"DELETE\";\n Permission2[Permission2[\"SHARE\"] = 16] = \"SHARE\";\n Permission2[Permission2[\"ALL\"] = 31] = \"ALL\";\n return Permission2;\n})(Permission || {});\nconst defaultDavProperties = [\n \"d:getcontentlength\",\n \"d:getcontenttype\",\n \"d:getetag\",\n \"d:getlastmodified\",\n \"d:creationdate\",\n \"d:displayname\",\n \"d:quota-available-bytes\",\n \"d:resourcetype\",\n \"nc:has-preview\",\n \"nc:is-encrypted\",\n \"nc:mount-type\",\n \"oc:comments-unread\",\n \"oc:favorite\",\n \"oc:fileid\",\n \"oc:owner-display-name\",\n \"oc:owner-id\",\n \"oc:permissions\",\n \"oc:size\"\n];\nconst defaultDavNamespaces = {\n d: \"DAV:\",\n nc: \"http://nextcloud.org/ns\",\n oc: \"http://owncloud.org/ns\",\n ocs: \"http://open-collaboration-services.org/ns\"\n};\nconst registerDavProperty = function(prop, namespace = { nc: \"http://nextcloud.org/ns\" }) {\n if (typeof window._nc_dav_properties === \"undefined\") {\n window._nc_dav_properties = [...defaultDavProperties];\n window._nc_dav_namespaces = { ...defaultDavNamespaces };\n }\n const namespaces = { ...window._nc_dav_namespaces, ...namespace };\n if (window._nc_dav_properties.find((search) => search === prop)) {\n logger.warn(`${prop} already registered`, { prop });\n return false;\n }\n if (prop.startsWith(\"<\") || prop.split(\":\").length !== 2) {\n logger.error(`${prop} is not valid. See example: 'oc:fileid'`, { prop });\n return false;\n }\n const ns = prop.split(\":\")[0];\n if (!namespaces[ns]) {\n logger.error(`${prop} namespace unknown`, { prop, namespaces });\n return false;\n }\n window._nc_dav_properties.push(prop);\n window._nc_dav_namespaces = namespaces;\n return true;\n};\nconst getDavProperties = function() {\n if (typeof window._nc_dav_properties === \"undefined\") {\n window._nc_dav_properties = [...defaultDavProperties];\n }\n return window._nc_dav_properties.map((prop) => `<${prop} />`).join(\" \");\n};\nconst getDavNameSpaces = function() {\n if (typeof window._nc_dav_namespaces === \"undefined\") {\n window._nc_dav_namespaces = { ...defaultDavNamespaces };\n }\n return Object.keys(window._nc_dav_namespaces).map((ns) => `xmlns:${ns}=\"${window._nc_dav_namespaces?.[ns]}\"`).join(\" \");\n};\nconst davGetDefaultPropfind = function() {\n return `\n\t\t\n\t\t\t\n\t\t\t\t${getDavProperties()}\n\t\t\t\n\t\t`;\n};\nconst davGetFavoritesReport = function() {\n return `\n\t\t\n\t\t\t\n\t\t\t\t${getDavProperties()}\n\t\t\t\n\t\t\t\n\t\t\t\t1\n\t\t\t\n\t\t`;\n};\nconst davGetRecentSearch = function(lastModified) {\n return `\n\n\t\n\t\t\n\t\t\t\n\t\t\t\t${getDavProperties()}\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t/files/${getCurrentUser()?.uid}/\n\t\t\t\tinfinity\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\thttpd/unix-directory\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t0\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t${lastModified}\n\t\t\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t100\n\t\t\t0\n\t\t\n\t\n`;\n};\nconst davParsePermissions = function(permString = \"\") {\n let permissions = Permission.NONE;\n if (!permString) {\n return permissions;\n }\n if (permString.includes(\"C\") || permString.includes(\"K\")) {\n permissions |= Permission.CREATE;\n }\n if (permString.includes(\"G\")) {\n permissions |= Permission.READ;\n }\n if (permString.includes(\"W\") || permString.includes(\"N\") || permString.includes(\"V\")) {\n permissions |= Permission.UPDATE;\n }\n if (permString.includes(\"D\")) {\n permissions |= Permission.DELETE;\n }\n if (permString.includes(\"R\")) {\n permissions |= Permission.SHARE;\n }\n return permissions;\n};\nvar FileType = /* @__PURE__ */ ((FileType2) => {\n FileType2[\"Folder\"] = \"folder\";\n FileType2[\"File\"] = \"file\";\n return FileType2;\n})(FileType || {});\nconst isDavRessource = function(source, davService) {\n return source.match(davService) !== null;\n};\nconst validateData = (data, davService) => {\n if (data.id && typeof data.id !== \"number\") {\n throw new Error(\"Invalid id type of value\");\n }\n if (!data.source) {\n throw new Error(\"Missing mandatory source\");\n }\n try {\n new URL(data.source);\n } catch (e) {\n throw new Error(\"Invalid source format, source must be a valid URL\");\n }\n if (!data.source.startsWith(\"http\")) {\n throw new Error(\"Invalid source format, only http(s) is supported\");\n }\n if (data.displayname && typeof data.displayname !== \"string\") {\n throw new Error(\"Invalid displayname type\");\n }\n if (data.mtime && !(data.mtime instanceof Date)) {\n throw new Error(\"Invalid mtime type\");\n }\n if (data.crtime && !(data.crtime instanceof Date)) {\n throw new Error(\"Invalid crtime type\");\n }\n if (!data.mime || typeof data.mime !== \"string\" || !data.mime.match(/^[-\\w.]+\\/[-+\\w.]+$/gi)) {\n throw new Error(\"Missing or invalid mandatory mime\");\n }\n if (\"size\" in data && typeof data.size !== \"number\" && data.size !== void 0) {\n throw new Error(\"Invalid size type\");\n }\n if (\"permissions\" in data && data.permissions !== void 0 && !(typeof data.permissions === \"number\" && data.permissions >= Permission.NONE && data.permissions <= Permission.ALL)) {\n throw new Error(\"Invalid permissions\");\n }\n if (data.owner && data.owner !== null && typeof data.owner !== \"string\") {\n throw new Error(\"Invalid owner type\");\n }\n if (data.attributes && typeof data.attributes !== \"object\") {\n throw new Error(\"Invalid attributes type\");\n }\n if (data.root && typeof data.root !== \"string\") {\n throw new Error(\"Invalid root type\");\n }\n if (data.root && !data.root.startsWith(\"/\")) {\n throw new Error(\"Root must start with a leading slash\");\n }\n if (data.root && !data.source.includes(data.root)) {\n throw new Error(\"Root must be part of the source\");\n }\n if (data.root && isDavRessource(data.source, davService)) {\n const service = data.source.match(davService)[0];\n if (!data.source.includes(join(service, data.root))) {\n throw new Error(\"The root must be relative to the service. e.g /files/emma\");\n }\n }\n if (data.status && !Object.values(NodeStatus).includes(data.status)) {\n throw new Error(\"Status must be a valid NodeStatus\");\n }\n};\nvar NodeStatus = /* @__PURE__ */ ((NodeStatus2) => {\n NodeStatus2[\"NEW\"] = \"new\";\n NodeStatus2[\"FAILED\"] = \"failed\";\n NodeStatus2[\"LOADING\"] = \"loading\";\n NodeStatus2[\"LOCKED\"] = \"locked\";\n return NodeStatus2;\n})(NodeStatus || {});\nclass Node {\n _data;\n _attributes;\n _knownDavService = /(remote|public)\\.php\\/(web)?dav/i;\n readonlyAttributes = Object.entries(Object.getOwnPropertyDescriptors(Node.prototype)).filter((e) => typeof e[1].get === \"function\" && e[0] !== \"__proto__\").map((e) => e[0]);\n handler = {\n set: (target, prop, value) => {\n if (this.readonlyAttributes.includes(prop)) {\n return false;\n }\n return Reflect.set(target, prop, value);\n },\n deleteProperty: (target, prop) => {\n if (this.readonlyAttributes.includes(prop)) {\n return false;\n }\n return Reflect.deleteProperty(target, prop);\n },\n // TODO: This is deprecated and only needed for files v3\n get: (target, prop, receiver) => {\n if (this.readonlyAttributes.includes(prop)) {\n logger.warn(`Accessing \"Node.attributes.${prop}\" is deprecated, access it directly on the Node instance.`);\n return Reflect.get(this, prop);\n }\n return Reflect.get(target, prop, receiver);\n }\n };\n constructor(data, davService) {\n validateData(data, davService || this._knownDavService);\n this._data = {\n // TODO: Remove with next major release, this is just for compatibility\n displayname: data.attributes?.displayname,\n ...data,\n attributes: {}\n };\n this._attributes = new Proxy(this._data.attributes, this.handler);\n this.update(data.attributes ?? {});\n if (davService) {\n this._knownDavService = davService;\n }\n }\n /**\n * Get the source url to this object\n * There is no setter as the source is not meant to be changed manually.\n * You can use the rename or move method to change the source.\n */\n get source() {\n return this._data.source.replace(/\\/$/i, \"\");\n }\n /**\n * Get the encoded source url to this object for requests purposes\n */\n get encodedSource() {\n const { origin } = new URL(this.source);\n return origin + encodePath(this.source.slice(origin.length));\n }\n /**\n * Get this object name\n * There is no setter as the source is not meant to be changed manually.\n * You can use the rename or move method to change the source.\n */\n get basename() {\n return basename(this.source);\n }\n /**\n * The nodes displayname\n * By default the display name and the `basename` are identical,\n * but it is possible to have a different name. This happens\n * on the files app for example for shared folders.\n */\n get displayname() {\n return this._data.displayname || this.basename;\n }\n /**\n * Set the displayname\n */\n set displayname(displayname) {\n this._data.displayname = displayname;\n }\n /**\n * Get this object's extension\n * There is no setter as the source is not meant to be changed manually.\n * You can use the rename or move method to change the source.\n */\n get extension() {\n return extname(this.source);\n }\n /**\n * Get the directory path leading to this object\n * Will use the relative path to root if available\n *\n * There is no setter as the source is not meant to be changed manually.\n * You can use the rename or move method to change the source.\n */\n get dirname() {\n if (this.root) {\n let source = this.source;\n if (this.isDavRessource) {\n source = source.split(this._knownDavService).pop();\n }\n const firstMatch = source.indexOf(this.root);\n const root = this.root.replace(/\\/$/, \"\");\n return dirname(source.slice(firstMatch + root.length) || \"/\");\n }\n const url = new URL(this.source);\n return dirname(url.pathname);\n }\n /**\n * Get the file mime\n * There is no setter as the mime is not meant to be changed\n */\n get mime() {\n return this._data.mime;\n }\n /**\n * Get the file modification time\n */\n get mtime() {\n return this._data.mtime;\n }\n /**\n * Set the file modification time\n */\n set mtime(mtime) {\n this._data.mtime = mtime;\n }\n /**\n * Get the file creation time\n * There is no setter as the creation time is not meant to be changed\n */\n get crtime() {\n return this._data.crtime;\n }\n /**\n * Get the file size\n */\n get size() {\n return this._data.size;\n }\n /**\n * Set the file size\n */\n set size(size) {\n this.updateMtime();\n this._data.size = size;\n }\n /**\n * Get the file attribute\n * This contains all additional attributes not provided by the Node class\n */\n get attributes() {\n return this._attributes;\n }\n /**\n * Get the file permissions\n */\n get permissions() {\n if (this.owner === null && !this.isDavRessource) {\n return Permission.READ;\n }\n return this._data.permissions !== void 0 ? this._data.permissions : Permission.NONE;\n }\n /**\n * Set the file permissions\n */\n set permissions(permissions) {\n this.updateMtime();\n this._data.permissions = permissions;\n }\n /**\n * Get the file owner\n * There is no setter as the owner is not meant to be changed\n */\n get owner() {\n if (!this.isDavRessource) {\n return null;\n }\n return this._data.owner;\n }\n /**\n * Is this a dav-related ressource ?\n */\n get isDavRessource() {\n return isDavRessource(this.source, this._knownDavService);\n }\n /**\n * Get the dav root of this object\n * There is no setter as the root is not meant to be changed\n */\n get root() {\n if (this._data.root) {\n return this._data.root.replace(/^(.+)\\/$/, \"$1\");\n }\n if (this.isDavRessource) {\n const root = dirname(this.source);\n return root.split(this._knownDavService).pop() || null;\n }\n return null;\n }\n /**\n * Get the absolute path of this object relative to the root\n */\n get path() {\n if (this.root) {\n let source = this.source;\n if (this.isDavRessource) {\n source = source.split(this._knownDavService).pop();\n }\n const firstMatch = source.indexOf(this.root);\n const root = this.root.replace(/\\/$/, \"\");\n return source.slice(firstMatch + root.length) || \"/\";\n }\n return (this.dirname + \"/\" + this.basename).replace(/\\/\\//g, \"/\");\n }\n /**\n * Get the node id if defined.\n * There is no setter as the fileid is not meant to be changed\n */\n get fileid() {\n return this._data?.id;\n }\n /**\n * Get the node status.\n */\n get status() {\n return this._data?.status;\n }\n /**\n * Set the node status.\n */\n set status(status) {\n this._data.status = status;\n }\n /**\n * Move the node to a new destination\n *\n * @param {string} destination the new source.\n * e.g. https://cloud.domain.com/remote.php/dav/files/emma/Photos/picture.jpg\n */\n move(destination) {\n validateData({ ...this._data, source: destination }, this._knownDavService);\n const oldBasename = this.basename;\n this._data.source = destination;\n if (this.displayname === oldBasename && this.basename !== oldBasename) {\n this.displayname = this.basename;\n }\n this.updateMtime();\n }\n /**\n * Rename the node\n * This aliases the move method for easier usage\n *\n * @param basename The new name of the node\n */\n rename(basename2) {\n if (basename2.includes(\"/\")) {\n throw new Error(\"Invalid basename\");\n }\n this.move(dirname(this.source) + \"/\" + basename2);\n }\n /**\n * Update the mtime if exists\n */\n updateMtime() {\n if (this._data.mtime) {\n this._data.mtime = /* @__PURE__ */ new Date();\n }\n }\n /**\n * Update the attributes of the node\n * Warning, updating attributes will NOT automatically update the mtime.\n *\n * @param attributes The new attributes to update on the Node attributes\n */\n update(attributes) {\n for (const [name, value] of Object.entries(attributes)) {\n try {\n if (value === void 0) {\n delete this.attributes[name];\n } else {\n this.attributes[name] = value;\n }\n } catch (e) {\n if (e instanceof TypeError) {\n continue;\n }\n throw e;\n }\n }\n }\n}\nclass File extends Node {\n get type() {\n return FileType.File;\n }\n}\nclass Folder extends Node {\n constructor(data) {\n super({\n ...data,\n mime: \"httpd/unix-directory\"\n });\n }\n get type() {\n return FileType.Folder;\n }\n get extension() {\n return null;\n }\n get mime() {\n return \"httpd/unix-directory\";\n }\n}\nfunction davGetRootPath() {\n if (isPublicShare()) {\n return `/files/${getSharingToken()}`;\n }\n return `/files/${getCurrentUser()?.uid}`;\n}\nconst davRootPath = davGetRootPath();\nfunction davGetRemoteURL() {\n const url = generateRemoteUrl(\"dav\");\n if (isPublicShare()) {\n return url.replace(\"remote.php\", \"public.php\");\n }\n return url;\n}\nconst davRemoteURL = davGetRemoteURL();\nconst davGetClient = function(remoteURL = davRemoteURL, headers = {}) {\n const client = createClient(remoteURL, { headers });\n function setHeaders(token) {\n client.setHeaders({\n ...headers,\n // Add this so the server knows it is an request from the browser\n \"X-Requested-With\": \"XMLHttpRequest\",\n // Inject user auth\n requesttoken: token ?? \"\"\n });\n }\n onRequestTokenUpdate(setHeaders);\n setHeaders(getRequestToken());\n const patcher = getPatcher();\n patcher.patch(\"fetch\", (url, options) => {\n const headers2 = options.headers;\n if (headers2?.method) {\n options.method = headers2.method;\n delete headers2.method;\n }\n return fetch(url, options);\n });\n return client;\n};\nconst getFavoriteNodes = (davClient, path = \"/\", davRoot = davRootPath) => {\n const controller = new AbortController();\n return new CancelablePromise(async (resolve, reject, onCancel) => {\n onCancel(() => controller.abort());\n try {\n const contentsResponse = await davClient.getDirectoryContents(`${davRoot}${path}`, {\n signal: controller.signal,\n details: true,\n data: davGetFavoritesReport(),\n headers: {\n // see davGetClient for patched webdav client\n method: \"REPORT\"\n },\n includeSelf: true\n });\n const nodes = contentsResponse.data.filter((node) => node.filename !== path).map((result) => davResultToNode(result, davRoot));\n resolve(nodes);\n } catch (error) {\n reject(error);\n }\n });\n};\nconst davResultToNode = function(node, filesRoot = davRootPath, remoteURL = davRemoteURL) {\n let userId = getCurrentUser()?.uid;\n if (isPublicShare()) {\n userId = userId ?? \"anonymous\";\n } else if (!userId) {\n throw new Error(\"No user id found\");\n }\n const props = node.props;\n const permissions = davParsePermissions(props?.permissions);\n const owner = String(props?.[\"owner-id\"] || userId);\n const id = props.fileid || 0;\n const nodeData = {\n id,\n source: `${remoteURL}${node.filename}`,\n mtime: new Date(Date.parse(node.lastmod)),\n mime: node.mime || \"application/octet-stream\",\n // Manually cast to work around for https://github.com/perry-mitchell/webdav-client/pull/380\n displayname: props.displayname !== void 0 ? String(props.displayname) : void 0,\n size: props?.size || Number.parseInt(props.getcontentlength || \"0\"),\n // The fileid is set to -1 for failed requests\n status: id < 0 ? NodeStatus.FAILED : void 0,\n permissions,\n owner,\n root: filesRoot,\n attributes: {\n ...node,\n ...props,\n hasPreview: props?.[\"has-preview\"]\n }\n };\n delete nodeData.attributes?.props;\n return node.type === \"file\" ? new File(nodeData) : new Folder(nodeData);\n};\nvar InvalidFilenameErrorReason = /* @__PURE__ */ ((InvalidFilenameErrorReason2) => {\n InvalidFilenameErrorReason2[\"ReservedName\"] = \"reserved name\";\n InvalidFilenameErrorReason2[\"Character\"] = \"character\";\n InvalidFilenameErrorReason2[\"Extension\"] = \"extension\";\n return InvalidFilenameErrorReason2;\n})(InvalidFilenameErrorReason || {});\nclass InvalidFilenameError extends Error {\n constructor(options) {\n super(`Invalid ${options.reason} '${options.segment}' in filename '${options.filename}'`, { cause: options });\n }\n /**\n * The filename that was validated\n */\n get filename() {\n return this.cause.filename;\n }\n /**\n * Reason why the validation failed\n */\n get reason() {\n return this.cause.reason;\n }\n /**\n * Part of the filename that caused this error\n */\n get segment() {\n return this.cause.segment;\n }\n}\nfunction validateFilename(filename) {\n const capabilities = getCapabilities().files;\n const forbiddenCharacters = capabilities.forbidden_filename_characters ?? window._oc_config?.forbidden_filenames_characters ?? [\"/\", \"\\\\\"];\n for (const character of forbiddenCharacters) {\n if (filename.includes(character)) {\n throw new InvalidFilenameError({ segment: character, reason: \"character\", filename });\n }\n }\n filename = filename.toLocaleLowerCase();\n const forbiddenFilenames = capabilities.forbidden_filenames ?? [\".htaccess\"];\n if (forbiddenFilenames.includes(filename)) {\n throw new InvalidFilenameError({\n filename,\n segment: filename,\n reason: \"reserved name\"\n /* ReservedName */\n });\n }\n const endOfBasename = filename.indexOf(\".\", 1);\n const basename2 = filename.substring(0, endOfBasename === -1 ? void 0 : endOfBasename);\n const forbiddenFilenameBasenames = capabilities.forbidden_filename_basenames ?? [];\n if (forbiddenFilenameBasenames.includes(basename2)) {\n throw new InvalidFilenameError({\n filename,\n segment: basename2,\n reason: \"reserved name\"\n /* ReservedName */\n });\n }\n const forbiddenFilenameExtensions = capabilities.forbidden_filename_extensions ?? [\".part\", \".filepart\"];\n for (const extension of forbiddenFilenameExtensions) {\n if (filename.length > extension.length && filename.endsWith(extension)) {\n throw new InvalidFilenameError({ segment: extension, reason: \"extension\", filename });\n }\n }\n}\nfunction isFilenameValid(filename) {\n try {\n validateFilename(filename);\n return true;\n } catch (error) {\n if (error instanceof InvalidFilenameError) {\n return false;\n }\n throw error;\n }\n}\nfunction getUniqueName(name, otherNames, options) {\n const opts = {\n suffix: (n) => `(${n})`,\n ignoreFileExtension: false,\n ...options\n };\n let newName = name;\n let i = 1;\n while (otherNames.includes(newName)) {\n const ext = opts.ignoreFileExtension ? \"\" : extname(name);\n const base = basename(name, ext);\n newName = `${base} ${opts.suffix(i++)}${ext}`;\n }\n return newName;\n}\nconst humanList = [\"B\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\"];\nconst humanListBinary = [\"B\", \"KiB\", \"MiB\", \"GiB\", \"TiB\", \"PiB\"];\nfunction formatFileSize(size, skipSmallSizes = false, binaryPrefixes = false, base1000 = false) {\n binaryPrefixes = binaryPrefixes && !base1000;\n if (typeof size === \"string\") {\n size = Number(size);\n }\n let order = size > 0 ? Math.floor(Math.log(size) / Math.log(base1000 ? 1e3 : 1024)) : 0;\n order = Math.min((binaryPrefixes ? humanListBinary.length : humanList.length) - 1, order);\n const readableFormat = binaryPrefixes ? humanListBinary[order] : humanList[order];\n let relativeSize = (size / Math.pow(base1000 ? 1e3 : 1024, order)).toFixed(1);\n if (skipSmallSizes === true && order === 0) {\n return (relativeSize !== \"0.0\" ? \"< 1 \" : \"0 \") + (binaryPrefixes ? humanListBinary[1] : humanList[1]);\n }\n if (order < 2) {\n relativeSize = parseFloat(relativeSize).toFixed(0);\n } else {\n relativeSize = parseFloat(relativeSize).toLocaleString(getCanonicalLocale());\n }\n return relativeSize + \" \" + readableFormat;\n}\nfunction parseFileSize(value, forceBinary = false) {\n try {\n value = `${value}`.toLocaleLowerCase().replaceAll(/\\s+/g, \"\").replaceAll(\",\", \".\");\n } catch (e) {\n return null;\n }\n const match = value.match(/^([0-9]*(\\.[0-9]*)?)([kmgtp]?)(i?)b?$/);\n if (match === null || match[1] === \".\" || match[1] === \"\") {\n return null;\n }\n const bytesArray = {\n \"\": 0,\n k: 1,\n m: 2,\n g: 3,\n t: 4,\n p: 5,\n e: 6\n };\n const decimalString = `${match[1]}`;\n const base = match[4] === \"i\" || forceBinary ? 1024 : 1e3;\n return Math.round(Number.parseFloat(decimalString) * base ** bytesArray[match[3]]);\n}\nfunction stringify(value) {\n if (value instanceof Date) {\n return value.toISOString();\n }\n return String(value);\n}\nfunction orderBy(collection, identifiers2, orders) {\n identifiers2 = identifiers2 ?? [(value) => value];\n orders = orders ?? [];\n const sorting = identifiers2.map((_, index) => (orders[index] ?? \"asc\") === \"asc\" ? 1 : -1);\n const collator = Intl.Collator(\n [getLanguage(), getCanonicalLocale()],\n {\n // handle 10 as ten and not as one-zero\n numeric: true,\n usage: \"sort\"\n }\n );\n return [...collection].sort((a, b) => {\n for (const [index, identifier] of identifiers2.entries()) {\n const value = collator.compare(stringify(identifier(a)), stringify(identifier(b)));\n if (value !== 0) {\n return value * sorting[index];\n }\n }\n return 0;\n });\n}\nvar FilesSortingMode = /* @__PURE__ */ ((FilesSortingMode2) => {\n FilesSortingMode2[\"Name\"] = \"basename\";\n FilesSortingMode2[\"Modified\"] = \"mtime\";\n FilesSortingMode2[\"Size\"] = \"size\";\n return FilesSortingMode2;\n})(FilesSortingMode || {});\nfunction sortNodes(nodes, options = {}) {\n const sortingOptions = {\n // Default to sort by name\n sortingMode: \"basename\",\n // Default to sort ascending\n sortingOrder: \"asc\",\n ...options\n };\n const basename2 = (name) => name.lastIndexOf(\".\") > 0 ? name.slice(0, name.lastIndexOf(\".\")) : name;\n const identifiers2 = [\n // 1: Sort favorites first if enabled\n ...sortingOptions.sortFavoritesFirst ? [(v) => v.attributes?.favorite !== 1] : [],\n // 2: Sort folders first if sorting by name\n ...sortingOptions.sortFoldersFirst ? [(v) => v.type !== \"folder\"] : [],\n // 3: Use sorting mode if NOT basename (to be able to use display name too)\n ...sortingOptions.sortingMode !== \"basename\" ? [(v) => v[sortingOptions.sortingMode]] : [],\n // 4: Use display name if available, fallback to name\n (v) => basename2(v.attributes?.displayname || v.basename),\n // 5: Finally, use basename if all previous sorting methods failed\n (v) => v.basename\n ];\n const orders = [\n // (for 1): always sort favorites before normal files\n ...sortingOptions.sortFavoritesFirst ? [\"asc\"] : [],\n // (for 2): always sort folders before files\n ...sortingOptions.sortFoldersFirst ? [\"asc\"] : [],\n // (for 3): Reverse if sorting by mtime as mtime higher means edited more recent -> lower\n ...sortingOptions.sortingMode === \"mtime\" ? [sortingOptions.sortingOrder === \"asc\" ? \"desc\" : \"asc\"] : [],\n // (also for 3 so make sure not to conflict with 2 and 3)\n ...sortingOptions.sortingMode !== \"mtime\" && sortingOptions.sortingMode !== \"basename\" ? [sortingOptions.sortingOrder] : [],\n // for 4: use configured sorting direction\n sortingOptions.sortingOrder,\n // for 5: use configured sorting direction\n sortingOptions.sortingOrder\n ];\n return orderBy(nodes, identifiers2, orders);\n}\nclass Navigation extends TypedEventTarget {\n _views = [];\n _currentView = null;\n /**\n * Register a new view on the navigation\n * @param view The view to register\n * @throws `Error` is thrown if a view with the same id is already registered\n */\n register(view) {\n if (this._views.find((search) => search.id === view.id)) {\n throw new Error(`View id ${view.id} is already registered`);\n }\n this._views.push(view);\n this.dispatchTypedEvent(\"update\", new CustomEvent(\"update\"));\n }\n /**\n * Remove a registered view\n * @param id The id of the view to remove\n */\n remove(id) {\n const index = this._views.findIndex((view) => view.id === id);\n if (index !== -1) {\n this._views.splice(index, 1);\n this.dispatchTypedEvent(\"update\", new CustomEvent(\"update\"));\n }\n }\n /**\n * Set the currently active view\n * @fires UpdateActiveViewEvent\n * @param view New active view\n */\n setActive(view) {\n this._currentView = view;\n const event = new CustomEvent(\"updateActive\", { detail: view });\n this.dispatchTypedEvent(\"updateActive\", event);\n }\n /**\n * The currently active files view\n */\n get active() {\n return this._currentView;\n }\n /**\n * All registered views\n */\n get views() {\n return this._views;\n }\n}\nconst getNavigation = function() {\n if (typeof window._nc_navigation === \"undefined\") {\n window._nc_navigation = new Navigation();\n logger.debug(\"Navigation service initialized\");\n }\n return window._nc_navigation;\n};\nclass Column {\n _column;\n constructor(column) {\n isValidColumn(column);\n this._column = column;\n }\n get id() {\n return this._column.id;\n }\n get title() {\n return this._column.title;\n }\n get render() {\n return this._column.render;\n }\n get sort() {\n return this._column.sort;\n }\n get summary() {\n return this._column.summary;\n }\n}\nconst isValidColumn = function(column) {\n if (!column.id || typeof column.id !== \"string\") {\n throw new Error(\"A column id is required\");\n }\n if (!column.title || typeof column.title !== \"string\") {\n throw new Error(\"A column title is required\");\n }\n if (!column.render || typeof column.render !== \"function\") {\n throw new Error(\"A render function is required\");\n }\n if (column.sort && typeof column.sort !== \"function\") {\n throw new Error(\"Column sortFunction must be a function\");\n }\n if (column.summary && typeof column.summary !== \"function\") {\n throw new Error(\"Column summary must be a function\");\n }\n return true;\n};\nfunction getDefaultExportFromCjs(x) {\n return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, \"default\") ? x[\"default\"] : x;\n}\nvar validator$2 = {};\nvar util$3 = {};\n(function(exports) {\n const nameStartChar = \":A-Za-z_\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD\";\n const nameChar = nameStartChar + \"\\\\-.\\\\d\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040\";\n const nameRegexp = \"[\" + nameStartChar + \"][\" + nameChar + \"]*\";\n const regexName = new RegExp(\"^\" + nameRegexp + \"$\");\n const getAllMatches = function(string, regex) {\n const matches = [];\n let match = regex.exec(string);\n while (match) {\n const allmatches = [];\n allmatches.startIndex = regex.lastIndex - match[0].length;\n const len = match.length;\n for (let index = 0; index < len; index++) {\n allmatches.push(match[index]);\n }\n matches.push(allmatches);\n match = regex.exec(string);\n }\n return matches;\n };\n const isName = function(string) {\n const match = regexName.exec(string);\n return !(match === null || typeof match === \"undefined\");\n };\n exports.isExist = function(v) {\n return typeof v !== \"undefined\";\n };\n exports.isEmptyObject = function(obj) {\n return Object.keys(obj).length === 0;\n };\n exports.merge = function(target, a, arrayMode) {\n if (a) {\n const keys = Object.keys(a);\n const len = keys.length;\n for (let i = 0; i < len; i++) {\n if (arrayMode === \"strict\") {\n target[keys[i]] = [a[keys[i]]];\n } else {\n target[keys[i]] = a[keys[i]];\n }\n }\n }\n };\n exports.getValue = function(v) {\n if (exports.isExist(v)) {\n return v;\n } else {\n return \"\";\n }\n };\n exports.isName = isName;\n exports.getAllMatches = getAllMatches;\n exports.nameRegexp = nameRegexp;\n})(util$3);\nconst util$2 = util$3;\nconst defaultOptions$2 = {\n allowBooleanAttributes: false,\n //A tag can have attributes without any value\n unpairedTags: []\n};\nvalidator$2.validate = function(xmlData, options) {\n options = Object.assign({}, defaultOptions$2, options);\n const tags = [];\n let tagFound = false;\n let reachedRoot = false;\n if (xmlData[0] === \"\\uFEFF\") {\n xmlData = xmlData.substr(1);\n }\n for (let i = 0; i < xmlData.length; i++) {\n if (xmlData[i] === \"<\" && xmlData[i + 1] === \"?\") {\n i += 2;\n i = readPI(xmlData, i);\n if (i.err) return i;\n } else if (xmlData[i] === \"<\") {\n let tagStartPos = i;\n i++;\n if (xmlData[i] === \"!\") {\n i = readCommentAndCDATA(xmlData, i);\n continue;\n } else {\n let closingTag = false;\n if (xmlData[i] === \"/\") {\n closingTag = true;\n i++;\n }\n let tagName = \"\";\n for (; i < xmlData.length && xmlData[i] !== \">\" && xmlData[i] !== \" \" && xmlData[i] !== \"\t\" && xmlData[i] !== \"\\n\" && xmlData[i] !== \"\\r\"; i++) {\n tagName += xmlData[i];\n }\n tagName = tagName.trim();\n if (tagName[tagName.length - 1] === \"/\") {\n tagName = tagName.substring(0, tagName.length - 1);\n i--;\n }\n if (!validateTagName(tagName)) {\n let msg;\n if (tagName.trim().length === 0) {\n msg = \"Invalid space after '<'.\";\n } else {\n msg = \"Tag '\" + tagName + \"' is an invalid name.\";\n }\n return getErrorObject(\"InvalidTag\", msg, getLineNumberForPosition(xmlData, i));\n }\n const result = readAttributeStr(xmlData, i);\n if (result === false) {\n return getErrorObject(\"InvalidAttr\", \"Attributes for '\" + tagName + \"' have open quote.\", getLineNumberForPosition(xmlData, i));\n }\n let attrStr = result.value;\n i = result.index;\n if (attrStr[attrStr.length - 1] === \"/\") {\n const attrStrStart = i - attrStr.length;\n attrStr = attrStr.substring(0, attrStr.length - 1);\n const isValid = validateAttributeString(attrStr, options);\n if (isValid === true) {\n tagFound = true;\n } else {\n return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, attrStrStart + isValid.err.line));\n }\n } else if (closingTag) {\n if (!result.tagClosed) {\n return getErrorObject(\"InvalidTag\", \"Closing tag '\" + tagName + \"' doesn't have proper closing.\", getLineNumberForPosition(xmlData, i));\n } else if (attrStr.trim().length > 0) {\n return getErrorObject(\"InvalidTag\", \"Closing tag '\" + tagName + \"' can't have attributes or invalid starting.\", getLineNumberForPosition(xmlData, tagStartPos));\n } else if (tags.length === 0) {\n return getErrorObject(\"InvalidTag\", \"Closing tag '\" + tagName + \"' has not been opened.\", getLineNumberForPosition(xmlData, tagStartPos));\n } else {\n const otg = tags.pop();\n if (tagName !== otg.tagName) {\n let openPos = getLineNumberForPosition(xmlData, otg.tagStartPos);\n return getErrorObject(\n \"InvalidTag\",\n \"Expected closing tag '\" + otg.tagName + \"' (opened in line \" + openPos.line + \", col \" + openPos.col + \") instead of closing tag '\" + tagName + \"'.\",\n getLineNumberForPosition(xmlData, tagStartPos)\n );\n }\n if (tags.length == 0) {\n reachedRoot = true;\n }\n }\n } else {\n const isValid = validateAttributeString(attrStr, options);\n if (isValid !== true) {\n return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, i - attrStr.length + isValid.err.line));\n }\n if (reachedRoot === true) {\n return getErrorObject(\"InvalidXml\", \"Multiple possible root nodes found.\", getLineNumberForPosition(xmlData, i));\n } else if (options.unpairedTags.indexOf(tagName) !== -1) ;\n else {\n tags.push({ tagName, tagStartPos });\n }\n tagFound = true;\n }\n for (i++; i < xmlData.length; i++) {\n if (xmlData[i] === \"<\") {\n if (xmlData[i + 1] === \"!\") {\n i++;\n i = readCommentAndCDATA(xmlData, i);\n continue;\n } else if (xmlData[i + 1] === \"?\") {\n i = readPI(xmlData, ++i);\n if (i.err) return i;\n } else {\n break;\n }\n } else if (xmlData[i] === \"&\") {\n const afterAmp = validateAmpersand(xmlData, i);\n if (afterAmp == -1)\n return getErrorObject(\"InvalidChar\", \"char '&' is not expected.\", getLineNumberForPosition(xmlData, i));\n i = afterAmp;\n } else {\n if (reachedRoot === true && !isWhiteSpace(xmlData[i])) {\n return getErrorObject(\"InvalidXml\", \"Extra text at the end\", getLineNumberForPosition(xmlData, i));\n }\n }\n }\n if (xmlData[i] === \"<\") {\n i--;\n }\n }\n } else {\n if (isWhiteSpace(xmlData[i])) {\n continue;\n }\n return getErrorObject(\"InvalidChar\", \"char '\" + xmlData[i] + \"' is not expected.\", getLineNumberForPosition(xmlData, i));\n }\n }\n if (!tagFound) {\n return getErrorObject(\"InvalidXml\", \"Start tag expected.\", 1);\n } else if (tags.length == 1) {\n return getErrorObject(\"InvalidTag\", \"Unclosed tag '\" + tags[0].tagName + \"'.\", getLineNumberForPosition(xmlData, tags[0].tagStartPos));\n } else if (tags.length > 0) {\n return getErrorObject(\"InvalidXml\", \"Invalid '\" + JSON.stringify(tags.map((t2) => t2.tagName), null, 4).replace(/\\r?\\n/g, \"\") + \"' found.\", { line: 1, col: 1 });\n }\n return true;\n};\nfunction isWhiteSpace(char) {\n return char === \" \" || char === \"\t\" || char === \"\\n\" || char === \"\\r\";\n}\nfunction readPI(xmlData, i) {\n const start = i;\n for (; i < xmlData.length; i++) {\n if (xmlData[i] == \"?\" || xmlData[i] == \" \") {\n const tagname = xmlData.substr(start, i - start);\n if (i > 5 && tagname === \"xml\") {\n return getErrorObject(\"InvalidXml\", \"XML declaration allowed only at the start of the document.\", getLineNumberForPosition(xmlData, i));\n } else if (xmlData[i] == \"?\" && xmlData[i + 1] == \">\") {\n i++;\n break;\n } else {\n continue;\n }\n }\n }\n return i;\n}\nfunction readCommentAndCDATA(xmlData, i) {\n if (xmlData.length > i + 5 && xmlData[i + 1] === \"-\" && xmlData[i + 2] === \"-\") {\n for (i += 3; i < xmlData.length; i++) {\n if (xmlData[i] === \"-\" && xmlData[i + 1] === \"-\" && xmlData[i + 2] === \">\") {\n i += 2;\n break;\n }\n }\n } else if (xmlData.length > i + 8 && xmlData[i + 1] === \"D\" && xmlData[i + 2] === \"O\" && xmlData[i + 3] === \"C\" && xmlData[i + 4] === \"T\" && xmlData[i + 5] === \"Y\" && xmlData[i + 6] === \"P\" && xmlData[i + 7] === \"E\") {\n let angleBracketsCount = 1;\n for (i += 8; i < xmlData.length; i++) {\n if (xmlData[i] === \"<\") {\n angleBracketsCount++;\n } else if (xmlData[i] === \">\") {\n angleBracketsCount--;\n if (angleBracketsCount === 0) {\n break;\n }\n }\n }\n } else if (xmlData.length > i + 9 && xmlData[i + 1] === \"[\" && xmlData[i + 2] === \"C\" && xmlData[i + 3] === \"D\" && xmlData[i + 4] === \"A\" && xmlData[i + 5] === \"T\" && xmlData[i + 6] === \"A\" && xmlData[i + 7] === \"[\") {\n for (i += 8; i < xmlData.length; i++) {\n if (xmlData[i] === \"]\" && xmlData[i + 1] === \"]\" && xmlData[i + 2] === \">\") {\n i += 2;\n break;\n }\n }\n }\n return i;\n}\nconst doubleQuote = '\"';\nconst singleQuote = \"'\";\nfunction readAttributeStr(xmlData, i) {\n let attrStr = \"\";\n let startChar = \"\";\n let tagClosed = false;\n for (; i < xmlData.length; i++) {\n if (xmlData[i] === doubleQuote || xmlData[i] === singleQuote) {\n if (startChar === \"\") {\n startChar = xmlData[i];\n } else if (startChar !== xmlData[i]) ;\n else {\n startChar = \"\";\n }\n } else if (xmlData[i] === \">\") {\n if (startChar === \"\") {\n tagClosed = true;\n break;\n }\n }\n attrStr += xmlData[i];\n }\n if (startChar !== \"\") {\n return false;\n }\n return {\n value: attrStr,\n index: i,\n tagClosed\n };\n}\nconst validAttrStrRegxp = new RegExp(`(\\\\s*)([^\\\\s=]+)(\\\\s*=)?(\\\\s*(['\"])(([\\\\s\\\\S])*?)\\\\5)?`, \"g\");\nfunction validateAttributeString(attrStr, options) {\n const matches = util$2.getAllMatches(attrStr, validAttrStrRegxp);\n const attrNames = {};\n for (let i = 0; i < matches.length; i++) {\n if (matches[i][1].length === 0) {\n return getErrorObject(\"InvalidAttr\", \"Attribute '\" + matches[i][2] + \"' has no space in starting.\", getPositionFromMatch(matches[i]));\n } else if (matches[i][3] !== void 0 && matches[i][4] === void 0) {\n return getErrorObject(\"InvalidAttr\", \"Attribute '\" + matches[i][2] + \"' is without value.\", getPositionFromMatch(matches[i]));\n } else if (matches[i][3] === void 0 && !options.allowBooleanAttributes) {\n return getErrorObject(\"InvalidAttr\", \"boolean attribute '\" + matches[i][2] + \"' is not allowed.\", getPositionFromMatch(matches[i]));\n }\n const attrName = matches[i][2];\n if (!validateAttrName(attrName)) {\n return getErrorObject(\"InvalidAttr\", \"Attribute '\" + attrName + \"' is an invalid name.\", getPositionFromMatch(matches[i]));\n }\n if (!attrNames.hasOwnProperty(attrName)) {\n attrNames[attrName] = 1;\n } else {\n return getErrorObject(\"InvalidAttr\", \"Attribute '\" + attrName + \"' is repeated.\", getPositionFromMatch(matches[i]));\n }\n }\n return true;\n}\nfunction validateNumberAmpersand(xmlData, i) {\n let re2 = /\\d/;\n if (xmlData[i] === \"x\") {\n i++;\n re2 = /[\\da-fA-F]/;\n }\n for (; i < xmlData.length; i++) {\n if (xmlData[i] === \";\")\n return i;\n if (!xmlData[i].match(re2))\n break;\n }\n return -1;\n}\nfunction validateAmpersand(xmlData, i) {\n i++;\n if (xmlData[i] === \";\")\n return -1;\n if (xmlData[i] === \"#\") {\n i++;\n return validateNumberAmpersand(xmlData, i);\n }\n let count = 0;\n for (; i < xmlData.length; i++, count++) {\n if (xmlData[i].match(/\\w/) && count < 20)\n continue;\n if (xmlData[i] === \";\")\n break;\n return -1;\n }\n return i;\n}\nfunction getErrorObject(code, message, lineNumber) {\n return {\n err: {\n code,\n msg: message,\n line: lineNumber.line || lineNumber,\n col: lineNumber.col\n }\n };\n}\nfunction validateAttrName(attrName) {\n return util$2.isName(attrName);\n}\nfunction validateTagName(tagname) {\n return util$2.isName(tagname);\n}\nfunction getLineNumberForPosition(xmlData, index) {\n const lines = xmlData.substring(0, index).split(/\\r?\\n/);\n return {\n line: lines.length,\n // column number is last line's length + 1, because column numbering starts at 1:\n col: lines[lines.length - 1].length + 1\n };\n}\nfunction getPositionFromMatch(match) {\n return match.startIndex + match[1].length;\n}\nvar OptionsBuilder = {};\nconst defaultOptions$1 = {\n preserveOrder: false,\n attributeNamePrefix: \"@_\",\n attributesGroupName: false,\n textNodeName: \"#text\",\n ignoreAttributes: true,\n removeNSPrefix: false,\n // remove NS from tag name or attribute name if true\n allowBooleanAttributes: false,\n //a tag can have attributes without any value\n //ignoreRootElement : false,\n parseTagValue: true,\n parseAttributeValue: false,\n trimValues: true,\n //Trim string values of tag and attributes\n cdataPropName: false,\n numberParseOptions: {\n hex: true,\n leadingZeros: true,\n eNotation: true\n },\n tagValueProcessor: function(tagName, val2) {\n return val2;\n },\n attributeValueProcessor: function(attrName, val2) {\n return val2;\n },\n stopNodes: [],\n //nested tags will not be parsed even for errors\n alwaysCreateTextNode: false,\n isArray: () => false,\n commentPropName: false,\n unpairedTags: [],\n processEntities: true,\n htmlEntities: false,\n ignoreDeclaration: false,\n ignorePiTags: false,\n transformTagName: false,\n transformAttributeName: false,\n updateTag: function(tagName, jPath, attrs) {\n return tagName;\n }\n // skipEmptyListItem: false\n};\nconst buildOptions$1 = function(options) {\n return Object.assign({}, defaultOptions$1, options);\n};\nOptionsBuilder.buildOptions = buildOptions$1;\nOptionsBuilder.defaultOptions = defaultOptions$1;\nclass XmlNode {\n constructor(tagname) {\n this.tagname = tagname;\n this.child = [];\n this[\":@\"] = {};\n }\n add(key, val2) {\n if (key === \"__proto__\") key = \"#__proto__\";\n this.child.push({ [key]: val2 });\n }\n addChild(node) {\n if (node.tagname === \"__proto__\") node.tagname = \"#__proto__\";\n if (node[\":@\"] && Object.keys(node[\":@\"]).length > 0) {\n this.child.push({ [node.tagname]: node.child, [\":@\"]: node[\":@\"] });\n } else {\n this.child.push({ [node.tagname]: node.child });\n }\n }\n}\nvar xmlNode$1 = XmlNode;\nconst util$1 = util$3;\nfunction readDocType$1(xmlData, i) {\n const entities = {};\n if (xmlData[i + 3] === \"O\" && xmlData[i + 4] === \"C\" && xmlData[i + 5] === \"T\" && xmlData[i + 6] === \"Y\" && xmlData[i + 7] === \"P\" && xmlData[i + 8] === \"E\") {\n i = i + 9;\n let angleBracketsCount = 1;\n let hasBody = false, comment = false;\n let exp = \"\";\n for (; i < xmlData.length; i++) {\n if (xmlData[i] === \"<\" && !comment) {\n if (hasBody && isEntity(xmlData, i)) {\n i += 7;\n [entityName, val, i] = readEntityExp(xmlData, i + 1);\n if (val.indexOf(\"&\") === -1)\n entities[validateEntityName(entityName)] = {\n regx: RegExp(`&${entityName};`, \"g\"),\n val\n };\n } else if (hasBody && isElement(xmlData, i)) i += 8;\n else if (hasBody && isAttlist(xmlData, i)) i += 8;\n else if (hasBody && isNotation(xmlData, i)) i += 9;\n else if (isComment) comment = true;\n else throw new Error(\"Invalid DOCTYPE\");\n angleBracketsCount++;\n exp = \"\";\n } else if (xmlData[i] === \">\") {\n if (comment) {\n if (xmlData[i - 1] === \"-\" && xmlData[i - 2] === \"-\") {\n comment = false;\n angleBracketsCount--;\n }\n } else {\n angleBracketsCount--;\n }\n if (angleBracketsCount === 0) {\n break;\n }\n } else if (xmlData[i] === \"[\") {\n hasBody = true;\n } else {\n exp += xmlData[i];\n }\n }\n if (angleBracketsCount !== 0) {\n throw new Error(`Unclosed DOCTYPE`);\n }\n } else {\n throw new Error(`Invalid Tag instead of DOCTYPE`);\n }\n return { entities, i };\n}\nfunction readEntityExp(xmlData, i) {\n let entityName2 = \"\";\n for (; i < xmlData.length && (xmlData[i] !== \"'\" && xmlData[i] !== '\"'); i++) {\n entityName2 += xmlData[i];\n }\n entityName2 = entityName2.trim();\n if (entityName2.indexOf(\" \") !== -1) throw new Error(\"External entites are not supported\");\n const startChar = xmlData[i++];\n let val2 = \"\";\n for (; i < xmlData.length && xmlData[i] !== startChar; i++) {\n val2 += xmlData[i];\n }\n return [entityName2, val2, i];\n}\nfunction isComment(xmlData, i) {\n if (xmlData[i + 1] === \"!\" && xmlData[i + 2] === \"-\" && xmlData[i + 3] === \"-\") return true;\n return false;\n}\nfunction isEntity(xmlData, i) {\n if (xmlData[i + 1] === \"!\" && xmlData[i + 2] === \"E\" && xmlData[i + 3] === \"N\" && xmlData[i + 4] === \"T\" && xmlData[i + 5] === \"I\" && xmlData[i + 6] === \"T\" && xmlData[i + 7] === \"Y\") return true;\n return false;\n}\nfunction isElement(xmlData, i) {\n if (xmlData[i + 1] === \"!\" && xmlData[i + 2] === \"E\" && xmlData[i + 3] === \"L\" && xmlData[i + 4] === \"E\" && xmlData[i + 5] === \"M\" && xmlData[i + 6] === \"E\" && xmlData[i + 7] === \"N\" && xmlData[i + 8] === \"T\") return true;\n return false;\n}\nfunction isAttlist(xmlData, i) {\n if (xmlData[i + 1] === \"!\" && xmlData[i + 2] === \"A\" && xmlData[i + 3] === \"T\" && xmlData[i + 4] === \"T\" && xmlData[i + 5] === \"L\" && xmlData[i + 6] === \"I\" && xmlData[i + 7] === \"S\" && xmlData[i + 8] === \"T\") return true;\n return false;\n}\nfunction isNotation(xmlData, i) {\n if (xmlData[i + 1] === \"!\" && xmlData[i + 2] === \"N\" && xmlData[i + 3] === \"O\" && xmlData[i + 4] === \"T\" && xmlData[i + 5] === \"A\" && xmlData[i + 6] === \"T\" && xmlData[i + 7] === \"I\" && xmlData[i + 8] === \"O\" && xmlData[i + 9] === \"N\") return true;\n return false;\n}\nfunction validateEntityName(name) {\n if (util$1.isName(name))\n return name;\n else\n throw new Error(`Invalid entity name ${name}`);\n}\nvar DocTypeReader = readDocType$1;\nconst hexRegex = /^[-+]?0x[a-fA-F0-9]+$/;\nconst numRegex = /^([\\-\\+])?(0*)(\\.[0-9]+([eE]\\-?[0-9]+)?|[0-9]+(\\.[0-9]+([eE]\\-?[0-9]+)?)?)$/;\nif (!Number.parseInt && window.parseInt) {\n Number.parseInt = window.parseInt;\n}\nif (!Number.parseFloat && window.parseFloat) {\n Number.parseFloat = window.parseFloat;\n}\nconst consider = {\n hex: true,\n leadingZeros: true,\n decimalPoint: \".\",\n eNotation: true\n //skipLike: /regex/\n};\nfunction toNumber$1(str, options = {}) {\n options = Object.assign({}, consider, options);\n if (!str || typeof str !== \"string\") return str;\n let trimmedStr = str.trim();\n if (options.skipLike !== void 0 && options.skipLike.test(trimmedStr)) return str;\n else if (options.hex && hexRegex.test(trimmedStr)) {\n return Number.parseInt(trimmedStr, 16);\n } else {\n const match = numRegex.exec(trimmedStr);\n if (match) {\n const sign = match[1];\n const leadingZeros = match[2];\n let numTrimmedByZeros = trimZeros(match[3]);\n const eNotation = match[4] || match[6];\n if (!options.leadingZeros && leadingZeros.length > 0 && sign && trimmedStr[2] !== \".\") return str;\n else if (!options.leadingZeros && leadingZeros.length > 0 && !sign && trimmedStr[1] !== \".\") return str;\n else {\n const num = Number(trimmedStr);\n const numStr = \"\" + num;\n if (numStr.search(/[eE]/) !== -1) {\n if (options.eNotation) return num;\n else return str;\n } else if (eNotation) {\n if (options.eNotation) return num;\n else return str;\n } else if (trimmedStr.indexOf(\".\") !== -1) {\n if (numStr === \"0\" && numTrimmedByZeros === \"\") return num;\n else if (numStr === numTrimmedByZeros) return num;\n else if (sign && numStr === \"-\" + numTrimmedByZeros) return num;\n else return str;\n }\n if (leadingZeros) {\n if (numTrimmedByZeros === numStr) return num;\n else if (sign + numTrimmedByZeros === numStr) return num;\n else return str;\n }\n if (trimmedStr === numStr) return num;\n else if (trimmedStr === sign + numStr) return num;\n return str;\n }\n } else {\n return str;\n }\n }\n}\nfunction trimZeros(numStr) {\n if (numStr && numStr.indexOf(\".\") !== -1) {\n numStr = numStr.replace(/0+$/, \"\");\n if (numStr === \".\") numStr = \"0\";\n else if (numStr[0] === \".\") numStr = \"0\" + numStr;\n else if (numStr[numStr.length - 1] === \".\") numStr = numStr.substr(0, numStr.length - 1);\n return numStr;\n }\n return numStr;\n}\nvar strnum = toNumber$1;\nconst util = util$3;\nconst xmlNode = xmlNode$1;\nconst readDocType = DocTypeReader;\nconst toNumber = strnum;\nlet OrderedObjParser$1 = class OrderedObjParser {\n constructor(options) {\n this.options = options;\n this.currentNode = null;\n this.tagsNodeStack = [];\n this.docTypeEntities = {};\n this.lastEntities = {\n \"apos\": { regex: /&(apos|#39|#x27);/g, val: \"'\" },\n \"gt\": { regex: /&(gt|#62|#x3E);/g, val: \">\" },\n \"lt\": { regex: /&(lt|#60|#x3C);/g, val: \"<\" },\n \"quot\": { regex: /&(quot|#34|#x22);/g, val: '\"' }\n };\n this.ampEntity = { regex: /&(amp|#38|#x26);/g, val: \"&\" };\n this.htmlEntities = {\n \"space\": { regex: /&(nbsp|#160);/g, val: \" \" },\n // \"lt\" : { regex: /&(lt|#60);/g, val: \"<\" },\n // \"gt\" : { regex: /&(gt|#62);/g, val: \">\" },\n // \"amp\" : { regex: /&(amp|#38);/g, val: \"&\" },\n // \"quot\" : { regex: /&(quot|#34);/g, val: \"\\\"\" },\n // \"apos\" : { regex: /&(apos|#39);/g, val: \"'\" },\n \"cent\": { regex: /&(cent|#162);/g, val: \"¢\" },\n \"pound\": { regex: /&(pound|#163);/g, val: \"£\" },\n \"yen\": { regex: /&(yen|#165);/g, val: \"¥\" },\n \"euro\": { regex: /&(euro|#8364);/g, val: \"€\" },\n \"copyright\": { regex: /&(copy|#169);/g, val: \"©\" },\n \"reg\": { regex: /&(reg|#174);/g, val: \"®\" },\n \"inr\": { regex: /&(inr|#8377);/g, val: \"₹\" },\n \"num_dec\": { regex: /&#([0-9]{1,7});/g, val: (_, str) => String.fromCharCode(Number.parseInt(str, 10)) },\n \"num_hex\": { regex: /&#x([0-9a-fA-F]{1,6});/g, val: (_, str) => String.fromCharCode(Number.parseInt(str, 16)) }\n };\n this.addExternalEntities = addExternalEntities;\n this.parseXml = parseXml;\n this.parseTextData = parseTextData;\n this.resolveNameSpace = resolveNameSpace;\n this.buildAttributesMap = buildAttributesMap;\n this.isItStopNode = isItStopNode;\n this.replaceEntitiesValue = replaceEntitiesValue$1;\n this.readStopNodeData = readStopNodeData;\n this.saveTextToParentTag = saveTextToParentTag;\n this.addChild = addChild;\n }\n};\nfunction addExternalEntities(externalEntities) {\n const entKeys = Object.keys(externalEntities);\n for (let i = 0; i < entKeys.length; i++) {\n const ent = entKeys[i];\n this.lastEntities[ent] = {\n regex: new RegExp(\"&\" + ent + \";\", \"g\"),\n val: externalEntities[ent]\n };\n }\n}\nfunction parseTextData(val2, tagName, jPath, dontTrim, hasAttributes, isLeafNode, escapeEntities) {\n if (val2 !== void 0) {\n if (this.options.trimValues && !dontTrim) {\n val2 = val2.trim();\n }\n if (val2.length > 0) {\n if (!escapeEntities) val2 = this.replaceEntitiesValue(val2);\n const newval = this.options.tagValueProcessor(tagName, val2, jPath, hasAttributes, isLeafNode);\n if (newval === null || newval === void 0) {\n return val2;\n } else if (typeof newval !== typeof val2 || newval !== val2) {\n return newval;\n } else if (this.options.trimValues) {\n return parseValue(val2, this.options.parseTagValue, this.options.numberParseOptions);\n } else {\n const trimmedVal = val2.trim();\n if (trimmedVal === val2) {\n return parseValue(val2, this.options.parseTagValue, this.options.numberParseOptions);\n } else {\n return val2;\n }\n }\n }\n }\n}\nfunction resolveNameSpace(tagname) {\n if (this.options.removeNSPrefix) {\n const tags = tagname.split(\":\");\n const prefix = tagname.charAt(0) === \"/\" ? \"/\" : \"\";\n if (tags[0] === \"xmlns\") {\n return \"\";\n }\n if (tags.length === 2) {\n tagname = prefix + tags[1];\n }\n }\n return tagname;\n}\nconst attrsRegx = new RegExp(`([^\\\\s=]+)\\\\s*(=\\\\s*(['\"])([\\\\s\\\\S]*?)\\\\3)?`, \"gm\");\nfunction buildAttributesMap(attrStr, jPath, tagName) {\n if (!this.options.ignoreAttributes && typeof attrStr === \"string\") {\n const matches = util.getAllMatches(attrStr, attrsRegx);\n const len = matches.length;\n const attrs = {};\n for (let i = 0; i < len; i++) {\n const attrName = this.resolveNameSpace(matches[i][1]);\n let oldVal = matches[i][4];\n let aName = this.options.attributeNamePrefix + attrName;\n if (attrName.length) {\n if (this.options.transformAttributeName) {\n aName = this.options.transformAttributeName(aName);\n }\n if (aName === \"__proto__\") aName = \"#__proto__\";\n if (oldVal !== void 0) {\n if (this.options.trimValues) {\n oldVal = oldVal.trim();\n }\n oldVal = this.replaceEntitiesValue(oldVal);\n const newVal = this.options.attributeValueProcessor(attrName, oldVal, jPath);\n if (newVal === null || newVal === void 0) {\n attrs[aName] = oldVal;\n } else if (typeof newVal !== typeof oldVal || newVal !== oldVal) {\n attrs[aName] = newVal;\n } else {\n attrs[aName] = parseValue(\n oldVal,\n this.options.parseAttributeValue,\n this.options.numberParseOptions\n );\n }\n } else if (this.options.allowBooleanAttributes) {\n attrs[aName] = true;\n }\n }\n }\n if (!Object.keys(attrs).length) {\n return;\n }\n if (this.options.attributesGroupName) {\n const attrCollection = {};\n attrCollection[this.options.attributesGroupName] = attrs;\n return attrCollection;\n }\n return attrs;\n }\n}\nconst parseXml = function(xmlData) {\n xmlData = xmlData.replace(/\\r\\n?/g, \"\\n\");\n const xmlObj = new xmlNode(\"!xml\");\n let currentNode = xmlObj;\n let textData = \"\";\n let jPath = \"\";\n for (let i = 0; i < xmlData.length; i++) {\n const ch = xmlData[i];\n if (ch === \"<\") {\n if (xmlData[i + 1] === \"/\") {\n const closeIndex = findClosingIndex(xmlData, \">\", i, \"Closing Tag is not closed.\");\n let tagName = xmlData.substring(i + 2, closeIndex).trim();\n if (this.options.removeNSPrefix) {\n const colonIndex = tagName.indexOf(\":\");\n if (colonIndex !== -1) {\n tagName = tagName.substr(colonIndex + 1);\n }\n }\n if (this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n if (currentNode) {\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n }\n const lastTagName = jPath.substring(jPath.lastIndexOf(\".\") + 1);\n if (tagName && this.options.unpairedTags.indexOf(tagName) !== -1) {\n throw new Error(`Unpaired tag can not be used as closing tag: `);\n }\n let propIndex = 0;\n if (lastTagName && this.options.unpairedTags.indexOf(lastTagName) !== -1) {\n propIndex = jPath.lastIndexOf(\".\", jPath.lastIndexOf(\".\") - 1);\n this.tagsNodeStack.pop();\n } else {\n propIndex = jPath.lastIndexOf(\".\");\n }\n jPath = jPath.substring(0, propIndex);\n currentNode = this.tagsNodeStack.pop();\n textData = \"\";\n i = closeIndex;\n } else if (xmlData[i + 1] === \"?\") {\n let tagData = readTagExp(xmlData, i, false, \"?>\");\n if (!tagData) throw new Error(\"Pi Tag is not closed.\");\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n if (this.options.ignoreDeclaration && tagData.tagName === \"?xml\" || this.options.ignorePiTags) ;\n else {\n const childNode = new xmlNode(tagData.tagName);\n childNode.add(this.options.textNodeName, \"\");\n if (tagData.tagName !== tagData.tagExp && tagData.attrExpPresent) {\n childNode[\":@\"] = this.buildAttributesMap(tagData.tagExp, jPath, tagData.tagName);\n }\n this.addChild(currentNode, childNode, jPath);\n }\n i = tagData.closeIndex + 1;\n } else if (xmlData.substr(i + 1, 3) === \"!--\") {\n const endIndex = findClosingIndex(xmlData, \"-->\", i + 4, \"Comment is not closed.\");\n if (this.options.commentPropName) {\n const comment = xmlData.substring(i + 4, endIndex - 2);\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n currentNode.add(this.options.commentPropName, [{ [this.options.textNodeName]: comment }]);\n }\n i = endIndex;\n } else if (xmlData.substr(i + 1, 2) === \"!D\") {\n const result = readDocType(xmlData, i);\n this.docTypeEntities = result.entities;\n i = result.i;\n } else if (xmlData.substr(i + 1, 2) === \"![\") {\n const closeIndex = findClosingIndex(xmlData, \"]]>\", i, \"CDATA is not closed.\") - 2;\n const tagExp = xmlData.substring(i + 9, closeIndex);\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n let val2 = this.parseTextData(tagExp, currentNode.tagname, jPath, true, false, true, true);\n if (val2 == void 0) val2 = \"\";\n if (this.options.cdataPropName) {\n currentNode.add(this.options.cdataPropName, [{ [this.options.textNodeName]: tagExp }]);\n } else {\n currentNode.add(this.options.textNodeName, val2);\n }\n i = closeIndex + 2;\n } else {\n let result = readTagExp(xmlData, i, this.options.removeNSPrefix);\n let tagName = result.tagName;\n const rawTagName = result.rawTagName;\n let tagExp = result.tagExp;\n let attrExpPresent = result.attrExpPresent;\n let closeIndex = result.closeIndex;\n if (this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n if (currentNode && textData) {\n if (currentNode.tagname !== \"!xml\") {\n textData = this.saveTextToParentTag(textData, currentNode, jPath, false);\n }\n }\n const lastTag = currentNode;\n if (lastTag && this.options.unpairedTags.indexOf(lastTag.tagname) !== -1) {\n currentNode = this.tagsNodeStack.pop();\n jPath = jPath.substring(0, jPath.lastIndexOf(\".\"));\n }\n if (tagName !== xmlObj.tagname) {\n jPath += jPath ? \".\" + tagName : tagName;\n }\n if (this.isItStopNode(this.options.stopNodes, jPath, tagName)) {\n let tagContent = \"\";\n if (tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1) {\n if (tagName[tagName.length - 1] === \"/\") {\n tagName = tagName.substr(0, tagName.length - 1);\n jPath = jPath.substr(0, jPath.length - 1);\n tagExp = tagName;\n } else {\n tagExp = tagExp.substr(0, tagExp.length - 1);\n }\n i = result.closeIndex;\n } else if (this.options.unpairedTags.indexOf(tagName) !== -1) {\n i = result.closeIndex;\n } else {\n const result2 = this.readStopNodeData(xmlData, rawTagName, closeIndex + 1);\n if (!result2) throw new Error(`Unexpected end of ${rawTagName}`);\n i = result2.i;\n tagContent = result2.tagContent;\n }\n const childNode = new xmlNode(tagName);\n if (tagName !== tagExp && attrExpPresent) {\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n if (tagContent) {\n tagContent = this.parseTextData(tagContent, tagName, jPath, true, attrExpPresent, true, true);\n }\n jPath = jPath.substr(0, jPath.lastIndexOf(\".\"));\n childNode.add(this.options.textNodeName, tagContent);\n this.addChild(currentNode, childNode, jPath);\n } else {\n if (tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1) {\n if (tagName[tagName.length - 1] === \"/\") {\n tagName = tagName.substr(0, tagName.length - 1);\n jPath = jPath.substr(0, jPath.length - 1);\n tagExp = tagName;\n } else {\n tagExp = tagExp.substr(0, tagExp.length - 1);\n }\n if (this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n const childNode = new xmlNode(tagName);\n if (tagName !== tagExp && attrExpPresent) {\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n this.addChild(currentNode, childNode, jPath);\n jPath = jPath.substr(0, jPath.lastIndexOf(\".\"));\n } else {\n const childNode = new xmlNode(tagName);\n this.tagsNodeStack.push(currentNode);\n if (tagName !== tagExp && attrExpPresent) {\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n this.addChild(currentNode, childNode, jPath);\n currentNode = childNode;\n }\n textData = \"\";\n i = closeIndex;\n }\n }\n } else {\n textData += xmlData[i];\n }\n }\n return xmlObj.child;\n};\nfunction addChild(currentNode, childNode, jPath) {\n const result = this.options.updateTag(childNode.tagname, jPath, childNode[\":@\"]);\n if (result === false) ;\n else if (typeof result === \"string\") {\n childNode.tagname = result;\n currentNode.addChild(childNode);\n } else {\n currentNode.addChild(childNode);\n }\n}\nconst replaceEntitiesValue$1 = function(val2) {\n if (this.options.processEntities) {\n for (let entityName2 in this.docTypeEntities) {\n const entity = this.docTypeEntities[entityName2];\n val2 = val2.replace(entity.regx, entity.val);\n }\n for (let entityName2 in this.lastEntities) {\n const entity = this.lastEntities[entityName2];\n val2 = val2.replace(entity.regex, entity.val);\n }\n if (this.options.htmlEntities) {\n for (let entityName2 in this.htmlEntities) {\n const entity = this.htmlEntities[entityName2];\n val2 = val2.replace(entity.regex, entity.val);\n }\n }\n val2 = val2.replace(this.ampEntity.regex, this.ampEntity.val);\n }\n return val2;\n};\nfunction saveTextToParentTag(textData, currentNode, jPath, isLeafNode) {\n if (textData) {\n if (isLeafNode === void 0) isLeafNode = Object.keys(currentNode.child).length === 0;\n textData = this.parseTextData(\n textData,\n currentNode.tagname,\n jPath,\n false,\n currentNode[\":@\"] ? Object.keys(currentNode[\":@\"]).length !== 0 : false,\n isLeafNode\n );\n if (textData !== void 0 && textData !== \"\")\n currentNode.add(this.options.textNodeName, textData);\n textData = \"\";\n }\n return textData;\n}\nfunction isItStopNode(stopNodes, jPath, currentTagName) {\n const allNodesExp = \"*.\" + currentTagName;\n for (const stopNodePath in stopNodes) {\n const stopNodeExp = stopNodes[stopNodePath];\n if (allNodesExp === stopNodeExp || jPath === stopNodeExp) return true;\n }\n return false;\n}\nfunction tagExpWithClosingIndex(xmlData, i, closingChar = \">\") {\n let attrBoundary;\n let tagExp = \"\";\n for (let index = i; index < xmlData.length; index++) {\n let ch = xmlData[index];\n if (attrBoundary) {\n if (ch === attrBoundary) attrBoundary = \"\";\n } else if (ch === '\"' || ch === \"'\") {\n attrBoundary = ch;\n } else if (ch === closingChar[0]) {\n if (closingChar[1]) {\n if (xmlData[index + 1] === closingChar[1]) {\n return {\n data: tagExp,\n index\n };\n }\n } else {\n return {\n data: tagExp,\n index\n };\n }\n } else if (ch === \"\t\") {\n ch = \" \";\n }\n tagExp += ch;\n }\n}\nfunction findClosingIndex(xmlData, str, i, errMsg) {\n const closingIndex = xmlData.indexOf(str, i);\n if (closingIndex === -1) {\n throw new Error(errMsg);\n } else {\n return closingIndex + str.length - 1;\n }\n}\nfunction readTagExp(xmlData, i, removeNSPrefix, closingChar = \">\") {\n const result = tagExpWithClosingIndex(xmlData, i + 1, closingChar);\n if (!result) return;\n let tagExp = result.data;\n const closeIndex = result.index;\n const separatorIndex = tagExp.search(/\\s/);\n let tagName = tagExp;\n let attrExpPresent = true;\n if (separatorIndex !== -1) {\n tagName = tagExp.substring(0, separatorIndex);\n tagExp = tagExp.substring(separatorIndex + 1).trimStart();\n }\n const rawTagName = tagName;\n if (removeNSPrefix) {\n const colonIndex = tagName.indexOf(\":\");\n if (colonIndex !== -1) {\n tagName = tagName.substr(colonIndex + 1);\n attrExpPresent = tagName !== result.data.substr(colonIndex + 1);\n }\n }\n return {\n tagName,\n tagExp,\n closeIndex,\n attrExpPresent,\n rawTagName\n };\n}\nfunction readStopNodeData(xmlData, tagName, i) {\n const startIndex = i;\n let openTagCount = 1;\n for (; i < xmlData.length; i++) {\n if (xmlData[i] === \"<\") {\n if (xmlData[i + 1] === \"/\") {\n const closeIndex = findClosingIndex(xmlData, \">\", i, `${tagName} is not closed`);\n let closeTagName = xmlData.substring(i + 2, closeIndex).trim();\n if (closeTagName === tagName) {\n openTagCount--;\n if (openTagCount === 0) {\n return {\n tagContent: xmlData.substring(startIndex, i),\n i: closeIndex\n };\n }\n }\n i = closeIndex;\n } else if (xmlData[i + 1] === \"?\") {\n const closeIndex = findClosingIndex(xmlData, \"?>\", i + 1, \"StopNode is not closed.\");\n i = closeIndex;\n } else if (xmlData.substr(i + 1, 3) === \"!--\") {\n const closeIndex = findClosingIndex(xmlData, \"-->\", i + 3, \"StopNode is not closed.\");\n i = closeIndex;\n } else if (xmlData.substr(i + 1, 2) === \"![\") {\n const closeIndex = findClosingIndex(xmlData, \"]]>\", i, \"StopNode is not closed.\") - 2;\n i = closeIndex;\n } else {\n const tagData = readTagExp(xmlData, i, \">\");\n if (tagData) {\n const openTagName = tagData && tagData.tagName;\n if (openTagName === tagName && tagData.tagExp[tagData.tagExp.length - 1] !== \"/\") {\n openTagCount++;\n }\n i = tagData.closeIndex;\n }\n }\n }\n }\n}\nfunction parseValue(val2, shouldParse, options) {\n if (shouldParse && typeof val2 === \"string\") {\n const newval = val2.trim();\n if (newval === \"true\") return true;\n else if (newval === \"false\") return false;\n else return toNumber(val2, options);\n } else {\n if (util.isExist(val2)) {\n return val2;\n } else {\n return \"\";\n }\n }\n}\nvar OrderedObjParser_1 = OrderedObjParser$1;\nvar node2json = {};\nfunction prettify$1(node, options) {\n return compress(node, options);\n}\nfunction compress(arr, options, jPath) {\n let text;\n const compressedObj = {};\n for (let i = 0; i < arr.length; i++) {\n const tagObj = arr[i];\n const property = propName$1(tagObj);\n let newJpath = \"\";\n if (jPath === void 0) newJpath = property;\n else newJpath = jPath + \".\" + property;\n if (property === options.textNodeName) {\n if (text === void 0) text = tagObj[property];\n else text += \"\" + tagObj[property];\n } else if (property === void 0) {\n continue;\n } else if (tagObj[property]) {\n let val2 = compress(tagObj[property], options, newJpath);\n const isLeaf = isLeafTag(val2, options);\n if (tagObj[\":@\"]) {\n assignAttributes(val2, tagObj[\":@\"], newJpath, options);\n } else if (Object.keys(val2).length === 1 && val2[options.textNodeName] !== void 0 && !options.alwaysCreateTextNode) {\n val2 = val2[options.textNodeName];\n } else if (Object.keys(val2).length === 0) {\n if (options.alwaysCreateTextNode) val2[options.textNodeName] = \"\";\n else val2 = \"\";\n }\n if (compressedObj[property] !== void 0 && compressedObj.hasOwnProperty(property)) {\n if (!Array.isArray(compressedObj[property])) {\n compressedObj[property] = [compressedObj[property]];\n }\n compressedObj[property].push(val2);\n } else {\n if (options.isArray(property, newJpath, isLeaf)) {\n compressedObj[property] = [val2];\n } else {\n compressedObj[property] = val2;\n }\n }\n }\n }\n if (typeof text === \"string\") {\n if (text.length > 0) compressedObj[options.textNodeName] = text;\n } else if (text !== void 0) compressedObj[options.textNodeName] = text;\n return compressedObj;\n}\nfunction propName$1(obj) {\n const keys = Object.keys(obj);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n if (key !== \":@\") return key;\n }\n}\nfunction assignAttributes(obj, attrMap, jpath, options) {\n if (attrMap) {\n const keys = Object.keys(attrMap);\n const len = keys.length;\n for (let i = 0; i < len; i++) {\n const atrrName = keys[i];\n if (options.isArray(atrrName, jpath + \".\" + atrrName, true, true)) {\n obj[atrrName] = [attrMap[atrrName]];\n } else {\n obj[atrrName] = attrMap[atrrName];\n }\n }\n }\n}\nfunction isLeafTag(obj, options) {\n const { textNodeName } = options;\n const propCount = Object.keys(obj).length;\n if (propCount === 0) {\n return true;\n }\n if (propCount === 1 && (obj[textNodeName] || typeof obj[textNodeName] === \"boolean\" || obj[textNodeName] === 0)) {\n return true;\n }\n return false;\n}\nnode2json.prettify = prettify$1;\nconst { buildOptions } = OptionsBuilder;\nconst OrderedObjParser2 = OrderedObjParser_1;\nconst { prettify } = node2json;\nconst validator$1 = validator$2;\nlet XMLParser$1 = class XMLParser {\n constructor(options) {\n this.externalEntities = {};\n this.options = buildOptions(options);\n }\n /**\n * Parse XML dats to JS object \n * @param {string|Buffer} xmlData \n * @param {boolean|Object} validationOption \n */\n parse(xmlData, validationOption) {\n if (typeof xmlData === \"string\") ;\n else if (xmlData.toString) {\n xmlData = xmlData.toString();\n } else {\n throw new Error(\"XML data is accepted in String or Bytes[] form.\");\n }\n if (validationOption) {\n if (validationOption === true) validationOption = {};\n const result = validator$1.validate(xmlData, validationOption);\n if (result !== true) {\n throw Error(`${result.err.msg}:${result.err.line}:${result.err.col}`);\n }\n }\n const orderedObjParser = new OrderedObjParser2(this.options);\n orderedObjParser.addExternalEntities(this.externalEntities);\n const orderedResult = orderedObjParser.parseXml(xmlData);\n if (this.options.preserveOrder || orderedResult === void 0) return orderedResult;\n else return prettify(orderedResult, this.options);\n }\n /**\n * Add Entity which is not by default supported by this library\n * @param {string} key \n * @param {string} value \n */\n addEntity(key, value) {\n if (value.indexOf(\"&\") !== -1) {\n throw new Error(\"Entity value can't have '&'\");\n } else if (key.indexOf(\"&\") !== -1 || key.indexOf(\";\") !== -1) {\n throw new Error(\"An entity must be set without '&' and ';'. Eg. use '#xD' for ' '\");\n } else if (value === \"&\") {\n throw new Error(\"An entity with value '&' is not permitted\");\n } else {\n this.externalEntities[key] = value;\n }\n }\n};\nvar XMLParser_1 = XMLParser$1;\nconst EOL = \"\\n\";\nfunction toXml(jArray, options) {\n let indentation = \"\";\n if (options.format && options.indentBy.length > 0) {\n indentation = EOL;\n }\n return arrToStr(jArray, options, \"\", indentation);\n}\nfunction arrToStr(arr, options, jPath, indentation) {\n let xmlStr = \"\";\n let isPreviousElementTag = false;\n for (let i = 0; i < arr.length; i++) {\n const tagObj = arr[i];\n const tagName = propName(tagObj);\n if (tagName === void 0) continue;\n let newJPath = \"\";\n if (jPath.length === 0) newJPath = tagName;\n else newJPath = `${jPath}.${tagName}`;\n if (tagName === options.textNodeName) {\n let tagText = tagObj[tagName];\n if (!isStopNode(newJPath, options)) {\n tagText = options.tagValueProcessor(tagName, tagText);\n tagText = replaceEntitiesValue(tagText, options);\n }\n if (isPreviousElementTag) {\n xmlStr += indentation;\n }\n xmlStr += tagText;\n isPreviousElementTag = false;\n continue;\n } else if (tagName === options.cdataPropName) {\n if (isPreviousElementTag) {\n xmlStr += indentation;\n }\n xmlStr += ``;\n isPreviousElementTag = false;\n continue;\n } else if (tagName === options.commentPropName) {\n xmlStr += indentation + ``;\n isPreviousElementTag = true;\n continue;\n } else if (tagName[0] === \"?\") {\n const attStr2 = attr_to_str(tagObj[\":@\"], options);\n const tempInd = tagName === \"?xml\" ? \"\" : indentation;\n let piTextNodeName = tagObj[tagName][0][options.textNodeName];\n piTextNodeName = piTextNodeName.length !== 0 ? \" \" + piTextNodeName : \"\";\n xmlStr += tempInd + `<${tagName}${piTextNodeName}${attStr2}?>`;\n isPreviousElementTag = true;\n continue;\n }\n let newIdentation = indentation;\n if (newIdentation !== \"\") {\n newIdentation += options.indentBy;\n }\n const attStr = attr_to_str(tagObj[\":@\"], options);\n const tagStart = indentation + `<${tagName}${attStr}`;\n const tagValue = arrToStr(tagObj[tagName], options, newJPath, newIdentation);\n if (options.unpairedTags.indexOf(tagName) !== -1) {\n if (options.suppressUnpairedNode) xmlStr += tagStart + \">\";\n else xmlStr += tagStart + \"/>\";\n } else if ((!tagValue || tagValue.length === 0) && options.suppressEmptyNode) {\n xmlStr += tagStart + \"/>\";\n } else if (tagValue && tagValue.endsWith(\">\")) {\n xmlStr += tagStart + `>${tagValue}${indentation}`;\n } else {\n xmlStr += tagStart + \">\";\n if (tagValue && indentation !== \"\" && (tagValue.includes(\"/>\") || tagValue.includes(\"`;\n }\n isPreviousElementTag = true;\n }\n return xmlStr;\n}\nfunction propName(obj) {\n const keys = Object.keys(obj);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n if (!obj.hasOwnProperty(key)) continue;\n if (key !== \":@\") return key;\n }\n}\nfunction attr_to_str(attrMap, options) {\n let attrStr = \"\";\n if (attrMap && !options.ignoreAttributes) {\n for (let attr in attrMap) {\n if (!attrMap.hasOwnProperty(attr)) continue;\n let attrVal = options.attributeValueProcessor(attr, attrMap[attr]);\n attrVal = replaceEntitiesValue(attrVal, options);\n if (attrVal === true && options.suppressBooleanAttributes) {\n attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}`;\n } else {\n attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}=\"${attrVal}\"`;\n }\n }\n }\n return attrStr;\n}\nfunction isStopNode(jPath, options) {\n jPath = jPath.substr(0, jPath.length - options.textNodeName.length - 1);\n let tagName = jPath.substr(jPath.lastIndexOf(\".\") + 1);\n for (let index in options.stopNodes) {\n if (options.stopNodes[index] === jPath || options.stopNodes[index] === \"*.\" + tagName) return true;\n }\n return false;\n}\nfunction replaceEntitiesValue(textValue, options) {\n if (textValue && textValue.length > 0 && options.processEntities) {\n for (let i = 0; i < options.entities.length; i++) {\n const entity = options.entities[i];\n textValue = textValue.replace(entity.regex, entity.val);\n }\n }\n return textValue;\n}\nvar orderedJs2Xml = toXml;\nconst buildFromOrderedJs = orderedJs2Xml;\nconst defaultOptions = {\n attributeNamePrefix: \"@_\",\n attributesGroupName: false,\n textNodeName: \"#text\",\n ignoreAttributes: true,\n cdataPropName: false,\n format: false,\n indentBy: \" \",\n suppressEmptyNode: false,\n suppressUnpairedNode: true,\n suppressBooleanAttributes: true,\n tagValueProcessor: function(key, a) {\n return a;\n },\n attributeValueProcessor: function(attrName, a) {\n return a;\n },\n preserveOrder: false,\n commentPropName: false,\n unpairedTags: [],\n entities: [\n { regex: new RegExp(\"&\", \"g\"), val: \"&\" },\n //it must be on top\n { regex: new RegExp(\">\", \"g\"), val: \">\" },\n { regex: new RegExp(\"<\", \"g\"), val: \"<\" },\n { regex: new RegExp(\"'\", \"g\"), val: \"'\" },\n { regex: new RegExp('\"', \"g\"), val: \""\" }\n ],\n processEntities: true,\n stopNodes: [],\n // transformTagName: false,\n // transformAttributeName: false,\n oneListGroup: false\n};\nfunction Builder(options) {\n this.options = Object.assign({}, defaultOptions, options);\n if (this.options.ignoreAttributes || this.options.attributesGroupName) {\n this.isAttribute = function() {\n return false;\n };\n } else {\n this.attrPrefixLen = this.options.attributeNamePrefix.length;\n this.isAttribute = isAttribute;\n }\n this.processTextOrObjNode = processTextOrObjNode;\n if (this.options.format) {\n this.indentate = indentate;\n this.tagEndChar = \">\\n\";\n this.newLine = \"\\n\";\n } else {\n this.indentate = function() {\n return \"\";\n };\n this.tagEndChar = \">\";\n this.newLine = \"\";\n }\n}\nBuilder.prototype.build = function(jObj) {\n if (this.options.preserveOrder) {\n return buildFromOrderedJs(jObj, this.options);\n } else {\n if (Array.isArray(jObj) && this.options.arrayNodeName && this.options.arrayNodeName.length > 1) {\n jObj = {\n [this.options.arrayNodeName]: jObj\n };\n }\n return this.j2x(jObj, 0).val;\n }\n};\nBuilder.prototype.j2x = function(jObj, level) {\n let attrStr = \"\";\n let val2 = \"\";\n for (let key in jObj) {\n if (!Object.prototype.hasOwnProperty.call(jObj, key)) continue;\n if (typeof jObj[key] === \"undefined\") {\n if (this.isAttribute(key)) {\n val2 += \"\";\n }\n } else if (jObj[key] === null) {\n if (this.isAttribute(key)) {\n val2 += \"\";\n } else if (key[0] === \"?\") {\n val2 += this.indentate(level) + \"<\" + key + \"?\" + this.tagEndChar;\n } else {\n val2 += this.indentate(level) + \"<\" + key + \"/\" + this.tagEndChar;\n }\n } else if (jObj[key] instanceof Date) {\n val2 += this.buildTextValNode(jObj[key], key, \"\", level);\n } else if (typeof jObj[key] !== \"object\") {\n const attr = this.isAttribute(key);\n if (attr) {\n attrStr += this.buildAttrPairStr(attr, \"\" + jObj[key]);\n } else {\n if (key === this.options.textNodeName) {\n let newval = this.options.tagValueProcessor(key, \"\" + jObj[key]);\n val2 += this.replaceEntitiesValue(newval);\n } else {\n val2 += this.buildTextValNode(jObj[key], key, \"\", level);\n }\n }\n } else if (Array.isArray(jObj[key])) {\n const arrLen = jObj[key].length;\n let listTagVal = \"\";\n let listTagAttr = \"\";\n for (let j = 0; j < arrLen; j++) {\n const item = jObj[key][j];\n if (typeof item === \"undefined\") ;\n else if (item === null) {\n if (key[0] === \"?\") val2 += this.indentate(level) + \"<\" + key + \"?\" + this.tagEndChar;\n else val2 += this.indentate(level) + \"<\" + key + \"/\" + this.tagEndChar;\n } else if (typeof item === \"object\") {\n if (this.options.oneListGroup) {\n const result = this.j2x(item, level + 1);\n listTagVal += result.val;\n if (this.options.attributesGroupName && item.hasOwnProperty(this.options.attributesGroupName)) {\n listTagAttr += result.attrStr;\n }\n } else {\n listTagVal += this.processTextOrObjNode(item, key, level);\n }\n } else {\n if (this.options.oneListGroup) {\n let textValue = this.options.tagValueProcessor(key, item);\n textValue = this.replaceEntitiesValue(textValue);\n listTagVal += textValue;\n } else {\n listTagVal += this.buildTextValNode(item, key, \"\", level);\n }\n }\n }\n if (this.options.oneListGroup) {\n listTagVal = this.buildObjectNode(listTagVal, key, listTagAttr, level);\n }\n val2 += listTagVal;\n } else {\n if (this.options.attributesGroupName && key === this.options.attributesGroupName) {\n const Ks = Object.keys(jObj[key]);\n const L = Ks.length;\n for (let j = 0; j < L; j++) {\n attrStr += this.buildAttrPairStr(Ks[j], \"\" + jObj[key][Ks[j]]);\n }\n } else {\n val2 += this.processTextOrObjNode(jObj[key], key, level);\n }\n }\n }\n return { attrStr, val: val2 };\n};\nBuilder.prototype.buildAttrPairStr = function(attrName, val2) {\n val2 = this.options.attributeValueProcessor(attrName, \"\" + val2);\n val2 = this.replaceEntitiesValue(val2);\n if (this.options.suppressBooleanAttributes && val2 === \"true\") {\n return \" \" + attrName;\n } else return \" \" + attrName + '=\"' + val2 + '\"';\n};\nfunction processTextOrObjNode(object, key, level) {\n const result = this.j2x(object, level + 1);\n if (object[this.options.textNodeName] !== void 0 && Object.keys(object).length === 1) {\n return this.buildTextValNode(object[this.options.textNodeName], key, result.attrStr, level);\n } else {\n return this.buildObjectNode(result.val, key, result.attrStr, level);\n }\n}\nBuilder.prototype.buildObjectNode = function(val2, key, attrStr, level) {\n if (val2 === \"\") {\n if (key[0] === \"?\") return this.indentate(level) + \"<\" + key + attrStr + \"?\" + this.tagEndChar;\n else {\n return this.indentate(level) + \"<\" + key + attrStr + this.closeTag(key) + this.tagEndChar;\n }\n } else {\n let tagEndExp = \"\" + val2 + tagEndExp;\n } else if (this.options.commentPropName !== false && key === this.options.commentPropName && piClosingChar.length === 0) {\n return this.indentate(level) + `` + this.newLine;\n } else {\n return this.indentate(level) + \"<\" + key + attrStr + piClosingChar + this.tagEndChar + val2 + this.indentate(level) + tagEndExp;\n }\n }\n};\nBuilder.prototype.closeTag = function(key) {\n let closeTag = \"\";\n if (this.options.unpairedTags.indexOf(key) !== -1) {\n if (!this.options.suppressUnpairedNode) closeTag = \"/\";\n } else if (this.options.suppressEmptyNode) {\n closeTag = \"/\";\n } else {\n closeTag = `>` + this.newLine;\n } else if (this.options.commentPropName !== false && key === this.options.commentPropName) {\n return this.indentate(level) + `` + this.newLine;\n } else if (key[0] === \"?\") {\n return this.indentate(level) + \"<\" + key + attrStr + \"?\" + this.tagEndChar;\n } else {\n let textValue = this.options.tagValueProcessor(key, val2);\n textValue = this.replaceEntitiesValue(textValue);\n if (textValue === \"\") {\n return this.indentate(level) + \"<\" + key + attrStr + this.closeTag(key) + this.tagEndChar;\n } else {\n return this.indentate(level) + \"<\" + key + attrStr + \">\" + textValue + \" 0 && this.options.processEntities) {\n for (let i = 0; i < this.options.entities.length; i++) {\n const entity = this.options.entities[i];\n textValue = textValue.replace(entity.regex, entity.val);\n }\n }\n return textValue;\n};\nfunction indentate(level) {\n return this.options.indentBy.repeat(level);\n}\nfunction isAttribute(name) {\n if (name.startsWith(this.options.attributeNamePrefix) && name !== this.options.textNodeName) {\n return name.substr(this.attrPrefixLen);\n } else {\n return false;\n }\n}\nvar json2xml = Builder;\nconst validator = validator$2;\nconst XMLParser2 = XMLParser_1;\nconst XMLBuilder = json2xml;\nvar fxp = {\n XMLParser: XMLParser2,\n XMLValidator: validator,\n XMLBuilder\n};\nfunction isSvg(string) {\n if (typeof string !== \"string\") {\n throw new TypeError(`Expected a \\`string\\`, got \\`${typeof string}\\``);\n }\n string = string.trim();\n if (string.length === 0) {\n return false;\n }\n if (fxp.XMLValidator.validate(string) !== true) {\n return false;\n }\n let jsonObject;\n const parser = new fxp.XMLParser();\n try {\n jsonObject = parser.parse(string);\n } catch {\n return false;\n }\n if (!jsonObject) {\n return false;\n }\n if (!Object.keys(jsonObject).some((x) => x.toLowerCase() === \"svg\")) {\n return false;\n }\n return true;\n}\nclass View {\n _view;\n constructor(view) {\n isValidView(view);\n this._view = view;\n }\n get id() {\n return this._view.id;\n }\n get name() {\n return this._view.name;\n }\n get caption() {\n return this._view.caption;\n }\n get emptyTitle() {\n return this._view.emptyTitle;\n }\n get emptyCaption() {\n return this._view.emptyCaption;\n }\n get getContents() {\n return this._view.getContents;\n }\n get icon() {\n return this._view.icon;\n }\n set icon(icon) {\n this._view.icon = icon;\n }\n get order() {\n return this._view.order;\n }\n set order(order) {\n this._view.order = order;\n }\n get params() {\n return this._view.params;\n }\n set params(params) {\n this._view.params = params;\n }\n get columns() {\n return this._view.columns;\n }\n get emptyView() {\n return this._view.emptyView;\n }\n get parent() {\n return this._view.parent;\n }\n get sticky() {\n return this._view.sticky;\n }\n get expanded() {\n return this._view.expanded;\n }\n set expanded(expanded) {\n this._view.expanded = expanded;\n }\n get defaultSortKey() {\n return this._view.defaultSortKey;\n }\n get loadChildViews() {\n return this._view.loadChildViews;\n }\n}\nconst isValidView = function(view) {\n if (!view.id || typeof view.id !== \"string\") {\n throw new Error(\"View id is required and must be a string\");\n }\n if (!view.name || typeof view.name !== \"string\") {\n throw new Error(\"View name is required and must be a string\");\n }\n if (view.columns && view.columns.length > 0 && (!view.caption || typeof view.caption !== \"string\")) {\n throw new Error(\"View caption is required for top-level views and must be a string\");\n }\n if (!view.getContents || typeof view.getContents !== \"function\") {\n throw new Error(\"View getContents is required and must be a function\");\n }\n if (!view.icon || typeof view.icon !== \"string\" || !isSvg(view.icon)) {\n throw new Error(\"View icon is required and must be a valid svg string\");\n }\n if (\"order\" in view && typeof view.order !== \"number\") {\n throw new Error(\"View order must be a number\");\n }\n if (view.columns) {\n view.columns.forEach((column) => {\n if (!(column instanceof Column)) {\n throw new Error(\"View columns must be an array of Column. Invalid column found\");\n }\n });\n }\n if (view.emptyView && typeof view.emptyView !== \"function\") {\n throw new Error(\"View emptyView must be a function\");\n }\n if (view.parent && typeof view.parent !== \"string\") {\n throw new Error(\"View parent must be a string\");\n }\n if (\"sticky\" in view && typeof view.sticky !== \"boolean\") {\n throw new Error(\"View sticky must be a boolean\");\n }\n if (\"expanded\" in view && typeof view.expanded !== \"boolean\") {\n throw new Error(\"View expanded must be a boolean\");\n }\n if (view.defaultSortKey && typeof view.defaultSortKey !== \"string\") {\n throw new Error(\"View defaultSortKey must be a string\");\n }\n if (view.loadChildViews && typeof view.loadChildViews !== \"function\") {\n throw new Error(\"View loadChildViews must be a function\");\n }\n return true;\n};\nconst debug$1 = typeof process === \"object\" && process.env && process.env.NODE_DEBUG && /\\bsemver\\b/i.test(process.env.NODE_DEBUG) ? (...args) => console.error(\"SEMVER\", ...args) : () => {\n};\nvar debug_1 = debug$1;\nconst SEMVER_SPEC_VERSION = \"2.0.0\";\nconst MAX_LENGTH$1 = 256;\nconst MAX_SAFE_INTEGER$1 = Number.MAX_SAFE_INTEGER || /* istanbul ignore next */\n9007199254740991;\nconst MAX_SAFE_COMPONENT_LENGTH = 16;\nconst MAX_SAFE_BUILD_LENGTH = MAX_LENGTH$1 - 6;\nconst RELEASE_TYPES = [\n \"major\",\n \"premajor\",\n \"minor\",\n \"preminor\",\n \"patch\",\n \"prepatch\",\n \"prerelease\"\n];\nvar constants = {\n MAX_LENGTH: MAX_LENGTH$1,\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_SAFE_INTEGER: MAX_SAFE_INTEGER$1,\n RELEASE_TYPES,\n SEMVER_SPEC_VERSION,\n FLAG_INCLUDE_PRERELEASE: 1,\n FLAG_LOOSE: 2\n};\nvar re$1 = { exports: {} };\n(function(module, exports) {\n const {\n MAX_SAFE_COMPONENT_LENGTH: MAX_SAFE_COMPONENT_LENGTH2,\n MAX_SAFE_BUILD_LENGTH: MAX_SAFE_BUILD_LENGTH2,\n MAX_LENGTH: MAX_LENGTH2\n } = constants;\n const debug2 = debug_1;\n exports = module.exports = {};\n const re2 = exports.re = [];\n const safeRe = exports.safeRe = [];\n const src = exports.src = [];\n const t2 = exports.t = {};\n let R = 0;\n const LETTERDASHNUMBER = \"[a-zA-Z0-9-]\";\n const safeRegexReplacements = [\n [\"\\\\s\", 1],\n [\"\\\\d\", MAX_LENGTH2],\n [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH2]\n ];\n const makeSafeRegex = (value) => {\n for (const [token, max] of safeRegexReplacements) {\n value = value.split(`${token}*`).join(`${token}{0,${max}}`).split(`${token}+`).join(`${token}{1,${max}}`);\n }\n return value;\n };\n const createToken = (name, value, isGlobal) => {\n const safe = makeSafeRegex(value);\n const index = R++;\n debug2(name, index, value);\n t2[name] = index;\n src[index] = value;\n re2[index] = new RegExp(value, isGlobal ? \"g\" : void 0);\n safeRe[index] = new RegExp(safe, isGlobal ? \"g\" : void 0);\n };\n createToken(\"NUMERICIDENTIFIER\", \"0|[1-9]\\\\d*\");\n createToken(\"NUMERICIDENTIFIERLOOSE\", \"\\\\d+\");\n createToken(\"NONNUMERICIDENTIFIER\", `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`);\n createToken(\"MAINVERSION\", `(${src[t2.NUMERICIDENTIFIER]})\\\\.(${src[t2.NUMERICIDENTIFIER]})\\\\.(${src[t2.NUMERICIDENTIFIER]})`);\n createToken(\"MAINVERSIONLOOSE\", `(${src[t2.NUMERICIDENTIFIERLOOSE]})\\\\.(${src[t2.NUMERICIDENTIFIERLOOSE]})\\\\.(${src[t2.NUMERICIDENTIFIERLOOSE]})`);\n createToken(\"PRERELEASEIDENTIFIER\", `(?:${src[t2.NUMERICIDENTIFIER]}|${src[t2.NONNUMERICIDENTIFIER]})`);\n createToken(\"PRERELEASEIDENTIFIERLOOSE\", `(?:${src[t2.NUMERICIDENTIFIERLOOSE]}|${src[t2.NONNUMERICIDENTIFIER]})`);\n createToken(\"PRERELEASE\", `(?:-(${src[t2.PRERELEASEIDENTIFIER]}(?:\\\\.${src[t2.PRERELEASEIDENTIFIER]})*))`);\n createToken(\"PRERELEASELOOSE\", `(?:-?(${src[t2.PRERELEASEIDENTIFIERLOOSE]}(?:\\\\.${src[t2.PRERELEASEIDENTIFIERLOOSE]})*))`);\n createToken(\"BUILDIDENTIFIER\", `${LETTERDASHNUMBER}+`);\n createToken(\"BUILD\", `(?:\\\\+(${src[t2.BUILDIDENTIFIER]}(?:\\\\.${src[t2.BUILDIDENTIFIER]})*))`);\n createToken(\"FULLPLAIN\", `v?${src[t2.MAINVERSION]}${src[t2.PRERELEASE]}?${src[t2.BUILD]}?`);\n createToken(\"FULL\", `^${src[t2.FULLPLAIN]}$`);\n createToken(\"LOOSEPLAIN\", `[v=\\\\s]*${src[t2.MAINVERSIONLOOSE]}${src[t2.PRERELEASELOOSE]}?${src[t2.BUILD]}?`);\n createToken(\"LOOSE\", `^${src[t2.LOOSEPLAIN]}$`);\n createToken(\"GTLT\", \"((?:<|>)?=?)\");\n createToken(\"XRANGEIDENTIFIERLOOSE\", `${src[t2.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`);\n createToken(\"XRANGEIDENTIFIER\", `${src[t2.NUMERICIDENTIFIER]}|x|X|\\\\*`);\n createToken(\"XRANGEPLAIN\", `[v=\\\\s]*(${src[t2.XRANGEIDENTIFIER]})(?:\\\\.(${src[t2.XRANGEIDENTIFIER]})(?:\\\\.(${src[t2.XRANGEIDENTIFIER]})(?:${src[t2.PRERELEASE]})?${src[t2.BUILD]}?)?)?`);\n createToken(\"XRANGEPLAINLOOSE\", `[v=\\\\s]*(${src[t2.XRANGEIDENTIFIERLOOSE]})(?:\\\\.(${src[t2.XRANGEIDENTIFIERLOOSE]})(?:\\\\.(${src[t2.XRANGEIDENTIFIERLOOSE]})(?:${src[t2.PRERELEASELOOSE]})?${src[t2.BUILD]}?)?)?`);\n createToken(\"XRANGE\", `^${src[t2.GTLT]}\\\\s*${src[t2.XRANGEPLAIN]}$`);\n createToken(\"XRANGELOOSE\", `^${src[t2.GTLT]}\\\\s*${src[t2.XRANGEPLAINLOOSE]}$`);\n createToken(\"COERCEPLAIN\", `${\"(^|[^\\\\d])(\\\\d{1,\"}${MAX_SAFE_COMPONENT_LENGTH2}})(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH2}}))?(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH2}}))?`);\n createToken(\"COERCE\", `${src[t2.COERCEPLAIN]}(?:$|[^\\\\d])`);\n createToken(\"COERCEFULL\", src[t2.COERCEPLAIN] + `(?:${src[t2.PRERELEASE]})?(?:${src[t2.BUILD]})?(?:$|[^\\\\d])`);\n createToken(\"COERCERTL\", src[t2.COERCE], true);\n createToken(\"COERCERTLFULL\", src[t2.COERCEFULL], true);\n createToken(\"LONETILDE\", \"(?:~>?)\");\n createToken(\"TILDETRIM\", `(\\\\s*)${src[t2.LONETILDE]}\\\\s+`, true);\n exports.tildeTrimReplace = \"$1~\";\n createToken(\"TILDE\", `^${src[t2.LONETILDE]}${src[t2.XRANGEPLAIN]}$`);\n createToken(\"TILDELOOSE\", `^${src[t2.LONETILDE]}${src[t2.XRANGEPLAINLOOSE]}$`);\n createToken(\"LONECARET\", \"(?:\\\\^)\");\n createToken(\"CARETTRIM\", `(\\\\s*)${src[t2.LONECARET]}\\\\s+`, true);\n exports.caretTrimReplace = \"$1^\";\n createToken(\"CARET\", `^${src[t2.LONECARET]}${src[t2.XRANGEPLAIN]}$`);\n createToken(\"CARETLOOSE\", `^${src[t2.LONECARET]}${src[t2.XRANGEPLAINLOOSE]}$`);\n createToken(\"COMPARATORLOOSE\", `^${src[t2.GTLT]}\\\\s*(${src[t2.LOOSEPLAIN]})$|^$`);\n createToken(\"COMPARATOR\", `^${src[t2.GTLT]}\\\\s*(${src[t2.FULLPLAIN]})$|^$`);\n createToken(\"COMPARATORTRIM\", `(\\\\s*)${src[t2.GTLT]}\\\\s*(${src[t2.LOOSEPLAIN]}|${src[t2.XRANGEPLAIN]})`, true);\n exports.comparatorTrimReplace = \"$1$2$3\";\n createToken(\"HYPHENRANGE\", `^\\\\s*(${src[t2.XRANGEPLAIN]})\\\\s+-\\\\s+(${src[t2.XRANGEPLAIN]})\\\\s*$`);\n createToken(\"HYPHENRANGELOOSE\", `^\\\\s*(${src[t2.XRANGEPLAINLOOSE]})\\\\s+-\\\\s+(${src[t2.XRANGEPLAINLOOSE]})\\\\s*$`);\n createToken(\"STAR\", \"(<|>)?=?\\\\s*\\\\*\");\n createToken(\"GTE0\", \"^\\\\s*>=\\\\s*0\\\\.0\\\\.0\\\\s*$\");\n createToken(\"GTE0PRE\", \"^\\\\s*>=\\\\s*0\\\\.0\\\\.0-0\\\\s*$\");\n})(re$1, re$1.exports);\nvar reExports = re$1.exports;\nconst looseOption = Object.freeze({ loose: true });\nconst emptyOpts = Object.freeze({});\nconst parseOptions$1 = (options) => {\n if (!options) {\n return emptyOpts;\n }\n if (typeof options !== \"object\") {\n return looseOption;\n }\n return options;\n};\nvar parseOptions_1 = parseOptions$1;\nconst numeric = /^[0-9]+$/;\nconst compareIdentifiers$1 = (a, b) => {\n const anum = numeric.test(a);\n const bnum = numeric.test(b);\n if (anum && bnum) {\n a = +a;\n b = +b;\n }\n return a === b ? 0 : anum && !bnum ? -1 : bnum && !anum ? 1 : a < b ? -1 : 1;\n};\nconst rcompareIdentifiers = (a, b) => compareIdentifiers$1(b, a);\nvar identifiers = {\n compareIdentifiers: compareIdentifiers$1,\n rcompareIdentifiers\n};\nconst debug = debug_1;\nconst { MAX_LENGTH, MAX_SAFE_INTEGER } = constants;\nconst { safeRe: re, t } = reExports;\nconst parseOptions = parseOptions_1;\nconst { compareIdentifiers } = identifiers;\nlet SemVer$2 = class SemVer {\n constructor(version, options) {\n options = parseOptions(options);\n if (version instanceof SemVer) {\n if (version.loose === !!options.loose && version.includePrerelease === !!options.includePrerelease) {\n return version;\n } else {\n version = version.version;\n }\n } else if (typeof version !== \"string\") {\n throw new TypeError(`Invalid version. Must be a string. Got type \"${typeof version}\".`);\n }\n if (version.length > MAX_LENGTH) {\n throw new TypeError(\n `version is longer than ${MAX_LENGTH} characters`\n );\n }\n debug(\"SemVer\", version, options);\n this.options = options;\n this.loose = !!options.loose;\n this.includePrerelease = !!options.includePrerelease;\n const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL]);\n if (!m) {\n throw new TypeError(`Invalid Version: ${version}`);\n }\n this.raw = version;\n this.major = +m[1];\n this.minor = +m[2];\n this.patch = +m[3];\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError(\"Invalid major version\");\n }\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError(\"Invalid minor version\");\n }\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError(\"Invalid patch version\");\n }\n if (!m[4]) {\n this.prerelease = [];\n } else {\n this.prerelease = m[4].split(\".\").map((id) => {\n if (/^[0-9]+$/.test(id)) {\n const num = +id;\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num;\n }\n }\n return id;\n });\n }\n this.build = m[5] ? m[5].split(\".\") : [];\n this.format();\n }\n format() {\n this.version = `${this.major}.${this.minor}.${this.patch}`;\n if (this.prerelease.length) {\n this.version += `-${this.prerelease.join(\".\")}`;\n }\n return this.version;\n }\n toString() {\n return this.version;\n }\n compare(other) {\n debug(\"SemVer.compare\", this.version, this.options, other);\n if (!(other instanceof SemVer)) {\n if (typeof other === \"string\" && other === this.version) {\n return 0;\n }\n other = new SemVer(other, this.options);\n }\n if (other.version === this.version) {\n return 0;\n }\n return this.compareMain(other) || this.comparePre(other);\n }\n compareMain(other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n return compareIdentifiers(this.major, other.major) || compareIdentifiers(this.minor, other.minor) || compareIdentifiers(this.patch, other.patch);\n }\n comparePre(other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n if (this.prerelease.length && !other.prerelease.length) {\n return -1;\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1;\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0;\n }\n let i = 0;\n do {\n const a = this.prerelease[i];\n const b = other.prerelease[i];\n debug(\"prerelease compare\", i, a, b);\n if (a === void 0 && b === void 0) {\n return 0;\n } else if (b === void 0) {\n return 1;\n } else if (a === void 0) {\n return -1;\n } else if (a === b) {\n continue;\n } else {\n return compareIdentifiers(a, b);\n }\n } while (++i);\n }\n compareBuild(other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n let i = 0;\n do {\n const a = this.build[i];\n const b = other.build[i];\n debug(\"build compare\", i, a, b);\n if (a === void 0 && b === void 0) {\n return 0;\n } else if (b === void 0) {\n return 1;\n } else if (a === void 0) {\n return -1;\n } else if (a === b) {\n continue;\n } else {\n return compareIdentifiers(a, b);\n }\n } while (++i);\n }\n // preminor will bump the version up to the next minor release, and immediately\n // down to pre-release. premajor and prepatch work the same way.\n inc(release, identifier, identifierBase) {\n switch (release) {\n case \"premajor\":\n this.prerelease.length = 0;\n this.patch = 0;\n this.minor = 0;\n this.major++;\n this.inc(\"pre\", identifier, identifierBase);\n break;\n case \"preminor\":\n this.prerelease.length = 0;\n this.patch = 0;\n this.minor++;\n this.inc(\"pre\", identifier, identifierBase);\n break;\n case \"prepatch\":\n this.prerelease.length = 0;\n this.inc(\"patch\", identifier, identifierBase);\n this.inc(\"pre\", identifier, identifierBase);\n break;\n case \"prerelease\":\n if (this.prerelease.length === 0) {\n this.inc(\"patch\", identifier, identifierBase);\n }\n this.inc(\"pre\", identifier, identifierBase);\n break;\n case \"major\":\n if (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0) {\n this.major++;\n }\n this.minor = 0;\n this.patch = 0;\n this.prerelease = [];\n break;\n case \"minor\":\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++;\n }\n this.patch = 0;\n this.prerelease = [];\n break;\n case \"patch\":\n if (this.prerelease.length === 0) {\n this.patch++;\n }\n this.prerelease = [];\n break;\n case \"pre\": {\n const base = Number(identifierBase) ? 1 : 0;\n if (!identifier && identifierBase === false) {\n throw new Error(\"invalid increment argument: identifier is empty\");\n }\n if (this.prerelease.length === 0) {\n this.prerelease = [base];\n } else {\n let i = this.prerelease.length;\n while (--i >= 0) {\n if (typeof this.prerelease[i] === \"number\") {\n this.prerelease[i]++;\n i = -2;\n }\n }\n if (i === -1) {\n if (identifier === this.prerelease.join(\".\") && identifierBase === false) {\n throw new Error(\"invalid increment argument: identifier already exists\");\n }\n this.prerelease.push(base);\n }\n }\n if (identifier) {\n let prerelease = [identifier, base];\n if (identifierBase === false) {\n prerelease = [identifier];\n }\n if (compareIdentifiers(this.prerelease[0], identifier) === 0) {\n if (isNaN(this.prerelease[1])) {\n this.prerelease = prerelease;\n }\n } else {\n this.prerelease = prerelease;\n }\n }\n break;\n }\n default:\n throw new Error(`invalid increment argument: ${release}`);\n }\n this.raw = this.format();\n if (this.build.length) {\n this.raw += `+${this.build.join(\".\")}`;\n }\n return this;\n }\n};\nvar semver = SemVer$2;\nconst SemVer$1 = semver;\nconst parse$1 = (version, options, throwErrors = false) => {\n if (version instanceof SemVer$1) {\n return version;\n }\n try {\n return new SemVer$1(version, options);\n } catch (er) {\n if (!throwErrors) {\n return null;\n }\n throw er;\n }\n};\nvar parse_1 = parse$1;\nconst parse = parse_1;\nconst valid = (version, options) => {\n const v = parse(version, options);\n return v ? v.version : null;\n};\nvar valid_1 = valid;\nconst valid$1 = /* @__PURE__ */ getDefaultExportFromCjs(valid_1);\nconst SemVer2 = semver;\nconst major = (a, loose) => new SemVer2(a, loose).major;\nvar major_1 = major;\nconst major$1 = /* @__PURE__ */ getDefaultExportFromCjs(major_1);\nclass ProxyBus {\n bus;\n constructor(bus2) {\n if (typeof bus2.getVersion !== \"function\" || !valid$1(bus2.getVersion())) {\n console.warn(\"Proxying an event bus with an unknown or invalid version\");\n } else if (major$1(bus2.getVersion()) !== major$1(this.getVersion())) {\n console.warn(\n \"Proxying an event bus of version \" + bus2.getVersion() + \" with \" + this.getVersion()\n );\n }\n this.bus = bus2;\n }\n getVersion() {\n return \"3.3.1\";\n }\n subscribe(name, handler) {\n this.bus.subscribe(name, handler);\n }\n unsubscribe(name, handler) {\n this.bus.unsubscribe(name, handler);\n }\n emit(name, event) {\n this.bus.emit(name, event);\n }\n}\nclass SimpleBus {\n handlers = /* @__PURE__ */ new Map();\n getVersion() {\n return \"3.3.1\";\n }\n subscribe(name, handler) {\n this.handlers.set(\n name,\n (this.handlers.get(name) || []).concat(\n handler\n )\n );\n }\n unsubscribe(name, handler) {\n this.handlers.set(\n name,\n (this.handlers.get(name) || []).filter((h) => h !== handler)\n );\n }\n emit(name, event) {\n (this.handlers.get(name) || []).forEach((h) => {\n try {\n h(event);\n } catch (e) {\n console.error(\"could not invoke event listener\", e);\n }\n });\n }\n}\nlet bus = null;\nfunction getBus() {\n if (bus !== null) {\n return bus;\n }\n if (typeof window === \"undefined\") {\n return new Proxy({}, {\n get: () => {\n return () => console.error(\n \"Window not available, EventBus can not be established!\"\n );\n }\n });\n }\n if (window.OC?._eventBus && typeof window._nc_event_bus === \"undefined\") {\n console.warn(\n \"found old event bus instance at OC._eventBus. Update your version!\"\n );\n window._nc_event_bus = window.OC._eventBus;\n }\n if (typeof window?._nc_event_bus !== \"undefined\") {\n bus = new ProxyBus(window._nc_event_bus);\n } else {\n bus = window._nc_event_bus = new SimpleBus();\n }\n return bus;\n}\nfunction emit(name, event) {\n getBus().emit(name, event);\n}\n/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nclass FileListFilter extends TypedEventTarget {\n id;\n order;\n constructor(id, order = 100) {\n super();\n this.id = id;\n this.order = order;\n }\n filter(nodes) {\n throw new Error(\"Not implemented\");\n }\n updateChips(chips) {\n this.dispatchTypedEvent(\"update:chips\", new CustomEvent(\"update:chips\", { detail: chips }));\n }\n filterUpdated() {\n this.dispatchTypedEvent(\"update:filter\", new CustomEvent(\"update:filter\"));\n }\n}\nfunction registerFileListFilter(filter) {\n if (!window._nc_filelist_filters) {\n window._nc_filelist_filters = /* @__PURE__ */ new Map();\n }\n if (window._nc_filelist_filters.has(filter.id)) {\n throw new Error(`File list filter \"${filter.id}\" already registered`);\n }\n window._nc_filelist_filters.set(filter.id, filter);\n emit(\"files:filter:added\", filter);\n}\nfunction unregisterFileListFilter(filterId) {\n if (window._nc_filelist_filters && window._nc_filelist_filters.has(filterId)) {\n window._nc_filelist_filters.delete(filterId);\n emit(\"files:filter:removed\", filterId);\n }\n}\nfunction getFileListFilters() {\n if (!window._nc_filelist_filters) {\n return [];\n }\n return [...window._nc_filelist_filters.values()];\n}\nconst addNewFileMenuEntry = function(entry) {\n const newFileMenu = getNewFileMenu();\n return newFileMenu.registerEntry(entry);\n};\nconst removeNewFileMenuEntry = function(entry) {\n const newFileMenu = getNewFileMenu();\n return newFileMenu.unregisterEntry(entry);\n};\nconst getNewFileMenuEntries = function(context) {\n const newFileMenu = getNewFileMenu();\n return newFileMenu.getEntries(context).sort((a, b) => {\n if (a.order !== void 0 && b.order !== void 0 && a.order !== b.order) {\n return a.order - b.order;\n }\n return a.displayName.localeCompare(b.displayName, void 0, { numeric: true, sensitivity: \"base\" });\n });\n};\nexport {\n Column,\n DefaultType,\n File,\n FileAction,\n FileListFilter,\n FileType,\n FilesSortingMode,\n Folder,\n Header,\n InvalidFilenameError,\n InvalidFilenameErrorReason,\n Navigation,\n NewMenuEntryCategory,\n Node,\n NodeStatus,\n Permission,\n View,\n addNewFileMenuEntry,\n davGetClient,\n davGetDefaultPropfind,\n davGetFavoritesReport,\n davGetRecentSearch,\n davGetRemoteURL,\n davGetRootPath,\n davParsePermissions,\n davRemoteURL,\n davResultToNode,\n davRootPath,\n defaultDavNamespaces,\n defaultDavProperties,\n formatFileSize,\n getDavNameSpaces,\n getDavProperties,\n getFavoriteNodes,\n getFileActions,\n getFileListFilters,\n getFileListHeaders,\n getNavigation,\n getNewFileMenuEntries,\n getUniqueName,\n isFilenameValid,\n orderBy,\n parseFileSize,\n registerDavProperty,\n registerFileAction,\n registerFileListFilter,\n registerFileListHeaders,\n removeNewFileMenuEntry,\n sortNodes,\n unregisterFileListFilter,\n validateFilename\n};\n","// Current version.\nexport var VERSION = '1.13.7';\n\n// Establish the root object, `window` (`self`) in the browser, `global`\n// on the server, or `this` in some virtual machines. We use `self`\n// instead of `window` for `WebWorker` support.\nexport var root = (typeof self == 'object' && self.self === self && self) ||\n (typeof global == 'object' && global.global === global && global) ||\n Function('return this')() ||\n {};\n\n// Save bytes in the minified (but not gzipped) version:\nexport var ArrayProto = Array.prototype, ObjProto = Object.prototype;\nexport var SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null;\n\n// Create quick reference variables for speed access to core prototypes.\nexport var push = ArrayProto.push,\n slice = ArrayProto.slice,\n toString = ObjProto.toString,\n hasOwnProperty = ObjProto.hasOwnProperty;\n\n// Modern feature detection.\nexport var supportsArrayBuffer = typeof ArrayBuffer !== 'undefined',\n supportsDataView = typeof DataView !== 'undefined';\n\n// All **ECMAScript 5+** native function implementations that we hope to use\n// are declared here.\nexport var nativeIsArray = Array.isArray,\n nativeKeys = Object.keys,\n nativeCreate = Object.create,\n nativeIsView = supportsArrayBuffer && ArrayBuffer.isView;\n\n// Create references to these builtin functions because we override them.\nexport var _isNaN = isNaN,\n _isFinite = isFinite;\n\n// Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed.\nexport var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString');\nexport var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString',\n 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString'];\n\n// The largest integer that can be represented exactly.\nexport var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1;\n","// Some functions take a variable number of arguments, or a few expected\n// arguments at the beginning and then a variable number of values to operate\n// on. This helper accumulates all remaining arguments past the function’s\n// argument length (or an explicit `startIndex`), into an array that becomes\n// the last argument. Similar to ES6’s \"rest parameter\".\nexport default function restArguments(func, startIndex) {\n startIndex = startIndex == null ? func.length - 1 : +startIndex;\n return function() {\n var length = Math.max(arguments.length - startIndex, 0),\n rest = Array(length),\n index = 0;\n for (; index < length; index++) {\n rest[index] = arguments[index + startIndex];\n }\n switch (startIndex) {\n case 0: return func.call(this, rest);\n case 1: return func.call(this, arguments[0], rest);\n case 2: return func.call(this, arguments[0], arguments[1], rest);\n }\n var args = Array(startIndex + 1);\n for (index = 0; index < startIndex; index++) {\n args[index] = arguments[index];\n }\n args[startIndex] = rest;\n return func.apply(this, args);\n };\n}\n","// Is a given variable an object?\nexport default function isObject(obj) {\n var type = typeof obj;\n return type === 'function' || (type === 'object' && !!obj);\n}\n","// Is a given value equal to null?\nexport default function isNull(obj) {\n return obj === null;\n}\n","// Is a given variable undefined?\nexport default function isUndefined(obj) {\n return obj === void 0;\n}\n","import { toString } from './_setup.js';\n\n// Is a given value a boolean?\nexport default function isBoolean(obj) {\n return obj === true || obj === false || toString.call(obj) === '[object Boolean]';\n}\n","// Is a given value a DOM element?\nexport default function isElement(obj) {\n return !!(obj && obj.nodeType === 1);\n}\n","import { toString } from './_setup.js';\n\n// Internal function for creating a `toString`-based type tester.\nexport default function tagTester(name) {\n var tag = '[object ' + name + ']';\n return function(obj) {\n return toString.call(obj) === tag;\n };\n}\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('String');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('Number');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('Date');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('RegExp');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('Error');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('Symbol');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('ArrayBuffer');\n","import tagTester from './_tagTester.js';\nimport { root } from './_setup.js';\n\nvar isFunction = tagTester('Function');\n\n// Optimize `isFunction` if appropriate. Work around some `typeof` bugs in old\n// v8, IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236).\nvar nodelist = root.document && root.document.childNodes;\nif (typeof /./ != 'function' && typeof Int8Array != 'object' && typeof nodelist != 'function') {\n isFunction = function(obj) {\n return typeof obj == 'function' || false;\n };\n}\n\nexport default isFunction;\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('Object');\n","import { supportsDataView } from './_setup.js';\nimport hasObjectTag from './_hasObjectTag.js';\n\n// In IE 10 - Edge 13, `DataView` has string tag `'[object Object]'`.\n// In IE 11, the most common among them, this problem also applies to\n// `Map`, `WeakMap` and `Set`.\n// Also, there are cases where an application can override the native\n// `DataView` object, in cases like that we can't use the constructor\n// safely and should just rely on alternate `DataView` checks\nexport var hasDataViewBug = (\n supportsDataView && (!/\\[native code\\]/.test(String(DataView)) || hasObjectTag(new DataView(new ArrayBuffer(8))))\n ),\n isIE11 = (typeof Map !== 'undefined' && hasObjectTag(new Map));\n","import tagTester from './_tagTester.js';\nimport isFunction from './isFunction.js';\nimport isArrayBuffer from './isArrayBuffer.js';\nimport { hasDataViewBug } from './_stringTagBug.js';\n\nvar isDataView = tagTester('DataView');\n\n// In IE 10 - Edge 13, we need a different heuristic\n// to determine whether an object is a `DataView`.\n// Also, in cases where the native `DataView` is\n// overridden we can't rely on the tag itself.\nfunction alternateIsDataView(obj) {\n return obj != null && isFunction(obj.getInt8) && isArrayBuffer(obj.buffer);\n}\n\nexport default (hasDataViewBug ? alternateIsDataView : isDataView);\n","import { nativeIsArray } from './_setup.js';\nimport tagTester from './_tagTester.js';\n\n// Is a given value an array?\n// Delegates to ECMA5's native `Array.isArray`.\nexport default nativeIsArray || tagTester('Array');\n","import { hasOwnProperty } from './_setup.js';\n\n// Internal function to check whether `key` is an own property name of `obj`.\nexport default function has(obj, key) {\n return obj != null && hasOwnProperty.call(obj, key);\n}\n","import tagTester from './_tagTester.js';\nimport has from './_has.js';\n\nvar isArguments = tagTester('Arguments');\n\n// Define a fallback version of the method in browsers (ahem, IE < 9), where\n// there isn't any inspectable \"Arguments\" type.\n(function() {\n if (!isArguments(arguments)) {\n isArguments = function(obj) {\n return has(obj, 'callee');\n };\n }\n}());\n\nexport default isArguments;\n","import { _isFinite } from './_setup.js';\nimport isSymbol from './isSymbol.js';\n\n// Is a given object a finite number?\nexport default function isFinite(obj) {\n return !isSymbol(obj) && _isFinite(obj) && !isNaN(parseFloat(obj));\n}\n","import { _isNaN } from './_setup.js';\nimport isNumber from './isNumber.js';\n\n// Is the given value `NaN`?\nexport default function isNaN(obj) {\n return isNumber(obj) && _isNaN(obj);\n}\n","// Predicate-generating function. Often useful outside of Underscore.\nexport default function constant(value) {\n return function() {\n return value;\n };\n}\n","import { MAX_ARRAY_INDEX } from './_setup.js';\n\n// Common internal logic for `isArrayLike` and `isBufferLike`.\nexport default function createSizePropertyCheck(getSizeProperty) {\n return function(collection) {\n var sizeProperty = getSizeProperty(collection);\n return typeof sizeProperty == 'number' && sizeProperty >= 0 && sizeProperty <= MAX_ARRAY_INDEX;\n }\n}\n","// Internal helper to generate a function to obtain property `key` from `obj`.\nexport default function shallowProperty(key) {\n return function(obj) {\n return obj == null ? void 0 : obj[key];\n };\n}\n","import shallowProperty from './_shallowProperty.js';\n\n// Internal helper to obtain the `byteLength` property of an object.\nexport default shallowProperty('byteLength');\n","import createSizePropertyCheck from './_createSizePropertyCheck.js';\nimport getByteLength from './_getByteLength.js';\n\n// Internal helper to determine whether we should spend extensive checks against\n// `ArrayBuffer` et al.\nexport default createSizePropertyCheck(getByteLength);\n","import { supportsArrayBuffer, nativeIsView, toString } from './_setup.js';\nimport isDataView from './isDataView.js';\nimport constant from './constant.js';\nimport isBufferLike from './_isBufferLike.js';\n\n// Is a given value a typed array?\nvar typedArrayPattern = /\\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\\]/;\nfunction isTypedArray(obj) {\n // `ArrayBuffer.isView` is the most future-proof, so use it when available.\n // Otherwise, fall back on the above regular expression.\n return nativeIsView ? (nativeIsView(obj) && !isDataView(obj)) :\n isBufferLike(obj) && typedArrayPattern.test(toString.call(obj));\n}\n\nexport default supportsArrayBuffer ? isTypedArray : constant(false);\n","import shallowProperty from './_shallowProperty.js';\n\n// Internal helper to obtain the `length` property of an object.\nexport default shallowProperty('length');\n","import { nonEnumerableProps, ObjProto } from './_setup.js';\nimport isFunction from './isFunction.js';\nimport has from './_has.js';\n\n// Internal helper to create a simple lookup structure.\n// `collectNonEnumProps` used to depend on `_.contains`, but this led to\n// circular imports. `emulatedSet` is a one-off solution that only works for\n// arrays of strings.\nfunction emulatedSet(keys) {\n var hash = {};\n for (var l = keys.length, i = 0; i < l; ++i) hash[keys[i]] = true;\n return {\n contains: function(key) { return hash[key] === true; },\n push: function(key) {\n hash[key] = true;\n return keys.push(key);\n }\n };\n}\n\n// Internal helper. Checks `keys` for the presence of keys in IE < 9 that won't\n// be iterated by `for key in ...` and thus missed. Extends `keys` in place if\n// needed.\nexport default function collectNonEnumProps(obj, keys) {\n keys = emulatedSet(keys);\n var nonEnumIdx = nonEnumerableProps.length;\n var constructor = obj.constructor;\n var proto = (isFunction(constructor) && constructor.prototype) || ObjProto;\n\n // Constructor is a special case.\n var prop = 'constructor';\n if (has(obj, prop) && !keys.contains(prop)) keys.push(prop);\n\n while (nonEnumIdx--) {\n prop = nonEnumerableProps[nonEnumIdx];\n if (prop in obj && obj[prop] !== proto[prop] && !keys.contains(prop)) {\n keys.push(prop);\n }\n }\n}\n","import isObject from './isObject.js';\nimport { nativeKeys, hasEnumBug } from './_setup.js';\nimport has from './_has.js';\nimport collectNonEnumProps from './_collectNonEnumProps.js';\n\n// Retrieve the names of an object's own properties.\n// Delegates to **ECMAScript 5**'s native `Object.keys`.\nexport default function keys(obj) {\n if (!isObject(obj)) return [];\n if (nativeKeys) return nativeKeys(obj);\n var keys = [];\n for (var key in obj) if (has(obj, key)) keys.push(key);\n // Ahem, IE < 9.\n if (hasEnumBug) collectNonEnumProps(obj, keys);\n return keys;\n}\n","import getLength from './_getLength.js';\nimport isArray from './isArray.js';\nimport isString from './isString.js';\nimport isArguments from './isArguments.js';\nimport keys from './keys.js';\n\n// Is a given array, string, or object empty?\n// An \"empty\" object has no enumerable own-properties.\nexport default function isEmpty(obj) {\n if (obj == null) return true;\n // Skip the more expensive `toString`-based type checks if `obj` has no\n // `.length`.\n var length = getLength(obj);\n if (typeof length == 'number' && (\n isArray(obj) || isString(obj) || isArguments(obj)\n )) return length === 0;\n return getLength(keys(obj)) === 0;\n}\n","import keys from './keys.js';\n\n// Returns whether an object has a given set of `key:value` pairs.\nexport default function isMatch(object, attrs) {\n var _keys = keys(attrs), length = _keys.length;\n if (object == null) return !length;\n var obj = Object(object);\n for (var i = 0; i < length; i++) {\n var key = _keys[i];\n if (attrs[key] !== obj[key] || !(key in obj)) return false;\n }\n return true;\n}\n","import { VERSION } from './_setup.js';\n\n// If Underscore is called as a function, it returns a wrapped object that can\n// be used OO-style. This wrapper holds altered versions of all functions added\n// through `_.mixin`. Wrapped objects may be chained.\nexport default function _(obj) {\n if (obj instanceof _) return obj;\n if (!(this instanceof _)) return new _(obj);\n this._wrapped = obj;\n}\n\n_.VERSION = VERSION;\n\n// Extracts the result from a wrapped and chained object.\n_.prototype.value = function() {\n return this._wrapped;\n};\n\n// Provide unwrapping proxies for some methods used in engine operations\n// such as arithmetic and JSON stringification.\n_.prototype.valueOf = _.prototype.toJSON = _.prototype.value;\n\n_.prototype.toString = function() {\n return String(this._wrapped);\n};\n","import getByteLength from './_getByteLength.js';\n\n// Internal function to wrap or shallow-copy an ArrayBuffer,\n// typed array or DataView to a new view, reusing the buffer.\nexport default function toBufferView(bufferSource) {\n return new Uint8Array(\n bufferSource.buffer || bufferSource,\n bufferSource.byteOffset || 0,\n getByteLength(bufferSource)\n );\n}\n","import _ from './underscore.js';\nimport { toString, SymbolProto } from './_setup.js';\nimport getByteLength from './_getByteLength.js';\nimport isTypedArray from './isTypedArray.js';\nimport isFunction from './isFunction.js';\nimport { hasDataViewBug } from './_stringTagBug.js';\nimport isDataView from './isDataView.js';\nimport keys from './keys.js';\nimport has from './_has.js';\nimport toBufferView from './_toBufferView.js';\n\n// We use this string twice, so give it a name for minification.\nvar tagDataView = '[object DataView]';\n\n// Internal recursive comparison function for `_.isEqual`.\nfunction eq(a, b, aStack, bStack) {\n // Identical objects are equal. `0 === -0`, but they aren't identical.\n // See the [Harmony `egal` proposal](https://wiki.ecmascript.org/doku.php?id=harmony:egal).\n if (a === b) return a !== 0 || 1 / a === 1 / b;\n // `null` or `undefined` only equal to itself (strict comparison).\n if (a == null || b == null) return false;\n // `NaN`s are equivalent, but non-reflexive.\n if (a !== a) return b !== b;\n // Exhaust primitive checks\n var type = typeof a;\n if (type !== 'function' && type !== 'object' && typeof b != 'object') return false;\n return deepEq(a, b, aStack, bStack);\n}\n\n// Internal recursive comparison function for `_.isEqual`.\nfunction deepEq(a, b, aStack, bStack) {\n // Unwrap any wrapped objects.\n if (a instanceof _) a = a._wrapped;\n if (b instanceof _) b = b._wrapped;\n // Compare `[[Class]]` names.\n var className = toString.call(a);\n if (className !== toString.call(b)) return false;\n // Work around a bug in IE 10 - Edge 13.\n if (hasDataViewBug && className == '[object Object]' && isDataView(a)) {\n if (!isDataView(b)) return false;\n className = tagDataView;\n }\n switch (className) {\n // These types are compared by value.\n case '[object RegExp]':\n // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i')\n case '[object String]':\n // Primitives and their corresponding object wrappers are equivalent; thus, `\"5\"` is\n // equivalent to `new String(\"5\")`.\n return '' + a === '' + b;\n case '[object Number]':\n // `NaN`s are equivalent, but non-reflexive.\n // Object(NaN) is equivalent to NaN.\n if (+a !== +a) return +b !== +b;\n // An `egal` comparison is performed for other numeric values.\n return +a === 0 ? 1 / +a === 1 / b : +a === +b;\n case '[object Date]':\n case '[object Boolean]':\n // Coerce dates and booleans to numeric primitive values. Dates are compared by their\n // millisecond representations. Note that invalid dates with millisecond representations\n // of `NaN` are not equivalent.\n return +a === +b;\n case '[object Symbol]':\n return SymbolProto.valueOf.call(a) === SymbolProto.valueOf.call(b);\n case '[object ArrayBuffer]':\n case tagDataView:\n // Coerce to typed array so we can fall through.\n return deepEq(toBufferView(a), toBufferView(b), aStack, bStack);\n }\n\n var areArrays = className === '[object Array]';\n if (!areArrays && isTypedArray(a)) {\n var byteLength = getByteLength(a);\n if (byteLength !== getByteLength(b)) return false;\n if (a.buffer === b.buffer && a.byteOffset === b.byteOffset) return true;\n areArrays = true;\n }\n if (!areArrays) {\n if (typeof a != 'object' || typeof b != 'object') return false;\n\n // Objects with different constructors are not equivalent, but `Object`s or `Array`s\n // from different frames are.\n var aCtor = a.constructor, bCtor = b.constructor;\n if (aCtor !== bCtor && !(isFunction(aCtor) && aCtor instanceof aCtor &&\n isFunction(bCtor) && bCtor instanceof bCtor)\n && ('constructor' in a && 'constructor' in b)) {\n return false;\n }\n }\n // Assume equality for cyclic structures. The algorithm for detecting cyclic\n // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.\n\n // Initializing stack of traversed objects.\n // It's done here since we only need them for objects and arrays comparison.\n aStack = aStack || [];\n bStack = bStack || [];\n var length = aStack.length;\n while (length--) {\n // Linear search. Performance is inversely proportional to the number of\n // unique nested structures.\n if (aStack[length] === a) return bStack[length] === b;\n }\n\n // Add the first object to the stack of traversed objects.\n aStack.push(a);\n bStack.push(b);\n\n // Recursively compare objects and arrays.\n if (areArrays) {\n // Compare array lengths to determine if a deep comparison is necessary.\n length = a.length;\n if (length !== b.length) return false;\n // Deep compare the contents, ignoring non-numeric properties.\n while (length--) {\n if (!eq(a[length], b[length], aStack, bStack)) return false;\n }\n } else {\n // Deep compare objects.\n var _keys = keys(a), key;\n length = _keys.length;\n // Ensure that both objects contain the same number of properties before comparing deep equality.\n if (keys(b).length !== length) return false;\n while (length--) {\n // Deep compare each member\n key = _keys[length];\n if (!(has(b, key) && eq(a[key], b[key], aStack, bStack))) return false;\n }\n }\n // Remove the first object from the stack of traversed objects.\n aStack.pop();\n bStack.pop();\n return true;\n}\n\n// Perform a deep comparison to check if two objects are equal.\nexport default function isEqual(a, b) {\n return eq(a, b);\n}\n","import isObject from './isObject.js';\nimport { hasEnumBug } from './_setup.js';\nimport collectNonEnumProps from './_collectNonEnumProps.js';\n\n// Retrieve all the enumerable property names of an object.\nexport default function allKeys(obj) {\n if (!isObject(obj)) return [];\n var keys = [];\n for (var key in obj) keys.push(key);\n // Ahem, IE < 9.\n if (hasEnumBug) collectNonEnumProps(obj, keys);\n return keys;\n}\n","import getLength from './_getLength.js';\nimport isFunction from './isFunction.js';\nimport allKeys from './allKeys.js';\n\n// Since the regular `Object.prototype.toString` type tests don't work for\n// some types in IE 11, we use a fingerprinting heuristic instead, based\n// on the methods. It's not great, but it's the best we got.\n// The fingerprint method lists are defined below.\nexport function ie11fingerprint(methods) {\n var length = getLength(methods);\n return function(obj) {\n if (obj == null) return false;\n // `Map`, `WeakMap` and `Set` have no enumerable keys.\n var keys = allKeys(obj);\n if (getLength(keys)) return false;\n for (var i = 0; i < length; i++) {\n if (!isFunction(obj[methods[i]])) return false;\n }\n // If we are testing against `WeakMap`, we need to ensure that\n // `obj` doesn't have a `forEach` method in order to distinguish\n // it from a regular `Map`.\n return methods !== weakMapMethods || !isFunction(obj[forEachName]);\n };\n}\n\n// In the interest of compact minification, we write\n// each string in the fingerprints only once.\nvar forEachName = 'forEach',\n hasName = 'has',\n commonInit = ['clear', 'delete'],\n mapTail = ['get', hasName, 'set'];\n\n// `Map`, `WeakMap` and `Set` each have slightly different\n// combinations of the above sublists.\nexport var mapMethods = commonInit.concat(forEachName, mapTail),\n weakMapMethods = commonInit.concat(mapTail),\n setMethods = ['add'].concat(commonInit, forEachName, hasName);\n","import tagTester from './_tagTester.js';\nimport { isIE11 } from './_stringTagBug.js';\nimport { ie11fingerprint, mapMethods } from './_methodFingerprint.js';\n\nexport default isIE11 ? ie11fingerprint(mapMethods) : tagTester('Map');\n","import tagTester from './_tagTester.js';\nimport { isIE11 } from './_stringTagBug.js';\nimport { ie11fingerprint, weakMapMethods } from './_methodFingerprint.js';\n\nexport default isIE11 ? ie11fingerprint(weakMapMethods) : tagTester('WeakMap');\n","import tagTester from './_tagTester.js';\nimport { isIE11 } from './_stringTagBug.js';\nimport { ie11fingerprint, setMethods } from './_methodFingerprint.js';\n\nexport default isIE11 ? ie11fingerprint(setMethods) : tagTester('Set');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('WeakSet');\n","import keys from './keys.js';\n\n// Retrieve the values of an object's properties.\nexport default function values(obj) {\n var _keys = keys(obj);\n var length = _keys.length;\n var values = Array(length);\n for (var i = 0; i < length; i++) {\n values[i] = obj[_keys[i]];\n }\n return values;\n}\n","import keys from './keys.js';\n\n// Convert an object into a list of `[key, value]` pairs.\n// The opposite of `_.object` with one argument.\nexport default function pairs(obj) {\n var _keys = keys(obj);\n var length = _keys.length;\n var pairs = Array(length);\n for (var i = 0; i < length; i++) {\n pairs[i] = [_keys[i], obj[_keys[i]]];\n }\n return pairs;\n}\n","import keys from './keys.js';\n\n// Invert the keys and values of an object. The values must be serializable.\nexport default function invert(obj) {\n var result = {};\n var _keys = keys(obj);\n for (var i = 0, length = _keys.length; i < length; i++) {\n result[obj[_keys[i]]] = _keys[i];\n }\n return result;\n}\n","import isFunction from './isFunction.js';\n\n// Return a sorted list of the function names available on the object.\nexport default function functions(obj) {\n var names = [];\n for (var key in obj) {\n if (isFunction(obj[key])) names.push(key);\n }\n return names.sort();\n}\n","// An internal function for creating assigner functions.\nexport default function createAssigner(keysFunc, defaults) {\n return function(obj) {\n var length = arguments.length;\n if (defaults) obj = Object(obj);\n if (length < 2 || obj == null) return obj;\n for (var index = 1; index < length; index++) {\n var source = arguments[index],\n keys = keysFunc(source),\n l = keys.length;\n for (var i = 0; i < l; i++) {\n var key = keys[i];\n if (!defaults || obj[key] === void 0) obj[key] = source[key];\n }\n }\n return obj;\n };\n}\n","import createAssigner from './_createAssigner.js';\nimport allKeys from './allKeys.js';\n\n// Extend a given object with all the properties in passed-in object(s).\nexport default createAssigner(allKeys);\n","import createAssigner from './_createAssigner.js';\nimport keys from './keys.js';\n\n// Assigns a given object with all the own properties in the passed-in\n// object(s).\n// (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign)\nexport default createAssigner(keys);\n","import createAssigner from './_createAssigner.js';\nimport allKeys from './allKeys.js';\n\n// Fill in a given object with default properties.\nexport default createAssigner(allKeys, true);\n","import isObject from './isObject.js';\nimport { nativeCreate } from './_setup.js';\n\n// Create a naked function reference for surrogate-prototype-swapping.\nfunction ctor() {\n return function(){};\n}\n\n// An internal function for creating a new object that inherits from another.\nexport default function baseCreate(prototype) {\n if (!isObject(prototype)) return {};\n if (nativeCreate) return nativeCreate(prototype);\n var Ctor = ctor();\n Ctor.prototype = prototype;\n var result = new Ctor;\n Ctor.prototype = null;\n return result;\n}\n","import baseCreate from './_baseCreate.js';\nimport extendOwn from './extendOwn.js';\n\n// Creates an object that inherits from the given prototype object.\n// If additional properties are provided then they will be added to the\n// created object.\nexport default function create(prototype, props) {\n var result = baseCreate(prototype);\n if (props) extendOwn(result, props);\n return result;\n}\n","import isObject from './isObject.js';\nimport isArray from './isArray.js';\nimport extend from './extend.js';\n\n// Create a (shallow-cloned) duplicate of an object.\nexport default function clone(obj) {\n if (!isObject(obj)) return obj;\n return isArray(obj) ? obj.slice() : extend({}, obj);\n}\n","// Invokes `interceptor` with the `obj` and then returns `obj`.\n// The primary purpose of this method is to \"tap into\" a method chain, in\n// order to perform operations on intermediate results within the chain.\nexport default function tap(obj, interceptor) {\n interceptor(obj);\n return obj;\n}\n","import _ from './underscore.js';\nimport isArray from './isArray.js';\n\n// Normalize a (deep) property `path` to array.\n// Like `_.iteratee`, this function can be customized.\nexport default function toPath(path) {\n return isArray(path) ? path : [path];\n}\n_.toPath = toPath;\n","import _ from './underscore.js';\nimport './toPath.js';\n\n// Internal wrapper for `_.toPath` to enable minification.\n// Similar to `cb` for `_.iteratee`.\nexport default function toPath(path) {\n return _.toPath(path);\n}\n","// Internal function to obtain a nested property in `obj` along `path`.\nexport default function deepGet(obj, path) {\n var length = path.length;\n for (var i = 0; i < length; i++) {\n if (obj == null) return void 0;\n obj = obj[path[i]];\n }\n return length ? obj : void 0;\n}\n","import toPath from './_toPath.js';\nimport deepGet from './_deepGet.js';\nimport isUndefined from './isUndefined.js';\n\n// Get the value of the (deep) property on `path` from `object`.\n// If any property in `path` does not exist or if the value is\n// `undefined`, return `defaultValue` instead.\n// The `path` is normalized through `_.toPath`.\nexport default function get(object, path, defaultValue) {\n var value = deepGet(object, toPath(path));\n return isUndefined(value) ? defaultValue : value;\n}\n","import _has from './_has.js';\nimport toPath from './_toPath.js';\n\n// Shortcut function for checking if an object has a given property directly on\n// itself (in other words, not on a prototype). Unlike the internal `has`\n// function, this public version can also traverse nested properties.\nexport default function has(obj, path) {\n path = toPath(path);\n var length = path.length;\n for (var i = 0; i < length; i++) {\n var key = path[i];\n if (!_has(obj, key)) return false;\n obj = obj[key];\n }\n return !!length;\n}\n","// Keep the identity function around for default iteratees.\nexport default function identity(value) {\n return value;\n}\n","import extendOwn from './extendOwn.js';\nimport isMatch from './isMatch.js';\n\n// Returns a predicate for checking whether an object has a given set of\n// `key:value` pairs.\nexport default function matcher(attrs) {\n attrs = extendOwn({}, attrs);\n return function(obj) {\n return isMatch(obj, attrs);\n };\n}\n","import deepGet from './_deepGet.js';\nimport toPath from './_toPath.js';\n\n// Creates a function that, when passed an object, will traverse that object’s\n// properties down the given `path`, specified as an array of keys or indices.\nexport default function property(path) {\n path = toPath(path);\n return function(obj) {\n return deepGet(obj, path);\n };\n}\n","// Internal function that returns an efficient (for current engines) version\n// of the passed-in callback, to be repeatedly applied in other Underscore\n// functions.\nexport default function optimizeCb(func, context, argCount) {\n if (context === void 0) return func;\n switch (argCount == null ? 3 : argCount) {\n case 1: return function(value) {\n return func.call(context, value);\n };\n // The 2-argument case is omitted because we’re not using it.\n case 3: return function(value, index, collection) {\n return func.call(context, value, index, collection);\n };\n case 4: return function(accumulator, value, index, collection) {\n return func.call(context, accumulator, value, index, collection);\n };\n }\n return function() {\n return func.apply(context, arguments);\n };\n}\n","import identity from './identity.js';\nimport isFunction from './isFunction.js';\nimport isObject from './isObject.js';\nimport isArray from './isArray.js';\nimport matcher from './matcher.js';\nimport property from './property.js';\nimport optimizeCb from './_optimizeCb.js';\n\n// An internal function to generate callbacks that can be applied to each\n// element in a collection, returning the desired result — either `_.identity`,\n// an arbitrary callback, a property matcher, or a property accessor.\nexport default function baseIteratee(value, context, argCount) {\n if (value == null) return identity;\n if (isFunction(value)) return optimizeCb(value, context, argCount);\n if (isObject(value) && !isArray(value)) return matcher(value);\n return property(value);\n}\n","import _ from './underscore.js';\nimport baseIteratee from './_baseIteratee.js';\n\n// External wrapper for our callback generator. Users may customize\n// `_.iteratee` if they want additional predicate/iteratee shorthand styles.\n// This abstraction hides the internal-only `argCount` argument.\nexport default function iteratee(value, context) {\n return baseIteratee(value, context, Infinity);\n}\n_.iteratee = iteratee;\n","import _ from './underscore.js';\nimport baseIteratee from './_baseIteratee.js';\nimport iteratee from './iteratee.js';\n\n// The function we call internally to generate a callback. It invokes\n// `_.iteratee` if overridden, otherwise `baseIteratee`.\nexport default function cb(value, context, argCount) {\n if (_.iteratee !== iteratee) return _.iteratee(value, context);\n return baseIteratee(value, context, argCount);\n}\n","import cb from './_cb.js';\nimport keys from './keys.js';\n\n// Returns the results of applying the `iteratee` to each element of `obj`.\n// In contrast to `_.map` it returns an object.\nexport default function mapObject(obj, iteratee, context) {\n iteratee = cb(iteratee, context);\n var _keys = keys(obj),\n length = _keys.length,\n results = {};\n for (var index = 0; index < length; index++) {\n var currentKey = _keys[index];\n results[currentKey] = iteratee(obj[currentKey], currentKey, obj);\n }\n return results;\n}\n","// Predicate-generating function. Often useful outside of Underscore.\nexport default function noop(){}\n","import noop from './noop.js';\nimport get from './get.js';\n\n// Generates a function for a given object that returns a given property.\nexport default function propertyOf(obj) {\n if (obj == null) return noop;\n return function(path) {\n return get(obj, path);\n };\n}\n","import optimizeCb from './_optimizeCb.js';\n\n// Run a function **n** times.\nexport default function times(n, iteratee, context) {\n var accum = Array(Math.max(0, n));\n iteratee = optimizeCb(iteratee, context, 1);\n for (var i = 0; i < n; i++) accum[i] = iteratee(i);\n return accum;\n}\n","// Return a random integer between `min` and `max` (inclusive).\nexport default function random(min, max) {\n if (max == null) {\n max = min;\n min = 0;\n }\n return min + Math.floor(Math.random() * (max - min + 1));\n}\n","// A (possibly faster) way to get the current timestamp as an integer.\nexport default Date.now || function() {\n return new Date().getTime();\n};\n","import keys from './keys.js';\n\n// Internal helper to generate functions for escaping and unescaping strings\n// to/from HTML interpolation.\nexport default function createEscaper(map) {\n var escaper = function(match) {\n return map[match];\n };\n // Regexes for identifying a key that needs to be escaped.\n var source = '(?:' + keys(map).join('|') + ')';\n var testRegexp = RegExp(source);\n var replaceRegexp = RegExp(source, 'g');\n return function(string) {\n string = string == null ? '' : '' + string;\n return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string;\n };\n}\n","// Internal list of HTML entities for escaping.\nexport default {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '`': '`'\n};\n","import createEscaper from './_createEscaper.js';\nimport escapeMap from './_escapeMap.js';\n\n// Function for escaping strings to HTML interpolation.\nexport default createEscaper(escapeMap);\n","import createEscaper from './_createEscaper.js';\nimport unescapeMap from './_unescapeMap.js';\n\n// Function for unescaping strings from HTML interpolation.\nexport default createEscaper(unescapeMap);\n","import invert from './invert.js';\nimport escapeMap from './_escapeMap.js';\n\n// Internal list of HTML entities for unescaping.\nexport default invert(escapeMap);\n","import _ from './underscore.js';\n\n// By default, Underscore uses ERB-style template delimiters. Change the\n// following template settings to use alternative delimiters.\nexport default _.templateSettings = {\n evaluate: /<%([\\s\\S]+?)%>/g,\n interpolate: /<%=([\\s\\S]+?)%>/g,\n escape: /<%-([\\s\\S]+?)%>/g\n};\n","import defaults from './defaults.js';\nimport _ from './underscore.js';\nimport './templateSettings.js';\n\n// When customizing `_.templateSettings`, if you don't want to define an\n// interpolation, evaluation or escaping regex, we need one that is\n// guaranteed not to match.\nvar noMatch = /(.)^/;\n\n// Certain characters need to be escaped so that they can be put into a\n// string literal.\nvar escapes = {\n \"'\": \"'\",\n '\\\\': '\\\\',\n '\\r': 'r',\n '\\n': 'n',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n};\n\nvar escapeRegExp = /\\\\|'|\\r|\\n|\\u2028|\\u2029/g;\n\nfunction escapeChar(match) {\n return '\\\\' + escapes[match];\n}\n\n// In order to prevent third-party code injection through\n// `_.templateSettings.variable`, we test it against the following regular\n// expression. It is intentionally a bit more liberal than just matching valid\n// identifiers, but still prevents possible loopholes through defaults or\n// destructuring assignment.\nvar bareIdentifier = /^\\s*(\\w|\\$)+\\s*$/;\n\n// JavaScript micro-templating, similar to John Resig's implementation.\n// Underscore templating handles arbitrary delimiters, preserves whitespace,\n// and correctly escapes quotes within interpolated code.\n// NB: `oldSettings` only exists for backwards compatibility.\nexport default function template(text, settings, oldSettings) {\n if (!settings && oldSettings) settings = oldSettings;\n settings = defaults({}, settings, _.templateSettings);\n\n // Combine delimiters into one regular expression via alternation.\n var matcher = RegExp([\n (settings.escape || noMatch).source,\n (settings.interpolate || noMatch).source,\n (settings.evaluate || noMatch).source\n ].join('|') + '|$', 'g');\n\n // Compile the template source, escaping string literals appropriately.\n var index = 0;\n var source = \"__p+='\";\n text.replace(matcher, function(match, escape, interpolate, evaluate, offset) {\n source += text.slice(index, offset).replace(escapeRegExp, escapeChar);\n index = offset + match.length;\n\n if (escape) {\n source += \"'+\\n((__t=(\" + escape + \"))==null?'':_.escape(__t))+\\n'\";\n } else if (interpolate) {\n source += \"'+\\n((__t=(\" + interpolate + \"))==null?'':__t)+\\n'\";\n } else if (evaluate) {\n source += \"';\\n\" + evaluate + \"\\n__p+='\";\n }\n\n // Adobe VMs need the match returned to produce the correct offset.\n return match;\n });\n source += \"';\\n\";\n\n var argument = settings.variable;\n if (argument) {\n // Insure against third-party code injection. (CVE-2021-23358)\n if (!bareIdentifier.test(argument)) throw new Error(\n 'variable is not a bare identifier: ' + argument\n );\n } else {\n // If a variable is not specified, place data values in local scope.\n source = 'with(obj||{}){\\n' + source + '}\\n';\n argument = 'obj';\n }\n\n source = \"var __t,__p='',__j=Array.prototype.join,\" +\n \"print=function(){__p+=__j.call(arguments,'');};\\n\" +\n source + 'return __p;\\n';\n\n var render;\n try {\n render = new Function(argument, '_', source);\n } catch (e) {\n e.source = source;\n throw e;\n }\n\n var template = function(data) {\n return render.call(this, data, _);\n };\n\n // Provide the compiled source as a convenience for precompilation.\n template.source = 'function(' + argument + '){\\n' + source + '}';\n\n return template;\n}\n","import isFunction from './isFunction.js';\nimport toPath from './_toPath.js';\n\n// Traverses the children of `obj` along `path`. If a child is a function, it\n// is invoked with its parent as context. Returns the value of the final\n// child, or `fallback` if any child is undefined.\nexport default function result(obj, path, fallback) {\n path = toPath(path);\n var length = path.length;\n if (!length) {\n return isFunction(fallback) ? fallback.call(obj) : fallback;\n }\n for (var i = 0; i < length; i++) {\n var prop = obj == null ? void 0 : obj[path[i]];\n if (prop === void 0) {\n prop = fallback;\n i = length; // Ensure we don't continue iterating.\n }\n obj = isFunction(prop) ? prop.call(obj) : prop;\n }\n return obj;\n}\n","// Generate a unique integer id (unique within the entire client session).\n// Useful for temporary DOM ids.\nvar idCounter = 0;\nexport default function uniqueId(prefix) {\n var id = ++idCounter + '';\n return prefix ? prefix + id : id;\n}\n","import _ from './underscore.js';\n\n// Start chaining a wrapped Underscore object.\nexport default function chain(obj) {\n var instance = _(obj);\n instance._chain = true;\n return instance;\n}\n","import baseCreate from './_baseCreate.js';\nimport isObject from './isObject.js';\n\n// Internal function to execute `sourceFunc` bound to `context` with optional\n// `args`. Determines whether to execute a function as a constructor or as a\n// normal function.\nexport default function executeBound(sourceFunc, boundFunc, context, callingContext, args) {\n if (!(callingContext instanceof boundFunc)) return sourceFunc.apply(context, args);\n var self = baseCreate(sourceFunc.prototype);\n var result = sourceFunc.apply(self, args);\n if (isObject(result)) return result;\n return self;\n}\n","import restArguments from './restArguments.js';\nimport executeBound from './_executeBound.js';\nimport _ from './underscore.js';\n\n// Partially apply a function by creating a version that has had some of its\n// arguments pre-filled, without changing its dynamic `this` context. `_` acts\n// as a placeholder by default, allowing any combination of arguments to be\n// pre-filled. Set `_.partial.placeholder` for a custom placeholder argument.\nvar partial = restArguments(function(func, boundArgs) {\n var placeholder = partial.placeholder;\n var bound = function() {\n var position = 0, length = boundArgs.length;\n var args = Array(length);\n for (var i = 0; i < length; i++) {\n args[i] = boundArgs[i] === placeholder ? arguments[position++] : boundArgs[i];\n }\n while (position < arguments.length) args.push(arguments[position++]);\n return executeBound(func, bound, this, this, args);\n };\n return bound;\n});\n\npartial.placeholder = _;\nexport default partial;\n","import restArguments from './restArguments.js';\nimport isFunction from './isFunction.js';\nimport executeBound from './_executeBound.js';\n\n// Create a function bound to a given object (assigning `this`, and arguments,\n// optionally).\nexport default restArguments(function(func, context, args) {\n if (!isFunction(func)) throw new TypeError('Bind must be called on a function');\n var bound = restArguments(function(callArgs) {\n return executeBound(func, bound, context, this, args.concat(callArgs));\n });\n return bound;\n});\n","import createSizePropertyCheck from './_createSizePropertyCheck.js';\nimport getLength from './_getLength.js';\n\n// Internal helper for collection methods to determine whether a collection\n// should be iterated as an array or as an object.\n// Related: https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength\n// Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094\nexport default createSizePropertyCheck(getLength);\n","import getLength from './_getLength.js';\nimport isArrayLike from './_isArrayLike.js';\nimport isArray from './isArray.js';\nimport isArguments from './isArguments.js';\n\n// Internal implementation of a recursive `flatten` function.\nexport default function flatten(input, depth, strict, output) {\n output = output || [];\n if (!depth && depth !== 0) {\n depth = Infinity;\n } else if (depth <= 0) {\n return output.concat(input);\n }\n var idx = output.length;\n for (var i = 0, length = getLength(input); i < length; i++) {\n var value = input[i];\n if (isArrayLike(value) && (isArray(value) || isArguments(value))) {\n // Flatten current level of array or arguments object.\n if (depth > 1) {\n flatten(value, depth - 1, strict, output);\n idx = output.length;\n } else {\n var j = 0, len = value.length;\n while (j < len) output[idx++] = value[j++];\n }\n } else if (!strict) {\n output[idx++] = value;\n }\n }\n return output;\n}\n","import restArguments from './restArguments.js';\nimport flatten from './_flatten.js';\nimport bind from './bind.js';\n\n// Bind a number of an object's methods to that object. Remaining arguments\n// are the method names to be bound. Useful for ensuring that all callbacks\n// defined on an object belong to it.\nexport default restArguments(function(obj, keys) {\n keys = flatten(keys, false, false);\n var index = keys.length;\n if (index < 1) throw new Error('bindAll must be passed function names');\n while (index--) {\n var key = keys[index];\n obj[key] = bind(obj[key], obj);\n }\n return obj;\n});\n","import has from './_has.js';\n\n// Memoize an expensive function by storing its results.\nexport default function memoize(func, hasher) {\n var memoize = function(key) {\n var cache = memoize.cache;\n var address = '' + (hasher ? hasher.apply(this, arguments) : key);\n if (!has(cache, address)) cache[address] = func.apply(this, arguments);\n return cache[address];\n };\n memoize.cache = {};\n return memoize;\n}\n","import restArguments from './restArguments.js';\n\n// Delays a function for the given number of milliseconds, and then calls\n// it with the arguments supplied.\nexport default restArguments(function(func, wait, args) {\n return setTimeout(function() {\n return func.apply(null, args);\n }, wait);\n});\n","import partial from './partial.js';\nimport delay from './delay.js';\nimport _ from './underscore.js';\n\n// Defers a function, scheduling it to run after the current call stack has\n// cleared.\nexport default partial(delay, _, 1);\n","import now from './now.js';\n\n// Returns a function, that, when invoked, will only be triggered at most once\n// during a given window of time. Normally, the throttled function will run\n// as much as it can, without ever going more than once per `wait` duration;\n// but if you'd like to disable the execution on the leading edge, pass\n// `{leading: false}`. To disable execution on the trailing edge, ditto.\nexport default function throttle(func, wait, options) {\n var timeout, context, args, result;\n var previous = 0;\n if (!options) options = {};\n\n var later = function() {\n previous = options.leading === false ? 0 : now();\n timeout = null;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n };\n\n var throttled = function() {\n var _now = now();\n if (!previous && options.leading === false) previous = _now;\n var remaining = wait - (_now - previous);\n context = this;\n args = arguments;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = _now;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n return result;\n };\n\n throttled.cancel = function() {\n clearTimeout(timeout);\n previous = 0;\n timeout = context = args = null;\n };\n\n return throttled;\n}\n","import restArguments from './restArguments.js';\nimport now from './now.js';\n\n// When a sequence of calls of the returned function ends, the argument\n// function is triggered. The end of a sequence is defined by the `wait`\n// parameter. If `immediate` is passed, the argument function will be\n// triggered at the beginning of the sequence instead of at the end.\nexport default function debounce(func, wait, immediate) {\n var timeout, previous, args, result, context;\n\n var later = function() {\n var passed = now() - previous;\n if (wait > passed) {\n timeout = setTimeout(later, wait - passed);\n } else {\n timeout = null;\n if (!immediate) result = func.apply(context, args);\n // This check is needed because `func` can recursively invoke `debounced`.\n if (!timeout) args = context = null;\n }\n };\n\n var debounced = restArguments(function(_args) {\n context = this;\n args = _args;\n previous = now();\n if (!timeout) {\n timeout = setTimeout(later, wait);\n if (immediate) result = func.apply(context, args);\n }\n return result;\n });\n\n debounced.cancel = function() {\n clearTimeout(timeout);\n timeout = args = context = null;\n };\n\n return debounced;\n}\n","import partial from './partial.js';\n\n// Returns the first function passed as an argument to the second,\n// allowing you to adjust arguments, run code before and after, and\n// conditionally execute the original function.\nexport default function wrap(func, wrapper) {\n return partial(wrapper, func);\n}\n","// Returns a negated version of the passed-in predicate.\nexport default function negate(predicate) {\n return function() {\n return !predicate.apply(this, arguments);\n };\n}\n","// Returns a function that is the composition of a list of functions, each\n// consuming the return value of the function that follows.\nexport default function compose() {\n var args = arguments;\n var start = args.length - 1;\n return function() {\n var i = start;\n var result = args[start].apply(this, arguments);\n while (i--) result = args[i].call(this, result);\n return result;\n };\n}\n","// Returns a function that will only be executed on and after the Nth call.\nexport default function after(times, func) {\n return function() {\n if (--times < 1) {\n return func.apply(this, arguments);\n }\n };\n}\n","// Returns a function that will only be executed up to (but not including) the\n// Nth call.\nexport default function before(times, func) {\n var memo;\n return function() {\n if (--times > 0) {\n memo = func.apply(this, arguments);\n }\n if (times <= 1) func = null;\n return memo;\n };\n}\n","import partial from './partial.js';\nimport before from './before.js';\n\n// Returns a function that will be executed at most one time, no matter how\n// often you call it. Useful for lazy initialization.\nexport default partial(before, 2);\n","import cb from './_cb.js';\nimport keys from './keys.js';\n\n// Returns the first key on an object that passes a truth test.\nexport default function findKey(obj, predicate, context) {\n predicate = cb(predicate, context);\n var _keys = keys(obj), key;\n for (var i = 0, length = _keys.length; i < length; i++) {\n key = _keys[i];\n if (predicate(obj[key], key, obj)) return key;\n }\n}\n","import cb from './_cb.js';\nimport getLength from './_getLength.js';\n\n// Internal function to generate `_.findIndex` and `_.findLastIndex`.\nexport default function createPredicateIndexFinder(dir) {\n return function(array, predicate, context) {\n predicate = cb(predicate, context);\n var length = getLength(array);\n var index = dir > 0 ? 0 : length - 1;\n for (; index >= 0 && index < length; index += dir) {\n if (predicate(array[index], index, array)) return index;\n }\n return -1;\n };\n}\n","import createPredicateIndexFinder from './_createPredicateIndexFinder.js';\n\n// Returns the first index on an array-like that passes a truth test.\nexport default createPredicateIndexFinder(1);\n","import createPredicateIndexFinder from './_createPredicateIndexFinder.js';\n\n// Returns the last index on an array-like that passes a truth test.\nexport default createPredicateIndexFinder(-1);\n","import cb from './_cb.js';\nimport getLength from './_getLength.js';\n\n// Use a comparator function to figure out the smallest index at which\n// an object should be inserted so as to maintain order. Uses binary search.\nexport default function sortedIndex(array, obj, iteratee, context) {\n iteratee = cb(iteratee, context, 1);\n var value = iteratee(obj);\n var low = 0, high = getLength(array);\n while (low < high) {\n var mid = Math.floor((low + high) / 2);\n if (iteratee(array[mid]) < value) low = mid + 1; else high = mid;\n }\n return low;\n}\n","import getLength from './_getLength.js';\nimport { slice } from './_setup.js';\nimport isNaN from './isNaN.js';\n\n// Internal function to generate the `_.indexOf` and `_.lastIndexOf` functions.\nexport default function createIndexFinder(dir, predicateFind, sortedIndex) {\n return function(array, item, idx) {\n var i = 0, length = getLength(array);\n if (typeof idx == 'number') {\n if (dir > 0) {\n i = idx >= 0 ? idx : Math.max(idx + length, i);\n } else {\n length = idx >= 0 ? Math.min(idx + 1, length) : idx + length + 1;\n }\n } else if (sortedIndex && idx && length) {\n idx = sortedIndex(array, item);\n return array[idx] === item ? idx : -1;\n }\n if (item !== item) {\n idx = predicateFind(slice.call(array, i, length), isNaN);\n return idx >= 0 ? idx + i : -1;\n }\n for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) {\n if (array[idx] === item) return idx;\n }\n return -1;\n };\n}\n","import sortedIndex from './sortedIndex.js';\nimport findIndex from './findIndex.js';\nimport createIndexFinder from './_createIndexFinder.js';\n\n// Return the position of the first occurrence of an item in an array,\n// or -1 if the item is not included in the array.\n// If the array is large and already in sort order, pass `true`\n// for **isSorted** to use binary search.\nexport default createIndexFinder(1, findIndex, sortedIndex);\n","import findLastIndex from './findLastIndex.js';\nimport createIndexFinder from './_createIndexFinder.js';\n\n// Return the position of the last occurrence of an item in an array,\n// or -1 if the item is not included in the array.\nexport default createIndexFinder(-1, findLastIndex);\n","import isArrayLike from './_isArrayLike.js';\nimport findIndex from './findIndex.js';\nimport findKey from './findKey.js';\n\n// Return the first value which passes a truth test.\nexport default function find(obj, predicate, context) {\n var keyFinder = isArrayLike(obj) ? findIndex : findKey;\n var key = keyFinder(obj, predicate, context);\n if (key !== void 0 && key !== -1) return obj[key];\n}\n","import find from './find.js';\nimport matcher from './matcher.js';\n\n// Convenience version of a common use case of `_.find`: getting the first\n// object containing specific `key:value` pairs.\nexport default function findWhere(obj, attrs) {\n return find(obj, matcher(attrs));\n}\n","import optimizeCb from './_optimizeCb.js';\nimport isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// The cornerstone for collection functions, an `each`\n// implementation, aka `forEach`.\n// Handles raw objects in addition to array-likes. Treats all\n// sparse array-likes as if they were dense.\nexport default function each(obj, iteratee, context) {\n iteratee = optimizeCb(iteratee, context);\n var i, length;\n if (isArrayLike(obj)) {\n for (i = 0, length = obj.length; i < length; i++) {\n iteratee(obj[i], i, obj);\n }\n } else {\n var _keys = keys(obj);\n for (i = 0, length = _keys.length; i < length; i++) {\n iteratee(obj[_keys[i]], _keys[i], obj);\n }\n }\n return obj;\n}\n","import cb from './_cb.js';\nimport isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// Return the results of applying the iteratee to each element.\nexport default function map(obj, iteratee, context) {\n iteratee = cb(iteratee, context);\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length,\n results = Array(length);\n for (var index = 0; index < length; index++) {\n var currentKey = _keys ? _keys[index] : index;\n results[index] = iteratee(obj[currentKey], currentKey, obj);\n }\n return results;\n}\n","import isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\nimport optimizeCb from './_optimizeCb.js';\n\n// Internal helper to create a reducing function, iterating left or right.\nexport default function createReduce(dir) {\n // Wrap code that reassigns argument variables in a separate function than\n // the one that accesses `arguments.length` to avoid a perf hit. (#1991)\n var reducer = function(obj, iteratee, memo, initial) {\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length,\n index = dir > 0 ? 0 : length - 1;\n if (!initial) {\n memo = obj[_keys ? _keys[index] : index];\n index += dir;\n }\n for (; index >= 0 && index < length; index += dir) {\n var currentKey = _keys ? _keys[index] : index;\n memo = iteratee(memo, obj[currentKey], currentKey, obj);\n }\n return memo;\n };\n\n return function(obj, iteratee, memo, context) {\n var initial = arguments.length >= 3;\n return reducer(obj, optimizeCb(iteratee, context, 4), memo, initial);\n };\n}\n","import createReduce from './_createReduce.js';\n\n// **Reduce** builds up a single result from a list of values, aka `inject`,\n// or `foldl`.\nexport default createReduce(1);\n","import createReduce from './_createReduce.js';\n\n// The right-associative version of reduce, also known as `foldr`.\nexport default createReduce(-1);\n","import cb from './_cb.js';\nimport each from './each.js';\n\n// Return all the elements that pass a truth test.\nexport default function filter(obj, predicate, context) {\n var results = [];\n predicate = cb(predicate, context);\n each(obj, function(value, index, list) {\n if (predicate(value, index, list)) results.push(value);\n });\n return results;\n}\n","import filter from './filter.js';\nimport negate from './negate.js';\nimport cb from './_cb.js';\n\n// Return all the elements for which a truth test fails.\nexport default function reject(obj, predicate, context) {\n return filter(obj, negate(cb(predicate)), context);\n}\n","import cb from './_cb.js';\nimport isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// Determine whether all of the elements pass a truth test.\nexport default function every(obj, predicate, context) {\n predicate = cb(predicate, context);\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length;\n for (var index = 0; index < length; index++) {\n var currentKey = _keys ? _keys[index] : index;\n if (!predicate(obj[currentKey], currentKey, obj)) return false;\n }\n return true;\n}\n","import cb from './_cb.js';\nimport isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// Determine if at least one element in the object passes a truth test.\nexport default function some(obj, predicate, context) {\n predicate = cb(predicate, context);\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length;\n for (var index = 0; index < length; index++) {\n var currentKey = _keys ? _keys[index] : index;\n if (predicate(obj[currentKey], currentKey, obj)) return true;\n }\n return false;\n}\n","import isArrayLike from './_isArrayLike.js';\nimport values from './values.js';\nimport indexOf from './indexOf.js';\n\n// Determine if the array or object contains a given item (using `===`).\nexport default function contains(obj, item, fromIndex, guard) {\n if (!isArrayLike(obj)) obj = values(obj);\n if (typeof fromIndex != 'number' || guard) fromIndex = 0;\n return indexOf(obj, item, fromIndex) >= 0;\n}\n","import restArguments from './restArguments.js';\nimport isFunction from './isFunction.js';\nimport map from './map.js';\nimport deepGet from './_deepGet.js';\nimport toPath from './_toPath.js';\n\n// Invoke a method (with arguments) on every item in a collection.\nexport default restArguments(function(obj, path, args) {\n var contextPath, func;\n if (isFunction(path)) {\n func = path;\n } else {\n path = toPath(path);\n contextPath = path.slice(0, -1);\n path = path[path.length - 1];\n }\n return map(obj, function(context) {\n var method = func;\n if (!method) {\n if (contextPath && contextPath.length) {\n context = deepGet(context, contextPath);\n }\n if (context == null) return void 0;\n method = context[path];\n }\n return method == null ? method : method.apply(context, args);\n });\n});\n","import map from './map.js';\nimport property from './property.js';\n\n// Convenience version of a common use case of `_.map`: fetching a property.\nexport default function pluck(obj, key) {\n return map(obj, property(key));\n}\n","import filter from './filter.js';\nimport matcher from './matcher.js';\n\n// Convenience version of a common use case of `_.filter`: selecting only\n// objects containing specific `key:value` pairs.\nexport default function where(obj, attrs) {\n return filter(obj, matcher(attrs));\n}\n","import isArrayLike from './_isArrayLike.js';\nimport values from './values.js';\nimport cb from './_cb.js';\nimport each from './each.js';\n\n// Return the maximum element (or element-based computation).\nexport default function max(obj, iteratee, context) {\n var result = -Infinity, lastComputed = -Infinity,\n value, computed;\n if (iteratee == null || (typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null)) {\n obj = isArrayLike(obj) ? obj : values(obj);\n for (var i = 0, length = obj.length; i < length; i++) {\n value = obj[i];\n if (value != null && value > result) {\n result = value;\n }\n }\n } else {\n iteratee = cb(iteratee, context);\n each(obj, function(v, index, list) {\n computed = iteratee(v, index, list);\n if (computed > lastComputed || (computed === -Infinity && result === -Infinity)) {\n result = v;\n lastComputed = computed;\n }\n });\n }\n return result;\n}\n","import isArrayLike from './_isArrayLike.js';\nimport values from './values.js';\nimport cb from './_cb.js';\nimport each from './each.js';\n\n// Return the minimum element (or element-based computation).\nexport default function min(obj, iteratee, context) {\n var result = Infinity, lastComputed = Infinity,\n value, computed;\n if (iteratee == null || (typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null)) {\n obj = isArrayLike(obj) ? obj : values(obj);\n for (var i = 0, length = obj.length; i < length; i++) {\n value = obj[i];\n if (value != null && value < result) {\n result = value;\n }\n }\n } else {\n iteratee = cb(iteratee, context);\n each(obj, function(v, index, list) {\n computed = iteratee(v, index, list);\n if (computed < lastComputed || (computed === Infinity && result === Infinity)) {\n result = v;\n lastComputed = computed;\n }\n });\n }\n return result;\n}\n","import isArray from './isArray.js';\nimport { slice } from './_setup.js';\nimport isString from './isString.js';\nimport isArrayLike from './_isArrayLike.js';\nimport map from './map.js';\nimport identity from './identity.js';\nimport values from './values.js';\n\n// Safely create a real, live array from anything iterable.\nvar reStrSymbol = /[^\\ud800-\\udfff]|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\ud800-\\udfff]/g;\nexport default function toArray(obj) {\n if (!obj) return [];\n if (isArray(obj)) return slice.call(obj);\n if (isString(obj)) {\n // Keep surrogate pair characters together.\n return obj.match(reStrSymbol);\n }\n if (isArrayLike(obj)) return map(obj, identity);\n return values(obj);\n}\n","import isArrayLike from './_isArrayLike.js';\nimport values from './values.js';\nimport getLength from './_getLength.js';\nimport random from './random.js';\nimport toArray from './toArray.js';\n\n// Sample **n** random values from a collection using the modern version of the\n// [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher–Yates_shuffle).\n// If **n** is not specified, returns a single random element.\n// The internal `guard` argument allows it to work with `_.map`.\nexport default function sample(obj, n, guard) {\n if (n == null || guard) {\n if (!isArrayLike(obj)) obj = values(obj);\n return obj[random(obj.length - 1)];\n }\n var sample = toArray(obj);\n var length = getLength(sample);\n n = Math.max(Math.min(n, length), 0);\n var last = length - 1;\n for (var index = 0; index < n; index++) {\n var rand = random(index, last);\n var temp = sample[index];\n sample[index] = sample[rand];\n sample[rand] = temp;\n }\n return sample.slice(0, n);\n}\n","import sample from './sample.js';\n\n// Shuffle a collection.\nexport default function shuffle(obj) {\n return sample(obj, Infinity);\n}\n","import cb from './_cb.js';\nimport pluck from './pluck.js';\nimport map from './map.js';\n\n// Sort the object's values by a criterion produced by an iteratee.\nexport default function sortBy(obj, iteratee, context) {\n var index = 0;\n iteratee = cb(iteratee, context);\n return pluck(map(obj, function(value, key, list) {\n return {\n value: value,\n index: index++,\n criteria: iteratee(value, key, list)\n };\n }).sort(function(left, right) {\n var a = left.criteria;\n var b = right.criteria;\n if (a !== b) {\n if (a > b || a === void 0) return 1;\n if (a < b || b === void 0) return -1;\n }\n return left.index - right.index;\n }), 'value');\n}\n","import cb from './_cb.js';\nimport each from './each.js';\n\n// An internal function used for aggregate \"group by\" operations.\nexport default function group(behavior, partition) {\n return function(obj, iteratee, context) {\n var result = partition ? [[], []] : {};\n iteratee = cb(iteratee, context);\n each(obj, function(value, index) {\n var key = iteratee(value, index, obj);\n behavior(result, value, key);\n });\n return result;\n };\n}\n","import group from './_group.js';\nimport has from './_has.js';\n\n// Groups the object's values by a criterion. Pass either a string attribute\n// to group by, or a function that returns the criterion.\nexport default group(function(result, value, key) {\n if (has(result, key)) result[key].push(value); else result[key] = [value];\n});\n","import group from './_group.js';\n\n// Indexes the object's values by a criterion, similar to `_.groupBy`, but for\n// when you know that your index values will be unique.\nexport default group(function(result, value, key) {\n result[key] = value;\n});\n","import group from './_group.js';\nimport has from './_has.js';\n\n// Counts instances of an object that group by a certain criterion. Pass\n// either a string attribute to count by, or a function that returns the\n// criterion.\nexport default group(function(result, value, key) {\n if (has(result, key)) result[key]++; else result[key] = 1;\n});\n","import group from './_group.js';\n\n// Split a collection into two arrays: one whose elements all pass the given\n// truth test, and one whose elements all do not pass the truth test.\nexport default group(function(result, value, pass) {\n result[pass ? 0 : 1].push(value);\n}, true);\n","import isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// Return the number of elements in a collection.\nexport default function size(obj) {\n if (obj == null) return 0;\n return isArrayLike(obj) ? obj.length : keys(obj).length;\n}\n","// Internal `_.pick` helper function to determine whether `key` is an enumerable\n// property name of `obj`.\nexport default function keyInObj(value, key, obj) {\n return key in obj;\n}\n","import restArguments from './restArguments.js';\nimport isFunction from './isFunction.js';\nimport optimizeCb from './_optimizeCb.js';\nimport allKeys from './allKeys.js';\nimport keyInObj from './_keyInObj.js';\nimport flatten from './_flatten.js';\n\n// Return a copy of the object only containing the allowed properties.\nexport default restArguments(function(obj, keys) {\n var result = {}, iteratee = keys[0];\n if (obj == null) return result;\n if (isFunction(iteratee)) {\n if (keys.length > 1) iteratee = optimizeCb(iteratee, keys[1]);\n keys = allKeys(obj);\n } else {\n iteratee = keyInObj;\n keys = flatten(keys, false, false);\n obj = Object(obj);\n }\n for (var i = 0, length = keys.length; i < length; i++) {\n var key = keys[i];\n var value = obj[key];\n if (iteratee(value, key, obj)) result[key] = value;\n }\n return result;\n});\n","import restArguments from './restArguments.js';\nimport isFunction from './isFunction.js';\nimport negate from './negate.js';\nimport map from './map.js';\nimport flatten from './_flatten.js';\nimport contains from './contains.js';\nimport pick from './pick.js';\n\n// Return a copy of the object without the disallowed properties.\nexport default restArguments(function(obj, keys) {\n var iteratee = keys[0], context;\n if (isFunction(iteratee)) {\n iteratee = negate(iteratee);\n if (keys.length > 1) context = keys[1];\n } else {\n keys = map(flatten(keys, false, false), String);\n iteratee = function(value, key) {\n return !contains(keys, key);\n };\n }\n return pick(obj, iteratee, context);\n});\n","import { slice } from './_setup.js';\n\n// Returns everything but the last entry of the array. Especially useful on\n// the arguments object. Passing **n** will return all the values in\n// the array, excluding the last N.\nexport default function initial(array, n, guard) {\n return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n)));\n}\n","import initial from './initial.js';\n\n// Get the first element of an array. Passing **n** will return the first N\n// values in the array. The **guard** check allows it to work with `_.map`.\nexport default function first(array, n, guard) {\n if (array == null || array.length < 1) return n == null || guard ? void 0 : [];\n if (n == null || guard) return array[0];\n return initial(array, array.length - n);\n}\n","import { slice } from './_setup.js';\n\n// Returns everything but the first entry of the `array`. Especially useful on\n// the `arguments` object. Passing an **n** will return the rest N values in the\n// `array`.\nexport default function rest(array, n, guard) {\n return slice.call(array, n == null || guard ? 1 : n);\n}\n","import rest from './rest.js';\n\n// Get the last element of an array. Passing **n** will return the last N\n// values in the array.\nexport default function last(array, n, guard) {\n if (array == null || array.length < 1) return n == null || guard ? void 0 : [];\n if (n == null || guard) return array[array.length - 1];\n return rest(array, Math.max(0, array.length - n));\n}\n","import filter from './filter.js';\n\n// Trim out all falsy values from an array.\nexport default function compact(array) {\n return filter(array, Boolean);\n}\n","import _flatten from './_flatten.js';\n\n// Flatten out an array, either recursively (by default), or up to `depth`.\n// Passing `true` or `false` as `depth` means `1` or `Infinity`, respectively.\nexport default function flatten(array, depth) {\n return _flatten(array, depth, false);\n}\n","import restArguments from './restArguments.js';\nimport flatten from './_flatten.js';\nimport filter from './filter.js';\nimport contains from './contains.js';\n\n// Take the difference between one array and a number of other arrays.\n// Only the elements present in just the first array will remain.\nexport default restArguments(function(array, rest) {\n rest = flatten(rest, true, true);\n return filter(array, function(value){\n return !contains(rest, value);\n });\n});\n","import restArguments from './restArguments.js';\nimport difference from './difference.js';\n\n// Return a version of the array that does not contain the specified value(s).\nexport default restArguments(function(array, otherArrays) {\n return difference(array, otherArrays);\n});\n","import isBoolean from './isBoolean.js';\nimport cb from './_cb.js';\nimport getLength from './_getLength.js';\nimport contains from './contains.js';\n\n// Produce a duplicate-free version of the array. If the array has already\n// been sorted, you have the option of using a faster algorithm.\n// The faster algorithm will not work with an iteratee if the iteratee\n// is not a one-to-one function, so providing an iteratee will disable\n// the faster algorithm.\nexport default function uniq(array, isSorted, iteratee, context) {\n if (!isBoolean(isSorted)) {\n context = iteratee;\n iteratee = isSorted;\n isSorted = false;\n }\n if (iteratee != null) iteratee = cb(iteratee, context);\n var result = [];\n var seen = [];\n for (var i = 0, length = getLength(array); i < length; i++) {\n var value = array[i],\n computed = iteratee ? iteratee(value, i, array) : value;\n if (isSorted && !iteratee) {\n if (!i || seen !== computed) result.push(value);\n seen = computed;\n } else if (iteratee) {\n if (!contains(seen, computed)) {\n seen.push(computed);\n result.push(value);\n }\n } else if (!contains(result, value)) {\n result.push(value);\n }\n }\n return result;\n}\n","import restArguments from './restArguments.js';\nimport uniq from './uniq.js';\nimport flatten from './_flatten.js';\n\n// Produce an array that contains the union: each distinct element from all of\n// the passed-in arrays.\nexport default restArguments(function(arrays) {\n return uniq(flatten(arrays, true, true));\n});\n","import getLength from './_getLength.js';\nimport contains from './contains.js';\n\n// Produce an array that contains every item shared between all the\n// passed-in arrays.\nexport default function intersection(array) {\n var result = [];\n var argsLength = arguments.length;\n for (var i = 0, length = getLength(array); i < length; i++) {\n var item = array[i];\n if (contains(result, item)) continue;\n var j;\n for (j = 1; j < argsLength; j++) {\n if (!contains(arguments[j], item)) break;\n }\n if (j === argsLength) result.push(item);\n }\n return result;\n}\n","import max from './max.js';\nimport getLength from './_getLength.js';\nimport pluck from './pluck.js';\n\n// Complement of zip. Unzip accepts an array of arrays and groups\n// each array's elements on shared indices.\nexport default function unzip(array) {\n var length = (array && max(array, getLength).length) || 0;\n var result = Array(length);\n\n for (var index = 0; index < length; index++) {\n result[index] = pluck(array, index);\n }\n return result;\n}\n","import restArguments from './restArguments.js';\nimport unzip from './unzip.js';\n\n// Zip together multiple lists into a single array -- elements that share\n// an index go together.\nexport default restArguments(unzip);\n","import getLength from './_getLength.js';\n\n// Converts lists into objects. Pass either a single array of `[key, value]`\n// pairs, or two parallel arrays of the same length -- one of keys, and one of\n// the corresponding values. Passing by pairs is the reverse of `_.pairs`.\nexport default function object(list, values) {\n var result = {};\n for (var i = 0, length = getLength(list); i < length; i++) {\n if (values) {\n result[list[i]] = values[i];\n } else {\n result[list[i][0]] = list[i][1];\n }\n }\n return result;\n}\n","// Generate an integer Array containing an arithmetic progression. A port of\n// the native Python `range()` function. See\n// [the Python documentation](https://docs.python.org/library/functions.html#range).\nexport default function range(start, stop, step) {\n if (stop == null) {\n stop = start || 0;\n start = 0;\n }\n if (!step) {\n step = stop < start ? -1 : 1;\n }\n\n var length = Math.max(Math.ceil((stop - start) / step), 0);\n var range = Array(length);\n\n for (var idx = 0; idx < length; idx++, start += step) {\n range[idx] = start;\n }\n\n return range;\n}\n","import { slice } from './_setup.js';\n\n// Chunk a single array into multiple arrays, each containing `count` or fewer\n// items.\nexport default function chunk(array, count) {\n if (count == null || count < 1) return [];\n var result = [];\n var i = 0, length = array.length;\n while (i < length) {\n result.push(slice.call(array, i, i += count));\n }\n return result;\n}\n","import _ from './underscore.js';\n\n// Helper function to continue chaining intermediate results.\nexport default function chainResult(instance, obj) {\n return instance._chain ? _(obj).chain() : obj;\n}\n","import _ from './underscore.js';\nimport each from './each.js';\nimport functions from './functions.js';\nimport { push } from './_setup.js';\nimport chainResult from './_chainResult.js';\n\n// Add your own custom functions to the Underscore object.\nexport default function mixin(obj) {\n each(functions(obj), function(name) {\n var func = _[name] = obj[name];\n _.prototype[name] = function() {\n var args = [this._wrapped];\n push.apply(args, arguments);\n return chainResult(this, func.apply(_, args));\n };\n });\n return _;\n}\n","import _ from './underscore.js';\nimport each from './each.js';\nimport { ArrayProto } from './_setup.js';\nimport chainResult from './_chainResult.js';\n\n// Add all mutator `Array` functions to the wrapper.\neach(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) {\n var method = ArrayProto[name];\n _.prototype[name] = function() {\n var obj = this._wrapped;\n if (obj != null) {\n method.apply(obj, arguments);\n if ((name === 'shift' || name === 'splice') && obj.length === 0) {\n delete obj[0];\n }\n }\n return chainResult(this, obj);\n };\n});\n\n// Add all accessor `Array` functions to the wrapper.\neach(['concat', 'join', 'slice'], function(name) {\n var method = ArrayProto[name];\n _.prototype[name] = function() {\n var obj = this._wrapped;\n if (obj != null) obj = method.apply(obj, arguments);\n return chainResult(this, obj);\n };\n});\n\nexport default _;\n","// Default Export\n// ==============\n// In this module, we mix our bundled exports into the `_` object and export\n// the result. This is analogous to setting `module.exports = _` in CommonJS.\n// Hence, this module is also the entry point of our UMD bundle and the package\n// entry point for CommonJS and AMD users. In other words, this is (the source\n// of) the module you are interfacing with when you do any of the following:\n//\n// ```js\n// // CommonJS\n// var _ = require('underscore');\n//\n// // AMD\n// define(['underscore'], function(_) {...});\n//\n// // UMD in the browser\n// // _ is available as a global variable\n// ```\nimport * as allExports from './index.js';\nimport { mixin } from './index.js';\n\n// Add all of the Underscore functions to the wrapper object.\nvar _ = mixin(allExports);\n// Legacy Node.js API.\n_._ = _;\n// Export the Underscore API.\nexport default _;\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 \"\" + chunkId + \"-\" + chunkId + \".js?v=\" + {\"802\":\"eddac441912aee9d7aa8\",\"1642\":\"0e50a2b32d2d64b50afa\",\"9291\":\"077955af818a227340aa\"}[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 = 1418;","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(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = 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\t1418: 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 = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\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\"] = self[\"webpackChunknextcloud\"] || [];\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__(9321)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","updatableNotification","getDefaultNotificationFunction","setDefault","callback","this","hide","$row","_","undefined","each","$","toastify","hideToast","console","error","call","showHtml","html","options","isHTML","timeout","TOAST_PERMANENT_TIMEOUT","toast","showMessage","toastElement","show","text","toString","split","join","escapeHTML","showUpdate","showTemporary","TOAST_DEFAULT_TIMEOUT","isHidden","find","length","ajaxConnectionLostHandler","showWarning","t","trailing","dynamicSlideToggleEnabled","enableDynamicSlideToggle","Apps","$el","removeClass","trigger","addClass","method","endpoint","OC","PasswordConfirmation","requiresPasswordConfirmation","type","toUpperCase","url","generateOcsUrl","data","success","requirePasswordConfirmation","bind","appConfig","window","oc_appconfig","AppConfig","getValue","app","key","defaultValue","setValue","value","getApps","getKeys","deleteKey","_oc_appswebroots","methodMap","create","update","patch","delete","read","parsePropFindResult","result","davProperties","subResult","props","href","propStat","status","properties","propKey","id","parseIdFromLocation","queryPos","indexOf","substr","parts","pop","isSuccessStatus","callPropPatch","client","model","headers","propPatch","attrs","changedProp","warn","convertModelAttributesToDavProperties","changed","then","toJSON","Backbone","VendorBackbone","Object","assign","davCall","dav","Client","baseUrl","xmlNamespaces","resolveUrl","requestToken","propFind","depth","response","propsMapping","results","body","shift","callPropFind","request","callMkCol","responseJson","locationHeader","xhr","getResponseHeader","callMethod","davSync","params","isCollection","Collection","hasInnerCollection","usePUT","collection","Error","urlError","JSON","stringify","processData","prototype","textStatus","errorThrown","context","_oc_config","rawUid","document","getElementsByTagName","getAttribute","displayName","currentUser","Dialogs","YES_NO_BUTTONS","OK_BUTTONS","FILEPICKER_TYPE_CHOOSE","FILEPICKER_TYPE_MOVE","FILEPICKER_TYPE_COPY","FILEPICKER_TYPE_COPY_MOVE","FILEPICKER_TYPE_CUSTOM","alert","title","modal","message","OK_BUTTON","info","confirm","confirmDestructive","buttons","arguments","DialogBuilder","setName","setText","setButtons","label","clicked","_getLegacyButtons","build","confirmHtml","setHTML","prompt","name","password","Promise","resolve","spawnDialog","defineAsyncComponent","inputName","isPassword","filepicker","multiselect","mimetype","FilePickerType","Choose","path","legacyCallback","fn","getPath","node","root","startsWith","slice","nodes","map","builder","getFilePickerBuilder","forEach","button","addButton","defaultButton","setButtonFactory","attributes","basename","target","push","multiSelect","file","CopyMove","Copy","icon","IconCopy","Move","IconMove","setMimeTypeFilter","filter","setFilter","fileid","mime","mtime","getTime","permissions","etag","hasPreview","mountType","quotaAvailableBytes","sharePermissions","nodeToLegacyFile","allowDirectories","allowDirectoryChooser","includes","setMultiSelect","startAt","pick","content","dialogType","allowHtml","setSeverity","dialog","_clicked","buttonList","cancel","_fileexistsshown","fileexists","original","replacement","controller","self","dialogDeferred","resampleHermite","canvas","W","H","W2","H2","Math","round","img","getContext","getImageData","img2","data2","ratio_w","ratio_h","ratio_w_half","ceil","ratio_h_half","j","i","x2","weight","weights","weights_alpha","gx_r","gx_g","gx_b","gx_a","center_y","yy","floor","dy","abs","center_x","w0","xx","dx","w","sqrt","clearRect","max","width","height","putImageData","addConflict","$conflicts","$conflict","clone","$originalDiv","$replacementDiv","Util","humanFileSize","size","formatDate","lastModified","directory","urlSpec","x","y","c","forceIcon","previewpath","Files","generatePreviewUrl","replace","css","FileReader","reader","onload","e","blob","Blob","URL","webkitURL","originalUrl","createObjectURL","image","Image","src","createElement","min","drawImage","toDataURL","readAsArrayBuffer","reject","getCroppedPreview","MimeType","getIconUrl","checkboxId","attr","append","prop","dialogName","dialogId","count","n","parent","children","_getFileExistsTemplate","$tmpl","$dlg","octemplate","dialog_name","allnewfiles","allexistingfiles","why","what","buttonlist","classes","click","onCancel","ocdialog","onContinue","closeOnEscape","closeButton","close","remove","$primaryButton","closest","updatePrimaryButton","checkedCount","on","$checkbox","fail","promise","defer","$fileexistsTemplate","filePath","tmpl","manageFromDocument","manageToken","global","emit","token","getToken","setToken","newToken","OCEventSource","joinChar","dataStr","typelessListeners","closed","listeners","encodeURIComponent","useFallBack","EventSource","iframeId","iframeCount","fallBackSources","iframe","source","onmessage","parse","listen","fallBackCallBack","done","lastLength","addEventListener","currentMenu","currentMenuToggle","hideMenus","complete","lastMenu","slideUp","apply","isAdmin","_oc_isadmin","load","loadTranslations","register","_unregister","unregister","translate","translatePlural","Handlebars","startSaving","selector","startAction","stop","finishedSaving","finishedAction","finishedSuccess","finishedError","delay","fadeOut","isPasswordConfirmationRequired","rejectCallback","confirmPassword","_plugins","targetName","plugin","plugins","getPlugins","attach","targetObject","detach","theme","_theme","_handlers","_pushState","strParams","buildQueryString","history","pushState","location","pathname","navigator","userAgent","toLowerCase","parseInt","patterns","querySelectorAll","pattern","ii","style","fill","stroke","removeAttribute","setAttribute","replaceState","hash","_cancelPop","addOnPopStateHandler","handler","_parseHashQuery","pos","_decodeQuery","query","parseUrlQuery","parseQueryString","search","_onPopState","state","chunkify","tz","charAt","m","History","computerFileSize","string","s","trim","bytes","matches","match","parseFloat","isFinite","b","k","kb","mb","gb","g","tb","pb","p","timestamp","format","TESTING","debug","moment","relativeModifiedDate","diff","fromNow","getScrollBarWidth","_scrollBarWidth","inner","outer","position","top","left","visibility","overflow","appendChild","w1","offsetWidth","w2","clientWidth","removeChild","stripTime","date","Date","getFullYear","getMonth","getDate","naturalSortCompare","a","aa","bb","aNum","Number","bNum","localeCompare","getLanguage","waitFor","interval","internalCallback","setTimeout","isCookieSetToValue","cookies","cookie","_oc_debug","webroot","_oc_webroot","lastIndexOf","coreApps","menuSpeed","PERMISSION_ALL","PERMISSION_CREATE","PERMISSION_DELETE","PERMISSION_NONE","PERMISSION_READ","PERMISSION_SHARE","PERMISSION_UPDATE","TAG_FAVORITE","fileIsBlacklisted","Config","blacklist_files_regex","appswebroots","config","dialogs","getCurrentUser","uid","isUserAdmin","L10N","_ajaxConnectionLostHandler","_processAjaxError","statusText","_reloadCalled","_userIsNavigatingAway","timer","seconds","setInterval","Notification","clearInterval","reload","registerXHRForErrorProcessing","loadCallback","readyState","errorCallback","getCapabilities","realGetCapabilities","registerMenu","$toggle","$menuEl","toggle","headerMenu","isClickableElement","event","preventDefault","is","slideToggle","showMenu","unregisterMenu","off","encodePath","dirname","isSamePath","joinPaths","getHost","host","getHostName","hostname","getPort","port","getProtocol","protocol","getCanonicalLocale","getLocale","queryString","components","part","decodeURIComponent","msg","Plugins","generateFilePath","generateUrl","get","namespaces","tail","set","getRootPath","getRootUrl","imagePath","redirect","targetURL","getRequestToken","linkTo","linkToOCS","service","version","ocsVersion","linkToRemote","generateRemoteUrl","linkToRemoteBase","realGetRootUrl","subscribe","computed","userNameInputLengthIs255","user","userInputHelperText","ArrowRight","NcButton","String","default","valueLoading","loading","Boolean","required","invertedColors","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","_vm","_c","_self","$event","$emit","scopedSlots","_u","staticClass","proxy","_v","_s","LoginButton","NcPasswordField","NcTextField","NcNoteCard","mixins","AuthMixin","username","redirectUrl","errors","Array","messages","throttleDelay","autoCompleteAllowed","directLogin","emailStates","setup","headlineText","productName","sanitize","escape","loginTimeout","loadState","timezone","Intl","DateTimeFormat","resolvedOptions","timeZone","timezoneOffset","getTimezoneOffset","resetFormTimeout","debounce","handleResetForm","isError","invalidPassword","userDisabled","errorLabel","apacheAuthFailed","csrfCheckFailed","internalException","loadingIcon","loginActionUrl","emailEnabled","every","loginText","watch","mounted","$refs","inputField","input","focus","methods","updateUsername","submit","ref","_e","_l","index","class","staticStyle","shake","domProps","bufferToBase64URLString","buffer","Uint8Array","str","charCode","fromCharCode","btoa","base64URLStringToBuffer","base64URLString","base64","padLength","padded","padEnd","binary","atob","ArrayBuffer","charCodeAt","browserSupportsWebAuthn","PublicKeyCredential","toPublicKeyCredentialDescriptor","descriptor","transports","WebAuthnError","constructor","code","cause","super","WebAuthnAbortService","createNewAbortSignal","abortError","abort","newController","AbortController","signal","cancelCeremony","attachments","toAuthenticatorAttachment","attachment","getLoggerBuilder","setApp","setUid","detectUser","NoValidCredentials","emits","fillColor","_b","$attrs","InformationIcon","LockOpenIcon","isHttps","isLocalhost","supportsWebauthn","validCredentials","authenticate","loginForm","checkValidity","async","loginName","Axios","post","allowCredentials","logger","optionsJSON","useBrowserAutofill","publicKey","challenge","globalPublicKeyCredential","isConditionalMediationAvailable","browserSupportsWebAuthnAutofill","mediation","credential","credentials","err","AbortSignal","effectiveDomain","test","rpId","identifyAuthenticationError","rawId","userHandle","authenticatorData","clientDataJSON","signature","clientExtensionResults","getClientExtensionResults","authenticatorAttachment","startWebauthnAuthentication","startAuthentication","completeAuthentication","changeUsername","authData","finishAuthentication","_ref","defaultRedirectUrl","catch","resetPasswordLink","axios","resp","resetPasswordTarget","encrypted","proceed","encryption","directives","rawName","expression","composing","isArray","_i","$$a","$$el","$$c","checked","$$i","concat","warning","clear","localStorage","sessionStorage","LoginForm","PasswordLessLoginForm","ResetPassword","UpdatePassword","passwordlessLogin","resetPassword","canResetPassword","resetPasswordUser","direct","hasPasswordless","countAlternativeLogins","alternativeLogins","hideLoginForm","passwordResetFinished","alternativeLogin","L10n","Vue","mixin","Nextcloud","extend","LoginView","$mount","exports","previousBackbone","VERSION","noConflict","emulateHTTP","emulateJSON","_listening","Events","eventSplitter","eventsApi","iteratee","events","opts","names","keys","_events","onApi","ctx","listening","_listeners","interop","listenTo","obj","_listenId","uniqueId","listeningTo","_listeningTo","Listening","tryCatchOn","handlers","offApi","stopListening","ids","isEmpty","remaining","_callback","cleanup","once","onceMap","listenToOnce","offer","args","triggerApi","objEvents","allEvents","all","triggerEvents","ev","l","a1","a2","a3","listener","unbind","Model","preinitialize","cid","cidPrefix","defaults","initialize","validationError","idAttribute","sync","has","val","_validate","unset","silent","changes","changing","_changing","_previousAttributes","current","prev","isEqual","prevId","_pending","hasChanged","changedAttributes","old","previous","previousAttributes","fetch","serverAttrs","wrapError","save","wait","validate","isNew","destroy","base","isValid","models","comparator","_reset","reset","setOptions","add","merge","addOptions","splice","array","at","singular","removed","_removeModels","added","merged","_isModel","toAdd","toMerge","toRemove","modelMap","sort","sortable","sortAttr","isString","existing","_prepareModel","_addReference","orderChanged","some","_removeReference","previousModels","unshift","_byId","modelId","where","first","findWhere","isFunction","sortBy","pluck","callbackOpts","_forwardPristineError","values","CollectionIterator","ITERATOR_VALUES","ITERATOR_KEYS","entries","ITERATOR_KEYSVALUES","_onModelEvent","$$iterator","Symbol","iterator","kind","_collection","_kind","_index","next","View","viewOptions","_ensureElement","delegateEventSplitter","tagName","render","_removeElement","setElement","element","undelegateEvents","_setElement","delegateEvents","el","delegate","eventName","undelegate","_createElement","className","_setAttributes","addUnderscoreMethods","Class","attribute","cb","defaultVal","addMethod","instance","isObject","modelMatcher","matcher","collect","reduce","foldl","inject","reduceRight","foldr","detect","select","any","include","contains","invoke","toArray","head","take","initial","rest","drop","last","without","difference","shuffle","chain","sample","partition","groupBy","countBy","indexBy","findIndex","findLastIndex","pairs","invert","omit","Base","mappings","functions","memo","dataType","contentType","_method","beforeSend","setRequestHeader","ajax","Router","routes","_bindRoutes","optionalParam","namedParam","splatParam","escapeRegExp","route","isRegExp","_routeToRegExp","router","fragment","_extractParameters","execute","navigate","optional","RegExp","exec","param","checkUrl","routeStripper","rootStripper","pathStripper","started","atRoot","getSearch","matchRoot","decodeFragment","decodeURI","getHash","getFragment","_usePushState","_wantsHashChange","start","_trailingSlash","trailingSlash","hashChange","_hasHashChange","documentMode","_useHashChange","_wantsPushState","_hasPushState","rootPath","display","tabIndex","iWindow","insertBefore","firstChild","contentWindow","open","attachEvent","_checkUrlInterval","loadUrl","removeEventListener","detachEvent","notfound","decodedFragment","_updateHash","protoProps","staticProps","child","__super__","_debug","factory","___CSS_LOADER_EXPORT___","module","_XML_CHAR_MAP","_escapeXml","ch","userName","namespace","hasOwnProperty","property","parseClarkNotation","_renderPropSet","propName","propValue","mkcol","responseType","xhrProvider","onProgress","upload","send","fulfill","onreadystatechange","resultBody","parseMultiStatus","ontimeout","XMLHttpRequest","_parsePropNode","propNode","childNodes","subNodes","nodeType","textContent","xmlBody","doc","DOMParser","parseFromString","resolver","foo","responseIterator","evaluate","XPathResult","ANY_TYPE","responseNode","iterateNext","stringValue","propStatIterator","propStatNode","propIterator","namespaceURI","localName","baseParts","parseUrl","subString","scheme","propertyName","webpackContext","req","webpackContextResolve","__webpack_require__","o","Permission","Permission2","defaultDavProperties","defaultDavNamespaces","d","nc","oc","ocs","getDavProperties","_nc_dav_properties","getDavNameSpaces","_nc_dav_namespaces","ns","davGetDefaultPropfind","davGetRecentSearch","FileType","FileType2","isDavRessource","davService","validateData","displayname","crtime","NONE","ALL","owner","NodeStatus","NodeStatus2","Node","_data","_attributes","_knownDavService","readonlyAttributes","getOwnPropertyDescriptors","Reflect","deleteProperty","receiver","Proxy","encodedSource","origin","extension","extname","firstMatch","updateMtime","READ","move","destination","oldBasename","rename","basename2","TypeError","File","Folder","davRootPath","davRemoteURL","davGetRemoteURL","davGetClient","remoteURL","setHeaders","requesttoken","headers2","getFavoriteNodes","davClient","davRoot","CancelablePromise","getDirectoryContents","details","includeSelf","filename","davResultToNode","filesRoot","userId","permString","CREATE","UPDATE","DELETE","SHARE","davParsePermissions","nodeData","lastmod","getcontentlength","FAILED","humanList","humanListBinary","formatFileSize","skipSmallSizes","binaryPrefixes","base1000","order","log","readableFormat","relativeSize","pow","toFixed","toLocaleString","toISOString","sortNodes","sortingOptions","sortingMode","sortingOrder","identifiers2","orders","sorting","collator","Collator","numeric","usage","identifier","compare","orderBy","sortFavoritesFirst","v","favorite","sortFoldersFirst","util$3","nameStartChar","nameRegexp","regexName","isExist","isEmptyObject","arrayMode","len","isName","getAllMatches","regex","allmatches","startIndex","lastIndex","OptionsBuilder","defaultOptions$1","preserveOrder","attributeNamePrefix","attributesGroupName","textNodeName","ignoreAttributes","removeNSPrefix","allowBooleanAttributes","parseTagValue","parseAttributeValue","trimValues","cdataPropName","numberParseOptions","hex","leadingZeros","eNotation","tagValueProcessor","val2","attributeValueProcessor","attrName","stopNodes","alwaysCreateTextNode","commentPropName","unpairedTags","processEntities","htmlEntities","ignoreDeclaration","ignorePiTags","transformTagName","transformAttributeName","updateTag","jPath","buildOptions","defaultOptions","node2json","compress","arr","compressedObj","tagObj","propName$1","newJpath","isLeaf","isLeafTag","assignAttributes","attrMap","jpath","atrrName","propCount","prettify","arrToStr","indentation","xmlStr","isPreviousElementTag","newJPath","tagText","isStopNode","replaceEntitiesValue","attStr2","attr_to_str","tempInd","piTextNodeName","newIdentation","indentBy","tagStart","tagValue","suppressUnpairedNode","suppressEmptyNode","endsWith","attrStr","attrVal","suppressBooleanAttributes","textValue","entities","entity","buildFromOrderedJs","jArray","oneListGroup","Builder","isAttribute","attrPrefixLen","processTextOrObjNode","indentate","tagEndChar","newLine","object","level","j2x","buildTextValNode","buildObjectNode","repeat","jObj","arrayNodeName","buildAttrPairStr","newval","arrLen","listTagVal","listTagAttr","item","Ks","L","closeTag","tagEndExp","piClosingChar","debug_1","process","env","NODE_DEBUG","constants","MAX_LENGTH","MAX_SAFE_COMPONENT_LENGTH","MAX_SAFE_BUILD_LENGTH","MAX_LENGTH$1","MAX_SAFE_INTEGER","RELEASE_TYPES","SEMVER_SPEC_VERSION","FLAG_INCLUDE_PRERELEASE","FLAG_LOOSE","re$1","MAX_SAFE_COMPONENT_LENGTH2","MAX_SAFE_BUILD_LENGTH2","MAX_LENGTH2","debug2","re2","re","safeRe","t2","R","LETTERDASHNUMBER","safeRegexReplacements","createToken","isGlobal","safe","makeSafeRegex","NUMERICIDENTIFIER","NUMERICIDENTIFIERLOOSE","NONNUMERICIDENTIFIER","PRERELEASEIDENTIFIER","PRERELEASEIDENTIFIERLOOSE","BUILDIDENTIFIER","MAINVERSION","PRERELEASE","BUILD","FULLPLAIN","MAINVERSIONLOOSE","PRERELEASELOOSE","LOOSEPLAIN","XRANGEIDENTIFIER","XRANGEIDENTIFIERLOOSE","GTLT","XRANGEPLAIN","XRANGEPLAINLOOSE","COERCEPLAIN","COERCE","COERCEFULL","LONETILDE","tildeTrimReplace","LONECARET","caretTrimReplace","comparatorTrimReplace","reExports","freeze","loose","compareIdentifiers$1","anum","bnum","identifiers","compareIdentifiers","rcompareIdentifiers","Function","ArrayProto","ObjProto","SymbolProto","supportsArrayBuffer","supportsDataView","DataView","nativeIsArray","nativeKeys","nativeCreate","nativeIsView","isView","_isNaN","isNaN","_isFinite","hasEnumBug","propertyIsEnumerable","nonEnumerableProps","MAX_ARRAY_INDEX","restArguments","func","isNull","isUndefined","isBoolean","isElement","tagTester","tag","nodelist","Int8Array","hasDataViewBug","isIE11","Map","isDataView","getInt8","isArrayBuffer","isArguments","isSymbol","isNumber","constant","createSizePropertyCheck","getSizeProperty","sizeProperty","shallowProperty","typedArrayPattern","collectNonEnumProps","emulatedSet","nonEnumIdx","proto","isMatch","_keys","_wrapped","toBufferView","bufferSource","byteOffset","valueOf","tagDataView","eq","aStack","bStack","deepEq","areArrays","aCtor","bCtor","allKeys","ie11fingerprint","weakMapMethods","forEachName","commonInit","mapTail","mapMethods","setMethods","createAssigner","keysFunc","baseCreate","Ctor","extendOwn","tap","interceptor","toPath","deepGet","identity","optimizeCb","argCount","accumulator","baseIteratee","Infinity","mapObject","currentKey","noop","propertyOf","times","accum","random","now","createEscaper","escaper","testRegexp","replaceRegexp","templateSettings","interpolate","noMatch","escapes","escapeChar","bareIdentifier","template","settings","oldSettings","offset","argument","variable","fallback","idCounter","prefix","_chain","executeBound","sourceFunc","boundFunc","callingContext","partial","boundArgs","placeholder","bound","callArgs","flatten","strict","output","idx","memoize","hasher","cache","address","throttle","later","leading","throttled","_now","clearTimeout","immediate","passed","debounced","_args","wrap","wrapper","negate","predicate","compose","after","before","findKey","createPredicateIndexFinder","dir","sortedIndex","low","high","mid","createIndexFinder","predicateFind","createReduce","reducer","list","fromIndex","guard","contextPath","lastComputed","reStrSymbol","rand","temp","criteria","right","group","behavior","pass","keyInObj","compact","otherArrays","uniq","isSorted","seen","arrays","intersection","argsLength","unzip","range","step","chunk","chainResult","__webpack_module_cache__","moduleId","cachedModule","loaded","__webpack_modules__","O","chunkIds","priority","notFulfilled","fulfilled","r","getter","__esModule","definition","defineProperty","enumerable","f","chunkId","promises","u","globalThis","script","needAttach","scripts","charset","onScriptComplete","onerror","doneFns","parentNode","toStringTag","nmd","paths","scriptUrl","importScripts","currentScript","baseURI","installedChunks","installedChunkData","errorType","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/core-main.js b/dist/core-main.js index 2bb6fb80d8293..fb159fee1e34c 100644 --- a/dist/core-main.js +++ b/dist/core-main.js @@ -1,2 +1,2 @@ -(()=>{var e,i,o,r={17036:(e,i,o)=>{"use strict";var r={};o.r(r),o.d(r,{deleteKey:()=>B,getApps:()=>x,getKeys:()=>w,getValue:()=>y,setValue:()=>k});var s={};o.r(s),o.d(s,{formatLinksPlain:()=>En,formatLinksRich:()=>Bn,plainToRich:()=>yn,richToPlain:()=>kn});var a={};o.r(a),o.d(a,{dismiss:()=>Dn,query:()=>In}),o(84315),o(7452);var c=o(61338),l=o(4523),u=o(74692),h=o.n(u),d=o(85168),p=o(96763);const A={updatableNotification:null,getDefaultNotificationFunction:null,setDefault(t){this.getDefaultNotificationFunction=t},hide(t,e){l.default.isFunction(t)&&(e=t,t=void 0),t?(t.each((function(){h()(this)[0].toastify?h()(this)[0].toastify.hideToast():p.error("cannot hide toast because object is not set"),this===this.updatableNotification&&(this.updatableNotification=null)})),e&&e.call(),this.getDefaultNotificationFunction&&this.getDefaultNotificationFunction()):p.error("Missing argument $row in OC.Notification.hide() call, caller needs to be adjusted to only dismiss its own notification")},showHtml(t,e){(e=e||{}).isHTML=!0,e.timeout=e.timeout?e.timeout:d.DH;const n=(0,d.rG)(t,e);return n.toastElement.toastify=n,h()(n.toastElement)},show(t,e){(e=e||{}).timeout=e.timeout?e.timeout:d.DH;const n=(0,d.rG)(function(t){return t.toString().split("&").join("&").split("<").join("<").split(">").join(">").split('"').join(""").split("'").join("'")}(t),e);return n.toastElement.toastify=n,h()(n.toastElement)},showUpdate(t){return this.updatableNotification&&this.updatableNotification.hideToast(),this.updatableNotification=(0,d.rG)(t,{timeout:d.DH}),this.updatableNotification.toastElement.toastify=this.updatableNotification,h()(this.updatableNotification.toastElement)},showTemporary(t,e){(e=e||{}).timeout=e.timeout||d.Jt;const n=(0,d.rG)(t,e);return n.toastElement.toastify=n,h()(n.toastElement)},isHidden:()=>!h()("#content").find(".toastify").length};var f=o(21777);const g=l.default.throttle((()=>{(0,d.I9)(t("core","Connection to server lost"))}),7e3,{trailing:!1});let m=!1;const b={enableDynamicSlideToggle(){m=!0},showAppSidebar:function(t){(t||h()("#app-sidebar")).removeClass("disappear").show(),h()("#app-content").trigger(new(h().Event)("appresized"))},hideAppSidebar:function(t){(t||h()("#app-sidebar")).hide().addClass("disappear"),h()("#app-content").trigger(new(h().Event)("appresized"))}};var v=o(63814);function C(t,e,n){"post"!==t&&"delete"!==t||!St.PasswordConfirmation.requiresPasswordConfirmation()?(n=n||{},h().ajax({type:t.toUpperCase(),url:(0,v.KT)("apps/provisioning_api/api/v1/config/apps")+e,data:n.data||{},success:n.success,error:n.error})):St.PasswordConfirmation.requirePasswordConfirmation(_.bind(C,this,t,e,n))}function x(t){C("get","",t)}function w(t,e){C("get","/"+t,e)}function y(t,e,n,i){(i=i||{}).data={defaultValue:n},C("get","/"+t+"/"+e,i)}function k(t,e,n,i){(i=i||{}).data={value:n},C("post","/"+t+"/"+e,i)}function B(t,e,n){C("delete","/"+t+"/"+e,n)}const E=window.oc_appconfig||{},I={getValue:function(t,e,n,i){y(t,e,n,{success:i})},setValue:function(t,e,n){k(t,e,n)},getApps:function(t){x({success:t})},getKeys:function(t,e){w(t,{success:e})},deleteKey:function(t,e){B(t,e)}},D=void 0!==window._oc_appswebroots&&window._oc_appswebroots;var S=o(21391),T=o.n(S),O=o(78112),M=o(96763);const P={create:"POST",update:"PROPPATCH",patch:"PROPPATCH",delete:"DELETE",read:"PROPFIND"};function R(t,e){if(l.default.isArray(t))return l.default.map(t,(function(t){return R(t,e)}));var n={href:t.href};return l.default.each(t.propStat,(function(t){if("HTTP/1.1 200 OK"===t.status)for(var i in t.properties){var o=i;i in e&&(o=e[i]),n[o]=t.properties[i]}})),n.id||(n.id=N(n.href)),n}function N(t){var e=t.indexOf("?");e>0&&(t=t.substr(0,e));var n,i=t.split("/");do{n=i[i.length-1],i.pop()}while(!n&&i.length>0);return n}function H(t){return t>=200&&t<=299}function z(t,e,n,i){return t.propPatch(e.url,function(t,e){var n,i={};for(n in t){var o=e[n],r=t[n];o||(M.warn('No matching DAV property for property "'+n),o=n),(l.default.isBoolean(r)||l.default.isNumber(r))&&(r=""+r),i[o]=r}return i}(n.changed,e.davProperties),i).then((function(t){H(t.status)?l.default.isFunction(e.success)&&e.success(n.toJSON()):l.default.isFunction(e.error)&&e.error(t)}))}const L=T().noConflict();Object.assign(L,{davCall:(t,e)=>{var n=new O.dav.Client({baseUrl:t.url,xmlNamespaces:l.default.extend({"DAV:":"d","http://owncloud.org/ns":"oc"},t.xmlNamespaces||{})});n.resolveUrl=function(){return t.url};var i=l.default.extend({"X-Requested-With":"XMLHttpRequest",requesttoken:OC.requestToken},t.headers);return"PROPFIND"===t.type?function(t,e,n,i){return t.propFind(e.url,l.default.values(e.davProperties)||[],e.depth,i).then((function(t){if(H(t.status)){if(l.default.isFunction(e.success)){var n=l.default.invert(e.davProperties),i=R(t.body,n);e.depth>0&&i.shift(),e.success(i)}}else l.default.isFunction(e.error)&&e.error(t)}))}(n,t,0,i):"PROPPATCH"===t.type?z(n,t,e,i):"MKCOL"===t.type?function(t,e,n,i){return t.request(e.type,e.url,i,null).then((function(o){H(o.status)?z(t,e,n,i):l.default.isFunction(e.error)&&e.error(o)}))}(n,t,e,i):function(t,e,n,i){return i["Content-Type"]="application/json",t.request(e.type,e.url,i,e.data).then((function(t){if(H(t.status)){if(l.default.isFunction(e.success)){if("PUT"===e.type||"POST"===e.type||"MKCOL"===e.type){var i=t.body||n.toJSON(),o=t.xhr.getResponseHeader("Content-Location");return"POST"===e.type&&o&&(i.id=N(o)),void e.success(i)}if(207===t.status){var r=l.default.invert(e.davProperties);e.success(R(t.body,r))}else e.success(t.body)}}else l.default.isFunction(e.error)&&e.error(t)}))}(n,t,e,i)},davSync:(t=>(e,n,i)=>{var o={type:P[e]||e},r=n instanceof t.Collection;if("update"===e&&(n.hasInnerCollection?o.type="MKCOL":(n.usePUT||n.collection&&n.collection.usePUT)&&(o.type="PUT")),i.url||(o.url=l.default.result(n,"url")||function(){throw new Error('A "url" property or function must be specified')}()),null!=i.data||!n||"create"!==e&&"update"!==e&&"patch"!==e||(o.data=JSON.stringify(i.attrs||n.toJSON(i))),"PROPFIND"!==o.type&&(o.processData=!1),"PROPFIND"===o.type||"PROPPATCH"===o.type){var s=n.davProperties;!s&&n.model&&(s=n.model.prototype.davProperties),s&&(l.default.isFunction(s)?o.davProperties=s.call(n):o.davProperties=s),o.davProperties=l.default.extend(o.davProperties||{},i.davProperties),l.default.isUndefined(i.depth)&&(i.depth=r?1:0)}var a=i.error;i.error=function(t,e,n){i.textStatus=e,i.errorThrown=n,a&&a.call(i.context,t,e,n)};var c=i.xhr=t.davCall(l.default.extend(o,i),n);return n.trigger("request",n,c,i),c})(L)});const F=L;var j=o(71225);const U=window._oc_config||{},W=document.getElementsByTagName("head")[0].getAttribute("data-user"),Y=document.getElementsByTagName("head")[0].getAttribute("data-user-displayname"),q=void 0!==W&&W;var Q=o(39285),G=o(36882),X=o(53334),V=o(43627),K=o(85471),J=o(96763);const Z={YES_NO_BUTTONS:70,OK_BUTTONS:71,FILEPICKER_TYPE_CHOOSE:1,FILEPICKER_TYPE_MOVE:2,FILEPICKER_TYPE_COPY:3,FILEPICKER_TYPE_COPY_MOVE:4,FILEPICKER_TYPE_CUSTOM:5,alert:function(t,e,n,i){this.message(t,e,"alert",Z.OK_BUTTON,n,i)},info:function(t,e,n,i){this.message(t,e,"info",Z.OK_BUTTON,n,i)},confirm:function(t,e,n,i){return this.message(t,e,"notice",Z.YES_NO_BUTTONS,n,i)},confirmDestructive:function(t,e){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:Z.OK_BUTTONS,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:()=>{};return(new d.ik).setName(e).setText(t).setButtons(n===Z.OK_BUTTONS?[{label:(0,X.Tl)("core","Yes"),type:"error",callback:()=>{i.clicked=!0,i(!0)}}]:Z._getLegacyButtons(n,i)).build().show().then((()=>{i.clicked||i(!1)}))},confirmHtml:function(t,e,n,i){return(new d.ik).setName(e).setText("").setButtons([{label:(0,X.Tl)("core","No"),callback:()=>{}},{label:(0,X.Tl)("core","Yes"),type:"primary",callback:()=>{n.clicked=!0,n(!0)}}]).build().setHTML(t).show().then((()=>{n.clicked||n(!1)}))},prompt:function(t,e,n,i,r,s){return new Promise((i=>{(0,d.Ss)((0,K.$V)((()=>o.e(1642).then(o.bind(o,71642)))),{text:t,name:e,callback:n,inputName:r,isPassword:!!s},(function(){n(...arguments),i()}))}))},filepicker(t,e){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:void 0,o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:d.bh.Choose,r=arguments.length>6&&void 0!==arguments[6]?arguments[6]:void 0,s=arguments.length>7&&void 0!==arguments[7]?arguments[7]:void 0;const a=(t,e)=>{const i=t=>{const e=t?.root||"";let n=t?.path||"";return n.startsWith(e)&&(n=n.slice(e.length)||"/"),n};return n?n=>t(n.map(i),e):n=>t(i(n[0]),e)},c=(0,d.a1)(t);o===this.FILEPICKER_TYPE_CUSTOM?(s.buttons||[]).forEach((t=>{c.addButton({callback:a(e,t.type),label:t.text,type:t.defaultButton?"primary":"secondary"})})):c.setButtonFactory(((t,n)=>{const i=[],r=t?.[0]?.attributes?.displayName||t?.[0]?.basename,s=r||(0,V.basename)(n);return o===d.bh.Choose&&i.push({callback:a(e,d.bh.Choose),label:r&&!this.multiSelect?(0,X.Tl)("core","Choose {file}",{file:r}):(0,X.Tl)("core","Choose"),type:"primary"}),o!==d.bh.CopyMove&&o!==d.bh.Copy||i.push({callback:a(e,d.bh.Copy),label:s?(0,X.Tl)("core","Copy to {target}",{target:s}):(0,X.Tl)("core","Copy"),type:"primary",icon:G}),o!==d.bh.Move&&o!==d.bh.CopyMove||i.push({callback:a(e,d.bh.Move),label:s?(0,X.Tl)("core","Move to {target}",{target:s}):(0,X.Tl)("core","Move"),type:o===d.bh.Move?"primary":"secondary",icon:Q}),i})),i&&c.setMimeTypeFilter("string"==typeof i?[i]:i||[]),"function"==typeof s?.filter&&c.setFilter((t=>s.filter((t=>({id:t.fileid||null,path:t.path,mimetype:t.mime||null,mtime:t.mtime?.getTime()||null,permissions:t.permissions,name:t.attributes?.displayName||t.basename,etag:t.attributes?.etag||null,hasPreview:t.attributes?.hasPreview||null,mountType:t.attributes?.mountType||null,quotaAvailableBytes:t.attributes?.quotaAvailableBytes||null,icon:null,sharePermissions:null}))(t)))),c.allowDirectories(!0===s?.allowDirectoryChooser||i?.includes("httpd/unix-directory")||!1).setMultiSelect(n).startAt(r).build().pick()},message:function(t,e,n,i){let o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:()=>{},r=arguments.length>6?arguments[6]:void 0;const s=(new d.ik).setName(e).setText(r?"":t).setButtons(Z._getLegacyButtons(i,o));switch(n){case"alert":s.setSeverity("warning");break;case"notice":s.setSeverity("info")}const a=s.build();return r&&a.setHTML(t),a.show().then((()=>{o._clicked||o(!1)}))},_getLegacyButtons(t,e){const n=[];switch("object"==typeof t?t.type:t){case Z.YES_NO_BUTTONS:n.push({label:t?.cancel??(0,X.Tl)("core","No"),callback:()=>{e._clicked=!0,e(!1)}}),n.push({label:t?.confirm??(0,X.Tl)("core","Yes"),type:"primary",callback:()=>{e._clicked=!0,e(!0)}});break;case Z.OK_BUTTONS:n.push({label:t?.confirm??(0,X.Tl)("core","OK"),type:"primary",callback:()=>{e._clicked=!0,e(!0)}});break;default:J.error("Invalid call to OC.dialogs")}return n},_fileexistsshown:!1,fileexists:function(t,e,i,o){var r=this,s=new(h().Deferred),a=function(t,e,n,i,o){i=Math.round(i),o=Math.round(o);for(var r=t.getContext("2d").getImageData(0,0,e,n),s=t.getContext("2d").getImageData(0,0,i,o),a=r.data,c=s.data,l=e/i,u=n/o,h=Math.ceil(l/2),d=Math.ceil(u/2),p=0;p=-1&&S<=1&&(g=2*S*S*S-3*S*S+1)>0&&(w+=g*a[3+(D=4*(I+k*e))],b+=g,a[D+3]<255&&(g=g*a[D+3]/250),v+=g*a[D],C+=g*a[D+1],x+=g*a[D+2],m+=g)}c[f]=v/m,c[f+1]=C/m,c[f+2]=x/m,c[f+3]=w/b}t.getContext("2d").clearRect(0,0,Math.max(e,i),Math.max(n,o)),t.width=i,t.height=o,t.getContext("2d").putImageData(s,0,0)},c=function(e,n,i){var o=e.find(".template").clone().removeClass("template").addClass("conflict"),r=o.find(".original"),s=o.find(".replacement");o.data("data",t),o.find(".filename").text(n.name),r.find(".size").text(St.Util.humanFileSize(n.size)),r.find(".mtime").text(St.Util.formatDate(n.mtime)),i.size&&i.lastModified&&(s.find(".size").text(St.Util.humanFileSize(i.size)),s.find(".mtime").text(St.Util.formatDate(i.lastModified)));var c=n.directory+"/"+n.name,l={file:c,x:96,y:96,c:n.etag,forceIcon:0},u=Files.generatePreviewUrl(l);u=u.replace(/'/g,"%27"),r.find(".icon").css({"background-image":"url('"+u+"')"}),function(t){var e=new(h().Deferred),n=t.type&&t.type.split("/").shift();if(window.FileReader&&"image"===n){var i=new FileReader;i.onload=function(t){var n=new Blob([t.target.result]);window.URL=window.URL||window.webkitURL;var i=window.URL.createObjectURL(n),o=new Image;o.src=i,o.onload=function(){var t,n,i,r,s,c,l,u=(t=o,s=document.createElement("canvas"),c=t.width,l=t.height,c>l?(i=0,n=(c-l)/2):(i=(l-c)/2,n=0),r=Math.min(c,l),s.width=r,s.height=r,s.getContext("2d").drawImage(t,n,i,r,r,0,0,r,r),a(s,r,r,96,96),s.toDataURL("image/png",.7));e.resolve(u)}},i.readAsArrayBuffer(t)}else e.reject();return e}(i).then((function(t){s.find(".icon").css("background-image","url("+t+")")}),(function(){c=St.MimeType.getIconUrl(i.type),s.find(".icon").css("background-image","url("+c+")")}));var d=e.find(".conflict").length;r.find("input:checkbox").attr("id","checkbox_original_"+d),s.find("input:checkbox").attr("id","checkbox_replacement_"+d),e.append(o),i.lastModified>n.mtime?s.find(".mtime").css("font-weight","bold"):i.lastModifiedn.size?s.find(".size").css("font-weight","bold"):i.size&&i.size0?(h()(u).find(".allnewfiles").prop("checked",!1),h()(u).find(".allnewfiles + .count").text((0,X.Tl)("core","({count} selected)",{count:t}))):(h()(u).find(".allnewfiles").prop("checked",!1),h()(u).find(".allnewfiles + .count").text("")),g()})),h()(u).on("click",".original,.allexistingfiles",(function(){var t=h()(u).find('.conflict .original input[type="checkbox"]:checked').length;t===h()(u+" .conflict").length?(h()(u).find(".allexistingfiles").prop("checked",!0),h()(u).find(".allexistingfiles + .count").text((0,X.Tl)("core","(all selected)"))):t>0?(h()(u).find(".allexistingfiles").prop("checked",!1),h()(u).find(".allexistingfiles + .count").text((0,X.Tl)("core","({count} selected)",{count:t}))):(h()(u).find(".allexistingfiles").prop("checked",!1),h()(u).find(".allexistingfiles + .count").text("")),g()})),s.resolve()})).fail((function(){s.reject(),alert((0,X.Tl)("core","Error loading file exists template"))}));return s.promise()},_getFileExistsTemplate:function(){var t=h().Deferred();if(this.$fileexistsTemplate)t.resolve(this.$fileexistsTemplate);else{var e=this;h().get(St.filePath("files","templates","fileexists.html"),(function(n){e.$fileexistsTemplate=h()(n),t.resolve(e.$fileexistsTemplate)})).fail((function(){t.reject()}))}return t.promise()}},$=Z,tt=((t,e)=>{let n=t.getElementsByTagName("head")[0].getAttribute("data-requesttoken");return{getToken:()=>n,setToken:t=>{n=t,e("csrf-token-update",{token:n})}}})(document,c.Ic),et=tt.getToken,nt=tt.setToken,it=function(t,e){var n,i,o="";if(this.typelessListeners=[],this.closed=!1,this.listeners={},e)for(n in e)o+=n+"="+encodeURIComponent(e[n])+"&";if(o+="requesttoken="+encodeURIComponent(et()),this.useFallBack||"undefined"==typeof EventSource){var r="oc_eventsource_iframe_"+it.iframeCount;it.fallBackSources[it.iframeCount]=this,this.iframe=h()(""),this.iframe.attr("id",r),this.iframe.hide(),i="&",-1===t.indexOf("?")&&(i="?"),this.iframe.attr("src",t+i+"fallback=true&fallback_id="+it.iframeCount+"&"+o),h()("body").append(this.iframe),this.useFallBack=!0,it.iframeCount++}else i="&",-1===t.indexOf("?")&&(i="?"),this.source=new EventSource(t+i+o),this.source.onmessage=function(t){for(var e=0;e(0,ft.o)(),requirePasswordConfirmation(t,e,n){(0,ft.C)().then(t,n)}},mt={_plugins:{},register(t,e){let n=this._plugins[t];n||(n=this._plugins[t]=[]),n.push(e)},getPlugins(t){return this._plugins[t]||[]},attach(t,e,n){const i=this.getPlugins(t);for(let t=0;t-1&&parseInt(navigator.userAgent.split("/").pop())<51){const t=document.querySelectorAll('[fill^="url(#"], [stroke^="url(#"], [filter^="url(#invert"]');for(let e,n=0,i=t.length;n=0?t.substr(e+1):t.length?t.substr(1):""},_decodeQuery:t=>t.replace(/\+/g," "),parseUrlQuery(){const t=this._parseHashQuery();let e;return t&&(e=St.parseQueryString(this._decodeQuery(t))),e=l.default.extend(e||{},St.parseQueryString(this._decodeQuery(location.search))),e||{}},_onPopState(t){if(this._cancelPop)return void(this._cancelPop=!1);let e;if(this._handlers.length){e=t&&t.state,l.default.isString(e)?e=St.parseQueryString(e):e||(e=this.parseUrlQuery()||{});for(let t=0;t="0"&&n<="9";s!==r&&(o++,e[o]="",r=s),e[o]+=n,i++}return e}const Bt={History:xt,humanFileSize:wt.v7,computerFileSize(t){if("string"!=typeof t)return null;const e=t.toLowerCase().trim();let n=null;const i=e.match(/^[\s+]?([0-9]*)(\.([0-9]+))?( +)?([kmgtp]?b?)$/i);return null===i?null:(n=parseFloat(e),isFinite(n)?(i[5]&&(n*={b:1,k:1024,kb:1024,mb:1048576,m:1048576,gb:1073741824,g:1073741824,tb:1099511627776,t:1099511627776,pb:0x4000000000000,p:0x4000000000000}[i[5]]),n=Math.round(n),n):null)},formatDate:(t,e)=>(void 0===window.TESTING&&St.debug&&yt.warn("OC.Util.formatDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment"),e=e||"LLL",Ct()(t).format(e)),relativeModifiedDate(e){void 0===window.TESTING&&St.debug&&yt.warn("OC.Util.relativeModifiedDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment");const n=Ct()().diff(Ct()(e));return n>=0&&n<45e3?t("core","seconds ago"):Ct()(e).fromNow()},getScrollBarWidth(){if(this._scrollBarWidth)return this._scrollBarWidth;const t=document.createElement("p");t.style.width="100%",t.style.height="200px";const e=document.createElement("div");e.style.position="absolute",e.style.top="0px",e.style.left="0px",e.style.visibility="hidden",e.style.width="200px",e.style.height="150px",e.style.overflow="hidden",e.appendChild(t),document.body.appendChild(e);const n=t.offsetWidth;e.style.overflow="scroll";let i=t.offsetWidth;return n===i&&(i=e.clientWidth),document.body.removeChild(e),this._scrollBarWidth=n-i,this._scrollBarWidth},stripTime:t=>new Date(t.getFullYear(),t.getMonth(),t.getDate()),naturalSortCompare(t,e){let n;const i=kt(t),o=kt(e);for(n=0;i[n]&&o[n];n++)if(i[n]!==o[n]){const t=Number(i[n]),e=Number(o[n]);return t==i[n]&&e==o[n]?t-e:i[n].localeCompare(o[n],St.getLanguage())}return i.length-o.length},waitFor(t,e){const n=function(){!0!==t()&&setTimeout(n,e)};n()},isCookieSetToValue(t,e){const n=document.cookie.split(";");for(let i=0;i!$_",fileIsBlacklisted:t=>!!t.match(U.blacklist_files_regex),Apps:b,AppConfig:I,appConfig:E,appswebroots:D,Backbone:F,config:U,currentUser:q,dialogs:$,EventSource:ot,getCurrentUser:()=>({uid:q,displayName:Y}),isUserAdmin:()=>ut,L10N:pt,_ajaxConnectionLostHandler:g,_processAjaxError:t=>{(0!==t.status||"abort"!==t.statusText&&"timeout"!==t.statusText&&!St._reloadCalled)&&([302,303,307,401].includes(t.status)&&(0,f.HW)()?setTimeout((function(){if(!St._userIsNavigatingAway&&!St._reloadCalled){let t=0;const e=5,i=setInterval((function(){A.showUpdate(n("core","Problem loading page, reloading in %n second","Problem loading page, reloading in %n seconds",e-t)),t>=e&&(clearInterval(i),St.reload()),t++}),1e3);St._reloadCalled=!0}}),100):0===t.status&&setTimeout((function(){St._userIsNavigatingAway||St._reloadCalled||St._ajaxConnectionLostHandler()}),100))},registerXHRForErrorProcessing:t=>{t.addEventListener&&(t.addEventListener("load",(()=>{4===t.readyState&&(t.status>=200&&t.status<300||304===t.status||h()(document).trigger(new(h().Event)("ajaxError"),t))})),t.addEventListener("error",(()=>{h()(document).trigger(new(h().Event)("ajaxError"),t)})))},getCapabilities:()=>(OC.debug&&st.warn("OC.getCapabilities is deprecated and will be removed in Nextcloud 21. See @nextcloud/capabilities"),(0,rt.F)()),hideMenus:lt,registerMenu:function(t,e,n,i){e.addClass("menu");const o="A"===t.prop("tagName")||"BUTTON"===t.prop("tagName");t.on(o?"click.menu":"click.menu keyup.menu",(function(o){o.preventDefault(),o.key&&"Enter"!==o.key||(e.is(at)?lt():(at&<(),!0===i&&e.parent().addClass("openedMenu"),t.attr("aria-expanded",!0),e.slideToggle(50,n),at=e,ct=t))}))},showMenu:(t,e,n)=>{e.is(at)||(lt(),at=e,ct=t,e.trigger(new(h().Event)("beforeShow")),e.show(),e.trigger(new(h().Event)("afterShow")),l.default.isFunction(n)&&n())},unregisterMenu:(t,e)=>{e.is(at)&<(),t.off("click.menu").removeClass("menutoggle"),e.removeClass("menu")},basename:j.P8,encodePath:j.O0,dirname:j.pD,isSamePath:j.ys,joinPaths:j.HS,getHost:()=>window.location.host,getHostName:()=>window.location.hostname,getPort:()=>window.location.port,getProtocol:()=>window.location.protocol.split(":")[0],getCanonicalLocale:X.lO,getLocale:X.JK,getLanguage:X.Z0,buildQueryString:t=>t?h().map(t,(function(t,e){let n=encodeURIComponent(e);return null!=t&&(n+="="+encodeURIComponent(t)),n})).join("&"):"",parseQueryString:t=>{let e,n;const i={};let o;if(!t)return null;e=t.indexOf("?"),e>=0&&(t=t.substr(e+1));const r=t.replace(/\+/g,"%20").split("&");for(let t=0;t=0?[s.substr(0,e),s.substr(e+1)]:[s],n.length&&(o=decodeURIComponent(n[0]),o&&(i[o]=n.length>1?decodeURIComponent(n[1]):null))}return i},msg:At,Notification:A,PasswordConfirmation:gt,Plugins:mt,theme:bt,Util:Bt,debug:Et,filePath:v.fg,generateUrl:v.Jv,get:(Tt=window,t=>{const e=t.split("."),n=e.pop();for(let t=0;t(e,n)=>{const i=e.split("."),o=i.pop();for(let e=0;e{window.location=t},reload:()=>{window.location.reload()},requestToken:et(),linkTo:v.uM,linkToOCS:(t,e)=>(0,v.KT)(t,{},{ocsVersion:e||1})+"/",linkToRemote:v.dC,linkToRemoteBase:t=>(0,v.aU)()+"/remote.php/"+t,webroot:It};var Tt;(0,c.B1)("csrf-token-update",(t=>{OC.requestToken=t.token,Dt.info("OC.requestToken changed",t.token)}));var Ot=o(32981),Mt=o(96763);let Pt=null;const Rt=async()=>{try{const t=await(async()=>{const t=(0,v.Jv)("/csrftoken");return(await h().get(t)).token})();nt(t)}catch(t){Mt.error("session heartbeat failed",t)}},Nt=()=>{const t=setInterval(Rt,1e3*(()=>{let t=NaN;return Pt.session_lifetime&&(t=Math.floor(Pt.session_lifetime/2)),Math.min(86400,Math.max(60,isNaN(t)?900:t))})());return Mt.info("session heartbeat polling started"),t};var Ht=o(65043);const zt={name:"ContactsIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}};var Lt=o(14486);const Ft=(0,Lt.A)(zt,(function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon contacts-icon",attrs:{"aria-hidden":!t.title||null,"aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M20,0H4V2H20V0M4,24H20V22H4V24M20,4H4A2,2 0 0,0 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6A2,2 0 0,0 20,4M12,6.75A2.25,2.25 0 0,1 14.25,9A2.25,2.25 0 0,1 12,11.25A2.25,2.25 0 0,1 9.75,9A2.25,2.25 0 0,1 12,6.75M17,17H7V15.5C7,13.83 10.33,13 12,13C13.67,13 17,13.83 17,15.5V17Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,null,null).exports;var jt=o(17334),Ut=o.n(jt),Wt=o(55602),Yt=o(18740),qt=o(34196),Qt=o(2769),Gt=o(84237),Xt=o(73267),Vt=o(32831),Kt=o(24764),Jt=o(41944);const Zt={name:"Contact",components:{NcActionLink:Xt.A,NcActionText:Vt.A,NcActions:Kt.A,NcAvatar:Jt.A},props:{contact:{required:!0,type:Object}},computed:{actions(){return this.contact.topAction?[this.contact.topAction,...this.contact.actions]:this.contact.actions},preloadedUserStatus(){if(this.contact.status)return{status:this.contact.status,message:this.contact.statusMessage,icon:this.contact.statusIcon}}}};var $t=o(85072),te=o.n($t),ee=o(97825),ne=o.n(ee),ie=o(77659),oe=o.n(ie),re=o(55056),se=o.n(re),ae=o(10540),ce=o.n(ae),le=o(41113),ue=o.n(le),he=o(78811),de={};de.styleTagTransform=ue(),de.setAttributes=se(),de.insert=oe().bind(null,"head"),de.domAPI=ne(),de.insertStyleElement=ce(),te()(he.A,de),he.A&&he.A.locals&&he.A.locals;const pe=(0,Lt.A)(Zt,(function(){var t=this,e=t._self._c;return e("li",{staticClass:"contact"},[e("NcAvatar",{staticClass:"contact__avatar",attrs:{size:44,user:t.contact.isUser?t.contact.uid:void 0,"is-no-user":!t.contact.isUser,"disable-menu":!0,"display-name":t.contact.avatarLabel,"preloaded-user-status":t.preloadedUserStatus}}),t._v(" "),e("a",{staticClass:"contact__body",attrs:{href:t.contact.profileUrl||t.contact.topAction?.hyperlink}},[e("div",{staticClass:"contact__body__full-name"},[t._v(t._s(t.contact.fullName))]),t._v(" "),t.contact.lastMessage?e("div",{staticClass:"contact__body__last-message"},[t._v(t._s(t.contact.lastMessage))]):t._e(),t._v(" "),t.contact.statusMessage?e("div",{staticClass:"contact__body__status-message"},[t._v(t._s(t.contact.statusMessage))]):e("div",{staticClass:"contact__body__email-address"},[t._v(t._s(t.contact.emailAddresses[0]))])]),t._v(" "),t.actions.length?e("NcActions",{attrs:{inline:t.contact.topAction?1:0}},[t._l(t.actions,(function(n,i){return["#"!==n.hyperlink?e("NcActionLink",{key:i,staticClass:"other-actions",attrs:{href:n.hyperlink},scopedSlots:t._u([{key:"icon",fn:function(){return[e("img",{staticClass:"contact__action__icon",attrs:{"aria-hidden":"true",src:n.icon}})]},proxy:!0}],null,!0)},[t._v("\n\t\t\t\t"+t._s(n.title)+"\n\t\t\t")]):e("NcActionText",{key:i,staticClass:"other-actions",scopedSlots:t._u([{key:"icon",fn:function(){return[e("img",{staticClass:"contact__action__icon",attrs:{"aria-hidden":"true",src:n.icon}})]},proxy:!0}],null,!0)},[t._v("\n\t\t\t\t"+t._s(n.title)+"\n\t\t\t")])]}))],2):t._e()],1)}),[],!1,null,"97ebdcaa",null).exports;var Ae=o(35947);const fe=null===(ge=(0,f.HW)())?(0,Ae.YK)().setApp("core").build():(0,Ae.YK)().setApp("core").setUid(ge.uid).build();var ge;(0,Ae.YK)().setApp("unified-search").detectUser().build();const me={data:()=>({OC:St}),methods:{t:pt.translate.bind(pt),n:pt.translatePlural.bind(pt)}};var be=o(82182);const ve={name:"ContactsMenu",components:{Contact:pe,Contacts:Ft,Magnify:Wt.A,NcButton:Yt.A,NcEmptyContent:qt.A,NcHeaderMenu:Qt.A,NcLoadingIcon:Gt.A,NcTextField:be.A},mixins:[me],data(){const t=(0,f.HW)();return{contactsAppEnabled:!1,contactsAppURL:(0,v.Jv)("/apps/contacts"),contactsAppMgmtURL:(0,v.Jv)("/settings/apps/social/contacts"),canInstallApp:t.isAdmin,contacts:[],loadingText:void 0,error:!1,searchTerm:""}},methods:{async handleOpen(){await this.getContacts("")},async getContacts(t){this.loadingText=""===t?(0,X.Tl)("core","Loading your contacts …"):(0,X.Tl)("core","Looking for {term} …",{term:t}),this.error=!1;try{const{data:{contacts:e,contactsAppEnabled:n}}=await Ht.Ay.post((0,v.Jv)("/contactsmenu/contacts"),{filter:t});this.contacts=e,this.contactsAppEnabled=n,this.loadingText=void 0}catch(e){fe.error("could not load contacts",{error:e,searchTerm:t}),this.error=!0}},onInputDebounced:Ut()((function(){this.getContacts(this.searchTerm)}),500),onReset(){this.searchTerm="",this.contacts=[],this.focusInput()},focusInput(){this.$nextTick((()=>{this.$refs.contactsMenuInput.focus(),this.$refs.contactsMenuInput.select()}))}}},Ce=ve;var xe=o(38933),we={};we.styleTagTransform=ue(),we.setAttributes=se(),we.insert=oe().bind(null,"head"),we.domAPI=ne(),we.insertStyleElement=ce(),te()(xe.A,we),xe.A&&xe.A.locals&&xe.A.locals;const ye=(0,Lt.A)(Ce,(function(){var t=this,e=t._self._c;return e("NcHeaderMenu",{staticClass:"contactsmenu",attrs:{id:"contactsmenu","aria-label":t.t("core","Search contacts")},on:{open:t.handleOpen},scopedSlots:t._u([{key:"trigger",fn:function(){return[e("Contacts",{staticClass:"contactsmenu__trigger-icon",attrs:{size:20}})]},proxy:!0}])},[t._v(" "),e("div",{staticClass:"contactsmenu__menu"},[e("div",{staticClass:"contactsmenu__menu__input-wrapper"},[e("NcTextField",{ref:"contactsMenuInput",staticClass:"contactsmenu__menu__search",attrs:{id:"contactsmenu__menu__search",value:t.searchTerm,"trailing-button-icon":"close",label:t.t("core","Search contacts"),"trailing-button-label":t.t("core","Reset search"),"show-trailing-button":""!==t.searchTerm,placeholder:t.t("core","Search contacts …")},on:{"update:value":function(e){t.searchTerm=e},input:t.onInputDebounced,"trailing-button-click":t.onReset}})],1),t._v(" "),t.error?e("NcEmptyContent",{attrs:{name:t.t("core","Could not load your contacts")},scopedSlots:t._u([{key:"icon",fn:function(){return[e("Magnify")]},proxy:!0}],null,!1,931131664)}):t.loadingText?e("NcEmptyContent",{attrs:{name:t.loadingText},scopedSlots:t._u([{key:"icon",fn:function(){return[e("NcLoadingIcon")]},proxy:!0}])}):0===t.contacts.length?e("NcEmptyContent",{attrs:{name:t.t("core","No contacts found")},scopedSlots:t._u([{key:"icon",fn:function(){return[e("Magnify")]},proxy:!0}])}):e("div",{staticClass:"contactsmenu__menu__content"},[e("div",{attrs:{id:"contactsmenu-contacts"}},[e("ul",t._l(t.contacts,(function(t){return e("Contact",{key:t.id,attrs:{contact:t}})})),1)]),t._v(" "),t.contactsAppEnabled?e("div",{staticClass:"contactsmenu__menu__content__footer"},[e("NcButton",{attrs:{type:"tertiary",href:t.contactsAppURL}},[t._v("\n\t\t\t\t\t"+t._s(t.t("core","Show all contacts"))+"\n\t\t\t\t")])],1):t.canInstallApp?e("div",{staticClass:"contactsmenu__menu__content__footer"},[e("NcButton",{attrs:{type:"tertiary",href:t.contactsAppMgmtURL}},[t._v("\n\t\t\t\t\t"+t._s(t.t("core","Install the Contacts app"))+"\n\t\t\t\t")])],1):t._e()])],1)])}),[],!1,null,"5cad18ba",null).exports;var ke=o(13073);const Be={name:"CircleIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Ee=(0,Lt.A)(Be,(function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon circle-icon",attrs:{"aria-hidden":!t.title||null,"aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,null,null).exports,_e=(0,K.pM)({__name:"AppMenuIcon",props:{app:null},setup(t){const e=t,n=(0,K.EW)((()=>String(e.app.unread>0))),i=(0,K.EW)((()=>"true"===n.value?"":e.app.name+(e.app.unread>0?` (${(0,X.n)("core","{count} notification","{count} notifications",e.app.unread,{count:e.app.unread})})`:"")));return{__sfc:!0,props:e,ariaHidden:n,ariaLabel:i,IconDot:Ee}}});var Ie=o(23759),De={};De.styleTagTransform=ue(),De.setAttributes=se(),De.insert=oe().bind(null,"head"),De.domAPI=ne(),De.insertStyleElement=ce(),te()(Ie.A,De),Ie.A&&Ie.A.locals&&Ie.A.locals;const Se=(0,Lt.A)(_e,(function(){var t=this,e=t._self._c,n=t._self._setupProxy;return e("span",{staticClass:"app-menu-icon",attrs:{role:"img","aria-hidden":n.ariaHidden,"aria-label":n.ariaLabel}},[e("img",{staticClass:"app-menu-icon__icon",attrs:{src:t.app.icon,alt:""}}),t._v(" "),t.app.unread?e(n.IconDot,{staticClass:"app-menu-icon__unread",attrs:{size:10}}):t._e()],1)}),[],!1,null,"e7078f90",null).exports,Te=(0,K.pM)({__name:"AppMenuEntry",props:{app:null},setup(t){const e=t,n=(0,K.KR)(),i=(0,K.KR)(),o=(0,K.KR)(!1);function r(){const t=n.value.clientWidth;o.value=t-.5*e.app.name.lengthe.app.name),r),{__sfc:!0,props:e,containerElement:n,labelElement:i,needsSpace:o,calculateSize:r,AppMenuIcon:Se}}});var Oe=o(29518),Me={};Me.styleTagTransform=ue(),Me.setAttributes=se(),Me.insert=oe().bind(null,"head"),Me.domAPI=ne(),Me.insertStyleElement=ce(),te()(Oe.A,Me),Oe.A&&Oe.A.locals&&Oe.A.locals;var Pe=o(73402),Re={};Re.styleTagTransform=ue(),Re.setAttributes=se(),Re.insert=oe().bind(null,"head"),Re.domAPI=ne(),Re.insertStyleElement=ce(),te()(Pe.A,Re),Pe.A&&Pe.A.locals&&Pe.A.locals;const Ne=(0,Lt.A)(Te,(function(){var t=this,e=t._self._c,n=t._self._setupProxy;return e("li",{ref:"containerElement",staticClass:"app-menu-entry",class:{"app-menu-entry--active":t.app.active,"app-menu-entry--truncated":n.needsSpace}},[e("a",{staticClass:"app-menu-entry__link",attrs:{href:t.app.href,title:t.app.name,"aria-current":!!t.app.active&&"page",target:t.app.target?"_blank":void 0,rel:t.app.target?"noopener noreferrer":void 0}},[e(n.AppMenuIcon,{staticClass:"app-menu-entry__icon",attrs:{app:t.app}}),t._v(" "),e("span",{ref:"labelElement",staticClass:"app-menu-entry__label"},[t._v("\n\t\t\t"+t._s(t.app.name)+"\n\t\t")])],1)])}),[],!1,null,"1c485052",null).exports,He=(0,K.pM)({name:"AppMenu",components:{AppMenuEntry:Ne,NcActions:Kt.A,NcActionLink:Xt.A},setup(){const t=(0,K.KR)(),{width:e}=(0,ke.Lhy)(t);return{t:X.t,n:X.n,appMenu:t,appMenuWidth:e}},data:()=>({appList:(0,Ot.C)("core","apps",[])}),computed:{appLimit(){const t=Math.floor(this.appMenuWidth/50);return t{let{app:n}=e;return n===t}));n?this.$set(n,"unread",e):fe.warn(`Could not find app "${t}" for setting navigation count`)},setApps(t){let{apps:e}=t;this.appList=e}}}),ze=He;var Le=o(26652),Fe={};Fe.styleTagTransform=ue(),Fe.setAttributes=se(),Fe.insert=oe().bind(null,"head"),Fe.domAPI=ne(),Fe.insertStyleElement=ce(),te()(Le.A,Fe),Le.A&&Le.A.locals&&Le.A.locals;const je=(0,Lt.A)(ze,(function(){var t=this,e=t._self._c;return t._self._setupProxy,e("nav",{ref:"appMenu",staticClass:"app-menu",attrs:{"aria-label":t.t("core","Applications menu")}},[e("ul",{staticClass:"app-menu__list",attrs:{"aria-label":t.t("core","Apps")}},t._l(t.mainAppList,(function(t){return e("AppMenuEntry",{key:t.id,attrs:{app:t}})})),1),t._v(" "),e("NcActions",{staticClass:"app-menu__overflow",attrs:{"aria-label":t.t("core","More apps")}},t._l(t.popoverAppList,(function(n){return e("NcActionLink",{key:n.id,staticClass:"app-menu__overflow-entry",attrs:{"aria-current":!!n.active&&"page",href:n.href,icon:n.icon}},[t._v("\n\t\t\t"+t._s(n.name)+"\n\t\t")])})),1)],1)}),[],!1,null,"7661a89b",null).exports;var Ue=o(1522);const{profileEnabled:We}=(0,Ot.C)("user_status","profileEnabled",{profileEnabled:!1}),Ye=(0,K.pM)({name:"AccountMenuProfileEntry",components:{NcListItem:Ue.A,NcLoadingIcon:Gt.A},props:{id:{type:String,required:!0},name:{type:String,required:!0},href:{type:String,required:!0},active:{type:Boolean,required:!0}},setup:()=>({profileEnabled:We,displayName:(0,f.HW)().displayName}),data:()=>({loading:!1}),mounted(){(0,c.B1)("settings:profile-enabled:updated",this.handleProfileEnabledUpdate),(0,c.B1)("settings:display-name:updated",this.handleDisplayNameUpdate)},beforeDestroy(){(0,c.al)("settings:profile-enabled:updated",this.handleProfileEnabledUpdate),(0,c.al)("settings:display-name:updated",this.handleDisplayNameUpdate)},methods:{handleClick(){this.profileEnabled&&(this.loading=!0)},handleProfileEnabledUpdate(t){this.profileEnabled=t},handleDisplayNameUpdate(t){this.displayName=t}}}),qe=Ye,Qe=(0,Lt.A)(qe,(function(){var t=this,e=t._self._c;return t._self._setupProxy,e("NcListItem",{attrs:{id:t.profileEnabled?void 0:t.id,"anchor-id":t.id,active:t.active,compact:"",href:t.profileEnabled?t.href:void 0,name:t.displayName,target:"_self"},scopedSlots:t._u([t.profileEnabled?{key:"subname",fn:function(){return[t._v("\n\t\t"+t._s(t.name)+"\n\t")]},proxy:!0}:null,t.loading?{key:"indicator",fn:function(){return[e("NcLoadingIcon")]},proxy:!0}:null],null,!0)})}),[],!1,null,null,null).exports,Ge=(0,Ot.C)("core","versionHash",""),Xe={name:"AccountMenuEntry",components:{NcListItem:Ue.A,NcLoadingIcon:Gt.A},props:{id:{type:String,required:!0},name:{type:String,required:!0},href:{type:String,required:!0},active:{type:Boolean,required:!0},icon:{type:String,required:!0}},data:()=>({loading:!1}),computed:{iconSource(){return`${this.icon}?v=${Ge}`}},methods:{handleClick(){this.loading=!0}}};var Ve=o(49481),Ke={};Ke.styleTagTransform=ue(),Ke.setAttributes=se(),Ke.insert=oe().bind(null,"head"),Ke.domAPI=ne(),Ke.insertStyleElement=ce(),te()(Ve.A,Ke),Ve.A&&Ve.A.locals&&Ve.A.locals;const Je=(0,Lt.A)(Xe,(function(){var t=this,e=t._self._c;return e("NcListItem",{staticClass:"account-menu-entry",attrs:{id:t.href?void 0:t.id,"anchor-id":t.id,active:t.active,compact:"",href:t.href,name:t.name,target:"_self"},scopedSlots:t._u([{key:"icon",fn:function(){return[e("img",{staticClass:"account-menu-entry__icon",class:{"account-menu-entry__icon--active":t.active},attrs:{src:t.iconSource,alt:""}})]},proxy:!0},t.loading?{key:"indicator",fn:function(){return[e("NcLoadingIcon")]},proxy:!0}:null],null,!0)})}),[],!1,null,"2e0a74a6",null).exports,Ze=[{type:"online",label:(0,X.Tl)("user_status","Online")},{type:"away",label:(0,X.Tl)("user_status","Away")},{type:"dnd",label:(0,X.Tl)("user_status","Do not disturb"),subline:(0,X.Tl)("user_status","Mute all notifications")},{type:"invisible",label:(0,X.Tl)("user_status","Invisible"),subline:(0,X.Tl)("user_status","Appear offline")}],$e=(0,K.pM)({name:"AccountMenu",components:{AccountMenuEntry:Je,AccountMenuProfileEntry:Qe,NcAvatar:Jt.A,NcHeaderMenu:Qt.A},setup(){const t=(0,Ot.C)("core","settingsNavEntries",{}),{profile:e,...n}=t;return{currentDisplayName:(0,f.HW)()?.displayName??(0,f.HW)().uid,currentUserId:(0,f.HW)().uid,profileEntry:e,otherEntries:n,t:X.t}},data:()=>({showUserStatus:!1,userStatus:{status:null,icon:null,message:null}}),computed:{translatedUserStatus(){return{...this.userStatus,status:this.translateStatus(this.userStatus.status)}},avatarDescription(){return[(0,X.t)("core","Avatar of {displayName}",{displayName:this.currentDisplayName}),...Object.values(this.translatedUserStatus).filter(Boolean)].join(" — ")}},async created(){if(!(0,rt.F)()?.user_status?.enabled)return;const t=(0,v.KT)("/apps/user_status/api/v1/user_status");try{const e=await Ht.Ay.get(t),{status:n,icon:i,message:o}=e.data.ocs.data;this.userStatus={status:n,icon:i,message:o}}catch(t){fe.error("Failed to load user status")}this.showUserStatus=!0},mounted(){(0,c.B1)("user_status:status.updated",this.handleUserStatusUpdated),(0,c.Ic)("core:user-menu:mounted")},methods:{handleUserStatusUpdated(t){this.currentUserId===t.userId&&(this.userStatus={status:t.status,icon:t.icon,message:t.message})},translateStatus(t){const e=Object.fromEntries(Ze.map((t=>{let{type:e,label:n}=t;return[e,n]})));return e[t]?e[t]:t}}});var tn=o(24454),en={};en.styleTagTransform=ue(),en.setAttributes=se(),en.insert=oe().bind(null,"head"),en.domAPI=ne(),en.insertStyleElement=ce(),te()(tn.A,en),tn.A&&tn.A.locals&&tn.A.locals;const nn=(0,Lt.A)($e,(function(){var t=this,e=t._self._c;return t._self._setupProxy,e("NcHeaderMenu",{staticClass:"account-menu",attrs:{id:"user-menu","is-nav":"","aria-label":t.t("core","Settings menu"),description:t.avatarDescription},scopedSlots:t._u([{key:"trigger",fn:function(){return[e("NcAvatar",{key:String(t.showUserStatus),staticClass:"account-menu__avatar",attrs:{"disable-menu":"","disable-tooltip":"","show-user-status":t.showUserStatus,user:t.currentUserId,"preloaded-user-status":t.userStatus}})]},proxy:!0}])},[t._v(" "),e("ul",{staticClass:"account-menu__list"},[e("AccountMenuProfileEntry",{attrs:{id:t.profileEntry.id,name:t.profileEntry.name,href:t.profileEntry.href,active:t.profileEntry.active}}),t._v(" "),t._l(t.otherEntries,(function(t){return e("AccountMenuEntry",{key:t.id,attrs:{id:t.id,name:t.name,href:t.href,active:t.active,icon:t.icon}})}))],2)])}),[],!1,null,"a886d77a",null).exports,on=t=>{const e=window.location.protocol+"//"+window.location.host+(0,v.aU)();return t.startsWith(e)||(t=>!t.startsWith("https://")&&!t.startsWith("http://"))(t)&&t.startsWith((0,v.aU)())},rn=()=>{var t;XMLHttpRequest.prototype.open=(t=XMLHttpRequest.prototype.open,function(e,n,i){t.apply(this,arguments),on(n)&&!this.getResponseHeader("X-Requested-With")&&this.setRequestHeader("X-Requested-With","XMLHttpRequest")}),window.fetch=function(t){return(e,n)=>on(e.url??e.toString())?(n||(n={}),n.headers||(n.headers=new Headers),n.headers instanceof Headers&&!n.headers.has("X-Requested-With")?n.headers.append("X-Requested-With","XMLHttpRequest"):n.headers instanceof Object&&!n.headers["X-Requested-With"]&&(n.headers["X-Requested-With"]="XMLHttpRequest"),t(e,n)):t(e,n)}(window.fetch)},sn=()=>{setInterval((()=>{h()(".live-relative-timestamp").each((function(){const t=parseInt(h()(this).attr("data-timestamp"),10);h()(this).text(Ct()(t).fromNow())}))}),3e4)},an={zh:"zh-cn",zh_Hans:"zh-cn",zh_Hans_CN:"zh-cn",zh_Hans_HK:"zh-cn",zh_Hans_MO:"zh-cn",zh_Hans_SG:"zh-cn",zh_Hant:"zh-hk",zh_Hant_HK:"zh-hk",zh_Hant_MO:"zh-mo",zh_Hant_TW:"zh-tw"};let cn=St.getLocale();Object.prototype.hasOwnProperty.call(an,cn)&&(cn=an[cn]),Ct().locale(cn);const ln=()=>{if(rn(),h()(window).on("unload.main",(()=>{St._unloadCalled=!0})),h()(window).on("beforeunload.main",(()=>{setTimeout((()=>{St._userIsNavigatingAway=!0,setTimeout((()=>{St._unloadCalled||(St._userIsNavigatingAway=!1)}),1e4)}),1)})),h()(document).on("ajaxError.main",(function(t,e,n){n&&n.allowAuthErrors||St._processAjaxError(e)})),(()=>{if((()=>{try{Pt=(0,Ot.C)("core","config")}catch(t){Pt=St.config}})(),(()=>{if(!Pt.auto_logout||!(0,f.HW)())return;let t=Date.now();window.addEventListener("mousemove",(e=>{t=Date.now(),localStorage.setItem("lastActive",t)})),window.addEventListener("touchstart",(e=>{t=Date.now(),localStorage.setItem("lastActive",t)})),window.addEventListener("storage",(e=>{"lastActive"===e.key&&(t=e.newValue)}));let e=0;e=setInterval((()=>{const n=Date.now()-1e3*Pt.session_lifetime;if(t{Mt.info("browser is online again, resuming heartbeat"),t=Nt();try{await Rt(),Mt.info("session token successfully updated after resuming network"),(0,c.Ic)("networkOnline",{success:!0})}catch(t){Mt.error("could not update session token after resuming network",t),(0,c.Ic)("networkOnline",{success:!1})}})),window.addEventListener("offline",(()=>{Mt.info("browser is offline, stopping heartbeat"),(0,c.Ic)("networkOffline",{}),clearInterval(t),Mt.info("session heartbeat polling stopped")}))})(),St.registerMenu(h()("#expand"),h()("#expanddiv"),!1,!0),h()(document).on("mouseup.closemenus",(t=>{const e=h()(t.target);if(e.closest(".menu").length||e.closest(".menutoggle").length)return!1;St.hideMenus()})),(()=>{K.Ay.mixin({methods:{t:X.Tl,n:X.zw}});const t=document.getElementById("header-start__appmenu");if(!t)return;const e=new(K.Ay.extend(je))({}).$mount(t);Object.assign(OC,{setNavigationCounter(t,n){e.setNavigationCounter(t,n)}})})(),(()=>{const t=document.getElementById("user-menu");t&&new K.Ay({el:t,render:t=>t(nn)})})(),(()=>{const t=document.getElementById("contactsmenu");t&&new K.Ay({el:t,render:t=>t(ye)})})(),h()("#app-navigation").length&&!h()("html").hasClass("lte9")&&!h()("#app-content").hasClass("no-snapper")){const t=new Snap({element:document.getElementById("app-content"),disable:"right",maxPosition:300,minDragDistance:100});h()("#app-content").prepend('');let e=!1;t.on("animating",(()=>{e=!0})),t.on("animated",(()=>{e=!1})),t.on("start",(()=>{e=!0})),t.on("end",(()=>{e=!1})),t.on("open",(()=>{s.attr("aria-hidden","false")})),t.on("close",(()=>{s.attr("aria-hidden","true")}));const n=t.open,i=t.close,o=()=>{e||"closed"!==t.state().state||n("left")},r=()=>{e||"closed"===t.state().state||i()};window.TESTING||(t.open=()=>{l.default.defer(o)},t.close=()=>{l.default.defer(r)}),h()("#app-navigation-toggle").click((e=>{"left"!==t.state().state&&t.open()})),h()("#app-navigation-toggle").keypress((e=>{"left"===t.state().state?t.close():t.open()}));const s=h()("#app-navigation");s.attr("aria-hidden","true"),s.delegate("a, :button","click",(e=>{const n=h()(e.target);n.is(".app-navigation-noclose")||n.closest(".app-navigation-noclose").length||n.is(".app-navigation-entry-utils-menu-button")||n.closest(".app-navigation-entry-utils-menu-button").length||n.is(".add-new")||n.closest(".add-new").length||n.is("#app-settings")||n.closest("#app-settings").length||t.close()}));let a=!1,c=!0,u=!1;St.allowNavigationBarSlideGesture=()=>{c=!0,u&&(t.enable(),a=!0,u=!1)},St.disallowNavigationBarSlideGesture=()=>{if(c=!1,a){const e=!0;t.disable(e),a=!1,u=!0}};const d=()=>{h()(window).width()>1024?(s.attr("aria-hidden","false"),t.close(),t.disable(),a=!1,u=!1):c?(t.enable(),a=!0,u=!1):u=!0};h()(window).resize(l.default.debounce(d,250)),d()}sn()};o(99660);var un=o(3131),hn={};hn.styleTagTransform=ue(),hn.setAttributes=se(),hn.insert=oe().bind(null,"head"),hn.domAPI=ne(),hn.insertStyleElement=ce(),te()(un.A,hn),un.A&&un.A.locals&&un.A.locals;var dn=o(13169),pn={};pn.styleTagTransform=ue(),pn.setAttributes=se(),pn.insert=oe().bind(null,"head"),pn.domAPI=ne(),pn.insertStyleElement=ce(),te()(dn.A,pn),dn.A&&dn.A.locals&&dn.A.locals;var An=o(57576),fn=o.n(An),gn=o(18922),mn=o.n(gn),bn=(o(44275),o(35156)),vn={};vn.styleTagTransform=ue(),vn.setAttributes=se(),vn.insert=oe().bind(null,"head"),vn.domAPI=ne(),vn.insertStyleElement=ce(),te()(bn.A,vn),bn.A&&bn.A.locals&&bn.A.locals,o(57223),o(53425);var Cn=o(86140),xn={};xn.styleTagTransform=ue(),xn.setAttributes=se(),xn.insert=oe().bind(null,"head"),xn.domAPI=ne(),xn.insertStyleElement=ce(),te()(Cn.A,xn),Cn.A&&Cn.A.locals&&Cn.A.locals;const wn=/(\s|^)(https?:\/\/)([-A-Z0-9+_.]+(?::[0-9]+)?(?:\/[-A-Z0-9+&@#%?=~_|!:,.;()]*)*)(\s|$)/gi;function yn(t){return this.formatLinksRich(t)}function kn(t){return this.formatLinksPlain(t)}function Bn(t){return t.replace(wn,(function(t,e,n,i,o){let r=i;return n?"http://"===n&&(r=n+i):n="https://",e+''+r+""+o}))}function En(t){const e=h()("
    ").html(t);return e.find("a").each((function(){const t=h()(this);t.html(t.attr("href"))})),e.html()}var _n=o(96763);function In(e){const n=(e=e||{}).dismiss||{};h().ajax({type:"GET",url:e.url||(0,v.KT)("core/whatsnew?format=json"),success:e.success||function(e,i,o){!function(e,n,i,o){if(_n.debug("querying Whats New data was successful: "+n),_n.debug(e),200!==i.status)return;let r,s,a,c;const u=document.createElement("div");u.classList.add("popovermenu","open","whatsNewPopover","menu-left");const h=document.createElement("ul");r=document.createElement("li"),s=document.createElement("span"),s.className="menuitem",a=document.createElement("span"),a.innerText=t("core","New in")+" "+e.ocs.data.product,a.className="caption",s.appendChild(a),c=document.createElement("span"),c.className="icon-close",c.onclick=function(){Dn(e.ocs.data.version,o)},s.appendChild(c),r.appendChild(s),h.appendChild(r);for(const t in e.ocs.data.whatsNew.regular){const n=e.ocs.data.whatsNew.regular[t];r=document.createElement("li"),s=document.createElement("span"),s.className="menuitem",c=document.createElement("span"),c.className="icon-checkmark",s.appendChild(c),a=document.createElement("p"),a.innerHTML=l.default.escape(n),s.appendChild(a),r.appendChild(s),h.appendChild(r)}l.default.isUndefined(e.ocs.data.changelogURL)||(r=document.createElement("li"),s=document.createElement("a"),s.href=e.ocs.data.changelogURL,s.rel="noreferrer noopener",s.target="_blank",c=document.createElement("span"),c.className="icon-link",s.appendChild(c),a=document.createElement("span"),a.innerText=t("core","View changelog"),s.appendChild(a),r.appendChild(s),h.appendChild(r)),u.appendChild(h),document.body.appendChild(u)}(e,i,o,n)},error:e.error||Sn})}function Dn(t,e){e=e||{},h().ajax({type:"POST",url:e.url||(0,v.KT)("core/whatsnew"),data:{version:encodeURIComponent(t)},success:e.success||Tn,error:e.error||On}),h()(".whatsNewPopover").remove()}function Sn(t,e,n){_n.debug("querying Whats New Data resulted in an error: "+e+n),_n.debug(t)}function Tn(t){}function On(t){_n.debug("dismissing Whats New data resulted in an error: "+t)}const Mn={disableKeyboardShortcuts:()=>(0,Ot.C)("theming","shortcutsDisabled",!1),setPageHeading:function(t){const e=document.getElementById("page-heading-level-1");e&&(e.textContent=t)}};var Pn=o(70580),Rn=o.n(Pn);const Nn={},Hn={registerType(t,e){Nn[t]=e},trigger:t=>Nn[t].action(),getTypes:()=>Object.keys(Nn),getIcon:t=>Nn[t].typeIconClass||"",getLabel:t=>Rn()(Nn[t].typeString||t),getLink:(t,e)=>void 0!==Nn[t]?Nn[t].link(e):""},zn={},Ln={},Fn={loadScript(t,e){const n=t+e;return Object.prototype.hasOwnProperty.call(zn,n)?Promise.resolve():(zn[n]=!0,new Promise((function(n,i){const o=OC.filePath(t,"js",e),r=document.createElement("script");r.src=o,r.setAttribute("nonce",btoa(OC.requestToken)),r.onload=()=>n(),r.onerror=()=>i(new Error(`Failed to load script from ${o}`)),document.head.appendChild(r)})))},loadStylesheet(t,e){const n=t+e;return Object.prototype.hasOwnProperty.call(Ln,n)?Promise.resolve():(Ln[n]=!0,new Promise((function(n,i){const o=OC.filePath(t,"css",e),r=document.createElement("link");r.href=o,r.type="text/css",r.rel="stylesheet",r.onload=()=>n(),r.onerror=()=>i(new Error(`Failed to load stylesheet from ${o}`)),document.head.appendChild(r)})))}},jn={success:(t,e)=>(0,d.Te)(t,e),warning:(t,e)=>(0,d.I9)(t,e),error:(t,e)=>(0,d.Qg)(t,e),info:(t,e)=>(0,d.cf)(t,e),message:(t,e)=>(0,d.rG)(t,e)},Un={Accessibility:Mn,AppConfig:r,Collaboration:Hn,Comments:s,InitialState:{loadState:Ot.C},Loader:Fn,Toast:jn,WhatsNew:a};var Wn=o(96763);const Yn=function(){void 0===window.TESTING&&St.debug&&Wn.warn.apply(Wn,arguments)},qn=(t,e,n)=>{(Array.isArray(t)?t:[t]).forEach((t=>{void 0!==window[t]&&delete window[t],Object.defineProperty(window,t,{get:()=>(Yn(n?`${t} is deprecated: ${n}`:`${t} is deprecated`),e())})}))};window._=l.default,qn(["$","jQuery"],(()=>h()),"The global jQuery is deprecated. It will be removed in a later versions without another warning. Please ship your own."),qn("Backbone",(()=>T()),"please ship your own, this will be removed in Nextcloud 20"),qn(["Clipboard","ClipboardJS"],(()=>fn()),"please ship your own, this will be removed in Nextcloud 20"),window.dav=O.dav,qn("Handlebars",(()=>dt()),"please ship your own, this will be removed in Nextcloud 20"),qn("md5",(()=>mn()),"please ship your own, this will be removed in Nextcloud 20"),qn("moment",(()=>Ct()),"please ship your own, this will be removed in Nextcloud 20"),window.OC=St,qn("initCore",(()=>ln),"this is an internal function"),qn("oc_appswebroots",(()=>St.appswebroots),"use OC.appswebroots instead, this will be removed in Nextcloud 20"),qn("oc_config",(()=>St.config),"use OC.config instead, this will be removed in Nextcloud 20"),qn("oc_current_user",(()=>St.getCurrentUser().uid),"use OC.getCurrentUser().uid instead, this will be removed in Nextcloud 20"),qn("oc_debug",(()=>St.debug),"use OC.debug instead, this will be removed in Nextcloud 20"),qn("oc_defaults",(()=>St.theme),"use OC.theme instead, this will be removed in Nextcloud 20"),qn("oc_isadmin",St.isUserAdmin,"use OC.isUserAdmin() instead, this will be removed in Nextcloud 20"),qn("oc_requesttoken",(()=>et()),"use OC.requestToken instead, this will be removed in Nextcloud 20"),qn("oc_webroot",(()=>St.webroot),"use OC.getRootPath() instead, this will be removed in Nextcloud 20"),qn("OCDialogs",(()=>St.dialogs),"use OC.dialogs instead, this will be removed in Nextcloud 20"),window.OCP=Un,window.OCA={},h().fn.select2=(t=>{const e=t,n=function(){return Yn("The select2 library is deprecated! It will be removed in nextcloud 19."),e.apply(this,arguments)};return Object.assign(n,e),n})(h().fn.select2),window.t=l.default.bind(St.L10N.translate,St.L10N),window.n=l.default.bind(St.L10N.translatePlural,St.L10N),h().fn.avatar=function(t,e,n,i,o,r){const s=function(t){t.imageplaceholder("?"),t.css("background-color","#b9b9b9")};if(void 0!==t&&(t=String(t)),void 0!==r&&(r=String(r)),void 0===e&&(e=this.height()>0?this.height():this.data("size")>0?this.data("size"):64),this.height(e),this.width(e),void 0===t){if(void 0===this.data("user"))return void s(this);t=this.data("user")}t=String(t).replace(/\//g,"");const a=this;let c;c=t===St.getCurrentUser().uid?St.generateUrl("/avatar/{user}/{size}?v={version}",{user:t,size:Math.ceil(e*window.devicePixelRatio),version:oc_userconfig.avatar.version}):St.generateUrl("/avatar/{user}/{size}",{user:t,size:Math.ceil(e*window.devicePixelRatio)});const l=new Image;l.onload=function(){a.clearimageplaceholder(),a.append(l),"function"==typeof o&&o()},l.onerror=function(){a.clearimageplaceholder(),void 0!==r?a.imageplaceholder(t,r):s(a),"function"==typeof o&&o()},e<32?a.addClass("icon-loading-small"):a.addClass("icon-loading"),l.width=e,l.height=e,l.src=c,l.alt=""};const Qn=t=>"click"===t.type||"keydown"===t.type&&"Enter"===t.key,Gn=o(66235);h().fn.contactsMenu=function(e,n,i){if(-1===[0,4,6].indexOf(n))return;const o=this;i.append('');const r=i.find("div.contactsmenu-popover");o.on("click keydown",(function(i){if(Qn(i)){if(!r.hasClass("hidden"))return r.addClass("hidden"),void r.hide();r.removeClass("hidden"),r.show(),r.hasClass("loaded")||(r.addClass("loaded"),h().ajax((0,v.Jv)("/contactsmenu/findOne"),{method:"POST",data:{shareType:n,shareWith:e}}).then((function(e){let n;r.find("ul").find("li").addClass("hidden"),n=e.topAction?[e.topAction].concat(e.actions):[{hyperlink:"#",title:t("core","No action available")}],n.forEach((function(t){r.find("ul").append(Gn(t))})),o.trigger("load")}),(function(e){let n;r.find("ul").find("li").addClass("hidden"),n=404===e.status?t("core","No action available"):t("core","Error fetching contact actions"),r.find("ul").append(Gn({hyperlink:"#",title:n})),o.trigger("loaderror",e)})))}})),h()(document).click((function(t){const e=r.has(t.target).length>0;let n=o.has(t.target).length>0;o.each((function(){h()(this).is(t.target)&&(n=!0)})),e||n||(r.addClass("hidden"),r.hide())}))},h().fn.exists=function(){return this.length>0},h().fn.filterAttr=function(t,e){return this.filter((function(){return h()(this).attr(t)===e}))};var Xn=o(52697);h().widget("oc.ocdialog",{options:{width:"auto",height:"auto",closeButton:!0,closeOnEscape:!0,closeCallback:null,modal:!1},_create(){const t=this;this.originalCss={display:this.element[0].style.display,width:this.element[0].style.width,height:this.element[0].style.height},this.originalTitle=this.element.attr("title"),this.options.title=this.options.title||this.originalTitle,this.$dialog=h()('
    ').attr({tabIndex:-1,role:"dialog","aria-modal":!0}).insertBefore(this.element),this.$dialog.append(this.element.detach()),this.element.removeAttr("title").addClass("oc-dialog-content").appendTo(this.$dialog),1===t.element.find("input").length&&t.element.find("input").on("keydown",(function(e){if(Qn(e)&&t.$buttonrow){const e=t.$buttonrow.find("button.primary");e&&!e.prop("disabled")&&e.click()}})),this.$dialog.css({display:"inline-block",position:"fixed"}),this.enterCallback=null,h()(document).on("keydown keyup",(function(e){if(e.target===t.$dialog.get(0)||0!==t.$dialog.find(h()(e.target)).length)return 27===e.keyCode&&"keydown"===e.type&&t.options.closeOnEscape?(e.stopImmediatePropagation(),t.close(),!1):13===e.keyCode?(e.stopImmediatePropagation(),null!==t.enterCallback?(t.enterCallback(),e.preventDefault(),!1):"keyup"===e.type&&(e.preventDefault(),!1)):void 0})),this._setOptions(this.options),this._createOverlay(),this._useFocusTrap()},_init(){this._trigger("open")},_setOption(e,n){const i=this;switch(e){case"title":if(this.$title)this.$title.text(n);else{const t=h()('

    '+n+"

    ");this.$title=t.prependTo(this.$dialog)}this._setSizes();break;case"buttons":if(this.$buttonrow)this.$buttonrow.empty();else{const t=h()('
    ');this.$buttonrow=t.appendTo(this.$dialog)}1===n.length?this.$buttonrow.addClass("onebutton"):2===n.length?this.$buttonrow.addClass("twobuttons"):3===n.length&&this.$buttonrow.addClass("threebuttons"),h().each(n,(function(t,e){const n=h()("');e.attr("aria-label",t("core",'Close "{dialogTitle}" dialog',{dialogTitle:this.$title||this.options.title})),this.$dialog.prepend(e),e.on("click keydown",(function(t){Qn(t)&&(i.options.closeCallback&&i.options.closeCallback(),i.close())}))}else this.$dialog.find(".oc-dialog-close").remove();break;case"width":this.$dialog.css("width",n);break;case"height":this.$dialog.css("height",n);break;case"close":this.closeCB=n}h().Widget.prototype._setOption.apply(this,arguments)},_setOptions(t){h().Widget.prototype._setOptions.apply(this,arguments)},_setSizes(){let t=0;this.$title&&(t+=this.$title.outerHeight(!0)),this.$buttonrow&&(t+=this.$buttonrow.outerHeight(!0)),this.element.css({height:"calc(100% - "+t+"px)"})},_createOverlay(){if(!this.options.modal)return;const t=this;let e=h()("#content");0===e.length&&(e=h()(".content")),this.overlay=h()("
    ").addClass("oc-dialog-dim").insertBefore(this.$dialog),this.overlay.on("click keydown keyup",(function(e){e.target!==t.$dialog.get(0)&&0===t.$dialog.find(h()(e.target)).length&&(e.preventDefault(),e.stopPropagation())}))},_destroyOverlay(){this.options.modal&&this.overlay&&(this.overlay.off("click keydown keyup"),this.overlay.remove(),this.overlay=null)},_useFocusTrap(){Object.assign(window,{_nc_focus_trap:window._nc_focus_trap||[]});const t=this.$dialog[0];this.focusTrap=(0,Xn.K)(t,{allowOutsideClick:!0,trapStack:window._nc_focus_trap,fallbackFocus:t}),this.focusTrap.activate()},_clearFocusTrap(){this.focusTrap?.deactivate(),this.focusTrap=null},widget(){return this.$dialog},setEnterCallback(t){this.enterCallback=t},unsetEnterCallback(){this.enterCallback=null},close(){this._clearFocusTrap(),this._destroyOverlay();const t=this;setTimeout((function(){t._trigger("close",t)}),200),t.$dialog.remove(),this.destroy()},destroy(){this.$title&&this.$title.remove(),this.$buttonrow&&this.$buttonrow.remove(),this.originalTitle&&this.element.attr("title",this.originalTitle),this.element.removeClass("oc-dialog-content").css(this.originalCss).detach().insertBefore(this.$dialog),this.$dialog.remove()}});var Vn=o(96763);const Kn={init(t,e,n){this.vars=t,this.options=h().extend({},this.options,e),this.elem=n;const i=this;if("function"==typeof this.options.escapeFunction){const t=Object.keys(this.vars);for(let e=0;e{var e=t.toLowerCase();function n(t,e,n){this.r=t,this.g=e,this.b=n}function i(t,e,i){var o=[];o.push(e);for(var r=function(t,e){var n=new Array(3);return n[0]=(e[1].r-e[0].r)/t,n[1]=(e[1].g-e[0].g)/t,n[2]=(e[1].b-e[0].b)/t,n}(t,[e,i]),s=1;st[0].toUpperCase())).join("");this.html(r)}},h().fn.clearimageplaceholder=function(){this.css("background-color",""),this.css("color",""),this.css("font-weight",""),this.css("text-align",""),this.css("line-height",""),this.css("font-size",""),this.html(""),this.removeClass("icon-loading"),this.removeClass("icon-loading-small")},h()(document).on("ajaxSend",(function(t,e,n){!1===n.crossDomain&&(e.setRequestHeader("requesttoken",et()),e.setRequestHeader("OCS-APIREQUEST","true"))})),h().fn.selectRange=function(t,e){return this.each((function(){if(this.setSelectionRange)this.focus(),this.setSelectionRange(t,e);else if(this.createTextRange){const n=this.createTextRange();n.collapse(!0),n.moveEnd("character",e),n.moveStart("character",t),n.select()}}))},h().fn.extend({showPassword(t){const e={fn:null,args:{}};e.fn=t;const n=function(t,e){e.val(t.val())},i=function(t,e,i){t.is(":checked")?(n(e,i),i.show(),e.hide()):(n(i,e),i.hide(),e.show())};return this.each((function(){const t=h()(this),o=h()(t.data("typetoggle")),r=function(t){const e=h()(t),n=h()("");return n.attr({type:"text",class:e.attr("class"),style:e.attr("style"),size:e.attr("size"),name:e.attr("name")+"-clone",tabindex:e.attr("tabindex"),autocomplete:"off"}),void 0!==e.attr("placeholder")&&n.attr("placeholder",e.attr("placeholder")),n}(t);r.insertAfter(t),e.fn&&(e.args.input=t,e.args.checkbox=o,e.args.clone=r),o.bind("click",(function(){i(o,t,r)})),t.bind("keyup",(function(){n(t,r)})),r.bind("keyup",(function(){n(r,t),t.trigger("keyup")})),r.bind("blur",(function(){t.trigger("focusout")})),i(o,t,r),r.closest("form").submit((function(t){r.prop("type","password")})),e.fn&&e.fn(e.args)}))}}),h().ui.autocomplete.prototype._resizeMenu=function(){this.menu.element.outerWidth(this.element.outerWidth())};var $n=o(90628),ti={};ti.styleTagTransform=ue(),ti.setAttributes=se(),ti.insert=oe().bind(null,"head"),ti.domAPI=ne(),ti.insertStyleElement=ce(),te()($n.A,ti),$n.A&&$n.A.locals&&$n.A.locals;var ei=o(2791),ni={};ni.styleTagTransform=ue(),ni.setAttributes=se(),ni.insert=oe().bind(null,"head"),ni.domAPI=ne(),ni.insertStyleElement=ce(),te()(ei.A,ni),ei.A&&ei.A.locals&&ei.A.locals,h().ajaxSetup({contents:{script:!1}}),h().globalEval=function(){},o.nc=(0,f.aV)(),window.addEventListener("DOMContentLoaded",(function(){ln(),(()=>{let t=h()("[data-apps-slide-toggle]");0===t.length&&h()("#app-navigation").addClass("without-app-settings"),h()(document).click((function(e){m&&(t=h()("[data-apps-slide-toggle]")),t.each((function(t,n){const i=h()(n).data("apps-slide-toggle"),o=h()(i);function r(){o.slideUp(4*OC.menuSpeed,(function(){o.trigger(new(h().Event)("hide"))})),o.removeClass("opened"),h()(n).removeClass("opened"),h()(n).attr("aria-expanded","false")}if(!o.is(":animated"))if(h()(n).is(h()(e.target).closest("[data-apps-slide-toggle]")))o.is(":visible")?r():function(){o.slideDown(4*OC.menuSpeed,(function(){o.trigger(new(h().Event)("show"))})),o.addClass("opened"),h()(n).addClass("opened"),h()(n).attr("aria-expanded","true");const t=h()(i+" [autofocus]");1===t.length&&t.focus()}();else{const t=h()(e.target).closest(i);o.is(":visible")&&t[0]!==o[0]&&r()}}))}))})(),window.history.pushState?window.onpopstate=_.bind(St.Util.History._onPopState,St.Util.History):window.onhashchange=_.bind(St.Util.History._onPopState,St.Util.History)})),document.addEventListener("DOMContentLoaded",(function(){const t=document.getElementById("password-input-form");t&&t.addEventListener("submit",(async function(e){e.preventDefault();const n=document.getElementById("requesttoken");if(n){const t=(0,v.Jv)("/csrftoken"),e=await Ht.Ay.get(t);n.value=e.data.token}t.submit()}))}))},21391:(t,e,n)=>{var i,o,r;r="object"==typeof self&&self.self===self&&self||"object"==typeof n.g&&n.g.global===n.g&&n.g,i=[n(4523),n(74692),e],o=function(t,e,n){r.Backbone=function(t,e,n,i){var o=t.Backbone,r=Array.prototype.slice;e.VERSION="1.6.0",e.$=i,e.noConflict=function(){return t.Backbone=o,this},e.emulateHTTP=!1,e.emulateJSON=!1;var s,a=e.Events={},c=/\s+/,l=function(t,e,i,o,r){var s,a=0;if(i&&"object"==typeof i){void 0!==o&&"context"in r&&void 0===r.context&&(r.context=o);for(s=n.keys(i);athis.length&&(o=this.length),o<0&&(o+=this.length+1);var r,s,a=[],c=[],l=[],u=[],h={},d=e.add,p=e.merge,A=e.remove,f=!1,g=this.comparator&&null==o&&!1!==e.sort,m=n.isString(this.comparator)?this.comparator:null;for(s=0;s0&&!e.silent&&delete e.index,n},_isModel:function(t){return t instanceof m},_addReference:function(t,e){this._byId[t.cid]=t;var n=this.modelId(t.attributes,t.idAttribute);null!=n&&(this._byId[n]=t),t.on("all",this._onModelEvent,this)},_removeReference:function(t,e){delete this._byId[t.cid];var n=this.modelId(t.attributes,t.idAttribute);null!=n&&delete this._byId[n],this===t.collection&&delete t.collection,t.off("all",this._onModelEvent,this)},_onModelEvent:function(t,e,n,i){if(e){if(("add"===t||"remove"===t)&&n!==this)return;if("destroy"===t&&this.remove(e,i),"changeId"===t){var o=this.modelId(e.previousAttributes(),e.idAttribute),r=this.modelId(e.attributes,e.idAttribute);null!=o&&delete this._byId[o],null!=r&&(this._byId[r]=e)}}this.trigger.apply(this,arguments)},_forwardPristineError:function(t,e,n){this.has(t)||this._onModelEvent("error",t,e,n)}});var w="function"==typeof Symbol&&Symbol.iterator;w&&(b.prototype[w]=b.prototype.values);var y=function(t,e){this._collection=t,this._kind=e,this._index=0},k=1,B=2,E=3;w&&(y.prototype[w]=function(){return this}),y.prototype.next=function(){if(this._collection){if(this._index7),this._useHashChange=this._wantsHashChange&&this._hasHashChange,this._wantsPushState=!!this.options.pushState,this._hasPushState=!(!this.history||!this.history.pushState),this._usePushState=this._wantsPushState&&this._hasPushState,this.fragment=this.getFragment(),this.root=("/"+this.root+"/").replace(j,"/"),this._wantsHashChange&&this._wantsPushState){if(!this._hasPushState&&!this.atRoot()){var e=this.root.slice(0,-1)||"/";return this.location.replace(e+"#"+this.getPath()),!0}this._hasPushState&&this.atRoot()&&this.navigate(this.getHash(),{replace:!0})}if(!this._hasHashChange&&this._wantsHashChange&&!this._usePushState){this.iframe=document.createElement("iframe"),this.iframe.src="javascript:0",this.iframe.style.display="none",this.iframe.tabIndex=-1;var i=document.body,o=i.insertBefore(this.iframe,i.firstChild).contentWindow;o.document.open(),o.document.close(),o.location.hash="#"+this.fragment}var r=window.addEventListener||function(t,e){return attachEvent("on"+t,e)};if(this._usePushState?r("popstate",this.checkUrl,!1):this._useHashChange&&!this.iframe?r("hashchange",this.checkUrl,!1):this._wantsHashChange&&(this._checkUrlInterval=setInterval(this.checkUrl,this.interval)),!this.options.silent)return this.loadUrl()},stop:function(){var t=window.removeEventListener||function(t,e){return detachEvent("on"+t,e)};this._usePushState?t("popstate",this.checkUrl,!1):this._useHashChange&&!this.iframe&&t("hashchange",this.checkUrl,!1),this.iframe&&(document.body.removeChild(this.iframe),this.iframe=null),this._checkUrlInterval&&clearInterval(this._checkUrlInterval),L.started=!1},route:function(t,e){this.handlers.unshift({route:t,callback:e})},checkUrl:function(t){var e=this.getFragment();if(e===this.fragment&&this.iframe&&(e=this.getHash(this.iframe.contentWindow)),e===this.fragment)return!this.matchRoot()&&this.notfound();this.iframe&&this.navigate(e),this.loadUrl()},loadUrl:function(t){return this.matchRoot()?(t=this.fragment=this.getFragment(t),n.some(this.handlers,(function(e){if(e.route.test(t))return e.callback(t),!0}))||this.notfound()):this.notfound()},notfound:function(){return this.trigger("notfound"),!1},navigate:function(t,e){if(!L.started)return!1;e&&!0!==e||(e={trigger:!!e}),t=this.getFragment(t||"");var n=this.root;this._trailingSlash||""!==t&&"?"!==t.charAt(0)||(n=n.slice(0,-1)||"/");var i=n+t;t=t.replace(U,"");var o=this.decodeFragment(t);if(this.fragment!==o){if(this.fragment=o,this._usePushState)this.history[e.replace?"replaceState":"pushState"]({},document.title,i);else{if(!this._wantsHashChange)return this.location.assign(i);if(this._updateHash(this.location,t,e.replace),this.iframe&&t!==this.getHash(this.iframe.contentWindow)){var r=this.iframe.contentWindow;e.replace||(r.document.open(),r.document.close()),this._updateHash(r.location,t,e.replace)}}return e.trigger?this.loadUrl(t):void 0}},_updateHash:function(t,e,n){if(n){var i=t.href.replace(/(javascript:|#).*$/,"");t.replace(i+"#"+e)}else t.hash="#"+e}}),e.history=new L;m.extend=b.extend=P.extend=_.extend=L.extend=function(t,e){var i,o=this;return i=t&&n.has(t,"constructor")?t.constructor:function(){return o.apply(this,arguments)},n.extend(i,o,e),i.prototype=n.create(o.prototype,t),i.prototype.constructor=i,i.__super__=o.prototype,i};var W=function(){throw new Error('A "url" property or function must be specified')},Y=function(t,e){var n=e.error;e.error=function(i){n&&n.call(e.context,t,i,e),t.trigger("error",t,i,e)}};return e._debug=function(){return{root:t,_:n}},e}(r,n,t,e)}.apply(e,i),void 0===o||(t.exports=o)},18922:function(t,e,n){var i;!function(){"use strict";function o(t,e){var n=(65535&t)+(65535&e);return(t>>16)+(e>>16)+(n>>16)<<16|65535&n}function r(t,e,n,i,r,s){return o((a=o(o(e,t),o(i,s)))<<(c=r)|a>>>32-c,n);var a,c}function s(t,e,n,i,o,s,a){return r(e&n|~e&i,t,e,o,s,a)}function a(t,e,n,i,o,s,a){return r(e&i|n&~i,t,e,o,s,a)}function c(t,e,n,i,o,s,a){return r(e^n^i,t,e,o,s,a)}function l(t,e,n,i,o,s,a){return r(n^(e|~i),t,e,o,s,a)}function u(t,e){var n,i,r,u,h;t[e>>5]|=128<>>9<<4)]=e;var d=1732584193,p=-271733879,A=-1732584194,f=271733878;for(n=0;n>5]>>>e%32&255);return n}function d(t){var e,n=[];for(n[(t.length>>2)-1]=void 0,e=0;e>5]|=(255&t.charCodeAt(e/8))<>>4&15)+i.charAt(15&e);return o}function A(t){return unescape(encodeURIComponent(t))}function f(t){return function(t){return h(u(d(t),8*t.length))}(A(t))}function g(t,e){return function(t,e){var n,i,o=d(t),r=[],s=[];for(r[15]=s[15]=void 0,o.length>16&&(o=u(o,8*t.length)),n=0;n<16;n+=1)r[n]=909522486^o[n],s[n]=1549556828^o[n];return i=u(r.concat(d(e)),512+8*e.length),h(u(s.concat(i),640))}(A(t),A(e))}function m(t,e,n){return e?n?g(e,t):p(g(e,t)):n?f(t):p(f(t))}void 0===(i=function(){return m}.call(e,n,e,t))||(t.exports=i)}()},57576:function(t){var e;e=function(){return function(){var t={686:function(t,e,n){"use strict";n.d(e,{default:function(){return C}});var i=n(279),o=n.n(i),r=n(370),s=n.n(r),a=n(817),c=n.n(a);function l(t){try{return document.execCommand(t)}catch(t){return!1}}var u=function(t){var e=c()(t);return l("cut"),e},h=function(t,e){var n=function(t){var e="rtl"===document.documentElement.getAttribute("dir"),n=document.createElement("textarea");n.style.fontSize="12pt",n.style.border="0",n.style.padding="0",n.style.margin="0",n.style.position="absolute",n.style[e?"right":"left"]="-9999px";var i=window.pageYOffset||document.documentElement.scrollTop;return n.style.top="".concat(i,"px"),n.setAttribute("readonly",""),n.value=t,n}(t);e.container.appendChild(n);var i=c()(n);return l("copy"),n.remove(),i},d=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{container:document.body},n="";return"string"==typeof t?n=h(t,e):t instanceof HTMLInputElement&&!["text","search","url","tel","password"].includes(null==t?void 0:t.type)?n=h(t.value,e):(n=c()(t),l("copy")),n};function p(t){return p="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},p(t)}function A(t){return A="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},A(t)}function f(t,e){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:{};this.action="function"==typeof t.action?t.action:this.defaultAction,this.target="function"==typeof t.target?t.target:this.defaultTarget,this.text="function"==typeof t.text?t.text:this.defaultText,this.container="object"===A(t.container)?t.container:document.body}},{key:"listenClick",value:function(t){var e=this;this.listener=s()(t,"click",(function(t){return e.onClick(t)}))}},{key:"onClick",value:function(t){var e=t.delegateTarget||t.currentTarget,n=this.action(e)||"copy",i=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.action,n=void 0===e?"copy":e,i=t.container,o=t.target,r=t.text;if("copy"!==n&&"cut"!==n)throw new Error('Invalid "action" value, use either "copy" or "cut"');if(void 0!==o){if(!o||"object"!==p(o)||1!==o.nodeType)throw new Error('Invalid "target" value, use a valid Element');if("copy"===n&&o.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if("cut"===n&&(o.hasAttribute("readonly")||o.hasAttribute("disabled")))throw new Error('Invalid "target" attribute. You can\'t cut text from elements with "readonly" or "disabled" attributes')}return r?d(r,{container:i}):o?"cut"===n?u(o):d(o,{container:i}):void 0}({action:n,container:this.container,target:this.target(e),text:this.text(e)});this.emit(i?"success":"error",{action:n,text:i,trigger:e,clearSelection:function(){e&&e.focus(),window.getSelection().removeAllRanges()}})}},{key:"defaultAction",value:function(t){return b("action",t)}},{key:"defaultTarget",value:function(t){var e=b("target",t);if(e)return document.querySelector(e)}},{key:"defaultText",value:function(t){return b("text",t)}},{key:"destroy",value:function(){this.listener.destroy()}}],i=[{key:"copy",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{container:document.body};return d(t,e)}},{key:"cut",value:function(t){return u(t)}},{key:"isSupported",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:["copy","cut"],e="string"==typeof t?[t]:t,n=!!document.queryCommandSupported;return e.forEach((function(t){n=n&&!!document.queryCommandSupported(t)})),n}}],n&&f(e.prototype,n),i&&f(e,i),c}(o()),C=v},828:function(t){if("undefined"!=typeof Element&&!Element.prototype.matches){var e=Element.prototype;e.matches=e.matchesSelector||e.mozMatchesSelector||e.msMatchesSelector||e.oMatchesSelector||e.webkitMatchesSelector}t.exports=function(t,e){for(;t&&9!==t.nodeType;){if("function"==typeof t.matches&&t.matches(e))return t;t=t.parentNode}}},438:function(t,e,n){var i=n(828);function o(t,e,n,i,o){var s=r.apply(this,arguments);return t.addEventListener(n,s,o),{destroy:function(){t.removeEventListener(n,s,o)}}}function r(t,e,n,o){return function(n){n.delegateTarget=i(n.target,e),n.delegateTarget&&o.call(t,n)}}t.exports=function(t,e,n,i,r){return"function"==typeof t.addEventListener?o.apply(null,arguments):"function"==typeof n?o.bind(null,document).apply(null,arguments):("string"==typeof t&&(t=document.querySelectorAll(t)),Array.prototype.map.call(t,(function(t){return o(t,e,n,i,r)})))}},879:function(t,e){e.node=function(t){return void 0!==t&&t instanceof HTMLElement&&1===t.nodeType},e.nodeList=function(t){var n=Object.prototype.toString.call(t);return void 0!==t&&("[object NodeList]"===n||"[object HTMLCollection]"===n)&&"length"in t&&(0===t.length||e.node(t[0]))},e.string=function(t){return"string"==typeof t||t instanceof String},e.fn=function(t){return"[object Function]"===Object.prototype.toString.call(t)}},370:function(t,e,n){var i=n(879),o=n(438);t.exports=function(t,e,n){if(!t&&!e&&!n)throw new Error("Missing required arguments");if(!i.string(e))throw new TypeError("Second argument must be a String");if(!i.fn(n))throw new TypeError("Third argument must be a Function");if(i.node(t))return function(t,e,n){return t.addEventListener(e,n),{destroy:function(){t.removeEventListener(e,n)}}}(t,e,n);if(i.nodeList(t))return function(t,e,n){return Array.prototype.forEach.call(t,(function(t){t.addEventListener(e,n)})),{destroy:function(){Array.prototype.forEach.call(t,(function(t){t.removeEventListener(e,n)}))}}}(t,e,n);if(i.string(t))return function(t,e,n){return o(document.body,t,e,n)}(t,e,n);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList")}},817:function(t){t.exports=function(t){var e;if("SELECT"===t.nodeName)t.focus(),e=t.value;else if("INPUT"===t.nodeName||"TEXTAREA"===t.nodeName){var n=t.hasAttribute("readonly");n||t.setAttribute("readonly",""),t.select(),t.setSelectionRange(0,t.value.length),n||t.removeAttribute("readonly"),e=t.value}else{t.hasAttribute("contenteditable")&&t.focus();var i=window.getSelection(),o=document.createRange();o.selectNodeContents(t),i.removeAllRanges(),i.addRange(o),e=i.toString()}return e}},279:function(t){function e(){}e.prototype={on:function(t,e,n){var i=this.e||(this.e={});return(i[t]||(i[t]=[])).push({fn:e,ctx:n}),this},once:function(t,e,n){var i=this;function o(){i.off(t,o),e.apply(n,arguments)}return o._=e,this.on(t,o,n)},emit:function(t){for(var e=[].slice.call(arguments,1),n=((this.e||(this.e={}))[t]||[]).slice(),i=0,o=n.length;i{"use strict";n.d(e,{A:()=>E});var i=n(71354),o=n.n(i),r=n(76314),s=n.n(r),a=n(4417),c=n.n(a),l=new URL(n(59699),n.b),u=new URL(n(34213),n.b),h=new URL(n(3132),n.b),d=new URL(n(19394),n.b),p=new URL(n(81972),n.b),A=new URL(n(6411),n.b),f=new URL(n(14506),n.b),g=new URL(n(64886),n.b),m=s()(o()),b=c()(l),v=c()(u),C=c()(h),x=c()(d),w=c()(p),y=c()(A),k=c()(f),B=c()(g);m.push([t.id,`/*! jQuery UI - v1.13.3 - 2024-04-26\n* https://jqueryui.com\n* Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css\n* To view and modify this theme, visit https://jqueryui.com/themeroller/?bgShadowXPos=&bgOverlayXPos=&bgErrorXPos=&bgHighlightXPos=&bgContentXPos=&bgHeaderXPos=&bgActiveXPos=&bgHoverXPos=&bgDefaultXPos=&bgShadowYPos=&bgOverlayYPos=&bgErrorYPos=&bgHighlightYPos=&bgContentYPos=&bgHeaderYPos=&bgActiveYPos=&bgHoverYPos=&bgDefaultYPos=&bgShadowRepeat=&bgOverlayRepeat=&bgErrorRepeat=&bgHighlightRepeat=&bgContentRepeat=&bgHeaderRepeat=&bgActiveRepeat=&bgHoverRepeat=&bgDefaultRepeat=&iconsHover=url(%22images%2Fui-icons_555555_256x240.png%22)&iconsHighlight=url(%22images%2Fui-icons_777620_256x240.png%22)&iconsHeader=url(%22images%2Fui-icons_444444_256x240.png%22)&iconsError=url(%22images%2Fui-icons_cc0000_256x240.png%22)&iconsDefault=url(%22images%2Fui-icons_777777_256x240.png%22)&iconsContent=url(%22images%2Fui-icons_444444_256x240.png%22)&iconsActive=url(%22images%2Fui-icons_ffffff_256x240.png%22)&bgImgUrlShadow=&bgImgUrlOverlay=&bgImgUrlHover=&bgImgUrlHighlight=&bgImgUrlHeader=&bgImgUrlError=&bgImgUrlDefault=&bgImgUrlContent=&bgImgUrlActive=&opacityFilterShadow=%22alpha(opacity%3D30)%22&opacityFilterOverlay=%22alpha(opacity%3D30)%22&opacityShadowPerc=30&opacityOverlayPerc=30&iconColorHover=%23555555&iconColorHighlight=%23777620&iconColorHeader=%23444444&iconColorError=%23cc0000&iconColorDefault=%23777777&iconColorContent=%23444444&iconColorActive=%23ffffff&bgImgOpacityShadow=0&bgImgOpacityOverlay=0&bgImgOpacityError=95&bgImgOpacityHighlight=55&bgImgOpacityContent=75&bgImgOpacityHeader=75&bgImgOpacityActive=65&bgImgOpacityHover=75&bgImgOpacityDefault=75&bgTextureShadow=flat&bgTextureOverlay=flat&bgTextureError=flat&bgTextureHighlight=flat&bgTextureContent=flat&bgTextureHeader=flat&bgTextureActive=flat&bgTextureHover=flat&bgTextureDefault=flat&cornerRadius=3px&fwDefault=normal&ffDefault=Arial%2CHelvetica%2Csans-serif&fsDefault=1em&cornerRadiusShadow=8px&thicknessShadow=5px&offsetLeftShadow=0px&offsetTopShadow=0px&opacityShadow=.3&bgColorShadow=%23666666&opacityOverlay=.3&bgColorOverlay=%23aaaaaa&fcError=%235f3f3f&borderColorError=%23f1a899&bgColorError=%23fddfdf&fcHighlight=%23777620&borderColorHighlight=%23dad55e&bgColorHighlight=%23fffa90&fcContent=%23333333&borderColorContent=%23dddddd&bgColorContent=%23ffffff&fcHeader=%23333333&borderColorHeader=%23dddddd&bgColorHeader=%23e9e9e9&fcActive=%23ffffff&borderColorActive=%23003eff&bgColorActive=%23007fff&fcHover=%232b2b2b&borderColorHover=%23cccccc&bgColorHover=%23ededed&fcDefault=%23454545&borderColorDefault=%23c5c5c5&bgColorDefault=%23f6f6f6\n* Copyright OpenJS Foundation and other contributors; Licensed MIT */\n\n/* Layout helpers\n----------------------------------*/\n.ui-helper-hidden {\n\tdisplay: none;\n}\n.ui-helper-hidden-accessible {\n\tborder: 0;\n\tclip: rect(0 0 0 0);\n\theight: 1px;\n\tmargin: -1px;\n\toverflow: hidden;\n\tpadding: 0;\n\tposition: absolute;\n\twidth: 1px;\n}\n.ui-helper-reset {\n\tmargin: 0;\n\tpadding: 0;\n\tborder: 0;\n\toutline: 0;\n\tline-height: 1.3;\n\ttext-decoration: none;\n\tfont-size: 100%;\n\tlist-style: none;\n}\n.ui-helper-clearfix:before,\n.ui-helper-clearfix:after {\n\tcontent: "";\n\tdisplay: table;\n\tborder-collapse: collapse;\n}\n.ui-helper-clearfix:after {\n\tclear: both;\n}\n.ui-helper-zfix {\n\twidth: 100%;\n\theight: 100%;\n\ttop: 0;\n\tleft: 0;\n\tposition: absolute;\n\topacity: 0;\n\t-ms-filter: "alpha(opacity=0)"; /* support: IE8 */\n}\n\n.ui-front {\n\tz-index: 100;\n}\n\n\n/* Interaction Cues\n----------------------------------*/\n.ui-state-disabled {\n\tcursor: default !important;\n\tpointer-events: none;\n}\n\n\n/* Icons\n----------------------------------*/\n.ui-icon {\n\tdisplay: inline-block;\n\tvertical-align: middle;\n\tmargin-top: -.25em;\n\tposition: relative;\n\ttext-indent: -99999px;\n\toverflow: hidden;\n\tbackground-repeat: no-repeat;\n}\n\n.ui-widget-icon-block {\n\tleft: 50%;\n\tmargin-left: -8px;\n\tdisplay: block;\n}\n\n/* Misc visuals\n----------------------------------*/\n\n/* Overlays */\n.ui-widget-overlay {\n\tposition: fixed;\n\ttop: 0;\n\tleft: 0;\n\twidth: 100%;\n\theight: 100%;\n}\n.ui-accordion .ui-accordion-header {\n\tdisplay: block;\n\tcursor: pointer;\n\tposition: relative;\n\tmargin: 2px 0 0 0;\n\tpadding: .5em .5em .5em .7em;\n\tfont-size: 100%;\n}\n.ui-accordion .ui-accordion-content {\n\tpadding: 1em 2.2em;\n\tborder-top: 0;\n\toverflow: auto;\n}\n.ui-autocomplete {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tcursor: default;\n}\n.ui-menu {\n\tlist-style: none;\n\tpadding: 0;\n\tmargin: 0;\n\tdisplay: block;\n\toutline: 0;\n}\n.ui-menu .ui-menu {\n\tposition: absolute;\n}\n.ui-menu .ui-menu-item {\n\tmargin: 0;\n\tcursor: pointer;\n\t/* support: IE10, see #8844 */\n\tlist-style-image: url(${b});\n}\n.ui-menu .ui-menu-item-wrapper {\n\tposition: relative;\n\tpadding: 3px 1em 3px .4em;\n}\n.ui-menu .ui-menu-divider {\n\tmargin: 5px 0;\n\theight: 0;\n\tfont-size: 0;\n\tline-height: 0;\n\tborder-width: 1px 0 0 0;\n}\n.ui-menu .ui-state-focus,\n.ui-menu .ui-state-active {\n\tmargin: -1px;\n}\n\n/* icon support */\n.ui-menu-icons {\n\tposition: relative;\n}\n.ui-menu-icons .ui-menu-item-wrapper {\n\tpadding-left: 2em;\n}\n\n/* left-aligned */\n.ui-menu .ui-icon {\n\tposition: absolute;\n\ttop: 0;\n\tbottom: 0;\n\tleft: .2em;\n\tmargin: auto 0;\n}\n\n/* right-aligned */\n.ui-menu .ui-menu-icon {\n\tleft: auto;\n\tright: 0;\n}\n.ui-button {\n\tpadding: .4em 1em;\n\tdisplay: inline-block;\n\tposition: relative;\n\tline-height: normal;\n\tmargin-right: .1em;\n\tcursor: pointer;\n\tvertical-align: middle;\n\ttext-align: center;\n\t-webkit-user-select: none;\n\t-moz-user-select: none;\n\t-ms-user-select: none;\n\tuser-select: none;\n\n\t/* Support: IE <= 11 */\n\toverflow: visible;\n}\n\n.ui-button,\n.ui-button:link,\n.ui-button:visited,\n.ui-button:hover,\n.ui-button:active {\n\ttext-decoration: none;\n}\n\n/* to make room for the icon, a width needs to be set here */\n.ui-button-icon-only {\n\twidth: 2em;\n\tbox-sizing: border-box;\n\ttext-indent: -9999px;\n\twhite-space: nowrap;\n}\n\n/* no icon support for input elements */\ninput.ui-button.ui-button-icon-only {\n\ttext-indent: 0;\n}\n\n/* button icon element(s) */\n.ui-button-icon-only .ui-icon {\n\tposition: absolute;\n\ttop: 50%;\n\tleft: 50%;\n\tmargin-top: -8px;\n\tmargin-left: -8px;\n}\n\n.ui-button.ui-icon-notext .ui-icon {\n\tpadding: 0;\n\twidth: 2.1em;\n\theight: 2.1em;\n\ttext-indent: -9999px;\n\twhite-space: nowrap;\n\n}\n\ninput.ui-button.ui-icon-notext .ui-icon {\n\twidth: auto;\n\theight: auto;\n\ttext-indent: 0;\n\twhite-space: normal;\n\tpadding: .4em 1em;\n}\n\n/* workarounds */\n/* Support: Firefox 5 - 40 */\ninput.ui-button::-moz-focus-inner,\nbutton.ui-button::-moz-focus-inner {\n\tborder: 0;\n\tpadding: 0;\n}\n.ui-controlgroup {\n\tvertical-align: middle;\n\tdisplay: inline-block;\n}\n.ui-controlgroup > .ui-controlgroup-item {\n\tfloat: left;\n\tmargin-left: 0;\n\tmargin-right: 0;\n}\n.ui-controlgroup > .ui-controlgroup-item:focus,\n.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus {\n\tz-index: 9999;\n}\n.ui-controlgroup-vertical > .ui-controlgroup-item {\n\tdisplay: block;\n\tfloat: none;\n\twidth: 100%;\n\tmargin-top: 0;\n\tmargin-bottom: 0;\n\ttext-align: left;\n}\n.ui-controlgroup-vertical .ui-controlgroup-item {\n\tbox-sizing: border-box;\n}\n.ui-controlgroup .ui-controlgroup-label {\n\tpadding: .4em 1em;\n}\n.ui-controlgroup .ui-controlgroup-label span {\n\tfont-size: 80%;\n}\n.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item {\n\tborder-left: none;\n}\n.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item {\n\tborder-top: none;\n}\n.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content {\n\tborder-right: none;\n}\n.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content {\n\tborder-bottom: none;\n}\n\n/* Spinner specific style fixes */\n.ui-controlgroup-vertical .ui-spinner-input {\n\n\t/* Support: IE8 only, Android < 4.4 only */\n\twidth: 75%;\n\twidth: calc( 100% - 2.4em );\n}\n.ui-controlgroup-vertical .ui-spinner .ui-spinner-up {\n\tborder-top-style: solid;\n}\n\n.ui-checkboxradio-label .ui-icon-background {\n\tbox-shadow: inset 1px 1px 1px #ccc;\n\tborder-radius: .12em;\n\tborder: none;\n}\n.ui-checkboxradio-radio-label .ui-icon-background {\n\twidth: 16px;\n\theight: 16px;\n\tborder-radius: 1em;\n\toverflow: visible;\n\tborder: none;\n}\n.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,\n.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon {\n\tbackground-image: none;\n\twidth: 8px;\n\theight: 8px;\n\tborder-width: 4px;\n\tborder-style: solid;\n}\n.ui-checkboxradio-disabled {\n\tpointer-events: none;\n}\n.ui-datepicker {\n\twidth: 17em;\n\tpadding: .2em .2em 0;\n\tdisplay: none;\n}\n.ui-datepicker .ui-datepicker-header {\n\tposition: relative;\n\tpadding: .2em 0;\n}\n.ui-datepicker .ui-datepicker-prev,\n.ui-datepicker .ui-datepicker-next {\n\tposition: absolute;\n\ttop: 2px;\n\twidth: 1.8em;\n\theight: 1.8em;\n}\n.ui-datepicker .ui-datepicker-prev-hover,\n.ui-datepicker .ui-datepicker-next-hover {\n\ttop: 1px;\n}\n.ui-datepicker .ui-datepicker-prev {\n\tleft: 2px;\n}\n.ui-datepicker .ui-datepicker-next {\n\tright: 2px;\n}\n.ui-datepicker .ui-datepicker-prev-hover {\n\tleft: 1px;\n}\n.ui-datepicker .ui-datepicker-next-hover {\n\tright: 1px;\n}\n.ui-datepicker .ui-datepicker-prev span,\n.ui-datepicker .ui-datepicker-next span {\n\tdisplay: block;\n\tposition: absolute;\n\tleft: 50%;\n\tmargin-left: -8px;\n\ttop: 50%;\n\tmargin-top: -8px;\n}\n.ui-datepicker .ui-datepicker-title {\n\tmargin: 0 2.3em;\n\tline-height: 1.8em;\n\ttext-align: center;\n}\n.ui-datepicker .ui-datepicker-title select {\n\tfont-size: 1em;\n\tmargin: 1px 0;\n}\n.ui-datepicker select.ui-datepicker-month,\n.ui-datepicker select.ui-datepicker-year {\n\twidth: 45%;\n}\n.ui-datepicker table {\n\twidth: 100%;\n\tfont-size: .9em;\n\tborder-collapse: collapse;\n\tmargin: 0 0 .4em;\n}\n.ui-datepicker th {\n\tpadding: .7em .3em;\n\ttext-align: center;\n\tfont-weight: bold;\n\tborder: 0;\n}\n.ui-datepicker td {\n\tborder: 0;\n\tpadding: 1px;\n}\n.ui-datepicker td span,\n.ui-datepicker td a {\n\tdisplay: block;\n\tpadding: .2em;\n\ttext-align: right;\n\ttext-decoration: none;\n}\n.ui-datepicker .ui-datepicker-buttonpane {\n\tbackground-image: none;\n\tmargin: .7em 0 0 0;\n\tpadding: 0 .2em;\n\tborder-left: 0;\n\tborder-right: 0;\n\tborder-bottom: 0;\n}\n.ui-datepicker .ui-datepicker-buttonpane button {\n\tfloat: right;\n\tmargin: .5em .2em .4em;\n\tcursor: pointer;\n\tpadding: .2em .6em .3em .6em;\n\twidth: auto;\n\toverflow: visible;\n}\n.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current {\n\tfloat: left;\n}\n\n/* with multiple calendars */\n.ui-datepicker.ui-datepicker-multi {\n\twidth: auto;\n}\n.ui-datepicker-multi .ui-datepicker-group {\n\tfloat: left;\n}\n.ui-datepicker-multi .ui-datepicker-group table {\n\twidth: 95%;\n\tmargin: 0 auto .4em;\n}\n.ui-datepicker-multi-2 .ui-datepicker-group {\n\twidth: 50%;\n}\n.ui-datepicker-multi-3 .ui-datepicker-group {\n\twidth: 33.3%;\n}\n.ui-datepicker-multi-4 .ui-datepicker-group {\n\twidth: 25%;\n}\n.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,\n.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header {\n\tborder-left-width: 0;\n}\n.ui-datepicker-multi .ui-datepicker-buttonpane {\n\tclear: left;\n}\n.ui-datepicker-row-break {\n\tclear: both;\n\twidth: 100%;\n\tfont-size: 0;\n}\n\n/* RTL support */\n.ui-datepicker-rtl {\n\tdirection: rtl;\n}\n.ui-datepicker-rtl .ui-datepicker-prev {\n\tright: 2px;\n\tleft: auto;\n}\n.ui-datepicker-rtl .ui-datepicker-next {\n\tleft: 2px;\n\tright: auto;\n}\n.ui-datepicker-rtl .ui-datepicker-prev:hover {\n\tright: 1px;\n\tleft: auto;\n}\n.ui-datepicker-rtl .ui-datepicker-next:hover {\n\tleft: 1px;\n\tright: auto;\n}\n.ui-datepicker-rtl .ui-datepicker-buttonpane {\n\tclear: right;\n}\n.ui-datepicker-rtl .ui-datepicker-buttonpane button {\n\tfloat: left;\n}\n.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,\n.ui-datepicker-rtl .ui-datepicker-group {\n\tfloat: right;\n}\n.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,\n.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header {\n\tborder-right-width: 0;\n\tborder-left-width: 1px;\n}\n\n/* Icons */\n.ui-datepicker .ui-icon {\n\tdisplay: block;\n\ttext-indent: -99999px;\n\toverflow: hidden;\n\tbackground-repeat: no-repeat;\n\tleft: .5em;\n\ttop: .3em;\n}\n.ui-dialog {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tpadding: .2em;\n\toutline: 0;\n}\n.ui-dialog .ui-dialog-titlebar {\n\tpadding: .4em 1em;\n\tposition: relative;\n}\n.ui-dialog .ui-dialog-title {\n\tfloat: left;\n\tmargin: .1em 0;\n\twhite-space: nowrap;\n\twidth: 90%;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n}\n.ui-dialog .ui-dialog-titlebar-close {\n\tposition: absolute;\n\tright: .3em;\n\ttop: 50%;\n\twidth: 20px;\n\tmargin: -10px 0 0 0;\n\tpadding: 1px;\n\theight: 20px;\n}\n.ui-dialog .ui-dialog-content {\n\tposition: relative;\n\tborder: 0;\n\tpadding: .5em 1em;\n\tbackground: none;\n\toverflow: auto;\n}\n.ui-dialog .ui-dialog-buttonpane {\n\ttext-align: left;\n\tborder-width: 1px 0 0 0;\n\tbackground-image: none;\n\tmargin-top: .5em;\n\tpadding: .3em 1em .5em .4em;\n}\n.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {\n\tfloat: right;\n}\n.ui-dialog .ui-dialog-buttonpane button {\n\tmargin: .5em .4em .5em 0;\n\tcursor: pointer;\n}\n.ui-dialog .ui-resizable-n {\n\theight: 2px;\n\ttop: 0;\n}\n.ui-dialog .ui-resizable-e {\n\twidth: 2px;\n\tright: 0;\n}\n.ui-dialog .ui-resizable-s {\n\theight: 2px;\n\tbottom: 0;\n}\n.ui-dialog .ui-resizable-w {\n\twidth: 2px;\n\tleft: 0;\n}\n.ui-dialog .ui-resizable-se,\n.ui-dialog .ui-resizable-sw,\n.ui-dialog .ui-resizable-ne,\n.ui-dialog .ui-resizable-nw {\n\twidth: 7px;\n\theight: 7px;\n}\n.ui-dialog .ui-resizable-se {\n\tright: 0;\n\tbottom: 0;\n}\n.ui-dialog .ui-resizable-sw {\n\tleft: 0;\n\tbottom: 0;\n}\n.ui-dialog .ui-resizable-ne {\n\tright: 0;\n\ttop: 0;\n}\n.ui-dialog .ui-resizable-nw {\n\tleft: 0;\n\ttop: 0;\n}\n.ui-draggable .ui-dialog-titlebar {\n\tcursor: move;\n}\n.ui-draggable-handle {\n\t-ms-touch-action: none;\n\ttouch-action: none;\n}\n.ui-resizable {\n\tposition: relative;\n}\n.ui-resizable-handle {\n\tposition: absolute;\n\tfont-size: 0.1px;\n\tdisplay: block;\n\t-ms-touch-action: none;\n\ttouch-action: none;\n}\n.ui-resizable-disabled .ui-resizable-handle,\n.ui-resizable-autohide .ui-resizable-handle {\n\tdisplay: none;\n}\n.ui-resizable-n {\n\tcursor: n-resize;\n\theight: 7px;\n\twidth: 100%;\n\ttop: -5px;\n\tleft: 0;\n}\n.ui-resizable-s {\n\tcursor: s-resize;\n\theight: 7px;\n\twidth: 100%;\n\tbottom: -5px;\n\tleft: 0;\n}\n.ui-resizable-e {\n\tcursor: e-resize;\n\twidth: 7px;\n\tright: -5px;\n\ttop: 0;\n\theight: 100%;\n}\n.ui-resizable-w {\n\tcursor: w-resize;\n\twidth: 7px;\n\tleft: -5px;\n\ttop: 0;\n\theight: 100%;\n}\n.ui-resizable-se {\n\tcursor: se-resize;\n\twidth: 12px;\n\theight: 12px;\n\tright: 1px;\n\tbottom: 1px;\n}\n.ui-resizable-sw {\n\tcursor: sw-resize;\n\twidth: 9px;\n\theight: 9px;\n\tleft: -5px;\n\tbottom: -5px;\n}\n.ui-resizable-nw {\n\tcursor: nw-resize;\n\twidth: 9px;\n\theight: 9px;\n\tleft: -5px;\n\ttop: -5px;\n}\n.ui-resizable-ne {\n\tcursor: ne-resize;\n\twidth: 9px;\n\theight: 9px;\n\tright: -5px;\n\ttop: -5px;\n}\n.ui-progressbar {\n\theight: 2em;\n\ttext-align: left;\n\toverflow: hidden;\n}\n.ui-progressbar .ui-progressbar-value {\n\tmargin: -1px;\n\theight: 100%;\n}\n.ui-progressbar .ui-progressbar-overlay {\n\tbackground: url(${v});\n\theight: 100%;\n\t-ms-filter: "alpha(opacity=25)"; /* support: IE8 */\n\topacity: 0.25;\n}\n.ui-progressbar-indeterminate .ui-progressbar-value {\n\tbackground-image: none;\n}\n.ui-selectable {\n\t-ms-touch-action: none;\n\ttouch-action: none;\n}\n.ui-selectable-helper {\n\tposition: absolute;\n\tz-index: 100;\n\tborder: 1px dotted black;\n}\n.ui-selectmenu-menu {\n\tpadding: 0;\n\tmargin: 0;\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tdisplay: none;\n}\n.ui-selectmenu-menu .ui-menu {\n\toverflow: auto;\n\toverflow-x: hidden;\n\tpadding-bottom: 1px;\n}\n.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup {\n\tfont-size: 1em;\n\tfont-weight: bold;\n\tline-height: 1.5;\n\tpadding: 2px 0.4em;\n\tmargin: 0.5em 0 0 0;\n\theight: auto;\n\tborder: 0;\n}\n.ui-selectmenu-open {\n\tdisplay: block;\n}\n.ui-selectmenu-text {\n\tdisplay: block;\n\tmargin-right: 20px;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n}\n.ui-selectmenu-button.ui-button {\n\ttext-align: left;\n\twhite-space: nowrap;\n\twidth: 14em;\n}\n.ui-selectmenu-icon.ui-icon {\n\tfloat: right;\n\tmargin-top: 0;\n}\n.ui-slider {\n\tposition: relative;\n\ttext-align: left;\n}\n.ui-slider .ui-slider-handle {\n\tposition: absolute;\n\tz-index: 2;\n\twidth: 1.2em;\n\theight: 1.2em;\n\tcursor: pointer;\n\t-ms-touch-action: none;\n\ttouch-action: none;\n}\n.ui-slider .ui-slider-range {\n\tposition: absolute;\n\tz-index: 1;\n\tfont-size: .7em;\n\tdisplay: block;\n\tborder: 0;\n\tbackground-position: 0 0;\n}\n\n/* support: IE8 - See #6727 */\n.ui-slider.ui-state-disabled .ui-slider-handle,\n.ui-slider.ui-state-disabled .ui-slider-range {\n\tfilter: inherit;\n}\n\n.ui-slider-horizontal {\n\theight: .8em;\n}\n.ui-slider-horizontal .ui-slider-handle {\n\ttop: -.3em;\n\tmargin-left: -.6em;\n}\n.ui-slider-horizontal .ui-slider-range {\n\ttop: 0;\n\theight: 100%;\n}\n.ui-slider-horizontal .ui-slider-range-min {\n\tleft: 0;\n}\n.ui-slider-horizontal .ui-slider-range-max {\n\tright: 0;\n}\n\n.ui-slider-vertical {\n\twidth: .8em;\n\theight: 100px;\n}\n.ui-slider-vertical .ui-slider-handle {\n\tleft: -.3em;\n\tmargin-left: 0;\n\tmargin-bottom: -.6em;\n}\n.ui-slider-vertical .ui-slider-range {\n\tleft: 0;\n\twidth: 100%;\n}\n.ui-slider-vertical .ui-slider-range-min {\n\tbottom: 0;\n}\n.ui-slider-vertical .ui-slider-range-max {\n\ttop: 0;\n}\n.ui-sortable-handle {\n\t-ms-touch-action: none;\n\ttouch-action: none;\n}\n.ui-spinner {\n\tposition: relative;\n\tdisplay: inline-block;\n\toverflow: hidden;\n\tpadding: 0;\n\tvertical-align: middle;\n}\n.ui-spinner-input {\n\tborder: none;\n\tbackground: none;\n\tcolor: inherit;\n\tpadding: .222em 0;\n\tmargin: .2em 0;\n\tvertical-align: middle;\n\tmargin-left: .4em;\n\tmargin-right: 2em;\n}\n.ui-spinner-button {\n\twidth: 1.6em;\n\theight: 50%;\n\tfont-size: .5em;\n\tpadding: 0;\n\tmargin: 0;\n\ttext-align: center;\n\tposition: absolute;\n\tcursor: default;\n\tdisplay: block;\n\toverflow: hidden;\n\tright: 0;\n}\n/* more specificity required here to override default borders */\n.ui-spinner a.ui-spinner-button {\n\tborder-top-style: none;\n\tborder-bottom-style: none;\n\tborder-right-style: none;\n}\n.ui-spinner-up {\n\ttop: 0;\n}\n.ui-spinner-down {\n\tbottom: 0;\n}\n.ui-tabs {\n\tposition: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */\n\tpadding: .2em;\n}\n.ui-tabs .ui-tabs-nav {\n\tmargin: 0;\n\tpadding: .2em .2em 0;\n}\n.ui-tabs .ui-tabs-nav li {\n\tlist-style: none;\n\tfloat: left;\n\tposition: relative;\n\ttop: 0;\n\tmargin: 1px .2em 0 0;\n\tborder-bottom-width: 0;\n\tpadding: 0;\n\twhite-space: nowrap;\n}\n.ui-tabs .ui-tabs-nav .ui-tabs-anchor {\n\tfloat: left;\n\tpadding: .5em 1em;\n\ttext-decoration: none;\n}\n.ui-tabs .ui-tabs-nav li.ui-tabs-active {\n\tmargin-bottom: -1px;\n\tpadding-bottom: 1px;\n}\n.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,\n.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,\n.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor {\n\tcursor: text;\n}\n.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor {\n\tcursor: pointer;\n}\n.ui-tabs .ui-tabs-panel {\n\tdisplay: block;\n\tborder-width: 0;\n\tpadding: 1em 1.4em;\n\tbackground: none;\n}\n.ui-tooltip {\n\tpadding: 8px;\n\tposition: absolute;\n\tz-index: 9999;\n\tmax-width: 300px;\n}\nbody .ui-tooltip {\n\tborder-width: 2px;\n}\n\n/* Component containers\n----------------------------------*/\n.ui-widget {\n\tfont-family: Arial,Helvetica,sans-serif;\n\tfont-size: 1em;\n}\n.ui-widget .ui-widget {\n\tfont-size: 1em;\n}\n.ui-widget input,\n.ui-widget select,\n.ui-widget textarea,\n.ui-widget button {\n\tfont-family: Arial,Helvetica,sans-serif;\n\tfont-size: 1em;\n}\n.ui-widget.ui-widget-content {\n\tborder: 1px solid #c5c5c5;\n}\n.ui-widget-content {\n\tborder: 1px solid #dddddd;\n\tbackground: #ffffff;\n\tcolor: #333333;\n}\n.ui-widget-content a {\n\tcolor: #333333;\n}\n.ui-widget-header {\n\tborder: 1px solid #dddddd;\n\tbackground: #e9e9e9;\n\tcolor: #333333;\n\tfont-weight: bold;\n}\n.ui-widget-header a {\n\tcolor: #333333;\n}\n\n/* Interaction states\n----------------------------------*/\n.ui-state-default,\n.ui-widget-content .ui-state-default,\n.ui-widget-header .ui-state-default,\n.ui-button,\n\n/* We use html here because we need a greater specificity to make sure disabled\nworks properly when clicked or hovered */\nhtml .ui-button.ui-state-disabled:hover,\nhtml .ui-button.ui-state-disabled:active {\n\tborder: 1px solid #c5c5c5;\n\tbackground: #f6f6f6;\n\tfont-weight: normal;\n\tcolor: #454545;\n}\n.ui-state-default a,\n.ui-state-default a:link,\n.ui-state-default a:visited,\na.ui-button,\na:link.ui-button,\na:visited.ui-button,\n.ui-button {\n\tcolor: #454545;\n\ttext-decoration: none;\n}\n.ui-state-hover,\n.ui-widget-content .ui-state-hover,\n.ui-widget-header .ui-state-hover,\n.ui-state-focus,\n.ui-widget-content .ui-state-focus,\n.ui-widget-header .ui-state-focus,\n.ui-button:hover,\n.ui-button:focus {\n\tborder: 1px solid #cccccc;\n\tbackground: #ededed;\n\tfont-weight: normal;\n\tcolor: #2b2b2b;\n}\n.ui-state-hover a,\n.ui-state-hover a:hover,\n.ui-state-hover a:link,\n.ui-state-hover a:visited,\n.ui-state-focus a,\n.ui-state-focus a:hover,\n.ui-state-focus a:link,\n.ui-state-focus a:visited,\na.ui-button:hover,\na.ui-button:focus {\n\tcolor: #2b2b2b;\n\ttext-decoration: none;\n}\n\n.ui-visual-focus {\n\tbox-shadow: 0 0 3px 1px rgb(94, 158, 214);\n}\n.ui-state-active,\n.ui-widget-content .ui-state-active,\n.ui-widget-header .ui-state-active,\na.ui-button:active,\n.ui-button:active,\n.ui-button.ui-state-active:hover {\n\tborder: 1px solid #003eff;\n\tbackground: #007fff;\n\tfont-weight: normal;\n\tcolor: #ffffff;\n}\n.ui-icon-background,\n.ui-state-active .ui-icon-background {\n\tborder: #003eff;\n\tbackground-color: #ffffff;\n}\n.ui-state-active a,\n.ui-state-active a:link,\n.ui-state-active a:visited {\n\tcolor: #ffffff;\n\ttext-decoration: none;\n}\n\n/* Interaction Cues\n----------------------------------*/\n.ui-state-highlight,\n.ui-widget-content .ui-state-highlight,\n.ui-widget-header .ui-state-highlight {\n\tborder: 1px solid #dad55e;\n\tbackground: #fffa90;\n\tcolor: #777620;\n}\n.ui-state-checked {\n\tborder: 1px solid #dad55e;\n\tbackground: #fffa90;\n}\n.ui-state-highlight a,\n.ui-widget-content .ui-state-highlight a,\n.ui-widget-header .ui-state-highlight a {\n\tcolor: #777620;\n}\n.ui-state-error,\n.ui-widget-content .ui-state-error,\n.ui-widget-header .ui-state-error {\n\tborder: 1px solid #f1a899;\n\tbackground: #fddfdf;\n\tcolor: #5f3f3f;\n}\n.ui-state-error a,\n.ui-widget-content .ui-state-error a,\n.ui-widget-header .ui-state-error a {\n\tcolor: #5f3f3f;\n}\n.ui-state-error-text,\n.ui-widget-content .ui-state-error-text,\n.ui-widget-header .ui-state-error-text {\n\tcolor: #5f3f3f;\n}\n.ui-priority-primary,\n.ui-widget-content .ui-priority-primary,\n.ui-widget-header .ui-priority-primary {\n\tfont-weight: bold;\n}\n.ui-priority-secondary,\n.ui-widget-content .ui-priority-secondary,\n.ui-widget-header .ui-priority-secondary {\n\topacity: .7;\n\t-ms-filter: "alpha(opacity=70)"; /* support: IE8 */\n\tfont-weight: normal;\n}\n.ui-state-disabled,\n.ui-widget-content .ui-state-disabled,\n.ui-widget-header .ui-state-disabled {\n\topacity: .35;\n\t-ms-filter: "alpha(opacity=35)"; /* support: IE8 */\n\tbackground-image: none;\n}\n.ui-state-disabled .ui-icon {\n\t-ms-filter: "alpha(opacity=35)"; /* support: IE8 - See #6059 */\n}\n\n/* Icons\n----------------------------------*/\n\n/* states and images */\n.ui-icon {\n\twidth: 16px;\n\theight: 16px;\n}\n.ui-icon,\n.ui-widget-content .ui-icon {\n\tbackground-image: url(${C});\n}\n.ui-widget-header .ui-icon {\n\tbackground-image: url(${C});\n}\n.ui-state-hover .ui-icon,\n.ui-state-focus .ui-icon,\n.ui-button:hover .ui-icon,\n.ui-button:focus .ui-icon {\n\tbackground-image: url(${x});\n}\n.ui-state-active .ui-icon,\n.ui-button:active .ui-icon {\n\tbackground-image: url(${w});\n}\n.ui-state-highlight .ui-icon,\n.ui-button .ui-state-highlight.ui-icon {\n\tbackground-image: url(${y});\n}\n.ui-state-error .ui-icon,\n.ui-state-error-text .ui-icon {\n\tbackground-image: url(${k});\n}\n.ui-button .ui-icon {\n\tbackground-image: url(${B});\n}\n\n/* positioning */\n/* Three classes needed to override \`.ui-button:hover .ui-icon\` */\n.ui-icon-blank.ui-icon-blank.ui-icon-blank {\n\tbackground-image: none;\n}\n.ui-icon-caret-1-n { background-position: 0 0; }\n.ui-icon-caret-1-ne { background-position: -16px 0; }\n.ui-icon-caret-1-e { background-position: -32px 0; }\n.ui-icon-caret-1-se { background-position: -48px 0; }\n.ui-icon-caret-1-s { background-position: -65px 0; }\n.ui-icon-caret-1-sw { background-position: -80px 0; }\n.ui-icon-caret-1-w { background-position: -96px 0; }\n.ui-icon-caret-1-nw { background-position: -112px 0; }\n.ui-icon-caret-2-n-s { background-position: -128px 0; }\n.ui-icon-caret-2-e-w { background-position: -144px 0; }\n.ui-icon-triangle-1-n { background-position: 0 -16px; }\n.ui-icon-triangle-1-ne { background-position: -16px -16px; }\n.ui-icon-triangle-1-e { background-position: -32px -16px; }\n.ui-icon-triangle-1-se { background-position: -48px -16px; }\n.ui-icon-triangle-1-s { background-position: -65px -16px; }\n.ui-icon-triangle-1-sw { background-position: -80px -16px; }\n.ui-icon-triangle-1-w { background-position: -96px -16px; }\n.ui-icon-triangle-1-nw { background-position: -112px -16px; }\n.ui-icon-triangle-2-n-s { background-position: -128px -16px; }\n.ui-icon-triangle-2-e-w { background-position: -144px -16px; }\n.ui-icon-arrow-1-n { background-position: 0 -32px; }\n.ui-icon-arrow-1-ne { background-position: -16px -32px; }\n.ui-icon-arrow-1-e { background-position: -32px -32px; }\n.ui-icon-arrow-1-se { background-position: -48px -32px; }\n.ui-icon-arrow-1-s { background-position: -65px -32px; }\n.ui-icon-arrow-1-sw { background-position: -80px -32px; }\n.ui-icon-arrow-1-w { background-position: -96px -32px; }\n.ui-icon-arrow-1-nw { background-position: -112px -32px; }\n.ui-icon-arrow-2-n-s { background-position: -128px -32px; }\n.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }\n.ui-icon-arrow-2-e-w { background-position: -160px -32px; }\n.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }\n.ui-icon-arrowstop-1-n { background-position: -192px -32px; }\n.ui-icon-arrowstop-1-e { background-position: -208px -32px; }\n.ui-icon-arrowstop-1-s { background-position: -224px -32px; }\n.ui-icon-arrowstop-1-w { background-position: -240px -32px; }\n.ui-icon-arrowthick-1-n { background-position: 1px -48px; }\n.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }\n.ui-icon-arrowthick-1-e { background-position: -32px -48px; }\n.ui-icon-arrowthick-1-se { background-position: -48px -48px; }\n.ui-icon-arrowthick-1-s { background-position: -64px -48px; }\n.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }\n.ui-icon-arrowthick-1-w { background-position: -96px -48px; }\n.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }\n.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }\n.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }\n.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }\n.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }\n.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }\n.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }\n.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }\n.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }\n.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }\n.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }\n.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }\n.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }\n.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }\n.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }\n.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }\n.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }\n.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }\n.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }\n.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }\n.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }\n.ui-icon-arrow-4 { background-position: 0 -80px; }\n.ui-icon-arrow-4-diag { background-position: -16px -80px; }\n.ui-icon-extlink { background-position: -32px -80px; }\n.ui-icon-newwin { background-position: -48px -80px; }\n.ui-icon-refresh { background-position: -64px -80px; }\n.ui-icon-shuffle { background-position: -80px -80px; }\n.ui-icon-transfer-e-w { background-position: -96px -80px; }\n.ui-icon-transferthick-e-w { background-position: -112px -80px; }\n.ui-icon-folder-collapsed { background-position: 0 -96px; }\n.ui-icon-folder-open { background-position: -16px -96px; }\n.ui-icon-document { background-position: -32px -96px; }\n.ui-icon-document-b { background-position: -48px -96px; }\n.ui-icon-note { background-position: -64px -96px; }\n.ui-icon-mail-closed { background-position: -80px -96px; }\n.ui-icon-mail-open { background-position: -96px -96px; }\n.ui-icon-suitcase { background-position: -112px -96px; }\n.ui-icon-comment { background-position: -128px -96px; }\n.ui-icon-person { background-position: -144px -96px; }\n.ui-icon-print { background-position: -160px -96px; }\n.ui-icon-trash { background-position: -176px -96px; }\n.ui-icon-locked { background-position: -192px -96px; }\n.ui-icon-unlocked { background-position: -208px -96px; }\n.ui-icon-bookmark { background-position: -224px -96px; }\n.ui-icon-tag { background-position: -240px -96px; }\n.ui-icon-home { background-position: 0 -112px; }\n.ui-icon-flag { background-position: -16px -112px; }\n.ui-icon-calendar { background-position: -32px -112px; }\n.ui-icon-cart { background-position: -48px -112px; }\n.ui-icon-pencil { background-position: -64px -112px; }\n.ui-icon-clock { background-position: -80px -112px; }\n.ui-icon-disk { background-position: -96px -112px; }\n.ui-icon-calculator { background-position: -112px -112px; }\n.ui-icon-zoomin { background-position: -128px -112px; }\n.ui-icon-zoomout { background-position: -144px -112px; }\n.ui-icon-search { background-position: -160px -112px; }\n.ui-icon-wrench { background-position: -176px -112px; }\n.ui-icon-gear { background-position: -192px -112px; }\n.ui-icon-heart { background-position: -208px -112px; }\n.ui-icon-star { background-position: -224px -112px; }\n.ui-icon-link { background-position: -240px -112px; }\n.ui-icon-cancel { background-position: 0 -128px; }\n.ui-icon-plus { background-position: -16px -128px; }\n.ui-icon-plusthick { background-position: -32px -128px; }\n.ui-icon-minus { background-position: -48px -128px; }\n.ui-icon-minusthick { background-position: -64px -128px; }\n.ui-icon-close { background-position: -80px -128px; }\n.ui-icon-closethick { background-position: -96px -128px; }\n.ui-icon-key { background-position: -112px -128px; }\n.ui-icon-lightbulb { background-position: -128px -128px; }\n.ui-icon-scissors { background-position: -144px -128px; }\n.ui-icon-clipboard { background-position: -160px -128px; }\n.ui-icon-copy { background-position: -176px -128px; }\n.ui-icon-contact { background-position: -192px -128px; }\n.ui-icon-image { background-position: -208px -128px; }\n.ui-icon-video { background-position: -224px -128px; }\n.ui-icon-script { background-position: -240px -128px; }\n.ui-icon-alert { background-position: 0 -144px; }\n.ui-icon-info { background-position: -16px -144px; }\n.ui-icon-notice { background-position: -32px -144px; }\n.ui-icon-help { background-position: -48px -144px; }\n.ui-icon-check { background-position: -64px -144px; }\n.ui-icon-bullet { background-position: -80px -144px; }\n.ui-icon-radio-on { background-position: -96px -144px; }\n.ui-icon-radio-off { background-position: -112px -144px; }\n.ui-icon-pin-w { background-position: -128px -144px; }\n.ui-icon-pin-s { background-position: -144px -144px; }\n.ui-icon-play { background-position: 0 -160px; }\n.ui-icon-pause { background-position: -16px -160px; }\n.ui-icon-seek-next { background-position: -32px -160px; }\n.ui-icon-seek-prev { background-position: -48px -160px; }\n.ui-icon-seek-end { background-position: -64px -160px; }\n.ui-icon-seek-start { background-position: -80px -160px; }\n/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */\n.ui-icon-seek-first { background-position: -80px -160px; }\n.ui-icon-stop { background-position: -96px -160px; }\n.ui-icon-eject { background-position: -112px -160px; }\n.ui-icon-volume-off { background-position: -128px -160px; }\n.ui-icon-volume-on { background-position: -144px -160px; }\n.ui-icon-power { background-position: 0 -176px; }\n.ui-icon-signal-diag { background-position: -16px -176px; }\n.ui-icon-signal { background-position: -32px -176px; }\n.ui-icon-battery-0 { background-position: -48px -176px; }\n.ui-icon-battery-1 { background-position: -64px -176px; }\n.ui-icon-battery-2 { background-position: -80px -176px; }\n.ui-icon-battery-3 { background-position: -96px -176px; }\n.ui-icon-circle-plus { background-position: 0 -192px; }\n.ui-icon-circle-minus { background-position: -16px -192px; }\n.ui-icon-circle-close { background-position: -32px -192px; }\n.ui-icon-circle-triangle-e { background-position: -48px -192px; }\n.ui-icon-circle-triangle-s { background-position: -64px -192px; }\n.ui-icon-circle-triangle-w { background-position: -80px -192px; }\n.ui-icon-circle-triangle-n { background-position: -96px -192px; }\n.ui-icon-circle-arrow-e { background-position: -112px -192px; }\n.ui-icon-circle-arrow-s { background-position: -128px -192px; }\n.ui-icon-circle-arrow-w { background-position: -144px -192px; }\n.ui-icon-circle-arrow-n { background-position: -160px -192px; }\n.ui-icon-circle-zoomin { background-position: -176px -192px; }\n.ui-icon-circle-zoomout { background-position: -192px -192px; }\n.ui-icon-circle-check { background-position: -208px -192px; }\n.ui-icon-circlesmall-plus { background-position: 0 -208px; }\n.ui-icon-circlesmall-minus { background-position: -16px -208px; }\n.ui-icon-circlesmall-close { background-position: -32px -208px; }\n.ui-icon-squaresmall-plus { background-position: -48px -208px; }\n.ui-icon-squaresmall-minus { background-position: -64px -208px; }\n.ui-icon-squaresmall-close { background-position: -80px -208px; }\n.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }\n.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }\n.ui-icon-grip-solid-vertical { background-position: -32px -224px; }\n.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }\n.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }\n.ui-icon-grip-diagonal-se { background-position: -80px -224px; }\n\n\n/* Misc visuals\n----------------------------------*/\n\n/* Corner radius */\n.ui-corner-all,\n.ui-corner-top,\n.ui-corner-left,\n.ui-corner-tl {\n\tborder-top-left-radius: 3px;\n}\n.ui-corner-all,\n.ui-corner-top,\n.ui-corner-right,\n.ui-corner-tr {\n\tborder-top-right-radius: 3px;\n}\n.ui-corner-all,\n.ui-corner-bottom,\n.ui-corner-left,\n.ui-corner-bl {\n\tborder-bottom-left-radius: 3px;\n}\n.ui-corner-all,\n.ui-corner-bottom,\n.ui-corner-right,\n.ui-corner-br {\n\tborder-bottom-right-radius: 3px;\n}\n\n/* Overlays */\n.ui-widget-overlay {\n\tbackground: #aaaaaa;\n\topacity: .003;\n\t-ms-filter: "alpha(opacity=.3)"; /* support: IE8 */\n}\n.ui-widget-shadow {\n\t-webkit-box-shadow: 0px 0px 5px #666666;\n\tbox-shadow: 0px 0px 5px #666666;\n}\n`,"",{version:3,sources:["webpack://./node_modules/jquery-ui-dist/jquery-ui.css"],names:[],mappings:"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,YAAY;AACb;AACA;CACC,WAAW;CACX,YAAY;CACZ,kBAAkB;CAClB,iBAAiB;CACjB,YAAY;AACb;AACA;;CAEC,sBAAsB;CACtB,UAAU;CACV,WAAW;CACX,iBAAiB;CACjB,mBAAmB;AACpB;AACA;CACC,oBAAoB;AACrB;AACA;CACC,WAAW;CACX,oBAAoB;CACpB,aAAa;AACd;AACA;CACC,kBAAkB;CAClB,eAAe;AAChB;AACA;;CAEC,kBAAkB;CAClB,QAAQ;CACR,YAAY;CACZ,aAAa;AACd;AACA;;CAEC,QAAQ;AACT;AACA;CACC,SAAS;AACV;AACA;CACC,UAAU;AACX;AACA;CACC,SAAS;AACV;AACA;CACC,UAAU;AACX;AACA;;CAEC,cAAc;CACd,kBAAkB;CAClB,SAAS;CACT,iBAAiB;CACjB,QAAQ;CACR,gBAAgB;AACjB;AACA;CACC,eAAe;CACf,kBAAkB;CAClB,kBAAkB;AACnB;AACA;CACC,cAAc;CACd,aAAa;AACd;AACA;;CAEC,UAAU;AACX;AACA;CACC,WAAW;CACX,eAAe;CACf,yBAAyB;CACzB,gBAAgB;AACjB;AACA;CACC,kBAAkB;CAClB,kBAAkB;CAClB,iBAAiB;CACjB,SAAS;AACV;AACA;CACC,SAAS;CACT,YAAY;AACb;AACA;;CAEC,cAAc;CACd,aAAa;CACb,iBAAiB;CACjB,qBAAqB;AACtB;AACA;CACC,sBAAsB;CACtB,kBAAkB;CAClB,eAAe;CACf,cAAc;CACd,eAAe;CACf,gBAAgB;AACjB;AACA;CACC,YAAY;CACZ,sBAAsB;CACtB,eAAe;CACf,4BAA4B;CAC5B,WAAW;CACX,iBAAiB;AAClB;AACA;CACC,WAAW;AACZ;;AAEA,4BAA4B;AAC5B;CACC,WAAW;AACZ;AACA;CACC,WAAW;AACZ;AACA;CACC,UAAU;CACV,mBAAmB;AACpB;AACA;CACC,UAAU;AACX;AACA;CACC,YAAY;AACb;AACA;CACC,UAAU;AACX;AACA;;CAEC,oBAAoB;AACrB;AACA;CACC,WAAW;AACZ;AACA;CACC,WAAW;CACX,WAAW;CACX,YAAY;AACb;;AAEA,gBAAgB;AAChB;CACC,cAAc;AACf;AACA;CACC,UAAU;CACV,UAAU;AACX;AACA;CACC,SAAS;CACT,WAAW;AACZ;AACA;CACC,UAAU;CACV,UAAU;AACX;AACA;CACC,SAAS;CACT,WAAW;AACZ;AACA;CACC,YAAY;AACb;AACA;CACC,WAAW;AACZ;AACA;;CAEC,YAAY;AACb;AACA;;CAEC,qBAAqB;CACrB,sBAAsB;AACvB;;AAEA,UAAU;AACV;CACC,cAAc;CACd,qBAAqB;CACrB,gBAAgB;CAChB,4BAA4B;CAC5B,UAAU;CACV,SAAS;AACV;AACA;CACC,kBAAkB;CAClB,MAAM;CACN,OAAO;CACP,aAAa;CACb,UAAU;AACX;AACA;CACC,iBAAiB;CACjB,kBAAkB;AACnB;AACA;CACC,WAAW;CACX,cAAc;CACd,mBAAmB;CACnB,UAAU;CACV,gBAAgB;CAChB,uBAAuB;AACxB;AACA;CACC,kBAAkB;CAClB,WAAW;CACX,QAAQ;CACR,WAAW;CACX,mBAAmB;CACnB,YAAY;CACZ,YAAY;AACb;AACA;CACC,kBAAkB;CAClB,SAAS;CACT,iBAAiB;CACjB,gBAAgB;CAChB,cAAc;AACf;AACA;CACC,gBAAgB;CAChB,uBAAuB;CACvB,sBAAsB;CACtB,gBAAgB;CAChB,2BAA2B;AAC5B;AACA;CACC,YAAY;AACb;AACA;CACC,wBAAwB;CACxB,eAAe;AAChB;AACA;CACC,WAAW;CACX,MAAM;AACP;AACA;CACC,UAAU;CACV,QAAQ;AACT;AACA;CACC,WAAW;CACX,SAAS;AACV;AACA;CACC,UAAU;CACV,OAAO;AACR;AACA;;;;CAIC,UAAU;CACV,WAAW;AACZ;AACA;CACC,QAAQ;CACR,SAAS;AACV;AACA;CACC,OAAO;CACP,SAAS;AACV;AACA;CACC,QAAQ;CACR,MAAM;AACP;AACA;CACC,OAAO;CACP,MAAM;AACP;AACA;CACC,YAAY;AACb;AACA;CACC,sBAAsB;CACtB,kBAAkB;AACnB;AACA;CACC,kBAAkB;AACnB;AACA;CACC,kBAAkB;CAClB,gBAAgB;CAChB,cAAc;CACd,sBAAsB;CACtB,kBAAkB;AACnB;AACA;;CAEC,aAAa;AACd;AACA;CACC,gBAAgB;CAChB,WAAW;CACX,WAAW;CACX,SAAS;CACT,OAAO;AACR;AACA;CACC,gBAAgB;CAChB,WAAW;CACX,WAAW;CACX,YAAY;CACZ,OAAO;AACR;AACA;CACC,gBAAgB;CAChB,UAAU;CACV,WAAW;CACX,MAAM;CACN,YAAY;AACb;AACA;CACC,gBAAgB;CAChB,UAAU;CACV,UAAU;CACV,MAAM;CACN,YAAY;AACb;AACA;CACC,iBAAiB;CACjB,WAAW;CACX,YAAY;CACZ,UAAU;CACV,WAAW;AACZ;AACA;CACC,iBAAiB;CACjB,UAAU;CACV,WAAW;CACX,UAAU;CACV,YAAY;AACb;AACA;CACC,iBAAiB;CACjB,UAAU;CACV,WAAW;CACX,UAAU;CACV,SAAS;AACV;AACA;CACC,iBAAiB;CACjB,UAAU;CACV,WAAW;CACX,WAAW;CACX,SAAS;AACV;AACA;CACC,WAAW;CACX,gBAAgB;CAChB,gBAAgB;AACjB;AACA;CACC,YAAY;CACZ,YAAY;AACb;AACA;CACC,mDAAyzE;CACzzE,YAAY;CACZ,+BAA+B,EAAE,iBAAiB;CAClD,aAAa;AACd;AACA;CACC,sBAAsB;AACvB;AACA;CACC,sBAAsB;CACtB,kBAAkB;AACnB;AACA;CACC,kBAAkB;CAClB,YAAY;CACZ,wBAAwB;AACzB;AACA;CACC,UAAU;CACV,SAAS;CACT,kBAAkB;CAClB,MAAM;CACN,OAAO;CACP,aAAa;AACd;AACA;CACC,cAAc;CACd,kBAAkB;CAClB,mBAAmB;AACpB;AACA;CACC,cAAc;CACd,iBAAiB;CACjB,gBAAgB;CAChB,kBAAkB;CAClB,mBAAmB;CACnB,YAAY;CACZ,SAAS;AACV;AACA;CACC,cAAc;AACf;AACA;CACC,cAAc;CACd,kBAAkB;CAClB,gBAAgB;CAChB,uBAAuB;AACxB;AACA;CACC,gBAAgB;CAChB,mBAAmB;CACnB,WAAW;AACZ;AACA;CACC,YAAY;CACZ,aAAa;AACd;AACA;CACC,kBAAkB;CAClB,gBAAgB;AACjB;AACA;CACC,kBAAkB;CAClB,UAAU;CACV,YAAY;CACZ,aAAa;CACb,eAAe;CACf,sBAAsB;CACtB,kBAAkB;AACnB;AACA;CACC,kBAAkB;CAClB,UAAU;CACV,eAAe;CACf,cAAc;CACd,SAAS;CACT,wBAAwB;AACzB;;AAEA,6BAA6B;AAC7B;;CAEC,eAAe;AAChB;;AAEA;CACC,YAAY;AACb;AACA;CACC,UAAU;CACV,kBAAkB;AACnB;AACA;CACC,MAAM;CACN,YAAY;AACb;AACA;CACC,OAAO;AACR;AACA;CACC,QAAQ;AACT;;AAEA;CACC,WAAW;CACX,aAAa;AACd;AACA;CACC,WAAW;CACX,cAAc;CACd,oBAAoB;AACrB;AACA;CACC,OAAO;CACP,WAAW;AACZ;AACA;CACC,SAAS;AACV;AACA;CACC,MAAM;AACP;AACA;CACC,sBAAsB;CACtB,kBAAkB;AACnB;AACA;CACC,kBAAkB;CAClB,qBAAqB;CACrB,gBAAgB;CAChB,UAAU;CACV,sBAAsB;AACvB;AACA;CACC,YAAY;CACZ,gBAAgB;CAChB,cAAc;CACd,iBAAiB;CACjB,cAAc;CACd,sBAAsB;CACtB,iBAAiB;CACjB,iBAAiB;AAClB;AACA;CACC,YAAY;CACZ,WAAW;CACX,eAAe;CACf,UAAU;CACV,SAAS;CACT,kBAAkB;CAClB,kBAAkB;CAClB,eAAe;CACf,cAAc;CACd,gBAAgB;CAChB,QAAQ;AACT;AACA,+DAA+D;AAC/D;CACC,sBAAsB;CACtB,yBAAyB;CACzB,wBAAwB;AACzB;AACA;CACC,MAAM;AACP;AACA;CACC,SAAS;AACV;AACA;CACC,kBAAkB,CAAC,uIAAuI;CAC1J,aAAa;AACd;AACA;CACC,SAAS;CACT,oBAAoB;AACrB;AACA;CACC,gBAAgB;CAChB,WAAW;CACX,kBAAkB;CAClB,MAAM;CACN,oBAAoB;CACpB,sBAAsB;CACtB,UAAU;CACV,mBAAmB;AACpB;AACA;CACC,WAAW;CACX,iBAAiB;CACjB,qBAAqB;AACtB;AACA;CACC,mBAAmB;CACnB,mBAAmB;AACpB;AACA;;;CAGC,YAAY;AACb;AACA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",sourcesContent:['/*! jQuery UI - v1.13.3 - 2024-04-26\n* https://jqueryui.com\n* Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css\n* To view and modify this theme, visit https://jqueryui.com/themeroller/?bgShadowXPos=&bgOverlayXPos=&bgErrorXPos=&bgHighlightXPos=&bgContentXPos=&bgHeaderXPos=&bgActiveXPos=&bgHoverXPos=&bgDefaultXPos=&bgShadowYPos=&bgOverlayYPos=&bgErrorYPos=&bgHighlightYPos=&bgContentYPos=&bgHeaderYPos=&bgActiveYPos=&bgHoverYPos=&bgDefaultYPos=&bgShadowRepeat=&bgOverlayRepeat=&bgErrorRepeat=&bgHighlightRepeat=&bgContentRepeat=&bgHeaderRepeat=&bgActiveRepeat=&bgHoverRepeat=&bgDefaultRepeat=&iconsHover=url(%22images%2Fui-icons_555555_256x240.png%22)&iconsHighlight=url(%22images%2Fui-icons_777620_256x240.png%22)&iconsHeader=url(%22images%2Fui-icons_444444_256x240.png%22)&iconsError=url(%22images%2Fui-icons_cc0000_256x240.png%22)&iconsDefault=url(%22images%2Fui-icons_777777_256x240.png%22)&iconsContent=url(%22images%2Fui-icons_444444_256x240.png%22)&iconsActive=url(%22images%2Fui-icons_ffffff_256x240.png%22)&bgImgUrlShadow=&bgImgUrlOverlay=&bgImgUrlHover=&bgImgUrlHighlight=&bgImgUrlHeader=&bgImgUrlError=&bgImgUrlDefault=&bgImgUrlContent=&bgImgUrlActive=&opacityFilterShadow=%22alpha(opacity%3D30)%22&opacityFilterOverlay=%22alpha(opacity%3D30)%22&opacityShadowPerc=30&opacityOverlayPerc=30&iconColorHover=%23555555&iconColorHighlight=%23777620&iconColorHeader=%23444444&iconColorError=%23cc0000&iconColorDefault=%23777777&iconColorContent=%23444444&iconColorActive=%23ffffff&bgImgOpacityShadow=0&bgImgOpacityOverlay=0&bgImgOpacityError=95&bgImgOpacityHighlight=55&bgImgOpacityContent=75&bgImgOpacityHeader=75&bgImgOpacityActive=65&bgImgOpacityHover=75&bgImgOpacityDefault=75&bgTextureShadow=flat&bgTextureOverlay=flat&bgTextureError=flat&bgTextureHighlight=flat&bgTextureContent=flat&bgTextureHeader=flat&bgTextureActive=flat&bgTextureHover=flat&bgTextureDefault=flat&cornerRadius=3px&fwDefault=normal&ffDefault=Arial%2CHelvetica%2Csans-serif&fsDefault=1em&cornerRadiusShadow=8px&thicknessShadow=5px&offsetLeftShadow=0px&offsetTopShadow=0px&opacityShadow=.3&bgColorShadow=%23666666&opacityOverlay=.3&bgColorOverlay=%23aaaaaa&fcError=%235f3f3f&borderColorError=%23f1a899&bgColorError=%23fddfdf&fcHighlight=%23777620&borderColorHighlight=%23dad55e&bgColorHighlight=%23fffa90&fcContent=%23333333&borderColorContent=%23dddddd&bgColorContent=%23ffffff&fcHeader=%23333333&borderColorHeader=%23dddddd&bgColorHeader=%23e9e9e9&fcActive=%23ffffff&borderColorActive=%23003eff&bgColorActive=%23007fff&fcHover=%232b2b2b&borderColorHover=%23cccccc&bgColorHover=%23ededed&fcDefault=%23454545&borderColorDefault=%23c5c5c5&bgColorDefault=%23f6f6f6\n* Copyright OpenJS Foundation and other contributors; Licensed MIT */\n\n/* Layout helpers\n----------------------------------*/\n.ui-helper-hidden {\n\tdisplay: none;\n}\n.ui-helper-hidden-accessible {\n\tborder: 0;\n\tclip: rect(0 0 0 0);\n\theight: 1px;\n\tmargin: -1px;\n\toverflow: hidden;\n\tpadding: 0;\n\tposition: absolute;\n\twidth: 1px;\n}\n.ui-helper-reset {\n\tmargin: 0;\n\tpadding: 0;\n\tborder: 0;\n\toutline: 0;\n\tline-height: 1.3;\n\ttext-decoration: none;\n\tfont-size: 100%;\n\tlist-style: none;\n}\n.ui-helper-clearfix:before,\n.ui-helper-clearfix:after {\n\tcontent: "";\n\tdisplay: table;\n\tborder-collapse: collapse;\n}\n.ui-helper-clearfix:after {\n\tclear: both;\n}\n.ui-helper-zfix {\n\twidth: 100%;\n\theight: 100%;\n\ttop: 0;\n\tleft: 0;\n\tposition: absolute;\n\topacity: 0;\n\t-ms-filter: "alpha(opacity=0)"; /* support: IE8 */\n}\n\n.ui-front {\n\tz-index: 100;\n}\n\n\n/* Interaction Cues\n----------------------------------*/\n.ui-state-disabled {\n\tcursor: default !important;\n\tpointer-events: none;\n}\n\n\n/* Icons\n----------------------------------*/\n.ui-icon {\n\tdisplay: inline-block;\n\tvertical-align: middle;\n\tmargin-top: -.25em;\n\tposition: relative;\n\ttext-indent: -99999px;\n\toverflow: hidden;\n\tbackground-repeat: no-repeat;\n}\n\n.ui-widget-icon-block {\n\tleft: 50%;\n\tmargin-left: -8px;\n\tdisplay: block;\n}\n\n/* Misc visuals\n----------------------------------*/\n\n/* Overlays */\n.ui-widget-overlay {\n\tposition: fixed;\n\ttop: 0;\n\tleft: 0;\n\twidth: 100%;\n\theight: 100%;\n}\n.ui-accordion .ui-accordion-header {\n\tdisplay: block;\n\tcursor: pointer;\n\tposition: relative;\n\tmargin: 2px 0 0 0;\n\tpadding: .5em .5em .5em .7em;\n\tfont-size: 100%;\n}\n.ui-accordion .ui-accordion-content {\n\tpadding: 1em 2.2em;\n\tborder-top: 0;\n\toverflow: auto;\n}\n.ui-autocomplete {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tcursor: default;\n}\n.ui-menu {\n\tlist-style: none;\n\tpadding: 0;\n\tmargin: 0;\n\tdisplay: block;\n\toutline: 0;\n}\n.ui-menu .ui-menu {\n\tposition: absolute;\n}\n.ui-menu .ui-menu-item {\n\tmargin: 0;\n\tcursor: pointer;\n\t/* support: IE10, see #8844 */\n\tlist-style-image: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7");\n}\n.ui-menu .ui-menu-item-wrapper {\n\tposition: relative;\n\tpadding: 3px 1em 3px .4em;\n}\n.ui-menu .ui-menu-divider {\n\tmargin: 5px 0;\n\theight: 0;\n\tfont-size: 0;\n\tline-height: 0;\n\tborder-width: 1px 0 0 0;\n}\n.ui-menu .ui-state-focus,\n.ui-menu .ui-state-active {\n\tmargin: -1px;\n}\n\n/* icon support */\n.ui-menu-icons {\n\tposition: relative;\n}\n.ui-menu-icons .ui-menu-item-wrapper {\n\tpadding-left: 2em;\n}\n\n/* left-aligned */\n.ui-menu .ui-icon {\n\tposition: absolute;\n\ttop: 0;\n\tbottom: 0;\n\tleft: .2em;\n\tmargin: auto 0;\n}\n\n/* right-aligned */\n.ui-menu .ui-menu-icon {\n\tleft: auto;\n\tright: 0;\n}\n.ui-button {\n\tpadding: .4em 1em;\n\tdisplay: inline-block;\n\tposition: relative;\n\tline-height: normal;\n\tmargin-right: .1em;\n\tcursor: pointer;\n\tvertical-align: middle;\n\ttext-align: center;\n\t-webkit-user-select: none;\n\t-moz-user-select: none;\n\t-ms-user-select: none;\n\tuser-select: none;\n\n\t/* Support: IE <= 11 */\n\toverflow: visible;\n}\n\n.ui-button,\n.ui-button:link,\n.ui-button:visited,\n.ui-button:hover,\n.ui-button:active {\n\ttext-decoration: none;\n}\n\n/* to make room for the icon, a width needs to be set here */\n.ui-button-icon-only {\n\twidth: 2em;\n\tbox-sizing: border-box;\n\ttext-indent: -9999px;\n\twhite-space: nowrap;\n}\n\n/* no icon support for input elements */\ninput.ui-button.ui-button-icon-only {\n\ttext-indent: 0;\n}\n\n/* button icon element(s) */\n.ui-button-icon-only .ui-icon {\n\tposition: absolute;\n\ttop: 50%;\n\tleft: 50%;\n\tmargin-top: -8px;\n\tmargin-left: -8px;\n}\n\n.ui-button.ui-icon-notext .ui-icon {\n\tpadding: 0;\n\twidth: 2.1em;\n\theight: 2.1em;\n\ttext-indent: -9999px;\n\twhite-space: nowrap;\n\n}\n\ninput.ui-button.ui-icon-notext .ui-icon {\n\twidth: auto;\n\theight: auto;\n\ttext-indent: 0;\n\twhite-space: normal;\n\tpadding: .4em 1em;\n}\n\n/* workarounds */\n/* Support: Firefox 5 - 40 */\ninput.ui-button::-moz-focus-inner,\nbutton.ui-button::-moz-focus-inner {\n\tborder: 0;\n\tpadding: 0;\n}\n.ui-controlgroup {\n\tvertical-align: middle;\n\tdisplay: inline-block;\n}\n.ui-controlgroup > .ui-controlgroup-item {\n\tfloat: left;\n\tmargin-left: 0;\n\tmargin-right: 0;\n}\n.ui-controlgroup > .ui-controlgroup-item:focus,\n.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus {\n\tz-index: 9999;\n}\n.ui-controlgroup-vertical > .ui-controlgroup-item {\n\tdisplay: block;\n\tfloat: none;\n\twidth: 100%;\n\tmargin-top: 0;\n\tmargin-bottom: 0;\n\ttext-align: left;\n}\n.ui-controlgroup-vertical .ui-controlgroup-item {\n\tbox-sizing: border-box;\n}\n.ui-controlgroup .ui-controlgroup-label {\n\tpadding: .4em 1em;\n}\n.ui-controlgroup .ui-controlgroup-label span {\n\tfont-size: 80%;\n}\n.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item {\n\tborder-left: none;\n}\n.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item {\n\tborder-top: none;\n}\n.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content {\n\tborder-right: none;\n}\n.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content {\n\tborder-bottom: none;\n}\n\n/* Spinner specific style fixes */\n.ui-controlgroup-vertical .ui-spinner-input {\n\n\t/* Support: IE8 only, Android < 4.4 only */\n\twidth: 75%;\n\twidth: calc( 100% - 2.4em );\n}\n.ui-controlgroup-vertical .ui-spinner .ui-spinner-up {\n\tborder-top-style: solid;\n}\n\n.ui-checkboxradio-label .ui-icon-background {\n\tbox-shadow: inset 1px 1px 1px #ccc;\n\tborder-radius: .12em;\n\tborder: none;\n}\n.ui-checkboxradio-radio-label .ui-icon-background {\n\twidth: 16px;\n\theight: 16px;\n\tborder-radius: 1em;\n\toverflow: visible;\n\tborder: none;\n}\n.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,\n.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon {\n\tbackground-image: none;\n\twidth: 8px;\n\theight: 8px;\n\tborder-width: 4px;\n\tborder-style: solid;\n}\n.ui-checkboxradio-disabled {\n\tpointer-events: none;\n}\n.ui-datepicker {\n\twidth: 17em;\n\tpadding: .2em .2em 0;\n\tdisplay: none;\n}\n.ui-datepicker .ui-datepicker-header {\n\tposition: relative;\n\tpadding: .2em 0;\n}\n.ui-datepicker .ui-datepicker-prev,\n.ui-datepicker .ui-datepicker-next {\n\tposition: absolute;\n\ttop: 2px;\n\twidth: 1.8em;\n\theight: 1.8em;\n}\n.ui-datepicker .ui-datepicker-prev-hover,\n.ui-datepicker .ui-datepicker-next-hover {\n\ttop: 1px;\n}\n.ui-datepicker .ui-datepicker-prev {\n\tleft: 2px;\n}\n.ui-datepicker .ui-datepicker-next {\n\tright: 2px;\n}\n.ui-datepicker .ui-datepicker-prev-hover {\n\tleft: 1px;\n}\n.ui-datepicker .ui-datepicker-next-hover {\n\tright: 1px;\n}\n.ui-datepicker .ui-datepicker-prev span,\n.ui-datepicker .ui-datepicker-next span {\n\tdisplay: block;\n\tposition: absolute;\n\tleft: 50%;\n\tmargin-left: -8px;\n\ttop: 50%;\n\tmargin-top: -8px;\n}\n.ui-datepicker .ui-datepicker-title {\n\tmargin: 0 2.3em;\n\tline-height: 1.8em;\n\ttext-align: center;\n}\n.ui-datepicker .ui-datepicker-title select {\n\tfont-size: 1em;\n\tmargin: 1px 0;\n}\n.ui-datepicker select.ui-datepicker-month,\n.ui-datepicker select.ui-datepicker-year {\n\twidth: 45%;\n}\n.ui-datepicker table {\n\twidth: 100%;\n\tfont-size: .9em;\n\tborder-collapse: collapse;\n\tmargin: 0 0 .4em;\n}\n.ui-datepicker th {\n\tpadding: .7em .3em;\n\ttext-align: center;\n\tfont-weight: bold;\n\tborder: 0;\n}\n.ui-datepicker td {\n\tborder: 0;\n\tpadding: 1px;\n}\n.ui-datepicker td span,\n.ui-datepicker td a {\n\tdisplay: block;\n\tpadding: .2em;\n\ttext-align: right;\n\ttext-decoration: none;\n}\n.ui-datepicker .ui-datepicker-buttonpane {\n\tbackground-image: none;\n\tmargin: .7em 0 0 0;\n\tpadding: 0 .2em;\n\tborder-left: 0;\n\tborder-right: 0;\n\tborder-bottom: 0;\n}\n.ui-datepicker .ui-datepicker-buttonpane button {\n\tfloat: right;\n\tmargin: .5em .2em .4em;\n\tcursor: pointer;\n\tpadding: .2em .6em .3em .6em;\n\twidth: auto;\n\toverflow: visible;\n}\n.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current {\n\tfloat: left;\n}\n\n/* with multiple calendars */\n.ui-datepicker.ui-datepicker-multi {\n\twidth: auto;\n}\n.ui-datepicker-multi .ui-datepicker-group {\n\tfloat: left;\n}\n.ui-datepicker-multi .ui-datepicker-group table {\n\twidth: 95%;\n\tmargin: 0 auto .4em;\n}\n.ui-datepicker-multi-2 .ui-datepicker-group {\n\twidth: 50%;\n}\n.ui-datepicker-multi-3 .ui-datepicker-group {\n\twidth: 33.3%;\n}\n.ui-datepicker-multi-4 .ui-datepicker-group {\n\twidth: 25%;\n}\n.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,\n.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header {\n\tborder-left-width: 0;\n}\n.ui-datepicker-multi .ui-datepicker-buttonpane {\n\tclear: left;\n}\n.ui-datepicker-row-break {\n\tclear: both;\n\twidth: 100%;\n\tfont-size: 0;\n}\n\n/* RTL support */\n.ui-datepicker-rtl {\n\tdirection: rtl;\n}\n.ui-datepicker-rtl .ui-datepicker-prev {\n\tright: 2px;\n\tleft: auto;\n}\n.ui-datepicker-rtl .ui-datepicker-next {\n\tleft: 2px;\n\tright: auto;\n}\n.ui-datepicker-rtl .ui-datepicker-prev:hover {\n\tright: 1px;\n\tleft: auto;\n}\n.ui-datepicker-rtl .ui-datepicker-next:hover {\n\tleft: 1px;\n\tright: auto;\n}\n.ui-datepicker-rtl .ui-datepicker-buttonpane {\n\tclear: right;\n}\n.ui-datepicker-rtl .ui-datepicker-buttonpane button {\n\tfloat: left;\n}\n.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,\n.ui-datepicker-rtl .ui-datepicker-group {\n\tfloat: right;\n}\n.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,\n.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header {\n\tborder-right-width: 0;\n\tborder-left-width: 1px;\n}\n\n/* Icons */\n.ui-datepicker .ui-icon {\n\tdisplay: block;\n\ttext-indent: -99999px;\n\toverflow: hidden;\n\tbackground-repeat: no-repeat;\n\tleft: .5em;\n\ttop: .3em;\n}\n.ui-dialog {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tpadding: .2em;\n\toutline: 0;\n}\n.ui-dialog .ui-dialog-titlebar {\n\tpadding: .4em 1em;\n\tposition: relative;\n}\n.ui-dialog .ui-dialog-title {\n\tfloat: left;\n\tmargin: .1em 0;\n\twhite-space: nowrap;\n\twidth: 90%;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n}\n.ui-dialog .ui-dialog-titlebar-close {\n\tposition: absolute;\n\tright: .3em;\n\ttop: 50%;\n\twidth: 20px;\n\tmargin: -10px 0 0 0;\n\tpadding: 1px;\n\theight: 20px;\n}\n.ui-dialog .ui-dialog-content {\n\tposition: relative;\n\tborder: 0;\n\tpadding: .5em 1em;\n\tbackground: none;\n\toverflow: auto;\n}\n.ui-dialog .ui-dialog-buttonpane {\n\ttext-align: left;\n\tborder-width: 1px 0 0 0;\n\tbackground-image: none;\n\tmargin-top: .5em;\n\tpadding: .3em 1em .5em .4em;\n}\n.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {\n\tfloat: right;\n}\n.ui-dialog .ui-dialog-buttonpane button {\n\tmargin: .5em .4em .5em 0;\n\tcursor: pointer;\n}\n.ui-dialog .ui-resizable-n {\n\theight: 2px;\n\ttop: 0;\n}\n.ui-dialog .ui-resizable-e {\n\twidth: 2px;\n\tright: 0;\n}\n.ui-dialog .ui-resizable-s {\n\theight: 2px;\n\tbottom: 0;\n}\n.ui-dialog .ui-resizable-w {\n\twidth: 2px;\n\tleft: 0;\n}\n.ui-dialog .ui-resizable-se,\n.ui-dialog .ui-resizable-sw,\n.ui-dialog .ui-resizable-ne,\n.ui-dialog .ui-resizable-nw {\n\twidth: 7px;\n\theight: 7px;\n}\n.ui-dialog .ui-resizable-se {\n\tright: 0;\n\tbottom: 0;\n}\n.ui-dialog .ui-resizable-sw {\n\tleft: 0;\n\tbottom: 0;\n}\n.ui-dialog .ui-resizable-ne {\n\tright: 0;\n\ttop: 0;\n}\n.ui-dialog .ui-resizable-nw {\n\tleft: 0;\n\ttop: 0;\n}\n.ui-draggable .ui-dialog-titlebar {\n\tcursor: move;\n}\n.ui-draggable-handle {\n\t-ms-touch-action: none;\n\ttouch-action: none;\n}\n.ui-resizable {\n\tposition: relative;\n}\n.ui-resizable-handle {\n\tposition: absolute;\n\tfont-size: 0.1px;\n\tdisplay: block;\n\t-ms-touch-action: none;\n\ttouch-action: none;\n}\n.ui-resizable-disabled .ui-resizable-handle,\n.ui-resizable-autohide .ui-resizable-handle {\n\tdisplay: none;\n}\n.ui-resizable-n {\n\tcursor: n-resize;\n\theight: 7px;\n\twidth: 100%;\n\ttop: -5px;\n\tleft: 0;\n}\n.ui-resizable-s {\n\tcursor: s-resize;\n\theight: 7px;\n\twidth: 100%;\n\tbottom: -5px;\n\tleft: 0;\n}\n.ui-resizable-e {\n\tcursor: e-resize;\n\twidth: 7px;\n\tright: -5px;\n\ttop: 0;\n\theight: 100%;\n}\n.ui-resizable-w {\n\tcursor: w-resize;\n\twidth: 7px;\n\tleft: -5px;\n\ttop: 0;\n\theight: 100%;\n}\n.ui-resizable-se {\n\tcursor: se-resize;\n\twidth: 12px;\n\theight: 12px;\n\tright: 1px;\n\tbottom: 1px;\n}\n.ui-resizable-sw {\n\tcursor: sw-resize;\n\twidth: 9px;\n\theight: 9px;\n\tleft: -5px;\n\tbottom: -5px;\n}\n.ui-resizable-nw {\n\tcursor: nw-resize;\n\twidth: 9px;\n\theight: 9px;\n\tleft: -5px;\n\ttop: -5px;\n}\n.ui-resizable-ne {\n\tcursor: ne-resize;\n\twidth: 9px;\n\theight: 9px;\n\tright: -5px;\n\ttop: -5px;\n}\n.ui-progressbar {\n\theight: 2em;\n\ttext-align: left;\n\toverflow: hidden;\n}\n.ui-progressbar .ui-progressbar-value {\n\tmargin: -1px;\n\theight: 100%;\n}\n.ui-progressbar .ui-progressbar-overlay {\n\tbackground: url("data:image/gif;base64,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");\n\theight: 100%;\n\t-ms-filter: "alpha(opacity=25)"; /* support: IE8 */\n\topacity: 0.25;\n}\n.ui-progressbar-indeterminate .ui-progressbar-value {\n\tbackground-image: none;\n}\n.ui-selectable {\n\t-ms-touch-action: none;\n\ttouch-action: none;\n}\n.ui-selectable-helper {\n\tposition: absolute;\n\tz-index: 100;\n\tborder: 1px dotted black;\n}\n.ui-selectmenu-menu {\n\tpadding: 0;\n\tmargin: 0;\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tdisplay: none;\n}\n.ui-selectmenu-menu .ui-menu {\n\toverflow: auto;\n\toverflow-x: hidden;\n\tpadding-bottom: 1px;\n}\n.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup {\n\tfont-size: 1em;\n\tfont-weight: bold;\n\tline-height: 1.5;\n\tpadding: 2px 0.4em;\n\tmargin: 0.5em 0 0 0;\n\theight: auto;\n\tborder: 0;\n}\n.ui-selectmenu-open {\n\tdisplay: block;\n}\n.ui-selectmenu-text {\n\tdisplay: block;\n\tmargin-right: 20px;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n}\n.ui-selectmenu-button.ui-button {\n\ttext-align: left;\n\twhite-space: nowrap;\n\twidth: 14em;\n}\n.ui-selectmenu-icon.ui-icon {\n\tfloat: right;\n\tmargin-top: 0;\n}\n.ui-slider {\n\tposition: relative;\n\ttext-align: left;\n}\n.ui-slider .ui-slider-handle {\n\tposition: absolute;\n\tz-index: 2;\n\twidth: 1.2em;\n\theight: 1.2em;\n\tcursor: pointer;\n\t-ms-touch-action: none;\n\ttouch-action: none;\n}\n.ui-slider .ui-slider-range {\n\tposition: absolute;\n\tz-index: 1;\n\tfont-size: .7em;\n\tdisplay: block;\n\tborder: 0;\n\tbackground-position: 0 0;\n}\n\n/* support: IE8 - See #6727 */\n.ui-slider.ui-state-disabled .ui-slider-handle,\n.ui-slider.ui-state-disabled .ui-slider-range {\n\tfilter: inherit;\n}\n\n.ui-slider-horizontal {\n\theight: .8em;\n}\n.ui-slider-horizontal .ui-slider-handle {\n\ttop: -.3em;\n\tmargin-left: -.6em;\n}\n.ui-slider-horizontal .ui-slider-range {\n\ttop: 0;\n\theight: 100%;\n}\n.ui-slider-horizontal .ui-slider-range-min {\n\tleft: 0;\n}\n.ui-slider-horizontal .ui-slider-range-max {\n\tright: 0;\n}\n\n.ui-slider-vertical {\n\twidth: .8em;\n\theight: 100px;\n}\n.ui-slider-vertical .ui-slider-handle {\n\tleft: -.3em;\n\tmargin-left: 0;\n\tmargin-bottom: -.6em;\n}\n.ui-slider-vertical .ui-slider-range {\n\tleft: 0;\n\twidth: 100%;\n}\n.ui-slider-vertical .ui-slider-range-min {\n\tbottom: 0;\n}\n.ui-slider-vertical .ui-slider-range-max {\n\ttop: 0;\n}\n.ui-sortable-handle {\n\t-ms-touch-action: none;\n\ttouch-action: none;\n}\n.ui-spinner {\n\tposition: relative;\n\tdisplay: inline-block;\n\toverflow: hidden;\n\tpadding: 0;\n\tvertical-align: middle;\n}\n.ui-spinner-input {\n\tborder: none;\n\tbackground: none;\n\tcolor: inherit;\n\tpadding: .222em 0;\n\tmargin: .2em 0;\n\tvertical-align: middle;\n\tmargin-left: .4em;\n\tmargin-right: 2em;\n}\n.ui-spinner-button {\n\twidth: 1.6em;\n\theight: 50%;\n\tfont-size: .5em;\n\tpadding: 0;\n\tmargin: 0;\n\ttext-align: center;\n\tposition: absolute;\n\tcursor: default;\n\tdisplay: block;\n\toverflow: hidden;\n\tright: 0;\n}\n/* more specificity required here to override default borders */\n.ui-spinner a.ui-spinner-button {\n\tborder-top-style: none;\n\tborder-bottom-style: none;\n\tborder-right-style: none;\n}\n.ui-spinner-up {\n\ttop: 0;\n}\n.ui-spinner-down {\n\tbottom: 0;\n}\n.ui-tabs {\n\tposition: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */\n\tpadding: .2em;\n}\n.ui-tabs .ui-tabs-nav {\n\tmargin: 0;\n\tpadding: .2em .2em 0;\n}\n.ui-tabs .ui-tabs-nav li {\n\tlist-style: none;\n\tfloat: left;\n\tposition: relative;\n\ttop: 0;\n\tmargin: 1px .2em 0 0;\n\tborder-bottom-width: 0;\n\tpadding: 0;\n\twhite-space: nowrap;\n}\n.ui-tabs .ui-tabs-nav .ui-tabs-anchor {\n\tfloat: left;\n\tpadding: .5em 1em;\n\ttext-decoration: none;\n}\n.ui-tabs .ui-tabs-nav li.ui-tabs-active {\n\tmargin-bottom: -1px;\n\tpadding-bottom: 1px;\n}\n.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,\n.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,\n.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor {\n\tcursor: text;\n}\n.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor {\n\tcursor: pointer;\n}\n.ui-tabs .ui-tabs-panel {\n\tdisplay: block;\n\tborder-width: 0;\n\tpadding: 1em 1.4em;\n\tbackground: none;\n}\n.ui-tooltip {\n\tpadding: 8px;\n\tposition: absolute;\n\tz-index: 9999;\n\tmax-width: 300px;\n}\nbody .ui-tooltip {\n\tborder-width: 2px;\n}\n\n/* Component containers\n----------------------------------*/\n.ui-widget {\n\tfont-family: Arial,Helvetica,sans-serif;\n\tfont-size: 1em;\n}\n.ui-widget .ui-widget {\n\tfont-size: 1em;\n}\n.ui-widget input,\n.ui-widget select,\n.ui-widget textarea,\n.ui-widget button {\n\tfont-family: Arial,Helvetica,sans-serif;\n\tfont-size: 1em;\n}\n.ui-widget.ui-widget-content {\n\tborder: 1px solid #c5c5c5;\n}\n.ui-widget-content {\n\tborder: 1px solid #dddddd;\n\tbackground: #ffffff;\n\tcolor: #333333;\n}\n.ui-widget-content a {\n\tcolor: #333333;\n}\n.ui-widget-header {\n\tborder: 1px solid #dddddd;\n\tbackground: #e9e9e9;\n\tcolor: #333333;\n\tfont-weight: bold;\n}\n.ui-widget-header a {\n\tcolor: #333333;\n}\n\n/* Interaction states\n----------------------------------*/\n.ui-state-default,\n.ui-widget-content .ui-state-default,\n.ui-widget-header .ui-state-default,\n.ui-button,\n\n/* We use html here because we need a greater specificity to make sure disabled\nworks properly when clicked or hovered */\nhtml .ui-button.ui-state-disabled:hover,\nhtml .ui-button.ui-state-disabled:active {\n\tborder: 1px solid #c5c5c5;\n\tbackground: #f6f6f6;\n\tfont-weight: normal;\n\tcolor: #454545;\n}\n.ui-state-default a,\n.ui-state-default a:link,\n.ui-state-default a:visited,\na.ui-button,\na:link.ui-button,\na:visited.ui-button,\n.ui-button {\n\tcolor: #454545;\n\ttext-decoration: none;\n}\n.ui-state-hover,\n.ui-widget-content .ui-state-hover,\n.ui-widget-header .ui-state-hover,\n.ui-state-focus,\n.ui-widget-content .ui-state-focus,\n.ui-widget-header .ui-state-focus,\n.ui-button:hover,\n.ui-button:focus {\n\tborder: 1px solid #cccccc;\n\tbackground: #ededed;\n\tfont-weight: normal;\n\tcolor: #2b2b2b;\n}\n.ui-state-hover a,\n.ui-state-hover a:hover,\n.ui-state-hover a:link,\n.ui-state-hover a:visited,\n.ui-state-focus a,\n.ui-state-focus a:hover,\n.ui-state-focus a:link,\n.ui-state-focus a:visited,\na.ui-button:hover,\na.ui-button:focus {\n\tcolor: #2b2b2b;\n\ttext-decoration: none;\n}\n\n.ui-visual-focus {\n\tbox-shadow: 0 0 3px 1px rgb(94, 158, 214);\n}\n.ui-state-active,\n.ui-widget-content .ui-state-active,\n.ui-widget-header .ui-state-active,\na.ui-button:active,\n.ui-button:active,\n.ui-button.ui-state-active:hover {\n\tborder: 1px solid #003eff;\n\tbackground: #007fff;\n\tfont-weight: normal;\n\tcolor: #ffffff;\n}\n.ui-icon-background,\n.ui-state-active .ui-icon-background {\n\tborder: #003eff;\n\tbackground-color: #ffffff;\n}\n.ui-state-active a,\n.ui-state-active a:link,\n.ui-state-active a:visited {\n\tcolor: #ffffff;\n\ttext-decoration: none;\n}\n\n/* Interaction Cues\n----------------------------------*/\n.ui-state-highlight,\n.ui-widget-content .ui-state-highlight,\n.ui-widget-header .ui-state-highlight {\n\tborder: 1px solid #dad55e;\n\tbackground: #fffa90;\n\tcolor: #777620;\n}\n.ui-state-checked {\n\tborder: 1px solid #dad55e;\n\tbackground: #fffa90;\n}\n.ui-state-highlight a,\n.ui-widget-content .ui-state-highlight a,\n.ui-widget-header .ui-state-highlight a {\n\tcolor: #777620;\n}\n.ui-state-error,\n.ui-widget-content .ui-state-error,\n.ui-widget-header .ui-state-error {\n\tborder: 1px solid #f1a899;\n\tbackground: #fddfdf;\n\tcolor: #5f3f3f;\n}\n.ui-state-error a,\n.ui-widget-content .ui-state-error a,\n.ui-widget-header .ui-state-error a {\n\tcolor: #5f3f3f;\n}\n.ui-state-error-text,\n.ui-widget-content .ui-state-error-text,\n.ui-widget-header .ui-state-error-text {\n\tcolor: #5f3f3f;\n}\n.ui-priority-primary,\n.ui-widget-content .ui-priority-primary,\n.ui-widget-header .ui-priority-primary {\n\tfont-weight: bold;\n}\n.ui-priority-secondary,\n.ui-widget-content .ui-priority-secondary,\n.ui-widget-header .ui-priority-secondary {\n\topacity: .7;\n\t-ms-filter: "alpha(opacity=70)"; /* support: IE8 */\n\tfont-weight: normal;\n}\n.ui-state-disabled,\n.ui-widget-content .ui-state-disabled,\n.ui-widget-header .ui-state-disabled {\n\topacity: .35;\n\t-ms-filter: "alpha(opacity=35)"; /* support: IE8 */\n\tbackground-image: none;\n}\n.ui-state-disabled .ui-icon {\n\t-ms-filter: "alpha(opacity=35)"; /* support: IE8 - See #6059 */\n}\n\n/* Icons\n----------------------------------*/\n\n/* states and images */\n.ui-icon {\n\twidth: 16px;\n\theight: 16px;\n}\n.ui-icon,\n.ui-widget-content .ui-icon {\n\tbackground-image: url("images/ui-icons_444444_256x240.png");\n}\n.ui-widget-header .ui-icon {\n\tbackground-image: url("images/ui-icons_444444_256x240.png");\n}\n.ui-state-hover .ui-icon,\n.ui-state-focus .ui-icon,\n.ui-button:hover .ui-icon,\n.ui-button:focus .ui-icon {\n\tbackground-image: url("images/ui-icons_555555_256x240.png");\n}\n.ui-state-active .ui-icon,\n.ui-button:active .ui-icon {\n\tbackground-image: url("images/ui-icons_ffffff_256x240.png");\n}\n.ui-state-highlight .ui-icon,\n.ui-button .ui-state-highlight.ui-icon {\n\tbackground-image: url("images/ui-icons_777620_256x240.png");\n}\n.ui-state-error .ui-icon,\n.ui-state-error-text .ui-icon {\n\tbackground-image: url("images/ui-icons_cc0000_256x240.png");\n}\n.ui-button .ui-icon {\n\tbackground-image: url("images/ui-icons_777777_256x240.png");\n}\n\n/* positioning */\n/* Three classes needed to override `.ui-button:hover .ui-icon` */\n.ui-icon-blank.ui-icon-blank.ui-icon-blank {\n\tbackground-image: none;\n}\n.ui-icon-caret-1-n { background-position: 0 0; }\n.ui-icon-caret-1-ne { background-position: -16px 0; }\n.ui-icon-caret-1-e { background-position: -32px 0; }\n.ui-icon-caret-1-se { background-position: -48px 0; }\n.ui-icon-caret-1-s { background-position: -65px 0; }\n.ui-icon-caret-1-sw { background-position: -80px 0; }\n.ui-icon-caret-1-w { background-position: -96px 0; }\n.ui-icon-caret-1-nw { background-position: -112px 0; }\n.ui-icon-caret-2-n-s { background-position: -128px 0; }\n.ui-icon-caret-2-e-w { background-position: -144px 0; }\n.ui-icon-triangle-1-n { background-position: 0 -16px; }\n.ui-icon-triangle-1-ne { background-position: -16px -16px; }\n.ui-icon-triangle-1-e { background-position: -32px -16px; }\n.ui-icon-triangle-1-se { background-position: -48px -16px; }\n.ui-icon-triangle-1-s { background-position: -65px -16px; }\n.ui-icon-triangle-1-sw { background-position: -80px -16px; }\n.ui-icon-triangle-1-w { background-position: -96px -16px; }\n.ui-icon-triangle-1-nw { background-position: -112px -16px; }\n.ui-icon-triangle-2-n-s { background-position: -128px -16px; }\n.ui-icon-triangle-2-e-w { background-position: -144px -16px; }\n.ui-icon-arrow-1-n { background-position: 0 -32px; }\n.ui-icon-arrow-1-ne { background-position: -16px -32px; }\n.ui-icon-arrow-1-e { background-position: -32px -32px; }\n.ui-icon-arrow-1-se { background-position: -48px -32px; }\n.ui-icon-arrow-1-s { background-position: -65px -32px; }\n.ui-icon-arrow-1-sw { background-position: -80px -32px; }\n.ui-icon-arrow-1-w { background-position: -96px -32px; }\n.ui-icon-arrow-1-nw { background-position: -112px -32px; }\n.ui-icon-arrow-2-n-s { background-position: -128px -32px; }\n.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }\n.ui-icon-arrow-2-e-w { background-position: -160px -32px; }\n.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }\n.ui-icon-arrowstop-1-n { background-position: -192px -32px; }\n.ui-icon-arrowstop-1-e { background-position: -208px -32px; }\n.ui-icon-arrowstop-1-s { background-position: -224px -32px; }\n.ui-icon-arrowstop-1-w { background-position: -240px -32px; }\n.ui-icon-arrowthick-1-n { background-position: 1px -48px; }\n.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }\n.ui-icon-arrowthick-1-e { background-position: -32px -48px; }\n.ui-icon-arrowthick-1-se { background-position: -48px -48px; }\n.ui-icon-arrowthick-1-s { background-position: -64px -48px; }\n.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }\n.ui-icon-arrowthick-1-w { background-position: -96px -48px; }\n.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }\n.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }\n.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }\n.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }\n.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }\n.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }\n.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }\n.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }\n.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }\n.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }\n.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }\n.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }\n.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }\n.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }\n.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }\n.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }\n.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }\n.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }\n.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }\n.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }\n.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }\n.ui-icon-arrow-4 { background-position: 0 -80px; }\n.ui-icon-arrow-4-diag { background-position: -16px -80px; }\n.ui-icon-extlink { background-position: -32px -80px; }\n.ui-icon-newwin { background-position: -48px -80px; }\n.ui-icon-refresh { background-position: -64px -80px; }\n.ui-icon-shuffle { background-position: -80px -80px; }\n.ui-icon-transfer-e-w { background-position: -96px -80px; }\n.ui-icon-transferthick-e-w { background-position: -112px -80px; }\n.ui-icon-folder-collapsed { background-position: 0 -96px; }\n.ui-icon-folder-open { background-position: -16px -96px; }\n.ui-icon-document { background-position: -32px -96px; }\n.ui-icon-document-b { background-position: -48px -96px; }\n.ui-icon-note { background-position: -64px -96px; }\n.ui-icon-mail-closed { background-position: -80px -96px; }\n.ui-icon-mail-open { background-position: -96px -96px; }\n.ui-icon-suitcase { background-position: -112px -96px; }\n.ui-icon-comment { background-position: -128px -96px; }\n.ui-icon-person { background-position: -144px -96px; }\n.ui-icon-print { background-position: -160px -96px; }\n.ui-icon-trash { background-position: -176px -96px; }\n.ui-icon-locked { background-position: -192px -96px; }\n.ui-icon-unlocked { background-position: -208px -96px; }\n.ui-icon-bookmark { background-position: -224px -96px; }\n.ui-icon-tag { background-position: -240px -96px; }\n.ui-icon-home { background-position: 0 -112px; }\n.ui-icon-flag { background-position: -16px -112px; }\n.ui-icon-calendar { background-position: -32px -112px; }\n.ui-icon-cart { background-position: -48px -112px; }\n.ui-icon-pencil { background-position: -64px -112px; }\n.ui-icon-clock { background-position: -80px -112px; }\n.ui-icon-disk { background-position: -96px -112px; }\n.ui-icon-calculator { background-position: -112px -112px; }\n.ui-icon-zoomin { background-position: -128px -112px; }\n.ui-icon-zoomout { background-position: -144px -112px; }\n.ui-icon-search { background-position: -160px -112px; }\n.ui-icon-wrench { background-position: -176px -112px; }\n.ui-icon-gear { background-position: -192px -112px; }\n.ui-icon-heart { background-position: -208px -112px; }\n.ui-icon-star { background-position: -224px -112px; }\n.ui-icon-link { background-position: -240px -112px; }\n.ui-icon-cancel { background-position: 0 -128px; }\n.ui-icon-plus { background-position: -16px -128px; }\n.ui-icon-plusthick { background-position: -32px -128px; }\n.ui-icon-minus { background-position: -48px -128px; }\n.ui-icon-minusthick { background-position: -64px -128px; }\n.ui-icon-close { background-position: -80px -128px; }\n.ui-icon-closethick { background-position: -96px -128px; }\n.ui-icon-key { background-position: -112px -128px; }\n.ui-icon-lightbulb { background-position: -128px -128px; }\n.ui-icon-scissors { background-position: -144px -128px; }\n.ui-icon-clipboard { background-position: -160px -128px; }\n.ui-icon-copy { background-position: -176px -128px; }\n.ui-icon-contact { background-position: -192px -128px; }\n.ui-icon-image { background-position: -208px -128px; }\n.ui-icon-video { background-position: -224px -128px; }\n.ui-icon-script { background-position: -240px -128px; }\n.ui-icon-alert { background-position: 0 -144px; }\n.ui-icon-info { background-position: -16px -144px; }\n.ui-icon-notice { background-position: -32px -144px; }\n.ui-icon-help { background-position: -48px -144px; }\n.ui-icon-check { background-position: -64px -144px; }\n.ui-icon-bullet { background-position: -80px -144px; }\n.ui-icon-radio-on { background-position: -96px -144px; }\n.ui-icon-radio-off { background-position: -112px -144px; }\n.ui-icon-pin-w { background-position: -128px -144px; }\n.ui-icon-pin-s { background-position: -144px -144px; }\n.ui-icon-play { background-position: 0 -160px; }\n.ui-icon-pause { background-position: -16px -160px; }\n.ui-icon-seek-next { background-position: -32px -160px; }\n.ui-icon-seek-prev { background-position: -48px -160px; }\n.ui-icon-seek-end { background-position: -64px -160px; }\n.ui-icon-seek-start { background-position: -80px -160px; }\n/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */\n.ui-icon-seek-first { background-position: -80px -160px; }\n.ui-icon-stop { background-position: -96px -160px; }\n.ui-icon-eject { background-position: -112px -160px; }\n.ui-icon-volume-off { background-position: -128px -160px; }\n.ui-icon-volume-on { background-position: -144px -160px; }\n.ui-icon-power { background-position: 0 -176px; }\n.ui-icon-signal-diag { background-position: -16px -176px; }\n.ui-icon-signal { background-position: -32px -176px; }\n.ui-icon-battery-0 { background-position: -48px -176px; }\n.ui-icon-battery-1 { background-position: -64px -176px; }\n.ui-icon-battery-2 { background-position: -80px -176px; }\n.ui-icon-battery-3 { background-position: -96px -176px; }\n.ui-icon-circle-plus { background-position: 0 -192px; }\n.ui-icon-circle-minus { background-position: -16px -192px; }\n.ui-icon-circle-close { background-position: -32px -192px; }\n.ui-icon-circle-triangle-e { background-position: -48px -192px; }\n.ui-icon-circle-triangle-s { background-position: -64px -192px; }\n.ui-icon-circle-triangle-w { background-position: -80px -192px; }\n.ui-icon-circle-triangle-n { background-position: -96px -192px; }\n.ui-icon-circle-arrow-e { background-position: -112px -192px; }\n.ui-icon-circle-arrow-s { background-position: -128px -192px; }\n.ui-icon-circle-arrow-w { background-position: -144px -192px; }\n.ui-icon-circle-arrow-n { background-position: -160px -192px; }\n.ui-icon-circle-zoomin { background-position: -176px -192px; }\n.ui-icon-circle-zoomout { background-position: -192px -192px; }\n.ui-icon-circle-check { background-position: -208px -192px; }\n.ui-icon-circlesmall-plus { background-position: 0 -208px; }\n.ui-icon-circlesmall-minus { background-position: -16px -208px; }\n.ui-icon-circlesmall-close { background-position: -32px -208px; }\n.ui-icon-squaresmall-plus { background-position: -48px -208px; }\n.ui-icon-squaresmall-minus { background-position: -64px -208px; }\n.ui-icon-squaresmall-close { background-position: -80px -208px; }\n.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }\n.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }\n.ui-icon-grip-solid-vertical { background-position: -32px -224px; }\n.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }\n.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }\n.ui-icon-grip-diagonal-se { background-position: -80px -224px; }\n\n\n/* Misc visuals\n----------------------------------*/\n\n/* Corner radius */\n.ui-corner-all,\n.ui-corner-top,\n.ui-corner-left,\n.ui-corner-tl {\n\tborder-top-left-radius: 3px;\n}\n.ui-corner-all,\n.ui-corner-top,\n.ui-corner-right,\n.ui-corner-tr {\n\tborder-top-right-radius: 3px;\n}\n.ui-corner-all,\n.ui-corner-bottom,\n.ui-corner-left,\n.ui-corner-bl {\n\tborder-bottom-left-radius: 3px;\n}\n.ui-corner-all,\n.ui-corner-bottom,\n.ui-corner-right,\n.ui-corner-br {\n\tborder-bottom-right-radius: 3px;\n}\n\n/* Overlays */\n.ui-widget-overlay {\n\tbackground: #aaaaaa;\n\topacity: .003;\n\t-ms-filter: "alpha(opacity=.3)"; /* support: IE8 */\n}\n.ui-widget-shadow {\n\t-webkit-box-shadow: 0px 0px 5px #666666;\n\tbox-shadow: 0px 0px 5px #666666;\n}\n'],sourceRoot:""}]);const E=m},13169:(t,e,n)=>{"use strict";n.d(e,{A:()=>w});var i=n(71354),o=n.n(i),r=n(76314),s=n.n(r),a=n(4417),c=n.n(a),l=new URL(n(3132),n.b),u=new URL(n(19394),n.b),h=new URL(n(81972),n.b),d=new URL(n(6411),n.b),p=new URL(n(14506),n.b),A=new URL(n(64886),n.b),f=s()(o()),g=c()(l),m=c()(u),b=c()(h),v=c()(d),C=c()(p),x=c()(A);f.push([t.id,`/*!\n * jQuery UI CSS Framework 1.13.3\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n *\n * https://api.jqueryui.com/category/theming/\n *\n * To view and modify this theme, visit https://jqueryui.com/themeroller/?bgShadowXPos=&bgOverlayXPos=&bgErrorXPos=&bgHighlightXPos=&bgContentXPos=&bgHeaderXPos=&bgActiveXPos=&bgHoverXPos=&bgDefaultXPos=&bgShadowYPos=&bgOverlayYPos=&bgErrorYPos=&bgHighlightYPos=&bgContentYPos=&bgHeaderYPos=&bgActiveYPos=&bgHoverYPos=&bgDefaultYPos=&bgShadowRepeat=&bgOverlayRepeat=&bgErrorRepeat=&bgHighlightRepeat=&bgContentRepeat=&bgHeaderRepeat=&bgActiveRepeat=&bgHoverRepeat=&bgDefaultRepeat=&iconsHover=url(%22images%2Fui-icons_555555_256x240.png%22)&iconsHighlight=url(%22images%2Fui-icons_777620_256x240.png%22)&iconsHeader=url(%22images%2Fui-icons_444444_256x240.png%22)&iconsError=url(%22images%2Fui-icons_cc0000_256x240.png%22)&iconsDefault=url(%22images%2Fui-icons_777777_256x240.png%22)&iconsContent=url(%22images%2Fui-icons_444444_256x240.png%22)&iconsActive=url(%22images%2Fui-icons_ffffff_256x240.png%22)&bgImgUrlShadow=&bgImgUrlOverlay=&bgImgUrlHover=&bgImgUrlHighlight=&bgImgUrlHeader=&bgImgUrlError=&bgImgUrlDefault=&bgImgUrlContent=&bgImgUrlActive=&opacityFilterShadow=%22alpha(opacity%3D30)%22&opacityFilterOverlay=%22alpha(opacity%3D30)%22&opacityShadowPerc=30&opacityOverlayPerc=30&iconColorHover=%23555555&iconColorHighlight=%23777620&iconColorHeader=%23444444&iconColorError=%23cc0000&iconColorDefault=%23777777&iconColorContent=%23444444&iconColorActive=%23ffffff&bgImgOpacityShadow=0&bgImgOpacityOverlay=0&bgImgOpacityError=95&bgImgOpacityHighlight=55&bgImgOpacityContent=75&bgImgOpacityHeader=75&bgImgOpacityActive=65&bgImgOpacityHover=75&bgImgOpacityDefault=75&bgTextureShadow=flat&bgTextureOverlay=flat&bgTextureError=flat&bgTextureHighlight=flat&bgTextureContent=flat&bgTextureHeader=flat&bgTextureActive=flat&bgTextureHover=flat&bgTextureDefault=flat&cornerRadius=3px&fwDefault=normal&ffDefault=Arial%2CHelvetica%2Csans-serif&fsDefault=1em&cornerRadiusShadow=8px&thicknessShadow=5px&offsetLeftShadow=0px&offsetTopShadow=0px&opacityShadow=.3&bgColorShadow=%23666666&opacityOverlay=.3&bgColorOverlay=%23aaaaaa&fcError=%235f3f3f&borderColorError=%23f1a899&bgColorError=%23fddfdf&fcHighlight=%23777620&borderColorHighlight=%23dad55e&bgColorHighlight=%23fffa90&fcContent=%23333333&borderColorContent=%23dddddd&bgColorContent=%23ffffff&fcHeader=%23333333&borderColorHeader=%23dddddd&bgColorHeader=%23e9e9e9&fcActive=%23ffffff&borderColorActive=%23003eff&bgColorActive=%23007fff&fcHover=%232b2b2b&borderColorHover=%23cccccc&bgColorHover=%23ededed&fcDefault=%23454545&borderColorDefault=%23c5c5c5&bgColorDefault=%23f6f6f6\n */\n\n\n/* Component containers\n----------------------------------*/\n.ui-widget {\n\tfont-family: Arial,Helvetica,sans-serif;\n\tfont-size: 1em;\n}\n.ui-widget .ui-widget {\n\tfont-size: 1em;\n}\n.ui-widget input,\n.ui-widget select,\n.ui-widget textarea,\n.ui-widget button {\n\tfont-family: Arial,Helvetica,sans-serif;\n\tfont-size: 1em;\n}\n.ui-widget.ui-widget-content {\n\tborder: 1px solid #c5c5c5;\n}\n.ui-widget-content {\n\tborder: 1px solid #dddddd;\n\tbackground: #ffffff;\n\tcolor: #333333;\n}\n.ui-widget-content a {\n\tcolor: #333333;\n}\n.ui-widget-header {\n\tborder: 1px solid #dddddd;\n\tbackground: #e9e9e9;\n\tcolor: #333333;\n\tfont-weight: bold;\n}\n.ui-widget-header a {\n\tcolor: #333333;\n}\n\n/* Interaction states\n----------------------------------*/\n.ui-state-default,\n.ui-widget-content .ui-state-default,\n.ui-widget-header .ui-state-default,\n.ui-button,\n\n/* We use html here because we need a greater specificity to make sure disabled\nworks properly when clicked or hovered */\nhtml .ui-button.ui-state-disabled:hover,\nhtml .ui-button.ui-state-disabled:active {\n\tborder: 1px solid #c5c5c5;\n\tbackground: #f6f6f6;\n\tfont-weight: normal;\n\tcolor: #454545;\n}\n.ui-state-default a,\n.ui-state-default a:link,\n.ui-state-default a:visited,\na.ui-button,\na:link.ui-button,\na:visited.ui-button,\n.ui-button {\n\tcolor: #454545;\n\ttext-decoration: none;\n}\n.ui-state-hover,\n.ui-widget-content .ui-state-hover,\n.ui-widget-header .ui-state-hover,\n.ui-state-focus,\n.ui-widget-content .ui-state-focus,\n.ui-widget-header .ui-state-focus,\n.ui-button:hover,\n.ui-button:focus {\n\tborder: 1px solid #cccccc;\n\tbackground: #ededed;\n\tfont-weight: normal;\n\tcolor: #2b2b2b;\n}\n.ui-state-hover a,\n.ui-state-hover a:hover,\n.ui-state-hover a:link,\n.ui-state-hover a:visited,\n.ui-state-focus a,\n.ui-state-focus a:hover,\n.ui-state-focus a:link,\n.ui-state-focus a:visited,\na.ui-button:hover,\na.ui-button:focus {\n\tcolor: #2b2b2b;\n\ttext-decoration: none;\n}\n\n.ui-visual-focus {\n\tbox-shadow: 0 0 3px 1px rgb(94, 158, 214);\n}\n.ui-state-active,\n.ui-widget-content .ui-state-active,\n.ui-widget-header .ui-state-active,\na.ui-button:active,\n.ui-button:active,\n.ui-button.ui-state-active:hover {\n\tborder: 1px solid #003eff;\n\tbackground: #007fff;\n\tfont-weight: normal;\n\tcolor: #ffffff;\n}\n.ui-icon-background,\n.ui-state-active .ui-icon-background {\n\tborder: #003eff;\n\tbackground-color: #ffffff;\n}\n.ui-state-active a,\n.ui-state-active a:link,\n.ui-state-active a:visited {\n\tcolor: #ffffff;\n\ttext-decoration: none;\n}\n\n/* Interaction Cues\n----------------------------------*/\n.ui-state-highlight,\n.ui-widget-content .ui-state-highlight,\n.ui-widget-header .ui-state-highlight {\n\tborder: 1px solid #dad55e;\n\tbackground: #fffa90;\n\tcolor: #777620;\n}\n.ui-state-checked {\n\tborder: 1px solid #dad55e;\n\tbackground: #fffa90;\n}\n.ui-state-highlight a,\n.ui-widget-content .ui-state-highlight a,\n.ui-widget-header .ui-state-highlight a {\n\tcolor: #777620;\n}\n.ui-state-error,\n.ui-widget-content .ui-state-error,\n.ui-widget-header .ui-state-error {\n\tborder: 1px solid #f1a899;\n\tbackground: #fddfdf;\n\tcolor: #5f3f3f;\n}\n.ui-state-error a,\n.ui-widget-content .ui-state-error a,\n.ui-widget-header .ui-state-error a {\n\tcolor: #5f3f3f;\n}\n.ui-state-error-text,\n.ui-widget-content .ui-state-error-text,\n.ui-widget-header .ui-state-error-text {\n\tcolor: #5f3f3f;\n}\n.ui-priority-primary,\n.ui-widget-content .ui-priority-primary,\n.ui-widget-header .ui-priority-primary {\n\tfont-weight: bold;\n}\n.ui-priority-secondary,\n.ui-widget-content .ui-priority-secondary,\n.ui-widget-header .ui-priority-secondary {\n\topacity: .7;\n\t-ms-filter: "alpha(opacity=70)"; /* support: IE8 */\n\tfont-weight: normal;\n}\n.ui-state-disabled,\n.ui-widget-content .ui-state-disabled,\n.ui-widget-header .ui-state-disabled {\n\topacity: .35;\n\t-ms-filter: "alpha(opacity=35)"; /* support: IE8 */\n\tbackground-image: none;\n}\n.ui-state-disabled .ui-icon {\n\t-ms-filter: "alpha(opacity=35)"; /* support: IE8 - See #6059 */\n}\n\n/* Icons\n----------------------------------*/\n\n/* states and images */\n.ui-icon {\n\twidth: 16px;\n\theight: 16px;\n}\n.ui-icon,\n.ui-widget-content .ui-icon {\n\tbackground-image: url(${g});\n}\n.ui-widget-header .ui-icon {\n\tbackground-image: url(${g});\n}\n.ui-state-hover .ui-icon,\n.ui-state-focus .ui-icon,\n.ui-button:hover .ui-icon,\n.ui-button:focus .ui-icon {\n\tbackground-image: url(${m});\n}\n.ui-state-active .ui-icon,\n.ui-button:active .ui-icon {\n\tbackground-image: url(${b});\n}\n.ui-state-highlight .ui-icon,\n.ui-button .ui-state-highlight.ui-icon {\n\tbackground-image: url(${v});\n}\n.ui-state-error .ui-icon,\n.ui-state-error-text .ui-icon {\n\tbackground-image: url(${C});\n}\n.ui-button .ui-icon {\n\tbackground-image: url(${x});\n}\n\n/* positioning */\n/* Three classes needed to override \`.ui-button:hover .ui-icon\` */\n.ui-icon-blank.ui-icon-blank.ui-icon-blank {\n\tbackground-image: none;\n}\n.ui-icon-caret-1-n { background-position: 0 0; }\n.ui-icon-caret-1-ne { background-position: -16px 0; }\n.ui-icon-caret-1-e { background-position: -32px 0; }\n.ui-icon-caret-1-se { background-position: -48px 0; }\n.ui-icon-caret-1-s { background-position: -65px 0; }\n.ui-icon-caret-1-sw { background-position: -80px 0; }\n.ui-icon-caret-1-w { background-position: -96px 0; }\n.ui-icon-caret-1-nw { background-position: -112px 0; }\n.ui-icon-caret-2-n-s { background-position: -128px 0; }\n.ui-icon-caret-2-e-w { background-position: -144px 0; }\n.ui-icon-triangle-1-n { background-position: 0 -16px; }\n.ui-icon-triangle-1-ne { background-position: -16px -16px; }\n.ui-icon-triangle-1-e { background-position: -32px -16px; }\n.ui-icon-triangle-1-se { background-position: -48px -16px; }\n.ui-icon-triangle-1-s { background-position: -65px -16px; }\n.ui-icon-triangle-1-sw { background-position: -80px -16px; }\n.ui-icon-triangle-1-w { background-position: -96px -16px; }\n.ui-icon-triangle-1-nw { background-position: -112px -16px; }\n.ui-icon-triangle-2-n-s { background-position: -128px -16px; }\n.ui-icon-triangle-2-e-w { background-position: -144px -16px; }\n.ui-icon-arrow-1-n { background-position: 0 -32px; }\n.ui-icon-arrow-1-ne { background-position: -16px -32px; }\n.ui-icon-arrow-1-e { background-position: -32px -32px; }\n.ui-icon-arrow-1-se { background-position: -48px -32px; }\n.ui-icon-arrow-1-s { background-position: -65px -32px; }\n.ui-icon-arrow-1-sw { background-position: -80px -32px; }\n.ui-icon-arrow-1-w { background-position: -96px -32px; }\n.ui-icon-arrow-1-nw { background-position: -112px -32px; }\n.ui-icon-arrow-2-n-s { background-position: -128px -32px; }\n.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }\n.ui-icon-arrow-2-e-w { background-position: -160px -32px; }\n.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }\n.ui-icon-arrowstop-1-n { background-position: -192px -32px; }\n.ui-icon-arrowstop-1-e { background-position: -208px -32px; }\n.ui-icon-arrowstop-1-s { background-position: -224px -32px; }\n.ui-icon-arrowstop-1-w { background-position: -240px -32px; }\n.ui-icon-arrowthick-1-n { background-position: 1px -48px; }\n.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }\n.ui-icon-arrowthick-1-e { background-position: -32px -48px; }\n.ui-icon-arrowthick-1-se { background-position: -48px -48px; }\n.ui-icon-arrowthick-1-s { background-position: -64px -48px; }\n.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }\n.ui-icon-arrowthick-1-w { background-position: -96px -48px; }\n.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }\n.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }\n.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }\n.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }\n.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }\n.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }\n.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }\n.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }\n.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }\n.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }\n.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }\n.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }\n.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }\n.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }\n.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }\n.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }\n.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }\n.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }\n.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }\n.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }\n.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }\n.ui-icon-arrow-4 { background-position: 0 -80px; }\n.ui-icon-arrow-4-diag { background-position: -16px -80px; }\n.ui-icon-extlink { background-position: -32px -80px; }\n.ui-icon-newwin { background-position: -48px -80px; }\n.ui-icon-refresh { background-position: -64px -80px; }\n.ui-icon-shuffle { background-position: -80px -80px; }\n.ui-icon-transfer-e-w { background-position: -96px -80px; }\n.ui-icon-transferthick-e-w { background-position: -112px -80px; }\n.ui-icon-folder-collapsed { background-position: 0 -96px; }\n.ui-icon-folder-open { background-position: -16px -96px; }\n.ui-icon-document { background-position: -32px -96px; }\n.ui-icon-document-b { background-position: -48px -96px; }\n.ui-icon-note { background-position: -64px -96px; }\n.ui-icon-mail-closed { background-position: -80px -96px; }\n.ui-icon-mail-open { background-position: -96px -96px; }\n.ui-icon-suitcase { background-position: -112px -96px; }\n.ui-icon-comment { background-position: -128px -96px; }\n.ui-icon-person { background-position: -144px -96px; }\n.ui-icon-print { background-position: -160px -96px; }\n.ui-icon-trash { background-position: -176px -96px; }\n.ui-icon-locked { background-position: -192px -96px; }\n.ui-icon-unlocked { background-position: -208px -96px; }\n.ui-icon-bookmark { background-position: -224px -96px; }\n.ui-icon-tag { background-position: -240px -96px; }\n.ui-icon-home { background-position: 0 -112px; }\n.ui-icon-flag { background-position: -16px -112px; }\n.ui-icon-calendar { background-position: -32px -112px; }\n.ui-icon-cart { background-position: -48px -112px; }\n.ui-icon-pencil { background-position: -64px -112px; }\n.ui-icon-clock { background-position: -80px -112px; }\n.ui-icon-disk { background-position: -96px -112px; }\n.ui-icon-calculator { background-position: -112px -112px; }\n.ui-icon-zoomin { background-position: -128px -112px; }\n.ui-icon-zoomout { background-position: -144px -112px; }\n.ui-icon-search { background-position: -160px -112px; }\n.ui-icon-wrench { background-position: -176px -112px; }\n.ui-icon-gear { background-position: -192px -112px; }\n.ui-icon-heart { background-position: -208px -112px; }\n.ui-icon-star { background-position: -224px -112px; }\n.ui-icon-link { background-position: -240px -112px; }\n.ui-icon-cancel { background-position: 0 -128px; }\n.ui-icon-plus { background-position: -16px -128px; }\n.ui-icon-plusthick { background-position: -32px -128px; }\n.ui-icon-minus { background-position: -48px -128px; }\n.ui-icon-minusthick { background-position: -64px -128px; }\n.ui-icon-close { background-position: -80px -128px; }\n.ui-icon-closethick { background-position: -96px -128px; }\n.ui-icon-key { background-position: -112px -128px; }\n.ui-icon-lightbulb { background-position: -128px -128px; }\n.ui-icon-scissors { background-position: -144px -128px; }\n.ui-icon-clipboard { background-position: -160px -128px; }\n.ui-icon-copy { background-position: -176px -128px; }\n.ui-icon-contact { background-position: -192px -128px; }\n.ui-icon-image { background-position: -208px -128px; }\n.ui-icon-video { background-position: -224px -128px; }\n.ui-icon-script { background-position: -240px -128px; }\n.ui-icon-alert { background-position: 0 -144px; }\n.ui-icon-info { background-position: -16px -144px; }\n.ui-icon-notice { background-position: -32px -144px; }\n.ui-icon-help { background-position: -48px -144px; }\n.ui-icon-check { background-position: -64px -144px; }\n.ui-icon-bullet { background-position: -80px -144px; }\n.ui-icon-radio-on { background-position: -96px -144px; }\n.ui-icon-radio-off { background-position: -112px -144px; }\n.ui-icon-pin-w { background-position: -128px -144px; }\n.ui-icon-pin-s { background-position: -144px -144px; }\n.ui-icon-play { background-position: 0 -160px; }\n.ui-icon-pause { background-position: -16px -160px; }\n.ui-icon-seek-next { background-position: -32px -160px; }\n.ui-icon-seek-prev { background-position: -48px -160px; }\n.ui-icon-seek-end { background-position: -64px -160px; }\n.ui-icon-seek-start { background-position: -80px -160px; }\n/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */\n.ui-icon-seek-first { background-position: -80px -160px; }\n.ui-icon-stop { background-position: -96px -160px; }\n.ui-icon-eject { background-position: -112px -160px; }\n.ui-icon-volume-off { background-position: -128px -160px; }\n.ui-icon-volume-on { background-position: -144px -160px; }\n.ui-icon-power { background-position: 0 -176px; }\n.ui-icon-signal-diag { background-position: -16px -176px; }\n.ui-icon-signal { background-position: -32px -176px; }\n.ui-icon-battery-0 { background-position: -48px -176px; }\n.ui-icon-battery-1 { background-position: -64px -176px; }\n.ui-icon-battery-2 { background-position: -80px -176px; }\n.ui-icon-battery-3 { background-position: -96px -176px; }\n.ui-icon-circle-plus { background-position: 0 -192px; }\n.ui-icon-circle-minus { background-position: -16px -192px; }\n.ui-icon-circle-close { background-position: -32px -192px; }\n.ui-icon-circle-triangle-e { background-position: -48px -192px; }\n.ui-icon-circle-triangle-s { background-position: -64px -192px; }\n.ui-icon-circle-triangle-w { background-position: -80px -192px; }\n.ui-icon-circle-triangle-n { background-position: -96px -192px; }\n.ui-icon-circle-arrow-e { background-position: -112px -192px; }\n.ui-icon-circle-arrow-s { background-position: -128px -192px; }\n.ui-icon-circle-arrow-w { background-position: -144px -192px; }\n.ui-icon-circle-arrow-n { background-position: -160px -192px; }\n.ui-icon-circle-zoomin { background-position: -176px -192px; }\n.ui-icon-circle-zoomout { background-position: -192px -192px; }\n.ui-icon-circle-check { background-position: -208px -192px; }\n.ui-icon-circlesmall-plus { background-position: 0 -208px; }\n.ui-icon-circlesmall-minus { background-position: -16px -208px; }\n.ui-icon-circlesmall-close { background-position: -32px -208px; }\n.ui-icon-squaresmall-plus { background-position: -48px -208px; }\n.ui-icon-squaresmall-minus { background-position: -64px -208px; }\n.ui-icon-squaresmall-close { background-position: -80px -208px; }\n.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }\n.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }\n.ui-icon-grip-solid-vertical { background-position: -32px -224px; }\n.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }\n.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }\n.ui-icon-grip-diagonal-se { background-position: -80px -224px; }\n\n\n/* Misc visuals\n----------------------------------*/\n\n/* Corner radius */\n.ui-corner-all,\n.ui-corner-top,\n.ui-corner-left,\n.ui-corner-tl {\n\tborder-top-left-radius: 3px;\n}\n.ui-corner-all,\n.ui-corner-top,\n.ui-corner-right,\n.ui-corner-tr {\n\tborder-top-right-radius: 3px;\n}\n.ui-corner-all,\n.ui-corner-bottom,\n.ui-corner-left,\n.ui-corner-bl {\n\tborder-bottom-left-radius: 3px;\n}\n.ui-corner-all,\n.ui-corner-bottom,\n.ui-corner-right,\n.ui-corner-br {\n\tborder-bottom-right-radius: 3px;\n}\n\n/* Overlays */\n.ui-widget-overlay {\n\tbackground: #aaaaaa;\n\topacity: .003;\n\t-ms-filter: "alpha(opacity=.3)"; /* support: IE8 */\n}\n.ui-widget-shadow {\n\t-webkit-box-shadow: 0px 0px 5px #666666;\n\tbox-shadow: 0px 0px 5px #666666;\n}\n`,"",{version:3,sources:["webpack://./node_modules/jquery-ui-dist/jquery-ui.theme.css"],names:[],mappings:"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",sourcesContent:['/*!\n * jQuery UI CSS Framework 1.13.3\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n *\n * https://api.jqueryui.com/category/theming/\n *\n * To view and modify this theme, visit https://jqueryui.com/themeroller/?bgShadowXPos=&bgOverlayXPos=&bgErrorXPos=&bgHighlightXPos=&bgContentXPos=&bgHeaderXPos=&bgActiveXPos=&bgHoverXPos=&bgDefaultXPos=&bgShadowYPos=&bgOverlayYPos=&bgErrorYPos=&bgHighlightYPos=&bgContentYPos=&bgHeaderYPos=&bgActiveYPos=&bgHoverYPos=&bgDefaultYPos=&bgShadowRepeat=&bgOverlayRepeat=&bgErrorRepeat=&bgHighlightRepeat=&bgContentRepeat=&bgHeaderRepeat=&bgActiveRepeat=&bgHoverRepeat=&bgDefaultRepeat=&iconsHover=url(%22images%2Fui-icons_555555_256x240.png%22)&iconsHighlight=url(%22images%2Fui-icons_777620_256x240.png%22)&iconsHeader=url(%22images%2Fui-icons_444444_256x240.png%22)&iconsError=url(%22images%2Fui-icons_cc0000_256x240.png%22)&iconsDefault=url(%22images%2Fui-icons_777777_256x240.png%22)&iconsContent=url(%22images%2Fui-icons_444444_256x240.png%22)&iconsActive=url(%22images%2Fui-icons_ffffff_256x240.png%22)&bgImgUrlShadow=&bgImgUrlOverlay=&bgImgUrlHover=&bgImgUrlHighlight=&bgImgUrlHeader=&bgImgUrlError=&bgImgUrlDefault=&bgImgUrlContent=&bgImgUrlActive=&opacityFilterShadow=%22alpha(opacity%3D30)%22&opacityFilterOverlay=%22alpha(opacity%3D30)%22&opacityShadowPerc=30&opacityOverlayPerc=30&iconColorHover=%23555555&iconColorHighlight=%23777620&iconColorHeader=%23444444&iconColorError=%23cc0000&iconColorDefault=%23777777&iconColorContent=%23444444&iconColorActive=%23ffffff&bgImgOpacityShadow=0&bgImgOpacityOverlay=0&bgImgOpacityError=95&bgImgOpacityHighlight=55&bgImgOpacityContent=75&bgImgOpacityHeader=75&bgImgOpacityActive=65&bgImgOpacityHover=75&bgImgOpacityDefault=75&bgTextureShadow=flat&bgTextureOverlay=flat&bgTextureError=flat&bgTextureHighlight=flat&bgTextureContent=flat&bgTextureHeader=flat&bgTextureActive=flat&bgTextureHover=flat&bgTextureDefault=flat&cornerRadius=3px&fwDefault=normal&ffDefault=Arial%2CHelvetica%2Csans-serif&fsDefault=1em&cornerRadiusShadow=8px&thicknessShadow=5px&offsetLeftShadow=0px&offsetTopShadow=0px&opacityShadow=.3&bgColorShadow=%23666666&opacityOverlay=.3&bgColorOverlay=%23aaaaaa&fcError=%235f3f3f&borderColorError=%23f1a899&bgColorError=%23fddfdf&fcHighlight=%23777620&borderColorHighlight=%23dad55e&bgColorHighlight=%23fffa90&fcContent=%23333333&borderColorContent=%23dddddd&bgColorContent=%23ffffff&fcHeader=%23333333&borderColorHeader=%23dddddd&bgColorHeader=%23e9e9e9&fcActive=%23ffffff&borderColorActive=%23003eff&bgColorActive=%23007fff&fcHover=%232b2b2b&borderColorHover=%23cccccc&bgColorHover=%23ededed&fcDefault=%23454545&borderColorDefault=%23c5c5c5&bgColorDefault=%23f6f6f6\n */\n\n\n/* Component containers\n----------------------------------*/\n.ui-widget {\n\tfont-family: Arial,Helvetica,sans-serif;\n\tfont-size: 1em;\n}\n.ui-widget .ui-widget {\n\tfont-size: 1em;\n}\n.ui-widget input,\n.ui-widget select,\n.ui-widget textarea,\n.ui-widget button {\n\tfont-family: Arial,Helvetica,sans-serif;\n\tfont-size: 1em;\n}\n.ui-widget.ui-widget-content {\n\tborder: 1px solid #c5c5c5;\n}\n.ui-widget-content {\n\tborder: 1px solid #dddddd;\n\tbackground: #ffffff;\n\tcolor: #333333;\n}\n.ui-widget-content a {\n\tcolor: #333333;\n}\n.ui-widget-header {\n\tborder: 1px solid #dddddd;\n\tbackground: #e9e9e9;\n\tcolor: #333333;\n\tfont-weight: bold;\n}\n.ui-widget-header a {\n\tcolor: #333333;\n}\n\n/* Interaction states\n----------------------------------*/\n.ui-state-default,\n.ui-widget-content .ui-state-default,\n.ui-widget-header .ui-state-default,\n.ui-button,\n\n/* We use html here because we need a greater specificity to make sure disabled\nworks properly when clicked or hovered */\nhtml .ui-button.ui-state-disabled:hover,\nhtml .ui-button.ui-state-disabled:active {\n\tborder: 1px solid #c5c5c5;\n\tbackground: #f6f6f6;\n\tfont-weight: normal;\n\tcolor: #454545;\n}\n.ui-state-default a,\n.ui-state-default a:link,\n.ui-state-default a:visited,\na.ui-button,\na:link.ui-button,\na:visited.ui-button,\n.ui-button {\n\tcolor: #454545;\n\ttext-decoration: none;\n}\n.ui-state-hover,\n.ui-widget-content .ui-state-hover,\n.ui-widget-header .ui-state-hover,\n.ui-state-focus,\n.ui-widget-content .ui-state-focus,\n.ui-widget-header .ui-state-focus,\n.ui-button:hover,\n.ui-button:focus {\n\tborder: 1px solid #cccccc;\n\tbackground: #ededed;\n\tfont-weight: normal;\n\tcolor: #2b2b2b;\n}\n.ui-state-hover a,\n.ui-state-hover a:hover,\n.ui-state-hover a:link,\n.ui-state-hover a:visited,\n.ui-state-focus a,\n.ui-state-focus a:hover,\n.ui-state-focus a:link,\n.ui-state-focus a:visited,\na.ui-button:hover,\na.ui-button:focus {\n\tcolor: #2b2b2b;\n\ttext-decoration: none;\n}\n\n.ui-visual-focus {\n\tbox-shadow: 0 0 3px 1px rgb(94, 158, 214);\n}\n.ui-state-active,\n.ui-widget-content .ui-state-active,\n.ui-widget-header .ui-state-active,\na.ui-button:active,\n.ui-button:active,\n.ui-button.ui-state-active:hover {\n\tborder: 1px solid #003eff;\n\tbackground: #007fff;\n\tfont-weight: normal;\n\tcolor: #ffffff;\n}\n.ui-icon-background,\n.ui-state-active .ui-icon-background {\n\tborder: #003eff;\n\tbackground-color: #ffffff;\n}\n.ui-state-active a,\n.ui-state-active a:link,\n.ui-state-active a:visited {\n\tcolor: #ffffff;\n\ttext-decoration: none;\n}\n\n/* Interaction Cues\n----------------------------------*/\n.ui-state-highlight,\n.ui-widget-content .ui-state-highlight,\n.ui-widget-header .ui-state-highlight {\n\tborder: 1px solid #dad55e;\n\tbackground: #fffa90;\n\tcolor: #777620;\n}\n.ui-state-checked {\n\tborder: 1px solid #dad55e;\n\tbackground: #fffa90;\n}\n.ui-state-highlight a,\n.ui-widget-content .ui-state-highlight a,\n.ui-widget-header .ui-state-highlight a {\n\tcolor: #777620;\n}\n.ui-state-error,\n.ui-widget-content .ui-state-error,\n.ui-widget-header .ui-state-error {\n\tborder: 1px solid #f1a899;\n\tbackground: #fddfdf;\n\tcolor: #5f3f3f;\n}\n.ui-state-error a,\n.ui-widget-content .ui-state-error a,\n.ui-widget-header .ui-state-error a {\n\tcolor: #5f3f3f;\n}\n.ui-state-error-text,\n.ui-widget-content .ui-state-error-text,\n.ui-widget-header .ui-state-error-text {\n\tcolor: #5f3f3f;\n}\n.ui-priority-primary,\n.ui-widget-content .ui-priority-primary,\n.ui-widget-header .ui-priority-primary {\n\tfont-weight: bold;\n}\n.ui-priority-secondary,\n.ui-widget-content .ui-priority-secondary,\n.ui-widget-header .ui-priority-secondary {\n\topacity: .7;\n\t-ms-filter: "alpha(opacity=70)"; /* support: IE8 */\n\tfont-weight: normal;\n}\n.ui-state-disabled,\n.ui-widget-content .ui-state-disabled,\n.ui-widget-header .ui-state-disabled {\n\topacity: .35;\n\t-ms-filter: "alpha(opacity=35)"; /* support: IE8 */\n\tbackground-image: none;\n}\n.ui-state-disabled .ui-icon {\n\t-ms-filter: "alpha(opacity=35)"; /* support: IE8 - See #6059 */\n}\n\n/* Icons\n----------------------------------*/\n\n/* states and images */\n.ui-icon {\n\twidth: 16px;\n\theight: 16px;\n}\n.ui-icon,\n.ui-widget-content .ui-icon {\n\tbackground-image: url("images/ui-icons_444444_256x240.png");\n}\n.ui-widget-header .ui-icon {\n\tbackground-image: url("images/ui-icons_444444_256x240.png");\n}\n.ui-state-hover .ui-icon,\n.ui-state-focus .ui-icon,\n.ui-button:hover .ui-icon,\n.ui-button:focus .ui-icon {\n\tbackground-image: url("images/ui-icons_555555_256x240.png");\n}\n.ui-state-active .ui-icon,\n.ui-button:active .ui-icon {\n\tbackground-image: url("images/ui-icons_ffffff_256x240.png");\n}\n.ui-state-highlight .ui-icon,\n.ui-button .ui-state-highlight.ui-icon {\n\tbackground-image: url("images/ui-icons_777620_256x240.png");\n}\n.ui-state-error .ui-icon,\n.ui-state-error-text .ui-icon {\n\tbackground-image: url("images/ui-icons_cc0000_256x240.png");\n}\n.ui-button .ui-icon {\n\tbackground-image: url("images/ui-icons_777777_256x240.png");\n}\n\n/* positioning */\n/* Three classes needed to override `.ui-button:hover .ui-icon` */\n.ui-icon-blank.ui-icon-blank.ui-icon-blank {\n\tbackground-image: none;\n}\n.ui-icon-caret-1-n { background-position: 0 0; }\n.ui-icon-caret-1-ne { background-position: -16px 0; }\n.ui-icon-caret-1-e { background-position: -32px 0; }\n.ui-icon-caret-1-se { background-position: -48px 0; }\n.ui-icon-caret-1-s { background-position: -65px 0; }\n.ui-icon-caret-1-sw { background-position: -80px 0; }\n.ui-icon-caret-1-w { background-position: -96px 0; }\n.ui-icon-caret-1-nw { background-position: -112px 0; }\n.ui-icon-caret-2-n-s { background-position: -128px 0; }\n.ui-icon-caret-2-e-w { background-position: -144px 0; }\n.ui-icon-triangle-1-n { background-position: 0 -16px; }\n.ui-icon-triangle-1-ne { background-position: -16px -16px; }\n.ui-icon-triangle-1-e { background-position: -32px -16px; }\n.ui-icon-triangle-1-se { background-position: -48px -16px; }\n.ui-icon-triangle-1-s { background-position: -65px -16px; }\n.ui-icon-triangle-1-sw { background-position: -80px -16px; }\n.ui-icon-triangle-1-w { background-position: -96px -16px; }\n.ui-icon-triangle-1-nw { background-position: -112px -16px; }\n.ui-icon-triangle-2-n-s { background-position: -128px -16px; }\n.ui-icon-triangle-2-e-w { background-position: -144px -16px; }\n.ui-icon-arrow-1-n { background-position: 0 -32px; }\n.ui-icon-arrow-1-ne { background-position: -16px -32px; }\n.ui-icon-arrow-1-e { background-position: -32px -32px; }\n.ui-icon-arrow-1-se { background-position: -48px -32px; }\n.ui-icon-arrow-1-s { background-position: -65px -32px; }\n.ui-icon-arrow-1-sw { background-position: -80px -32px; }\n.ui-icon-arrow-1-w { background-position: -96px -32px; }\n.ui-icon-arrow-1-nw { background-position: -112px -32px; }\n.ui-icon-arrow-2-n-s { background-position: -128px -32px; }\n.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }\n.ui-icon-arrow-2-e-w { background-position: -160px -32px; }\n.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }\n.ui-icon-arrowstop-1-n { background-position: -192px -32px; }\n.ui-icon-arrowstop-1-e { background-position: -208px -32px; }\n.ui-icon-arrowstop-1-s { background-position: -224px -32px; }\n.ui-icon-arrowstop-1-w { background-position: -240px -32px; }\n.ui-icon-arrowthick-1-n { background-position: 1px -48px; }\n.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }\n.ui-icon-arrowthick-1-e { background-position: -32px -48px; }\n.ui-icon-arrowthick-1-se { background-position: -48px -48px; }\n.ui-icon-arrowthick-1-s { background-position: -64px -48px; }\n.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }\n.ui-icon-arrowthick-1-w { background-position: -96px -48px; }\n.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }\n.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }\n.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }\n.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }\n.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }\n.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }\n.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }\n.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }\n.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }\n.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }\n.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }\n.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }\n.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }\n.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }\n.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }\n.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }\n.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }\n.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }\n.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }\n.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }\n.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }\n.ui-icon-arrow-4 { background-position: 0 -80px; }\n.ui-icon-arrow-4-diag { background-position: -16px -80px; }\n.ui-icon-extlink { background-position: -32px -80px; }\n.ui-icon-newwin { background-position: -48px -80px; }\n.ui-icon-refresh { background-position: -64px -80px; }\n.ui-icon-shuffle { background-position: -80px -80px; }\n.ui-icon-transfer-e-w { background-position: -96px -80px; }\n.ui-icon-transferthick-e-w { background-position: -112px -80px; }\n.ui-icon-folder-collapsed { background-position: 0 -96px; }\n.ui-icon-folder-open { background-position: -16px -96px; }\n.ui-icon-document { background-position: -32px -96px; }\n.ui-icon-document-b { background-position: -48px -96px; }\n.ui-icon-note { background-position: -64px -96px; }\n.ui-icon-mail-closed { background-position: -80px -96px; }\n.ui-icon-mail-open { background-position: -96px -96px; }\n.ui-icon-suitcase { background-position: -112px -96px; }\n.ui-icon-comment { background-position: -128px -96px; }\n.ui-icon-person { background-position: -144px -96px; }\n.ui-icon-print { background-position: -160px -96px; }\n.ui-icon-trash { background-position: -176px -96px; }\n.ui-icon-locked { background-position: -192px -96px; }\n.ui-icon-unlocked { background-position: -208px -96px; }\n.ui-icon-bookmark { background-position: -224px -96px; }\n.ui-icon-tag { background-position: -240px -96px; }\n.ui-icon-home { background-position: 0 -112px; }\n.ui-icon-flag { background-position: -16px -112px; }\n.ui-icon-calendar { background-position: -32px -112px; }\n.ui-icon-cart { background-position: -48px -112px; }\n.ui-icon-pencil { background-position: -64px -112px; }\n.ui-icon-clock { background-position: -80px -112px; }\n.ui-icon-disk { background-position: -96px -112px; }\n.ui-icon-calculator { background-position: -112px -112px; }\n.ui-icon-zoomin { background-position: -128px -112px; }\n.ui-icon-zoomout { background-position: -144px -112px; }\n.ui-icon-search { background-position: -160px -112px; }\n.ui-icon-wrench { background-position: -176px -112px; }\n.ui-icon-gear { background-position: -192px -112px; }\n.ui-icon-heart { background-position: -208px -112px; }\n.ui-icon-star { background-position: -224px -112px; }\n.ui-icon-link { background-position: -240px -112px; }\n.ui-icon-cancel { background-position: 0 -128px; }\n.ui-icon-plus { background-position: -16px -128px; }\n.ui-icon-plusthick { background-position: -32px -128px; }\n.ui-icon-minus { background-position: -48px -128px; }\n.ui-icon-minusthick { background-position: -64px -128px; }\n.ui-icon-close { background-position: -80px -128px; }\n.ui-icon-closethick { background-position: -96px -128px; }\n.ui-icon-key { background-position: -112px -128px; }\n.ui-icon-lightbulb { background-position: -128px -128px; }\n.ui-icon-scissors { background-position: -144px -128px; }\n.ui-icon-clipboard { background-position: -160px -128px; }\n.ui-icon-copy { background-position: -176px -128px; }\n.ui-icon-contact { background-position: -192px -128px; }\n.ui-icon-image { background-position: -208px -128px; }\n.ui-icon-video { background-position: -224px -128px; }\n.ui-icon-script { background-position: -240px -128px; }\n.ui-icon-alert { background-position: 0 -144px; }\n.ui-icon-info { background-position: -16px -144px; }\n.ui-icon-notice { background-position: -32px -144px; }\n.ui-icon-help { background-position: -48px -144px; }\n.ui-icon-check { background-position: -64px -144px; }\n.ui-icon-bullet { background-position: -80px -144px; }\n.ui-icon-radio-on { background-position: -96px -144px; }\n.ui-icon-radio-off { background-position: -112px -144px; }\n.ui-icon-pin-w { background-position: -128px -144px; }\n.ui-icon-pin-s { background-position: -144px -144px; }\n.ui-icon-play { background-position: 0 -160px; }\n.ui-icon-pause { background-position: -16px -160px; }\n.ui-icon-seek-next { background-position: -32px -160px; }\n.ui-icon-seek-prev { background-position: -48px -160px; }\n.ui-icon-seek-end { background-position: -64px -160px; }\n.ui-icon-seek-start { background-position: -80px -160px; }\n/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */\n.ui-icon-seek-first { background-position: -80px -160px; }\n.ui-icon-stop { background-position: -96px -160px; }\n.ui-icon-eject { background-position: -112px -160px; }\n.ui-icon-volume-off { background-position: -128px -160px; }\n.ui-icon-volume-on { background-position: -144px -160px; }\n.ui-icon-power { background-position: 0 -176px; }\n.ui-icon-signal-diag { background-position: -16px -176px; }\n.ui-icon-signal { background-position: -32px -176px; }\n.ui-icon-battery-0 { background-position: -48px -176px; }\n.ui-icon-battery-1 { background-position: -64px -176px; }\n.ui-icon-battery-2 { background-position: -80px -176px; }\n.ui-icon-battery-3 { background-position: -96px -176px; }\n.ui-icon-circle-plus { background-position: 0 -192px; }\n.ui-icon-circle-minus { background-position: -16px -192px; }\n.ui-icon-circle-close { background-position: -32px -192px; }\n.ui-icon-circle-triangle-e { background-position: -48px -192px; }\n.ui-icon-circle-triangle-s { background-position: -64px -192px; }\n.ui-icon-circle-triangle-w { background-position: -80px -192px; }\n.ui-icon-circle-triangle-n { background-position: -96px -192px; }\n.ui-icon-circle-arrow-e { background-position: -112px -192px; }\n.ui-icon-circle-arrow-s { background-position: -128px -192px; }\n.ui-icon-circle-arrow-w { background-position: -144px -192px; }\n.ui-icon-circle-arrow-n { background-position: -160px -192px; }\n.ui-icon-circle-zoomin { background-position: -176px -192px; }\n.ui-icon-circle-zoomout { background-position: -192px -192px; }\n.ui-icon-circle-check { background-position: -208px -192px; }\n.ui-icon-circlesmall-plus { background-position: 0 -208px; }\n.ui-icon-circlesmall-minus { background-position: -16px -208px; }\n.ui-icon-circlesmall-close { background-position: -32px -208px; }\n.ui-icon-squaresmall-plus { background-position: -48px -208px; }\n.ui-icon-squaresmall-minus { background-position: -64px -208px; }\n.ui-icon-squaresmall-close { background-position: -80px -208px; }\n.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }\n.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }\n.ui-icon-grip-solid-vertical { background-position: -32px -224px; }\n.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }\n.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }\n.ui-icon-grip-diagonal-se { background-position: -80px -224px; }\n\n\n/* Misc visuals\n----------------------------------*/\n\n/* Corner radius */\n.ui-corner-all,\n.ui-corner-top,\n.ui-corner-left,\n.ui-corner-tl {\n\tborder-top-left-radius: 3px;\n}\n.ui-corner-all,\n.ui-corner-top,\n.ui-corner-right,\n.ui-corner-tr {\n\tborder-top-right-radius: 3px;\n}\n.ui-corner-all,\n.ui-corner-bottom,\n.ui-corner-left,\n.ui-corner-bl {\n\tborder-bottom-left-radius: 3px;\n}\n.ui-corner-all,\n.ui-corner-bottom,\n.ui-corner-right,\n.ui-corner-br {\n\tborder-bottom-right-radius: 3px;\n}\n\n/* Overlays */\n.ui-widget-overlay {\n\tbackground: #aaaaaa;\n\topacity: .003;\n\t-ms-filter: "alpha(opacity=.3)"; /* support: IE8 */\n}\n.ui-widget-shadow {\n\t-webkit-box-shadow: 0px 0px 5px #666666;\n\tbox-shadow: 0px 0px 5px #666666;\n}\n'],sourceRoot:""}]);const w=f},90628:(t,e,n)=>{"use strict";n.d(e,{A:()=>C});var i=n(71354),o=n.n(i),r=n(76314),s=n.n(r),a=n(4417),c=n.n(a),l=new URL(n(7369),n.b),u=new URL(n(48832),n.b),h=new URL(n(36114),n.b),d=new URL(n(83864),n.b),p=new URL(n(26609),n.b),A=s()(o()),f=c()(l),g=c()(u),m=c()(h),b=c()(d),v=c()(p);A.push([t.id,`.ui-widget-content{border:1px solid var(--color-border);background:var(--color-main-background) none;color:var(--color-main-text)}.ui-widget-content a{color:var(--color-main-text)}.ui-widget-header{border:none;color:var(--color-main-text);background-image:none}.ui-widget-header a{color:var(--color-main-text)}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid var(--color-border);background:var(--color-main-background) none;font-weight:bold;color:#555}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#555}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #ddd;background:var(--color-main-background) none;font-weight:bold;color:var(--color-main-text)}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited{color:var(--color-main-text)}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid var(--color-primary-element);background:var(--color-main-background) none;font-weight:bold;color:var(--color-main-text)}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:var(--color-main-text)}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid var(--color-main-background);background:var(--color-main-background) none;color:var(--color-text-light);font-weight:600}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:var(--color-text-lighter)}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:var(--color-error);background:var(--color-error) none;color:#fff}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#fff}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#fff}.ui-state-default .ui-icon{background-image:url(${f})}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url(${f})}.ui-state-active .ui-icon{background-image:url(${f})}.ui-state-highlight .ui-icon{background-image:url(${g})}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url(${m})}.ui-icon.ui-icon-none{display:none}.ui-widget-overlay{background:#666 url(${b}) 50% 50% repeat;opacity:.5}.ui-widget-shadow{margin:-5px 0 0 -5px;padding:5px;background:#000 url(${v}) 50% 50% repeat-x;opacity:.2;border-radius:5px}.ui-tabs{border:none}.ui-tabs .ui-tabs-nav.ui-corner-all{border-end-start-radius:0;border-end-end-radius:0}.ui-tabs .ui-tabs-nav{background:none;margin-bottom:15px}.ui-tabs .ui-tabs-nav .ui-state-default{border:none;border-bottom:1px solid rgba(0,0,0,0);font-weight:normal;margin:0 !important;padding:0 !important}.ui-tabs .ui-tabs-nav .ui-state-hover,.ui-tabs .ui-tabs-nav .ui-state-active{border:none;border-bottom:1px solid var(--color-main-text);color:var(--color-main-text)}.ui-tabs .ui-tabs-nav .ui-state-hover a,.ui-tabs .ui-tabs-nav .ui-state-hover a:link,.ui-tabs .ui-tabs-nav .ui-state-hover a:hover,.ui-tabs .ui-tabs-nav .ui-state-hover a:visited,.ui-tabs .ui-tabs-nav .ui-state-active a,.ui-tabs .ui-tabs-nav .ui-state-active a:link,.ui-tabs .ui-tabs-nav .ui-state-active a:hover,.ui-tabs .ui-tabs-nav .ui-state-active a:visited{color:var(--color-main-text)}.ui-tabs .ui-tabs-nav .ui-state-active{font-weight:bold}.ui-autocomplete.ui-menu{padding:0}.ui-autocomplete.ui-menu.item-count-1,.ui-autocomplete.ui-menu.item-count-2{overflow-y:hidden}.ui-autocomplete.ui-menu .ui-menu-item a{color:var(--color-text-lighter);display:block;padding:4px;padding-inline-start:14px}.ui-autocomplete.ui-menu .ui-menu-item a.ui-state-focus,.ui-autocomplete.ui-menu .ui-menu-item a.ui-state-active{box-shadow:inset 4px 0 var(--color-primary-element);color:var(--color-main-text)}.ui-autocomplete.ui-widget-content{background:var(--color-main-background);border-top:none}.ui-autocomplete.ui-corner-all{border-radius:0;border-end-start-radius:var(--border-radius);border-end-end-radius:var(--border-radius)}.ui-autocomplete .ui-state-hover,.ui-autocomplete .ui-widget-content .ui-state-hover,.ui-autocomplete .ui-widget-header .ui-state-hover,.ui-autocomplete .ui-state-focus,.ui-autocomplete .ui-widget-content .ui-state-focus,.ui-autocomplete .ui-widget-header .ui-state-focus{border:1px solid rgba(0,0,0,0);background:inherit;color:var(--color-primary-element)}.ui-autocomplete .ui-menu-item a{border-radius:0 !important}.ui-button.primary{background-color:var(--color-primary-element);color:var(--color-primary-element-text);border:1px solid var(--color-primary-element-text)}.ui-button:hover{font-weight:bold !important}.ui-draggable-handle,.ui-selectable{touch-action:pan-y}`,"",{version:3,sources:["webpack://./core/src/jquery/css/jquery-ui-fixes.scss"],names:[],mappings:"AAMA,mBACC,oCAAA,CACA,4CAAA,CACA,4BAAA,CAED,qBACC,4BAAA,CAED,kBACC,WAAA,CACA,4BAAA,CACA,qBAAA,CAED,oBACC,4BAAA,CAKD,2FAGC,oCAAA,CACA,4CAAA,CACA,gBAAA,CACA,UAAA,CAED,yEAGC,UAAA,CAED,0KAMC,qBAAA,CACA,4CAAA,CACA,gBAAA,CACA,4BAAA,CAED,2FAIC,4BAAA,CAED,wFAGC,6CAAA,CACA,4CAAA,CACA,gBAAA,CACA,4BAAA,CAED,sEAGC,4BAAA,CAKD,iGAGC,6CAAA,CACA,4CAAA,CACA,6BAAA,CACA,eAAA,CAED,uGAGC,+BAAA,CAED,qFAGC,yBAAA,CACA,kCAAA,CACA,UAAA,CAED,2FAGC,UAAA,CAED,oGAGC,UAAA,CAKD,2BACC,wDAAA,CAED,kDAEC,wDAAA,CAED,0BACC,wDAAA,CAED,6BACC,wDAAA,CAED,uDAEC,wDAAA,CAED,sBACC,YAAA,CAMD,mBACC,sEAAA,CACA,UAAA,CAED,kBACC,oBAAA,CACA,WAAA,CACA,wEAAA,CACA,UAAA,CACA,iBAAA,CAID,SACC,WAAA,CAEA,oCACC,yBAAA,CACA,uBAAA,CAGD,sBACC,eAAA,CACA,kBAAA,CAEA,wCACC,WAAA,CACA,qCAAA,CACA,kBAAA,CACA,mBAAA,CACA,oBAAA,CAGD,6EAEC,WAAA,CACA,8CAAA,CACA,4BAAA,CACA,0WACC,4BAAA,CAGF,uCACC,gBAAA,CAOF,yBACC,SAAA,CAIA,4EAEC,iBAAA,CAGD,yCACC,+BAAA,CACA,aAAA,CACA,WAAA,CACA,yBAAA,CAEA,iHACC,mDAAA,CACA,4BAAA,CAKH,mCACC,uCAAA,CACA,eAAA,CAGD,+BACC,eAAA,CACA,4CAAA,CACA,0CAAA,CAGD,gRAKC,8BAAA,CACA,kBAAA,CACA,kCAAA,CAIA,iCACC,0BAAA,CAKH,mBACC,6CAAA,CACA,uCAAA,CACA,kDAAA,CAID,iBACI,2BAAA,CAKJ,oCAEC,kBAAA",sourcesContent:["/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n/* Component containers\n----------------------------------*/\n.ui-widget-content {\n\tborder: 1px solid var(--color-border);\n\tbackground: var(--color-main-background) none;\n\tcolor: var(--color-main-text);\n}\n.ui-widget-content a {\n\tcolor: var(--color-main-text);\n}\n.ui-widget-header {\n\tborder: none;\n\tcolor: var(--color-main-text);\n\tbackground-image: none;\n}\n.ui-widget-header a {\n\tcolor: var(--color-main-text);\n}\n\n/* Interaction states\n----------------------------------*/\n.ui-state-default,\n.ui-widget-content .ui-state-default,\n.ui-widget-header .ui-state-default {\n\tborder: 1px solid var(--color-border);\n\tbackground: var(--color-main-background) none;\n\tfont-weight: bold;\n\tcolor: #555;\n}\n.ui-state-default a,\n.ui-state-default a:link,\n.ui-state-default a:visited {\n\tcolor: #555;\n}\n.ui-state-hover,\n.ui-widget-content .ui-state-hover,\n.ui-widget-header .ui-state-hover,\n.ui-state-focus,\n.ui-widget-content .ui-state-focus,\n.ui-widget-header .ui-state-focus {\n\tborder: 1px solid #ddd;\n\tbackground: var(--color-main-background) none;\n\tfont-weight: bold;\n\tcolor: var(--color-main-text);\n}\n.ui-state-hover a,\n.ui-state-hover a:hover,\n.ui-state-hover a:link,\n.ui-state-hover a:visited {\n\tcolor: var(--color-main-text);\n}\n.ui-state-active,\n.ui-widget-content .ui-state-active,\n.ui-widget-header .ui-state-active {\n\tborder: 1px solid var(--color-primary-element);\n\tbackground: var(--color-main-background) none;\n\tfont-weight: bold;\n\tcolor: var(--color-main-text);\n}\n.ui-state-active a,\n.ui-state-active a:link,\n.ui-state-active a:visited {\n\tcolor: var(--color-main-text);\n}\n\n/* Interaction Cues\n----------------------------------*/\n.ui-state-highlight,\n.ui-widget-content .ui-state-highlight,\n.ui-widget-header .ui-state-highlight {\n\tborder: 1px solid var(--color-main-background);\n\tbackground: var(--color-main-background) none;\n\tcolor: var(--color-text-light);\n\tfont-weight: 600;\n}\n.ui-state-highlight a,\n.ui-widget-content .ui-state-highlight a,\n.ui-widget-header .ui-state-highlight a {\n\tcolor: var(--color-text-lighter);\n}\n.ui-state-error,\n.ui-widget-content .ui-state-error,\n.ui-widget-header .ui-state-error {\n\tborder: var(--color-error);\n\tbackground: var(--color-error) none;\n\tcolor: #ffffff;\n}\n.ui-state-error a,\n.ui-widget-content .ui-state-error a,\n.ui-widget-header .ui-state-error a {\n\tcolor: #ffffff;\n}\n.ui-state-error-text,\n.ui-widget-content .ui-state-error-text,\n.ui-widget-header .ui-state-error-text {\n\tcolor: #ffffff;\n}\n\n/* Icons\n----------------------------------*/\n.ui-state-default .ui-icon {\n\tbackground-image: url('images/ui-icons_1d2d44_256x240.png');\n}\n.ui-state-hover .ui-icon,\n.ui-state-focus .ui-icon {\n\tbackground-image: url('images/ui-icons_1d2d44_256x240.png');\n}\n.ui-state-active .ui-icon {\n\tbackground-image: url('images/ui-icons_1d2d44_256x240.png');\n}\n.ui-state-highlight .ui-icon {\n\tbackground-image: url('images/ui-icons_ffffff_256x240.png');\n}\n.ui-state-error .ui-icon,\n.ui-state-error-text .ui-icon {\n\tbackground-image: url('images/ui-icons_ffd27a_256x240.png');\n}\n.ui-icon.ui-icon-none {\n\tdisplay: none;\n}\n\n/* Misc visuals\n----------------------------------*/\n/* Overlays */\n.ui-widget-overlay {\n\tbackground: #666666 url('images/ui-bg_diagonals-thick_20_666666_40x40.png') 50% 50% repeat;\n\topacity: .5;\n}\n.ui-widget-shadow {\n\tmargin: -5px 0 0 -5px;\n\tpadding: 5px;\n\tbackground: #000000 url('images/ui-bg_flat_10_000000_40x100.png') 50% 50% repeat-x;\n\topacity: .2;\n\tborder-radius: 5px;\n}\n\n/* Tabs customizations */\n.ui-tabs {\n\tborder: none;\n\n\t.ui-tabs-nav.ui-corner-all {\n\t\tborder-end-start-radius: 0;\n\t\tborder-end-end-radius: 0;\n\t}\n\n\t.ui-tabs-nav {\n\t\tbackground: none;\n\t\tmargin-bottom: 15px;\n\n\t\t.ui-state-default {\n\t\t\tborder: none;\n\t\t\tborder-bottom: 1px solid transparent;\n\t\t\tfont-weight: normal;\n\t\t\tmargin: 0 !important;\n\t\t\tpadding: 0 !important;\n\t\t}\n\n\t\t.ui-state-hover,\n\t\t.ui-state-active {\n\t\t\tborder: none;\n\t\t\tborder-bottom: 1px solid var(--color-main-text);\n\t\t\tcolor: var(--color-main-text);\n\t\t\ta, a:link, a:hover, a:visited {\n\t\t\t\tcolor: var(--color-main-text);\n\t\t\t}\n\t\t}\n\t\t.ui-state-active {\n\t\t\tfont-weight: bold;\n\t\t}\n\t}\n}\n\n/* Select menus */\n.ui-autocomplete {\n\t&.ui-menu {\n\t\tpadding: 0;\n\n\t\t/* scrolling starts from three items,\n\t\t * so hide overflow and scrollbars for a clean layout */\n\t\t&.item-count-1,\n\t\t&.item-count-2 {\n\t\t\toverflow-y: hidden;\n\t\t}\n\n\t\t.ui-menu-item a {\n\t\t\tcolor: var(--color-text-lighter);\n\t\t\tdisplay: block;\n\t\t\tpadding: 4px;\n\t\t\tpadding-inline-start: 14px;\n\n\t\t\t&.ui-state-focus, &.ui-state-active {\n\t\t\t\tbox-shadow: inset 4px 0 var(--color-primary-element);\n\t\t\t\tcolor: var(--color-main-text);\n\t\t\t}\n\t\t}\n\t}\n\n\t&.ui-widget-content {\n\t\tbackground: var(--color-main-background);\n\t\tborder-top: none;\n\t}\n\n\t&.ui-corner-all {\n\t\tborder-radius: 0;\n\t\tborder-end-start-radius: var(--border-radius);\n\t\tborder-end-end-radius: var(--border-radius);\n\t}\n\n\t.ui-state-hover, .ui-widget-content .ui-state-hover,\n\t.ui-widget-header .ui-state-hover,\n\t.ui-state-focus,\n\t.ui-widget-content .ui-state-focus,\n\t.ui-widget-header .ui-state-focus {\n\t\tborder: 1px solid transparent;\n\t\tbackground: inherit;\n\t\tcolor: var(--color-primary-element);\n\t}\n\n\t.ui-menu-item {\n\t\ta {\n\t\t\tborder-radius: 0 !important;\n\t\t}\n\t}\n}\n\n.ui-button.primary {\n\tbackground-color: var(--color-primary-element);\n\tcolor: var(--color-primary-element-text);\n\tborder: 1px solid var(--color-primary-element-text);\n}\n\n// fix ui-buttons on hover\n.ui-button:hover {\n font-weight:bold !important;\n}\n\n\n/* DRAGGABLE */\n.ui-draggable-handle,\n.ui-selectable {\n\ttouch-action: pan-y;\n}\n"],sourceRoot:""}]);const C=A},2791:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var i=n(71354),o=n.n(i),r=n(76314),s=n.n(r)()(o());s.push([t.id,".oc-dialog{background:var(--color-main-background);color:var(--color-text-light);border-radius:var(--border-radius-large);box-shadow:0 0 30px var(--color-box-shadow);padding:24px;z-index:100001;font-size:100%;box-sizing:border-box;min-width:200px;top:50%;inset-inline-start:50%;transform:translate(-50%, -50%);max-height:calc(100% - 20px);max-width:calc(100% - 20px);overflow:auto}.oc-dialog-title{background:var(--color-main-background)}.oc-dialog-buttonrow{position:relative;display:flex;background:rgba(0,0,0,0);right:0;bottom:0;padding:0;padding-top:10px;box-sizing:border-box;width:100%;background-image:linear-gradient(rgba(255, 255, 255, 0), var(--color-main-background))}.oc-dialog-buttonrow.twobuttons{justify-content:space-between}.oc-dialog-buttonrow.onebutton,.oc-dialog-buttonrow.twobuttons.aside{justify-content:flex-end}.oc-dialog-buttonrow button{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;height:44px;min-width:44px}.oc-dialog-close{position:absolute;width:44px !important;height:44px !important;top:4px;right:4px;padding:25px;background:var(--icon-close-dark) no-repeat center;opacity:.5;border-radius:var(--border-radius-pill)}.oc-dialog-close:hover,.oc-dialog-close:focus,.oc-dialog-close:active{opacity:1}.oc-dialog-dim{background-color:#000;opacity:.2;z-index:100001;position:fixed;top:0;left:0;width:100%;height:100%}body.theme--dark .oc-dialog-dim{opacity:.8}.oc-dialog-content{width:100%;max-width:550px}.oc-dialog.password-confirmation .oc-dialog-content{width:auto}.oc-dialog.password-confirmation .oc-dialog-content input[type=password]{width:100%}.oc-dialog.password-confirmation .oc-dialog-content label{display:none}","",{version:3,sources:["webpack://./core/src/jquery/css/jquery.ocdialog.scss"],names:[],mappings:"AAIA,WACC,uCAAA,CACA,6BAAA,CACA,wCAAA,CACA,2CAAA,CACA,YAAA,CACA,cAAA,CACA,cAAA,CACA,qBAAA,CACA,eAAA,CACA,OAAA,CACA,sBAAA,CACA,+BAAA,CACA,4BAAA,CACA,2BAAA,CACA,aAAA,CAED,iBACC,uCAAA,CAED,qBACC,iBAAA,CACA,YAAA,CACA,wBAAA,CACA,OAAA,CACA,QAAA,CACA,SAAA,CACA,gBAAA,CACA,qBAAA,CACA,UAAA,CACA,sFAAA,CAEA,gCACO,6BAAA,CAGP,qEAEC,wBAAA,CAGD,4BACI,kBAAA,CACA,eAAA,CACH,sBAAA,CACA,WAAA,CACA,cAAA,CAIF,iBACC,iBAAA,CACA,qBAAA,CACA,sBAAA,CACA,OAAA,CACA,SAAA,CACA,YAAA,CACA,kDAAA,CACA,UAAA,CACA,uCAAA,CAEA,sEAGC,SAAA,CAIF,eACC,qBAAA,CACA,UAAA,CACA,cAAA,CACA,cAAA,CACA,KAAA,CACA,MAAA,CACA,UAAA,CACA,WAAA,CAGD,gCACC,UAAA,CAGD,mBACC,UAAA,CACA,eAAA,CAIA,oDACC,UAAA,CAEA,yEACC,UAAA,CAED,0DACC,YAAA",sourcesContent:["/**\n * SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n.oc-dialog {\n\tbackground: var(--color-main-background);\n\tcolor: var(--color-text-light);\n\tborder-radius: var(--border-radius-large);\n\tbox-shadow: 0 0 30px var(--color-box-shadow);\n\tpadding: 24px;\n\tz-index: 100001;\n\tfont-size: 100%;\n\tbox-sizing: border-box;\n\tmin-width: 200px;\n\ttop: 50%;\n\tinset-inline-start: 50%;\n\ttransform: translate(-50%, -50%);\n\tmax-height: calc(100% - 20px);\n\tmax-width: calc(100% - 20px);\n\toverflow: auto;\n}\n.oc-dialog-title {\n\tbackground: var(--color-main-background);\n}\n.oc-dialog-buttonrow {\n\tposition: relative;\n\tdisplay: flex;\n\tbackground: transparent;\n\tright: 0;\n\tbottom: 0;\n\tpadding: 0;\n\tpadding-top: 10px;\n\tbox-sizing: border-box;\n\twidth: 100%;\n\tbackground-image: linear-gradient(rgba(255, 255, 255, 0.0), var(--color-main-background));\n\n\t&.twobuttons {\n justify-content: space-between;\n }\n\n\t&.onebutton,\n\t&.twobuttons.aside {\n\t\tjustify-content: flex-end;\n\t}\n\n\tbutton {\n\t white-space: nowrap;\n\t overflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t\theight: 44px;\n\t\tmin-width: 44px;\n\t}\n}\n\n.oc-dialog-close {\n\tposition: absolute;\n\twidth: 44px !important;\n\theight: 44px !important;\n\ttop: 4px;\n\tright: 4px;\n\tpadding: 25px;\n\tbackground: var(--icon-close-dark) no-repeat center;\n\topacity: .5;\n\tborder-radius: var(--border-radius-pill);\n\n\t&:hover,\n\t&:focus,\n\t&:active {\n\t\topacity: 1;\n\t}\n}\n\n.oc-dialog-dim {\n\tbackground-color: #000;\n\topacity: .2;\n\tz-index: 100001;\n\tposition: fixed;\n\ttop: 0;\n\tleft: 0;\n\twidth: 100%;\n\theight: 100%;\n}\n\nbody.theme--dark .oc-dialog-dim {\n\topacity: .8;\n}\n\n.oc-dialog-content {\n\twidth: 100%;\n\tmax-width: 550px;\n}\n\n.oc-dialog.password-confirmation {\n\t.oc-dialog-content {\n\t\twidth: auto;\n\n\t\tinput[type=password] {\n\t\t\twidth: 100%;\n\t\t}\n\t\tlabel {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n}\n"],sourceRoot:""}]);const a=s},35156:(t,e,n)=>{"use strict";n.d(e,{A:()=>g});var i=n(71354),o=n.n(i),r=n(76314),s=n.n(r),a=n(4417),c=n.n(a),l=new URL(n(65653),n.b),u=new URL(n(22046),n.b),h=new URL(n(32095),n.b),d=s()(o()),p=c()(l),A=c()(u),f=c()(h);d.push([t.id,`/*\nVersion: @@ver@@ Timestamp: @@timestamp@@\n*/\n.select2-container {\n margin: 0;\n position: relative;\n display: inline-block;\n /* inline-block for ie7 */\n zoom: 1;\n *display: inline;\n vertical-align: middle;\n}\n\n.select2-container,\n.select2-drop,\n.select2-search,\n.select2-search input {\n /*\n Force border-box so that % widths fit the parent\n container without overlap because of margin/padding.\n More Info : http://www.quirksmode.org/css/box.html\n */\n -webkit-box-sizing: border-box; /* webkit */\n -moz-box-sizing: border-box; /* firefox */\n box-sizing: border-box; /* css3 */\n}\n\n.select2-container .select2-choice {\n display: block;\n height: 26px;\n padding: 0 0 0 8px;\n overflow: hidden;\n position: relative;\n\n border: 1px solid #aaa;\n white-space: nowrap;\n line-height: 26px;\n color: #444;\n text-decoration: none;\n\n border-radius: 4px;\n\n background-clip: padding-box;\n\n -webkit-touch-callout: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n\n background-color: #fff;\n background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #eee), color-stop(0.5, #fff));\n background-image: -webkit-linear-gradient(center bottom, #eee 0%, #fff 50%);\n background-image: -moz-linear-gradient(center bottom, #eee 0%, #fff 50%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#ffffff', endColorstr = '#eeeeee', GradientType = 0);\n background-image: linear-gradient(to top, #eee 0%, #fff 50%);\n}\n\nhtml[dir="rtl"] .select2-container .select2-choice {\n padding: 0 8px 0 0;\n}\n\n.select2-container.select2-drop-above .select2-choice {\n border-bottom-color: #aaa;\n\n border-radius: 0 0 4px 4px;\n\n background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #eee), color-stop(0.9, #fff));\n background-image: -webkit-linear-gradient(center bottom, #eee 0%, #fff 90%);\n background-image: -moz-linear-gradient(center bottom, #eee 0%, #fff 90%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#eeeeee', GradientType=0);\n background-image: linear-gradient(to bottom, #eee 0%, #fff 90%);\n}\n\n.select2-container.select2-allowclear .select2-choice .select2-chosen {\n margin-right: 42px;\n}\n\n.select2-container .select2-choice > .select2-chosen {\n margin-right: 26px;\n display: block;\n overflow: hidden;\n\n white-space: nowrap;\n\n text-overflow: ellipsis;\n float: none;\n width: auto;\n}\n\nhtml[dir="rtl"] .select2-container .select2-choice > .select2-chosen {\n margin-left: 26px;\n margin-right: 0;\n}\n\n.select2-container .select2-choice abbr {\n display: none;\n width: 12px;\n height: 12px;\n position: absolute;\n right: 24px;\n top: 8px;\n\n font-size: 1px;\n text-decoration: none;\n\n border: 0;\n background: url(${p}) right top no-repeat;\n cursor: pointer;\n outline: 0;\n}\n\n.select2-container.select2-allowclear .select2-choice abbr {\n display: inline-block;\n}\n\n.select2-container .select2-choice abbr:hover {\n background-position: right -11px;\n cursor: pointer;\n}\n\n.select2-drop-mask {\n border: 0;\n margin: 0;\n padding: 0;\n position: fixed;\n left: 0;\n top: 0;\n min-height: 100%;\n min-width: 100%;\n height: auto;\n width: auto;\n opacity: 0;\n z-index: 9998;\n /* styles required for IE to work */\n background-color: #fff;\n filter: alpha(opacity=0);\n}\n\n.select2-drop {\n width: 100%;\n margin-top: -1px;\n position: absolute;\n z-index: 9999;\n top: 100%;\n\n background: #fff;\n color: #000;\n border: 1px solid #aaa;\n border-top: 0;\n\n border-radius: 0 0 4px 4px;\n\n -webkit-box-shadow: 0 4px 5px rgba(0, 0, 0, .15);\n box-shadow: 0 4px 5px rgba(0, 0, 0, .15);\n}\n\n.select2-drop.select2-drop-above {\n margin-top: 1px;\n border-top: 1px solid #aaa;\n border-bottom: 0;\n\n border-radius: 4px 4px 0 0;\n\n -webkit-box-shadow: 0 -4px 5px rgba(0, 0, 0, .15);\n box-shadow: 0 -4px 5px rgba(0, 0, 0, .15);\n}\n\n.select2-drop-active {\n border: 1px solid #5897fb;\n border-top: none;\n}\n\n.select2-drop.select2-drop-above.select2-drop-active {\n border-top: 1px solid #5897fb;\n}\n\n.select2-drop-auto-width {\n border-top: 1px solid #aaa;\n width: auto;\n}\n\n.select2-drop-auto-width .select2-search {\n padding-top: 4px;\n}\n\n.select2-container .select2-choice .select2-arrow {\n display: inline-block;\n width: 18px;\n height: 100%;\n position: absolute;\n right: 0;\n top: 0;\n\n border-left: 1px solid #aaa;\n border-radius: 0 4px 4px 0;\n\n background-clip: padding-box;\n\n background: #ccc;\n background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #ccc), color-stop(0.6, #eee));\n background-image: -webkit-linear-gradient(center bottom, #ccc 0%, #eee 60%);\n background-image: -moz-linear-gradient(center bottom, #ccc 0%, #eee 60%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#eeeeee', endColorstr = '#cccccc', GradientType = 0);\n background-image: linear-gradient(to top, #ccc 0%, #eee 60%);\n}\n\nhtml[dir="rtl"] .select2-container .select2-choice .select2-arrow {\n left: 0;\n right: auto;\n\n border-left: none;\n border-right: 1px solid #aaa;\n border-radius: 4px 0 0 4px;\n}\n\n.select2-container .select2-choice .select2-arrow b {\n display: block;\n width: 100%;\n height: 100%;\n background: url(${p}) no-repeat 0 1px;\n}\n\nhtml[dir="rtl"] .select2-container .select2-choice .select2-arrow b {\n background-position: 2px 1px;\n}\n\n.select2-search {\n display: inline-block;\n width: 100%;\n min-height: 26px;\n margin: 0;\n padding-left: 4px;\n padding-right: 4px;\n\n position: relative;\n z-index: 10000;\n\n white-space: nowrap;\n}\n\n.select2-search input {\n width: 100%;\n height: auto !important;\n min-height: 26px;\n padding: 4px 20px 4px 5px;\n margin: 0;\n\n outline: 0;\n font-family: sans-serif;\n font-size: 1em;\n\n border: 1px solid #aaa;\n border-radius: 0;\n\n -webkit-box-shadow: none;\n box-shadow: none;\n\n background: #fff url(${p}) no-repeat 100% -22px;\n background: url(${p}) no-repeat 100% -22px, -webkit-gradient(linear, left bottom, left top, color-stop(0.85, #fff), color-stop(0.99, #eee));\n background: url(${p}) no-repeat 100% -22px, -webkit-linear-gradient(center bottom, #fff 85%, #eee 99%);\n background: url(${p}) no-repeat 100% -22px, -moz-linear-gradient(center bottom, #fff 85%, #eee 99%);\n background: url(${p}) no-repeat 100% -22px, linear-gradient(to bottom, #fff 85%, #eee 99%) 0 0;\n}\n\nhtml[dir="rtl"] .select2-search input {\n padding: 4px 5px 4px 20px;\n\n background: #fff url(${p}) no-repeat -37px -22px;\n background: url(${p}) no-repeat -37px -22px, -webkit-gradient(linear, left bottom, left top, color-stop(0.85, #fff), color-stop(0.99, #eee));\n background: url(${p}) no-repeat -37px -22px, -webkit-linear-gradient(center bottom, #fff 85%, #eee 99%);\n background: url(${p}) no-repeat -37px -22px, -moz-linear-gradient(center bottom, #fff 85%, #eee 99%);\n background: url(${p}) no-repeat -37px -22px, linear-gradient(to bottom, #fff 85%, #eee 99%) 0 0;\n}\n\n.select2-drop.select2-drop-above .select2-search input {\n margin-top: 4px;\n}\n\n.select2-search input.select2-active {\n background: #fff url(${A}) no-repeat 100%;\n background: url(${A}) no-repeat 100%, -webkit-gradient(linear, left bottom, left top, color-stop(0.85, #fff), color-stop(0.99, #eee));\n background: url(${A}) no-repeat 100%, -webkit-linear-gradient(center bottom, #fff 85%, #eee 99%);\n background: url(${A}) no-repeat 100%, -moz-linear-gradient(center bottom, #fff 85%, #eee 99%);\n background: url(${A}) no-repeat 100%, linear-gradient(to bottom, #fff 85%, #eee 99%) 0 0;\n}\n\n.select2-container-active .select2-choice,\n.select2-container-active .select2-choices {\n border: 1px solid #5897fb;\n outline: none;\n\n -webkit-box-shadow: 0 0 5px rgba(0, 0, 0, .3);\n box-shadow: 0 0 5px rgba(0, 0, 0, .3);\n}\n\n.select2-dropdown-open .select2-choice {\n border-bottom-color: transparent;\n -webkit-box-shadow: 0 1px 0 #fff inset;\n box-shadow: 0 1px 0 #fff inset;\n\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n\n background-color: #eee;\n background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #fff), color-stop(0.5, #eee));\n background-image: -webkit-linear-gradient(center bottom, #fff 0%, #eee 50%);\n background-image: -moz-linear-gradient(center bottom, #fff 0%, #eee 50%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#ffffff', GradientType=0);\n background-image: linear-gradient(to top, #fff 0%, #eee 50%);\n}\n\n.select2-dropdown-open.select2-drop-above .select2-choice,\n.select2-dropdown-open.select2-drop-above .select2-choices {\n border: 1px solid #5897fb;\n border-top-color: transparent;\n\n background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #fff), color-stop(0.5, #eee));\n background-image: -webkit-linear-gradient(center top, #fff 0%, #eee 50%);\n background-image: -moz-linear-gradient(center top, #fff 0%, #eee 50%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#ffffff', GradientType=0);\n background-image: linear-gradient(to bottom, #fff 0%, #eee 50%);\n}\n\n.select2-dropdown-open .select2-choice .select2-arrow {\n background: transparent;\n border-left: none;\n filter: none;\n}\nhtml[dir="rtl"] .select2-dropdown-open .select2-choice .select2-arrow {\n border-right: none;\n}\n\n.select2-dropdown-open .select2-choice .select2-arrow b {\n background-position: -18px 1px;\n}\n\nhtml[dir="rtl"] .select2-dropdown-open .select2-choice .select2-arrow b {\n background-position: -16px 1px;\n}\n\n.select2-hidden-accessible {\n border: 0;\n clip: rect(0 0 0 0);\n height: 1px;\n margin: -1px;\n overflow: hidden;\n padding: 0;\n position: absolute;\n width: 1px;\n}\n\n/* results */\n.select2-results {\n max-height: 200px;\n padding: 0 0 0 4px;\n margin: 4px 4px 4px 0;\n position: relative;\n overflow-x: hidden;\n overflow-y: auto;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\n\nhtml[dir="rtl"] .select2-results {\n padding: 0 4px 0 0;\n margin: 4px 0 4px 4px;\n}\n\n.select2-results ul.select2-result-sub {\n margin: 0;\n padding-left: 0;\n}\n\n.select2-results li {\n list-style: none;\n display: list-item;\n background-image: none;\n}\n\n.select2-results li.select2-result-with-children > .select2-result-label {\n font-weight: bold;\n}\n\n.select2-results .select2-result-label {\n padding: 3px 7px 4px;\n margin: 0;\n cursor: pointer;\n\n min-height: 1em;\n\n -webkit-touch-callout: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n\n.select2-results-dept-1 .select2-result-label { padding-left: 20px }\n.select2-results-dept-2 .select2-result-label { padding-left: 40px }\n.select2-results-dept-3 .select2-result-label { padding-left: 60px }\n.select2-results-dept-4 .select2-result-label { padding-left: 80px }\n.select2-results-dept-5 .select2-result-label { padding-left: 100px }\n.select2-results-dept-6 .select2-result-label { padding-left: 110px }\n.select2-results-dept-7 .select2-result-label { padding-left: 120px }\n\n.select2-results .select2-highlighted {\n background: #3875d7;\n color: #fff;\n}\n\n.select2-results li em {\n background: #feffde;\n font-style: normal;\n}\n\n.select2-results .select2-highlighted em {\n background: transparent;\n}\n\n.select2-results .select2-highlighted ul {\n background: #fff;\n color: #000;\n}\n\n.select2-results .select2-no-results,\n.select2-results .select2-searching,\n.select2-results .select2-ajax-error,\n.select2-results .select2-selection-limit {\n background: #f4f4f4;\n display: list-item;\n padding-left: 5px;\n}\n\n/*\ndisabled look for disabled choices in the results dropdown\n*/\n.select2-results .select2-disabled.select2-highlighted {\n color: #666;\n background: #f4f4f4;\n display: list-item;\n cursor: default;\n}\n.select2-results .select2-disabled {\n background: #f4f4f4;\n display: list-item;\n cursor: default;\n}\n\n.select2-results .select2-selected {\n display: none;\n}\n\n.select2-more-results.select2-active {\n background: #f4f4f4 url(${A}) no-repeat 100%;\n}\n\n.select2-results .select2-ajax-error {\n background: rgba(255, 50, 50, .2);\n}\n\n.select2-more-results {\n background: #f4f4f4;\n display: list-item;\n}\n\n/* disabled styles */\n\n.select2-container.select2-container-disabled .select2-choice {\n background-color: #f4f4f4;\n background-image: none;\n border: 1px solid #ddd;\n cursor: default;\n}\n\n.select2-container.select2-container-disabled .select2-choice .select2-arrow {\n background-color: #f4f4f4;\n background-image: none;\n border-left: 0;\n}\n\n.select2-container.select2-container-disabled .select2-choice abbr {\n display: none;\n}\n\n\n/* multiselect */\n\n.select2-container-multi .select2-choices {\n height: auto !important;\n height: 1%;\n margin: 0;\n padding: 0 5px 0 0;\n position: relative;\n\n border: 1px solid #aaa;\n cursor: text;\n overflow: hidden;\n\n background-color: #fff;\n background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(1%, #eee), color-stop(15%, #fff));\n background-image: -webkit-linear-gradient(top, #eee 1%, #fff 15%);\n background-image: -moz-linear-gradient(top, #eee 1%, #fff 15%);\n background-image: linear-gradient(to bottom, #eee 1%, #fff 15%);\n}\n\nhtml[dir="rtl"] .select2-container-multi .select2-choices {\n padding: 0 0 0 5px;\n}\n\n.select2-locked {\n padding: 3px 5px 3px 5px !important;\n}\n\n.select2-container-multi .select2-choices {\n min-height: 26px;\n}\n\n.select2-container-multi.select2-container-active .select2-choices {\n border: 1px solid #5897fb;\n outline: none;\n\n -webkit-box-shadow: 0 0 5px rgba(0, 0, 0, .3);\n box-shadow: 0 0 5px rgba(0, 0, 0, .3);\n}\n.select2-container-multi .select2-choices li {\n float: left;\n list-style: none;\n}\nhtml[dir="rtl"] .select2-container-multi .select2-choices li\n{\n float: right;\n}\n.select2-container-multi .select2-choices .select2-search-field {\n margin: 0;\n padding: 0;\n white-space: nowrap;\n}\n\n.select2-container-multi .select2-choices .select2-search-field input {\n padding: 5px;\n margin: 1px 0;\n\n font-family: sans-serif;\n font-size: 100%;\n color: #666;\n outline: 0;\n border: 0;\n -webkit-box-shadow: none;\n box-shadow: none;\n background: transparent !important;\n}\n\n.select2-container-multi .select2-choices .select2-search-field input.select2-active {\n background: #fff url(${A}) no-repeat 100% !important;\n}\n\n.select2-default {\n color: #999 !important;\n}\n\n.select2-container-multi .select2-choices .select2-search-choice {\n padding: 3px 5px 3px 18px;\n margin: 3px 0 3px 5px;\n position: relative;\n\n line-height: 13px;\n color: #333;\n cursor: default;\n border: 1px solid #aaaaaa;\n\n border-radius: 3px;\n\n -webkit-box-shadow: 0 0 2px #fff inset, 0 1px 0 rgba(0, 0, 0, 0.05);\n box-shadow: 0 0 2px #fff inset, 0 1px 0 rgba(0, 0, 0, 0.05);\n\n background-clip: padding-box;\n\n -webkit-touch-callout: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n\n background-color: #e4e4e4;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#f4f4f4', GradientType=0);\n background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(20%, #f4f4f4), color-stop(50%, #f0f0f0), color-stop(52%, #e8e8e8), color-stop(100%, #eee));\n background-image: -webkit-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eee 100%);\n background-image: -moz-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eee 100%);\n background-image: linear-gradient(to bottom, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eee 100%);\n}\nhtml[dir="rtl"] .select2-container-multi .select2-choices .select2-search-choice\n{\n margin: 3px 5px 3px 0;\n padding: 3px 18px 3px 5px;\n}\n.select2-container-multi .select2-choices .select2-search-choice .select2-chosen {\n cursor: default;\n}\n.select2-container-multi .select2-choices .select2-search-choice-focus {\n background: #d4d4d4;\n}\n\n.select2-search-choice-close {\n display: block;\n width: 12px;\n height: 13px;\n position: absolute;\n right: 3px;\n top: 4px;\n\n font-size: 1px;\n outline: none;\n background: url(${p}) right top no-repeat;\n}\nhtml[dir="rtl"] .select2-search-choice-close {\n right: auto;\n left: 3px;\n}\n\n.select2-container-multi .select2-search-choice-close {\n left: 3px;\n}\n\nhtml[dir="rtl"] .select2-container-multi .select2-search-choice-close {\n left: auto;\n right: 2px;\n}\n\n.select2-container-multi .select2-choices .select2-search-choice .select2-search-choice-close:hover {\n background-position: right -11px;\n}\n.select2-container-multi .select2-choices .select2-search-choice-focus .select2-search-choice-close {\n background-position: right -11px;\n}\n\n/* disabled styles */\n.select2-container-multi.select2-container-disabled .select2-choices {\n background-color: #f4f4f4;\n background-image: none;\n border: 1px solid #ddd;\n cursor: default;\n}\n\n.select2-container-multi.select2-container-disabled .select2-choices .select2-search-choice {\n padding: 3px 5px 3px 5px;\n border: 1px solid #ddd;\n background-image: none;\n background-color: #f4f4f4;\n}\n\n.select2-container-multi.select2-container-disabled .select2-choices .select2-search-choice .select2-search-choice-close { display: none;\n background: none;\n}\n/* end multiselect */\n\n\n.select2-result-selectable .select2-match,\n.select2-result-unselectable .select2-match {\n text-decoration: underline;\n}\n\n.select2-offscreen, .select2-offscreen:focus {\n clip: rect(0 0 0 0) !important;\n width: 1px !important;\n height: 1px !important;\n border: 0 !important;\n margin: 0 !important;\n padding: 0 !important;\n overflow: hidden !important;\n position: absolute !important;\n outline: 0 !important;\n left: 0px !important;\n top: 0px !important;\n}\n\n.select2-display-none {\n display: none;\n}\n\n.select2-measure-scrollbar {\n position: absolute;\n top: -10000px;\n left: -10000px;\n width: 100px;\n height: 100px;\n overflow: scroll;\n}\n\n/* Retina-ize icons */\n\n@media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (min-resolution: 2dppx) {\n .select2-search input,\n .select2-search-choice-close,\n .select2-container .select2-choice abbr,\n .select2-container .select2-choice .select2-arrow b {\n background-image: url(${f}) !important;\n background-repeat: no-repeat !important;\n background-size: 60px 40px !important;\n }\n\n .select2-search input {\n background-position: 100% -21px !important;\n }\n}\n`,"",{version:3,sources:["webpack://./node_modules/select2/select2.css"],names:[],mappings:"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",sourcesContent:["/*\nVersion: @@ver@@ Timestamp: @@timestamp@@\n*/\n.select2-container {\n margin: 0;\n position: relative;\n display: inline-block;\n /* inline-block for ie7 */\n zoom: 1;\n *display: inline;\n vertical-align: middle;\n}\n\n.select2-container,\n.select2-drop,\n.select2-search,\n.select2-search input {\n /*\n Force border-box so that % widths fit the parent\n container without overlap because of margin/padding.\n More Info : http://www.quirksmode.org/css/box.html\n */\n -webkit-box-sizing: border-box; /* webkit */\n -moz-box-sizing: border-box; /* firefox */\n box-sizing: border-box; /* css3 */\n}\n\n.select2-container .select2-choice {\n display: block;\n height: 26px;\n padding: 0 0 0 8px;\n overflow: hidden;\n position: relative;\n\n border: 1px solid #aaa;\n white-space: nowrap;\n line-height: 26px;\n color: #444;\n text-decoration: none;\n\n border-radius: 4px;\n\n background-clip: padding-box;\n\n -webkit-touch-callout: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n\n background-color: #fff;\n background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #eee), color-stop(0.5, #fff));\n background-image: -webkit-linear-gradient(center bottom, #eee 0%, #fff 50%);\n background-image: -moz-linear-gradient(center bottom, #eee 0%, #fff 50%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#ffffff', endColorstr = '#eeeeee', GradientType = 0);\n background-image: linear-gradient(to top, #eee 0%, #fff 50%);\n}\n\nhtml[dir=\"rtl\"] .select2-container .select2-choice {\n padding: 0 8px 0 0;\n}\n\n.select2-container.select2-drop-above .select2-choice {\n border-bottom-color: #aaa;\n\n border-radius: 0 0 4px 4px;\n\n background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #eee), color-stop(0.9, #fff));\n background-image: -webkit-linear-gradient(center bottom, #eee 0%, #fff 90%);\n background-image: -moz-linear-gradient(center bottom, #eee 0%, #fff 90%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#eeeeee', GradientType=0);\n background-image: linear-gradient(to bottom, #eee 0%, #fff 90%);\n}\n\n.select2-container.select2-allowclear .select2-choice .select2-chosen {\n margin-right: 42px;\n}\n\n.select2-container .select2-choice > .select2-chosen {\n margin-right: 26px;\n display: block;\n overflow: hidden;\n\n white-space: nowrap;\n\n text-overflow: ellipsis;\n float: none;\n width: auto;\n}\n\nhtml[dir=\"rtl\"] .select2-container .select2-choice > .select2-chosen {\n margin-left: 26px;\n margin-right: 0;\n}\n\n.select2-container .select2-choice abbr {\n display: none;\n width: 12px;\n height: 12px;\n position: absolute;\n right: 24px;\n top: 8px;\n\n font-size: 1px;\n text-decoration: none;\n\n border: 0;\n background: url('select2.png') right top no-repeat;\n cursor: pointer;\n outline: 0;\n}\n\n.select2-container.select2-allowclear .select2-choice abbr {\n display: inline-block;\n}\n\n.select2-container .select2-choice abbr:hover {\n background-position: right -11px;\n cursor: pointer;\n}\n\n.select2-drop-mask {\n border: 0;\n margin: 0;\n padding: 0;\n position: fixed;\n left: 0;\n top: 0;\n min-height: 100%;\n min-width: 100%;\n height: auto;\n width: auto;\n opacity: 0;\n z-index: 9998;\n /* styles required for IE to work */\n background-color: #fff;\n filter: alpha(opacity=0);\n}\n\n.select2-drop {\n width: 100%;\n margin-top: -1px;\n position: absolute;\n z-index: 9999;\n top: 100%;\n\n background: #fff;\n color: #000;\n border: 1px solid #aaa;\n border-top: 0;\n\n border-radius: 0 0 4px 4px;\n\n -webkit-box-shadow: 0 4px 5px rgba(0, 0, 0, .15);\n box-shadow: 0 4px 5px rgba(0, 0, 0, .15);\n}\n\n.select2-drop.select2-drop-above {\n margin-top: 1px;\n border-top: 1px solid #aaa;\n border-bottom: 0;\n\n border-radius: 4px 4px 0 0;\n\n -webkit-box-shadow: 0 -4px 5px rgba(0, 0, 0, .15);\n box-shadow: 0 -4px 5px rgba(0, 0, 0, .15);\n}\n\n.select2-drop-active {\n border: 1px solid #5897fb;\n border-top: none;\n}\n\n.select2-drop.select2-drop-above.select2-drop-active {\n border-top: 1px solid #5897fb;\n}\n\n.select2-drop-auto-width {\n border-top: 1px solid #aaa;\n width: auto;\n}\n\n.select2-drop-auto-width .select2-search {\n padding-top: 4px;\n}\n\n.select2-container .select2-choice .select2-arrow {\n display: inline-block;\n width: 18px;\n height: 100%;\n position: absolute;\n right: 0;\n top: 0;\n\n border-left: 1px solid #aaa;\n border-radius: 0 4px 4px 0;\n\n background-clip: padding-box;\n\n background: #ccc;\n background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #ccc), color-stop(0.6, #eee));\n background-image: -webkit-linear-gradient(center bottom, #ccc 0%, #eee 60%);\n background-image: -moz-linear-gradient(center bottom, #ccc 0%, #eee 60%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#eeeeee', endColorstr = '#cccccc', GradientType = 0);\n background-image: linear-gradient(to top, #ccc 0%, #eee 60%);\n}\n\nhtml[dir=\"rtl\"] .select2-container .select2-choice .select2-arrow {\n left: 0;\n right: auto;\n\n border-left: none;\n border-right: 1px solid #aaa;\n border-radius: 4px 0 0 4px;\n}\n\n.select2-container .select2-choice .select2-arrow b {\n display: block;\n width: 100%;\n height: 100%;\n background: url('select2.png') no-repeat 0 1px;\n}\n\nhtml[dir=\"rtl\"] .select2-container .select2-choice .select2-arrow b {\n background-position: 2px 1px;\n}\n\n.select2-search {\n display: inline-block;\n width: 100%;\n min-height: 26px;\n margin: 0;\n padding-left: 4px;\n padding-right: 4px;\n\n position: relative;\n z-index: 10000;\n\n white-space: nowrap;\n}\n\n.select2-search input {\n width: 100%;\n height: auto !important;\n min-height: 26px;\n padding: 4px 20px 4px 5px;\n margin: 0;\n\n outline: 0;\n font-family: sans-serif;\n font-size: 1em;\n\n border: 1px solid #aaa;\n border-radius: 0;\n\n -webkit-box-shadow: none;\n box-shadow: none;\n\n background: #fff url('select2.png') no-repeat 100% -22px;\n background: url('select2.png') no-repeat 100% -22px, -webkit-gradient(linear, left bottom, left top, color-stop(0.85, #fff), color-stop(0.99, #eee));\n background: url('select2.png') no-repeat 100% -22px, -webkit-linear-gradient(center bottom, #fff 85%, #eee 99%);\n background: url('select2.png') no-repeat 100% -22px, -moz-linear-gradient(center bottom, #fff 85%, #eee 99%);\n background: url('select2.png') no-repeat 100% -22px, linear-gradient(to bottom, #fff 85%, #eee 99%) 0 0;\n}\n\nhtml[dir=\"rtl\"] .select2-search input {\n padding: 4px 5px 4px 20px;\n\n background: #fff url('select2.png') no-repeat -37px -22px;\n background: url('select2.png') no-repeat -37px -22px, -webkit-gradient(linear, left bottom, left top, color-stop(0.85, #fff), color-stop(0.99, #eee));\n background: url('select2.png') no-repeat -37px -22px, -webkit-linear-gradient(center bottom, #fff 85%, #eee 99%);\n background: url('select2.png') no-repeat -37px -22px, -moz-linear-gradient(center bottom, #fff 85%, #eee 99%);\n background: url('select2.png') no-repeat -37px -22px, linear-gradient(to bottom, #fff 85%, #eee 99%) 0 0;\n}\n\n.select2-drop.select2-drop-above .select2-search input {\n margin-top: 4px;\n}\n\n.select2-search input.select2-active {\n background: #fff url('select2-spinner.gif') no-repeat 100%;\n background: url('select2-spinner.gif') no-repeat 100%, -webkit-gradient(linear, left bottom, left top, color-stop(0.85, #fff), color-stop(0.99, #eee));\n background: url('select2-spinner.gif') no-repeat 100%, -webkit-linear-gradient(center bottom, #fff 85%, #eee 99%);\n background: url('select2-spinner.gif') no-repeat 100%, -moz-linear-gradient(center bottom, #fff 85%, #eee 99%);\n background: url('select2-spinner.gif') no-repeat 100%, linear-gradient(to bottom, #fff 85%, #eee 99%) 0 0;\n}\n\n.select2-container-active .select2-choice,\n.select2-container-active .select2-choices {\n border: 1px solid #5897fb;\n outline: none;\n\n -webkit-box-shadow: 0 0 5px rgba(0, 0, 0, .3);\n box-shadow: 0 0 5px rgba(0, 0, 0, .3);\n}\n\n.select2-dropdown-open .select2-choice {\n border-bottom-color: transparent;\n -webkit-box-shadow: 0 1px 0 #fff inset;\n box-shadow: 0 1px 0 #fff inset;\n\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n\n background-color: #eee;\n background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #fff), color-stop(0.5, #eee));\n background-image: -webkit-linear-gradient(center bottom, #fff 0%, #eee 50%);\n background-image: -moz-linear-gradient(center bottom, #fff 0%, #eee 50%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#ffffff', GradientType=0);\n background-image: linear-gradient(to top, #fff 0%, #eee 50%);\n}\n\n.select2-dropdown-open.select2-drop-above .select2-choice,\n.select2-dropdown-open.select2-drop-above .select2-choices {\n border: 1px solid #5897fb;\n border-top-color: transparent;\n\n background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #fff), color-stop(0.5, #eee));\n background-image: -webkit-linear-gradient(center top, #fff 0%, #eee 50%);\n background-image: -moz-linear-gradient(center top, #fff 0%, #eee 50%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#ffffff', GradientType=0);\n background-image: linear-gradient(to bottom, #fff 0%, #eee 50%);\n}\n\n.select2-dropdown-open .select2-choice .select2-arrow {\n background: transparent;\n border-left: none;\n filter: none;\n}\nhtml[dir=\"rtl\"] .select2-dropdown-open .select2-choice .select2-arrow {\n border-right: none;\n}\n\n.select2-dropdown-open .select2-choice .select2-arrow b {\n background-position: -18px 1px;\n}\n\nhtml[dir=\"rtl\"] .select2-dropdown-open .select2-choice .select2-arrow b {\n background-position: -16px 1px;\n}\n\n.select2-hidden-accessible {\n border: 0;\n clip: rect(0 0 0 0);\n height: 1px;\n margin: -1px;\n overflow: hidden;\n padding: 0;\n position: absolute;\n width: 1px;\n}\n\n/* results */\n.select2-results {\n max-height: 200px;\n padding: 0 0 0 4px;\n margin: 4px 4px 4px 0;\n position: relative;\n overflow-x: hidden;\n overflow-y: auto;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\n\nhtml[dir=\"rtl\"] .select2-results {\n padding: 0 4px 0 0;\n margin: 4px 0 4px 4px;\n}\n\n.select2-results ul.select2-result-sub {\n margin: 0;\n padding-left: 0;\n}\n\n.select2-results li {\n list-style: none;\n display: list-item;\n background-image: none;\n}\n\n.select2-results li.select2-result-with-children > .select2-result-label {\n font-weight: bold;\n}\n\n.select2-results .select2-result-label {\n padding: 3px 7px 4px;\n margin: 0;\n cursor: pointer;\n\n min-height: 1em;\n\n -webkit-touch-callout: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n\n.select2-results-dept-1 .select2-result-label { padding-left: 20px }\n.select2-results-dept-2 .select2-result-label { padding-left: 40px }\n.select2-results-dept-3 .select2-result-label { padding-left: 60px }\n.select2-results-dept-4 .select2-result-label { padding-left: 80px }\n.select2-results-dept-5 .select2-result-label { padding-left: 100px }\n.select2-results-dept-6 .select2-result-label { padding-left: 110px }\n.select2-results-dept-7 .select2-result-label { padding-left: 120px }\n\n.select2-results .select2-highlighted {\n background: #3875d7;\n color: #fff;\n}\n\n.select2-results li em {\n background: #feffde;\n font-style: normal;\n}\n\n.select2-results .select2-highlighted em {\n background: transparent;\n}\n\n.select2-results .select2-highlighted ul {\n background: #fff;\n color: #000;\n}\n\n.select2-results .select2-no-results,\n.select2-results .select2-searching,\n.select2-results .select2-ajax-error,\n.select2-results .select2-selection-limit {\n background: #f4f4f4;\n display: list-item;\n padding-left: 5px;\n}\n\n/*\ndisabled look for disabled choices in the results dropdown\n*/\n.select2-results .select2-disabled.select2-highlighted {\n color: #666;\n background: #f4f4f4;\n display: list-item;\n cursor: default;\n}\n.select2-results .select2-disabled {\n background: #f4f4f4;\n display: list-item;\n cursor: default;\n}\n\n.select2-results .select2-selected {\n display: none;\n}\n\n.select2-more-results.select2-active {\n background: #f4f4f4 url('select2-spinner.gif') no-repeat 100%;\n}\n\n.select2-results .select2-ajax-error {\n background: rgba(255, 50, 50, .2);\n}\n\n.select2-more-results {\n background: #f4f4f4;\n display: list-item;\n}\n\n/* disabled styles */\n\n.select2-container.select2-container-disabled .select2-choice {\n background-color: #f4f4f4;\n background-image: none;\n border: 1px solid #ddd;\n cursor: default;\n}\n\n.select2-container.select2-container-disabled .select2-choice .select2-arrow {\n background-color: #f4f4f4;\n background-image: none;\n border-left: 0;\n}\n\n.select2-container.select2-container-disabled .select2-choice abbr {\n display: none;\n}\n\n\n/* multiselect */\n\n.select2-container-multi .select2-choices {\n height: auto !important;\n height: 1%;\n margin: 0;\n padding: 0 5px 0 0;\n position: relative;\n\n border: 1px solid #aaa;\n cursor: text;\n overflow: hidden;\n\n background-color: #fff;\n background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(1%, #eee), color-stop(15%, #fff));\n background-image: -webkit-linear-gradient(top, #eee 1%, #fff 15%);\n background-image: -moz-linear-gradient(top, #eee 1%, #fff 15%);\n background-image: linear-gradient(to bottom, #eee 1%, #fff 15%);\n}\n\nhtml[dir=\"rtl\"] .select2-container-multi .select2-choices {\n padding: 0 0 0 5px;\n}\n\n.select2-locked {\n padding: 3px 5px 3px 5px !important;\n}\n\n.select2-container-multi .select2-choices {\n min-height: 26px;\n}\n\n.select2-container-multi.select2-container-active .select2-choices {\n border: 1px solid #5897fb;\n outline: none;\n\n -webkit-box-shadow: 0 0 5px rgba(0, 0, 0, .3);\n box-shadow: 0 0 5px rgba(0, 0, 0, .3);\n}\n.select2-container-multi .select2-choices li {\n float: left;\n list-style: none;\n}\nhtml[dir=\"rtl\"] .select2-container-multi .select2-choices li\n{\n float: right;\n}\n.select2-container-multi .select2-choices .select2-search-field {\n margin: 0;\n padding: 0;\n white-space: nowrap;\n}\n\n.select2-container-multi .select2-choices .select2-search-field input {\n padding: 5px;\n margin: 1px 0;\n\n font-family: sans-serif;\n font-size: 100%;\n color: #666;\n outline: 0;\n border: 0;\n -webkit-box-shadow: none;\n box-shadow: none;\n background: transparent !important;\n}\n\n.select2-container-multi .select2-choices .select2-search-field input.select2-active {\n background: #fff url('select2-spinner.gif') no-repeat 100% !important;\n}\n\n.select2-default {\n color: #999 !important;\n}\n\n.select2-container-multi .select2-choices .select2-search-choice {\n padding: 3px 5px 3px 18px;\n margin: 3px 0 3px 5px;\n position: relative;\n\n line-height: 13px;\n color: #333;\n cursor: default;\n border: 1px solid #aaaaaa;\n\n border-radius: 3px;\n\n -webkit-box-shadow: 0 0 2px #fff inset, 0 1px 0 rgba(0, 0, 0, 0.05);\n box-shadow: 0 0 2px #fff inset, 0 1px 0 rgba(0, 0, 0, 0.05);\n\n background-clip: padding-box;\n\n -webkit-touch-callout: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n\n background-color: #e4e4e4;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#f4f4f4', GradientType=0);\n background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(20%, #f4f4f4), color-stop(50%, #f0f0f0), color-stop(52%, #e8e8e8), color-stop(100%, #eee));\n background-image: -webkit-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eee 100%);\n background-image: -moz-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eee 100%);\n background-image: linear-gradient(to bottom, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eee 100%);\n}\nhtml[dir=\"rtl\"] .select2-container-multi .select2-choices .select2-search-choice\n{\n margin: 3px 5px 3px 0;\n padding: 3px 18px 3px 5px;\n}\n.select2-container-multi .select2-choices .select2-search-choice .select2-chosen {\n cursor: default;\n}\n.select2-container-multi .select2-choices .select2-search-choice-focus {\n background: #d4d4d4;\n}\n\n.select2-search-choice-close {\n display: block;\n width: 12px;\n height: 13px;\n position: absolute;\n right: 3px;\n top: 4px;\n\n font-size: 1px;\n outline: none;\n background: url('select2.png') right top no-repeat;\n}\nhtml[dir=\"rtl\"] .select2-search-choice-close {\n right: auto;\n left: 3px;\n}\n\n.select2-container-multi .select2-search-choice-close {\n left: 3px;\n}\n\nhtml[dir=\"rtl\"] .select2-container-multi .select2-search-choice-close {\n left: auto;\n right: 2px;\n}\n\n.select2-container-multi .select2-choices .select2-search-choice .select2-search-choice-close:hover {\n background-position: right -11px;\n}\n.select2-container-multi .select2-choices .select2-search-choice-focus .select2-search-choice-close {\n background-position: right -11px;\n}\n\n/* disabled styles */\n.select2-container-multi.select2-container-disabled .select2-choices {\n background-color: #f4f4f4;\n background-image: none;\n border: 1px solid #ddd;\n cursor: default;\n}\n\n.select2-container-multi.select2-container-disabled .select2-choices .select2-search-choice {\n padding: 3px 5px 3px 5px;\n border: 1px solid #ddd;\n background-image: none;\n background-color: #f4f4f4;\n}\n\n.select2-container-multi.select2-container-disabled .select2-choices .select2-search-choice .select2-search-choice-close { display: none;\n background: none;\n}\n/* end multiselect */\n\n\n.select2-result-selectable .select2-match,\n.select2-result-unselectable .select2-match {\n text-decoration: underline;\n}\n\n.select2-offscreen, .select2-offscreen:focus {\n clip: rect(0 0 0 0) !important;\n width: 1px !important;\n height: 1px !important;\n border: 0 !important;\n margin: 0 !important;\n padding: 0 !important;\n overflow: hidden !important;\n position: absolute !important;\n outline: 0 !important;\n left: 0px !important;\n top: 0px !important;\n}\n\n.select2-display-none {\n display: none;\n}\n\n.select2-measure-scrollbar {\n position: absolute;\n top: -10000px;\n left: -10000px;\n width: 100px;\n height: 100px;\n overflow: scroll;\n}\n\n/* Retina-ize icons */\n\n@media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (min-resolution: 2dppx) {\n .select2-search input,\n .select2-search-choice-close,\n .select2-container .select2-choice abbr,\n .select2-container .select2-choice .select2-arrow b {\n background-image: url('select2x2.png') !important;\n background-repeat: no-repeat !important;\n background-size: 60px 40px !important;\n }\n\n .select2-search input {\n background-position: 100% -21px !important;\n }\n}\n"],sourceRoot:""}]);const g=d},86140:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var i=n(71354),o=n.n(i),r=n(76314),s=n.n(r)()(o());s.push([t.id,'/**\n * Strengthify - show the weakness of a password (uses zxcvbn for this)\n * https://github.com/MorrisJobke/strengthify\n * Version: 0.5.9\n * License: The MIT License (MIT)\n * Copyright (c) 2013-2020 Morris Jobke \n */\n\n.strengthify-wrapper {\n position: relative;\n}\n\n.strengthify-wrapper > * {\n\t-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";\n\tfilter: alpha(opacity=0);\n\topacity: 0;\n\t-webkit-transition:all .5s ease-in-out;\n\t-moz-transition:all .5s ease-in-out;\n\ttransition:all .5s ease-in-out;\n}\n\n.strengthify-bg, .strengthify-container, .strengthify-separator {\n\theight: 3px;\n}\n\n.strengthify-bg, .strengthify-container {\n\tdisplay: block;\n\tposition: absolute;\n\twidth: 100%;\n}\n\n.strengthify-bg {\n\tbackground-color: #BBB;\n}\n\n.strengthify-separator {\n\tdisplay: inline-block;\n\tposition: absolute;\n\tbackground-color: #FFF;\n\twidth: 1px;\n\tz-index: 10;\n}\n\n.password-bad {\n\tbackground-color: #C33;\n}\n.password-medium {\n\tbackground-color: #F80;\n}\n.password-good {\n\tbackground-color: #3C3;\n}\n\ndiv[data-strengthifyMessage] {\n padding: 3px 8px;\n}\n\n.strengthify-tiles{\n\tfloat: right;\n}\n',"",{version:3,sources:["webpack://./node_modules/strengthify/strengthify.css"],names:[],mappings:"AAAA;;;;;;EAME;;AAEF;IACI,kBAAkB;AACtB;;AAEA;CACC,+DAA+D;CAC/D,wBAAwB;CACxB,UAAU;CACV,sCAAsC;CACtC,mCAAmC;CACnC,8BAA8B;AAC/B;;AAEA;CACC,WAAW;AACZ;;AAEA;CACC,cAAc;CACd,kBAAkB;CAClB,WAAW;AACZ;;AAEA;CACC,sBAAsB;AACvB;;AAEA;CACC,qBAAqB;CACrB,kBAAkB;CAClB,sBAAsB;CACtB,UAAU;CACV,WAAW;AACZ;;AAEA;CACC,sBAAsB;AACvB;AACA;CACC,sBAAsB;AACvB;AACA;CACC,sBAAsB;AACvB;;AAEA;IACI,gBAAgB;AACpB;;AAEA;CACC,YAAY;AACb",sourcesContent:['/**\n * Strengthify - show the weakness of a password (uses zxcvbn for this)\n * https://github.com/MorrisJobke/strengthify\n * Version: 0.5.9\n * License: The MIT License (MIT)\n * Copyright (c) 2013-2020 Morris Jobke \n */\n\n.strengthify-wrapper {\n position: relative;\n}\n\n.strengthify-wrapper > * {\n\t-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";\n\tfilter: alpha(opacity=0);\n\topacity: 0;\n\t-webkit-transition:all .5s ease-in-out;\n\t-moz-transition:all .5s ease-in-out;\n\ttransition:all .5s ease-in-out;\n}\n\n.strengthify-bg, .strengthify-container, .strengthify-separator {\n\theight: 3px;\n}\n\n.strengthify-bg, .strengthify-container {\n\tdisplay: block;\n\tposition: absolute;\n\twidth: 100%;\n}\n\n.strengthify-bg {\n\tbackground-color: #BBB;\n}\n\n.strengthify-separator {\n\tdisplay: inline-block;\n\tposition: absolute;\n\tbackground-color: #FFF;\n\twidth: 1px;\n\tz-index: 10;\n}\n\n.password-bad {\n\tbackground-color: #C33;\n}\n.password-medium {\n\tbackground-color: #F80;\n}\n.password-good {\n\tbackground-color: #3C3;\n}\n\ndiv[data-strengthifyMessage] {\n padding: 3px 8px;\n}\n\n.strengthify-tiles{\n\tfloat: right;\n}\n'],sourceRoot:""}]);const a=s},49481:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var i=n(71354),o=n.n(i),r=n(76314),s=n.n(r)()(o());s.push([t.id,".account-menu-entry__icon[data-v-2e0a74a6]{height:16px;width:16px;margin:calc((var(--default-clickable-area) - 16px)/2);filter:var(--background-invert-if-dark)}.account-menu-entry__icon--active[data-v-2e0a74a6]{filter:var(--primary-invert-if-dark)}.account-menu-entry[data-v-2e0a74a6] .list-item-content__main{width:fit-content}","",{version:3,sources:["webpack://./core/src/components/AccountMenu/AccountMenuEntry.vue"],names:[],mappings:"AAEC,2CACC,WAAA,CACA,UAAA,CACA,qDAAA,CACA,uCAAA,CAEA,mDACC,oCAAA,CAIF,8DACC,iBAAA",sourcesContent:["\n.account-menu-entry {\n\t&__icon {\n\t\theight: 16px;\n\t\twidth: 16px;\n\t\tmargin: calc((var(--default-clickable-area) - 16px) / 2); // 16px icon size\n\t\tfilter: var(--background-invert-if-dark);\n\n\t\t&--active {\n\t\t\tfilter: var(--primary-invert-if-dark);\n\t\t}\n\t}\n\n\t:deep(.list-item-content__main) {\n\t\twidth: fit-content;\n\t}\n}\n"],sourceRoot:""}]);const a=s},26652:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var i=n(71354),o=n.n(i),r=n(76314),s=n.n(r)()(o());s.push([t.id,".app-menu[data-v-7661a89b]{--app-menu-entry-growth: calc(var(--default-grid-baseline) * 4);display:flex;flex:1 1;width:0}.app-menu__list[data-v-7661a89b]{display:flex;flex-wrap:nowrap;margin-inline:calc(var(--app-menu-entry-growth)/2)}.app-menu__overflow[data-v-7661a89b]{margin-block:auto}.app-menu__overflow[data-v-7661a89b] .button-vue--vue-tertiary{opacity:.7;margin:3px;filter:var(--background-image-invert-if-bright)}.app-menu__overflow[data-v-7661a89b] .button-vue--vue-tertiary:not([aria-expanded=true]){color:var(--color-background-plain-text)}.app-menu__overflow[data-v-7661a89b] .button-vue--vue-tertiary:not([aria-expanded=true]):hover{opacity:1;background-color:rgba(0,0,0,0) !important}.app-menu__overflow[data-v-7661a89b] .button-vue--vue-tertiary:focus-visible{opacity:1;outline:none !important}.app-menu__overflow-entry[data-v-7661a89b] .action-link__icon{filter:var(--background-invert-if-bright) !important}","",{version:3,sources:["webpack://./core/src/components/AppMenu.vue"],names:[],mappings:"AACA,2BAEC,+DAAA,CACA,YAAA,CACA,QAAA,CACA,OAAA,CAEA,iCACC,YAAA,CACA,gBAAA,CACA,kDAAA,CAGD,qCACC,iBAAA,CAGA,+DACC,UAAA,CACA,UAAA,CACA,+CAAA,CAGA,yFACC,wCAAA,CAEA,+FACC,SAAA,CACA,yCAAA,CAIF,6EACC,SAAA,CACA,uBAAA,CAMF,8DAEC,oDAAA",sourcesContent:['\n.app-menu {\n\t// The size the currently focussed entry will grow to show the full name\n\t--app-menu-entry-growth: calc(var(--default-grid-baseline) * 4);\n\tdisplay: flex;\n\tflex: 1 1;\n\twidth: 0;\n\n\t&__list {\n\t\tdisplay: flex;\n\t\tflex-wrap: nowrap;\n\t\tmargin-inline: calc(var(--app-menu-entry-growth) / 2);\n\t}\n\n\t&__overflow {\n\t\tmargin-block: auto;\n\n\t\t// Adjust the overflow NcActions styles as they are directly rendered on the background\n\t\t:deep(.button-vue--vue-tertiary) {\n\t\t\topacity: .7;\n\t\t\tmargin: 3px;\n\t\t\tfilter: var(--background-image-invert-if-bright);\n\n\t\t\t/* Remove all background and align text color if not expanded */\n\t\t\t&:not([aria-expanded="true"]) {\n\t\t\t\tcolor: var(--color-background-plain-text);\n\n\t\t\t\t&:hover {\n\t\t\t\t\topacity: 1;\n\t\t\t\t\tbackground-color: transparent !important;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t&:focus-visible {\n\t\t\t\topacity: 1;\n\t\t\t\toutline: none !important;\n\t\t\t}\n\t\t}\n\t}\n\n\t&__overflow-entry {\n\t\t:deep(.action-link__icon) {\n\t\t\t// Icons are bright so invert them if bright color theme == bright background is used\n\t\t\tfilter: var(--background-invert-if-bright) !important;\n\t\t}\n\t}\n}\n'],sourceRoot:""}]);const a=s},29518:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var i=n(71354),o=n.n(i),r=n(76314),s=n.n(r)()(o());s.push([t.id,'.app-menu-entry[data-v-1c485052]{--app-menu-entry-font-size: 12px;width:var(--header-height);height:var(--header-height);position:relative}.app-menu-entry__link[data-v-1c485052]{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--color-background-plain-text);width:calc(100% - 4px);height:calc(100% - 4px);margin:2px}.app-menu-entry__label[data-v-1c485052]{opacity:0;position:absolute;font-size:var(--app-menu-entry-font-size);color:var(--color-background-plain-text);text-align:center;bottom:0;inset-inline-start:50%;top:50%;display:block;transform:translateX(-50%);max-width:100%;text-overflow:ellipsis;overflow:hidden;letter-spacing:-0.5px}.app-menu-entry__icon[data-v-1c485052]{font-size:var(--app-menu-entry-font-size)}.app-menu-entry--active .app-menu-entry__label[data-v-1c485052]{font-weight:bolder}.app-menu-entry--active[data-v-1c485052]::before{content:" ";position:absolute;pointer-events:none;border-bottom-color:var(--color-main-background);transform:translateX(-50%);width:10px;height:5px;border-radius:3px;background-color:var(--color-background-plain-text);inset-inline-start:50%;bottom:8px;display:block;transition:all var(--animation-quick) ease-in-out;opacity:1}.app-menu-entry__icon[data-v-1c485052],.app-menu-entry__label[data-v-1c485052]{transition:all var(--animation-quick) ease-in-out}.app-menu-entry:hover .app-menu-entry__label[data-v-1c485052],.app-menu-entry:focus-within .app-menu-entry__label[data-v-1c485052]{font-weight:bold}.app-menu-entry--truncated:hover .app-menu-entry__label[data-v-1c485052],.app-menu-entry--truncated:focus-within .app-menu-entry__label[data-v-1c485052]{max-width:calc(var(--header-height) + var(--app-menu-entry-growth))}.app-menu-entry--truncated:hover+.app-menu-entry .app-menu-entry__label[data-v-1c485052],.app-menu-entry--truncated:focus-within+.app-menu-entry .app-menu-entry__label[data-v-1c485052]{font-weight:normal;max-width:calc(var(--header-height) - var(--app-menu-entry-growth))}.app-menu-entry:has(+.app-menu-entry--truncated:hover) .app-menu-entry__label[data-v-1c485052],.app-menu-entry:has(+.app-menu-entry--truncated:focus-within) .app-menu-entry__label[data-v-1c485052]{font-weight:normal;max-width:calc(var(--header-height) - var(--app-menu-entry-growth))}',"",{version:3,sources:["webpack://./core/src/components/AppMenuEntry.vue"],names:[],mappings:"AACA,iCACC,gCAAA,CACA,0BAAA,CACA,2BAAA,CACA,iBAAA,CAEA,uCACC,iBAAA,CACA,YAAA,CACA,qBAAA,CACA,kBAAA,CACA,sBAAA,CAEA,wCAAA,CAEA,sBAAA,CACA,uBAAA,CACA,UAAA,CAGD,wCACC,SAAA,CACA,iBAAA,CACA,yCAAA,CAEA,wCAAA,CACA,iBAAA,CACA,QAAA,CACA,sBAAA,CACA,OAAA,CACA,aAAA,CACA,0BAAA,CACA,cAAA,CACA,sBAAA,CACA,eAAA,CACA,qBAAA,CAGD,uCACC,yCAAA,CAKA,gEACC,kBAAA,CAID,iDACC,WAAA,CACA,iBAAA,CACA,mBAAA,CACA,gDAAA,CACA,0BAAA,CACA,UAAA,CACA,UAAA,CACA,iBAAA,CACA,mDAAA,CACA,sBAAA,CACA,UAAA,CACA,aAAA,CACA,iDAAA,CACA,SAAA,CAIF,+EAEC,iDAAA,CAID,mIAEC,gBAAA,CAOA,yJACC,mEAAA,CAKA,yLACC,kBAAA,CACA,mEAAA,CAQF,qMACC,kBAAA,CACA,mEAAA",sourcesContent:['\n.app-menu-entry {\n\t--app-menu-entry-font-size: 12px;\n\twidth: var(--header-height);\n\theight: var(--header-height);\n\tposition: relative;\n\n\t&__link {\n\t\tposition: relative;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t\t// Set color as this is shown directly on the background\n\t\tcolor: var(--color-background-plain-text);\n\t\t// Make space for focus-visible outline\n\t\twidth: calc(100% - 4px);\n\t\theight: calc(100% - 4px);\n\t\tmargin: 2px;\n\t}\n\n\t&__label {\n\t\topacity: 0;\n\t\tposition: absolute;\n\t\tfont-size: var(--app-menu-entry-font-size);\n\t\t// this is shown directly on the background\n\t\tcolor: var(--color-background-plain-text);\n\t\ttext-align: center;\n\t\tbottom: 0;\n\t\tinset-inline-start: 50%;\n\t\ttop: 50%;\n\t\tdisplay: block;\n\t\ttransform: translateX(-50%);\n\t\tmax-width: 100%;\n\t\ttext-overflow: ellipsis;\n\t\toverflow: hidden;\n\t\tletter-spacing: -0.5px;\n\t}\n\n\t&__icon {\n\t\tfont-size: var(--app-menu-entry-font-size);\n\t}\n\n\t&--active {\n\t\t// When hover or focus, show the label and make it bolder than the other entries\n\t\t.app-menu-entry__label {\n\t\t\tfont-weight: bolder;\n\t\t}\n\n\t\t// When active show a line below the entry as an "active" indicator\n\t\t&::before {\n\t\t\tcontent: " ";\n\t\t\tposition: absolute;\n\t\t\tpointer-events: none;\n\t\t\tborder-bottom-color: var(--color-main-background);\n\t\t\ttransform: translateX(-50%);\n\t\t\twidth: 10px;\n\t\t\theight: 5px;\n\t\t\tborder-radius: 3px;\n\t\t\tbackground-color: var(--color-background-plain-text);\n\t\t\tinset-inline-start: 50%;\n\t\t\tbottom: 8px;\n\t\t\tdisplay: block;\n\t\t\ttransition: all var(--animation-quick) ease-in-out;\n\t\t\topacity: 1;\n\t\t}\n\t}\n\n\t&__icon,\n\t&__label {\n\t\ttransition: all var(--animation-quick) ease-in-out;\n\t}\n\n\t// Make the hovered entry bold to see that it is hovered\n\t&:hover .app-menu-entry__label,\n\t&:focus-within .app-menu-entry__label {\n\t\tfont-weight: bold;\n\t}\n\n\t// Adjust the width when an entry is focussed\n\t// The focussed / hovered entry should grow, while both neighbors need to shrink\n\t&--truncated:hover,\n\t&--truncated:focus-within {\n\t\t.app-menu-entry__label {\n\t\t\tmax-width: calc(var(--header-height) + var(--app-menu-entry-growth));\n\t\t}\n\n\t\t// The next entry needs to shrink half the growth\n\t\t+ .app-menu-entry {\n\t\t\t.app-menu-entry__label {\n\t\t\t\tfont-weight: normal;\n\t\t\t\tmax-width: calc(var(--header-height) - var(--app-menu-entry-growth));\n\t\t\t}\n\t\t}\n\t}\n\n\t// The previous entry needs to shrink half the growth\n\t&:has(+ .app-menu-entry--truncated:hover),\n\t&:has(+ .app-menu-entry--truncated:focus-within) {\n\t\t.app-menu-entry__label {\n\t\t\tfont-weight: normal;\n\t\t\tmax-width: calc(var(--header-height) - var(--app-menu-entry-growth));\n\t\t}\n\t}\n}\n'],sourceRoot:""}]);const a=s},73402:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var i=n(71354),o=n.n(i),r=n(76314),s=n.n(r)()(o());s.push([t.id,".app-menu-entry:hover .app-menu-entry__icon,.app-menu-entry:focus-within .app-menu-entry__icon,.app-menu__list:hover .app-menu-entry__icon,.app-menu__list:focus-within .app-menu-entry__icon{margin-block-end:1lh}.app-menu-entry:hover .app-menu-entry__label,.app-menu-entry:focus-within .app-menu-entry__label,.app-menu__list:hover .app-menu-entry__label,.app-menu__list:focus-within .app-menu-entry__label{opacity:1}.app-menu-entry:hover .app-menu-entry--active::before,.app-menu-entry:focus-within .app-menu-entry--active::before,.app-menu__list:hover .app-menu-entry--active::before,.app-menu__list:focus-within .app-menu-entry--active::before{opacity:0}.app-menu-entry:hover .app-menu-icon__unread,.app-menu-entry:focus-within .app-menu-icon__unread,.app-menu__list:hover .app-menu-icon__unread,.app-menu__list:focus-within .app-menu-icon__unread{opacity:0}","",{version:3,sources:["webpack://./core/src/components/AppMenuEntry.vue"],names:[],mappings:"AAOC,8LACC,oBAAA,CAID,kMACC,SAAA,CAID,sOACC,SAAA,CAGD,kMACC,SAAA",sourcesContent:["\n// Showing the label\n.app-menu-entry:hover,\n.app-menu-entry:focus-within,\n.app-menu__list:hover,\n.app-menu__list:focus-within {\n\t// Move icon up so that the name does not overflow the icon\n\t.app-menu-entry__icon {\n\t\tmargin-block-end: 1lh;\n\t}\n\n\t// Make the label visible\n\t.app-menu-entry__label {\n\t\topacity: 1;\n\t}\n\n\t// Hide indicator when the text is shown\n\t.app-menu-entry--active::before {\n\t\topacity: 0;\n\t}\n\n\t.app-menu-icon__unread {\n\t\topacity: 0;\n\t}\n}\n"],sourceRoot:""}]);const a=s},23759:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var i=n(71354),o=n.n(i),r=n(76314),s=n.n(r)()(o());s.push([t.id,".app-menu-icon[data-v-e7078f90]{box-sizing:border-box;position:relative;height:20px;width:20px}.app-menu-icon__icon[data-v-e7078f90]{transition:margin .1s ease-in-out;height:20px;width:20px;filter:var(--background-image-invert-if-bright)}.app-menu-icon__unread[data-v-e7078f90]{color:var(--color-error);position:absolute;inset-block-end:15px;inset-inline-end:-5px;transition:all .1s ease-in-out}","",{version:3,sources:["webpack://./core/src/components/AppMenuIcon.vue"],names:[],mappings:"AAIA,gCACC,qBAAA,CACA,iBAAA,CAEA,WAPW,CAQX,UARW,CAUX,sCACC,iCAAA,CACA,WAZU,CAaV,UAbU,CAcV,+CAAA,CAGD,wCACC,wBAAA,CACA,iBAAA,CAEA,oBAAA,CACA,qBAAA,CACA,8BAAA",sourcesContent:["\n$icon-size: 20px;\n$unread-indicator-size: 10px;\n\n.app-menu-icon {\n\tbox-sizing: border-box;\n\tposition: relative;\n\n\theight: $icon-size;\n\twidth: $icon-size;\n\n\t&__icon {\n\t\ttransition: margin 0.1s ease-in-out;\n\t\theight: $icon-size;\n\t\twidth: $icon-size;\n\t\tfilter: var(--background-image-invert-if-bright);\n\t}\n\n\t&__unread {\n\t\tcolor: var(--color-error);\n\t\tposition: absolute;\n\t\t// Align the dot to the top right corner of the icon\n\t\tinset-block-end: calc($icon-size + ($unread-indicator-size / -2));\n\t\tinset-inline-end: calc($unread-indicator-size / -2);\n\t\ttransition: all 0.1s ease-in-out;\n\t}\n}\n"],sourceRoot:""}]);const a=s},78811:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var i=n(71354),o=n.n(i),r=n(76314),s=n.n(r)()(o());s.push([t.id,".contact[data-v-97ebdcaa]{display:flex;position:relative;align-items:center;padding:3px;padding-inline-start:10px}.contact__action__icon[data-v-97ebdcaa]{width:20px;height:20px;padding:12px;filter:var(--background-invert-if-dark)}.contact__avatar[data-v-97ebdcaa]{display:inherit}.contact__body[data-v-97ebdcaa]{flex-grow:1;padding-inline-start:10px;margin-inline-start:10px;min-width:0}.contact__body div[data-v-97ebdcaa]{position:relative;width:100%;overflow-x:hidden;text-overflow:ellipsis;margin:-1px 0}.contact__body div[data-v-97ebdcaa]:first-of-type{margin-top:0}.contact__body div[data-v-97ebdcaa]:last-of-type{margin-bottom:0}.contact__body__last-message[data-v-97ebdcaa],.contact__body__status-message[data-v-97ebdcaa],.contact__body__email-address[data-v-97ebdcaa]{color:var(--color-text-maxcontrast)}.contact__body[data-v-97ebdcaa]:focus-visible{box-shadow:0 0 0 4px var(--color-main-background) !important;outline:2px solid var(--color-main-text) !important}.contact .other-actions[data-v-97ebdcaa]{width:16px;height:16px;cursor:pointer}.contact .other-actions img[data-v-97ebdcaa]{filter:var(--background-invert-if-dark)}.contact button.other-actions[data-v-97ebdcaa]{width:44px}.contact button.other-actions[data-v-97ebdcaa]:focus{border-color:rgba(0,0,0,0);box-shadow:0 0 0 2px var(--color-main-text)}.contact button.other-actions[data-v-97ebdcaa]:focus-visible{border-radius:var(--border-radius-pill)}.contact .menu[data-v-97ebdcaa]{top:47px;margin-inline-end:13px}.contact .popovermenu[data-v-97ebdcaa]::after{inset-inline-end:2px}","",{version:3,sources:["webpack://./core/src/components/ContactsMenu/Contact.vue"],names:[],mappings:"AACA,0BACC,YAAA,CACA,iBAAA,CACA,kBAAA,CACA,WAAA,CACA,yBAAA,CAGC,wCACC,UAAA,CACA,WAAA,CACA,YAAA,CACA,uCAAA,CAIF,kCACC,eAAA,CAGD,gCACC,WAAA,CACA,yBAAA,CACA,wBAAA,CACA,WAAA,CAEA,oCACC,iBAAA,CACA,UAAA,CACA,iBAAA,CACA,sBAAA,CACA,aAAA,CAED,kDACC,YAAA,CAED,iDACC,eAAA,CAGD,6IACC,mCAAA,CAGD,8CACC,4DAAA,CACA,mDAAA,CAIF,yCACC,UAAA,CACA,WAAA,CACA,cAAA,CAEA,6CACC,uCAAA,CAIF,+CACC,UAAA,CAEA,qDACC,0BAAA,CACA,2CAAA,CAGD,6DACC,uCAAA,CAKF,gCACC,QAAA,CACA,sBAAA,CAGD,8CACC,oBAAA",sourcesContent:["\n.contact {\n\tdisplay: flex;\n\tposition: relative;\n\talign-items: center;\n\tpadding: 3px;\n\tpadding-inline-start: 10px;\n\n\t&__action {\n\t\t&__icon {\n\t\t\twidth: 20px;\n\t\t\theight: 20px;\n\t\t\tpadding: 12px;\n\t\t\tfilter: var(--background-invert-if-dark);\n\t\t}\n\t}\n\n\t&__avatar {\n\t\tdisplay: inherit;\n\t}\n\n\t&__body {\n\t\tflex-grow: 1;\n\t\tpadding-inline-start: 10px;\n\t\tmargin-inline-start: 10px;\n\t\tmin-width: 0;\n\n\t\tdiv {\n\t\t\tposition: relative;\n\t\t\twidth: 100%;\n\t\t\toverflow-x: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t\tmargin: -1px 0;\n\t\t}\n\t\tdiv:first-of-type {\n\t\t\tmargin-top: 0;\n\t\t}\n\t\tdiv:last-of-type {\n\t\t\tmargin-bottom: 0;\n\t\t}\n\n\t\t&__last-message, &__status-message, &__email-address {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\n\t\t&:focus-visible {\n\t\t\tbox-shadow: 0 0 0 4px var(--color-main-background) !important;\n\t\t\toutline: 2px solid var(--color-main-text) !important;\n\t\t}\n\t}\n\n\t.other-actions {\n\t\twidth: 16px;\n\t\theight: 16px;\n\t\tcursor: pointer;\n\n\t\timg {\n\t\t\tfilter: var(--background-invert-if-dark);\n\t\t}\n\t}\n\n\tbutton.other-actions {\n\t\twidth: 44px;\n\n\t\t&:focus {\n\t\t\tborder-color: transparent;\n\t\t\tbox-shadow: 0 0 0 2px var(--color-main-text);\n\t\t}\n\n\t\t&:focus-visible {\n\t\t\tborder-radius: var(--border-radius-pill);\n\t\t}\n\t}\n\n\t/* actions menu */\n\t.menu {\n\t\ttop: 47px;\n\t\tmargin-inline-end: 13px;\n\t}\n\n\t.popovermenu::after {\n\t\tinset-inline-end: 2px;\n\t}\n}\n"],sourceRoot:""}]);const a=s},24454:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var i=n(71354),o=n.n(i),r=n(76314),s=n.n(r)()(o());s.push([t.id,"[data-v-a886d77a] #header-menu-user-menu{padding:0 !important}.account-menu[data-v-a886d77a] button{opacity:1 !important}.account-menu[data-v-a886d77a] button:focus-visible .account-menu__avatar{border:var(--border-width-input-focused) solid var(--color-background-plain-text)}.account-menu[data-v-a886d77a] .header-menu__content{width:fit-content !important}.account-menu__avatar[data-v-a886d77a]:hover{border:var(--border-width-input-focused) solid var(--color-background-plain-text)}.account-menu__list[data-v-a886d77a]{display:inline-flex;flex-direction:column;padding-block:var(--default-grid-baseline) 0;padding-inline:0 var(--default-grid-baseline)}.account-menu__list[data-v-a886d77a]> li{box-sizing:border-box;flex:0 1}","",{version:3,sources:["webpack://./core/src/views/AccountMenu.vue"],names:[],mappings:"AACA,yCACC,oBAAA,CAIA,sCAGC,oBAAA,CAKC,0EACC,iFAAA,CAMH,qDACC,4BAAA,CAIA,6CAEC,iFAAA,CAIF,qCACC,mBAAA,CACA,qBAAA,CACA,4CAAA,CACA,6CAAA,CAEA,yCACC,qBAAA,CAEA,QAAA",sourcesContent:['\n:deep(#header-menu-user-menu) {\n\tpadding: 0 !important;\n}\n\n.account-menu {\n\t:deep(button) {\n\t\t// Normally header menus are slightly translucent when not active\n\t\t// this is generally ok but for the avatar this is weird so fix the opacity\n\t\topacity: 1 !important;\n\n\t\t// The avatar is just the "icon" of the button\n\t\t// So we add the focus-visible manually\n\t\t&:focus-visible {\n\t\t\t.account-menu__avatar {\n\t\t\t\tborder: var(--border-width-input-focused) solid var(--color-background-plain-text);\n\t\t\t}\n\t\t}\n\t}\n\n\t// Ensure we do not wast space, as the header menu sets a default width of 350px\n\t:deep(.header-menu__content) {\n\t\twidth: fit-content !important;\n\t}\n\n\t&__avatar {\n\t\t&:hover {\n\t\t\t// Add hover styles similar to the focus-visible style\n\t\t\tborder: var(--border-width-input-focused) solid var(--color-background-plain-text);\n\t\t}\n\t}\n\n\t&__list {\n\t\tdisplay: inline-flex;\n\t\tflex-direction: column;\n\t\tpadding-block: var(--default-grid-baseline) 0;\n\t\tpadding-inline: 0 var(--default-grid-baseline);\n\n\t\t> :deep(li) {\n\t\t\tbox-sizing: border-box;\n\t\t\t// basically "fit-content"\n\t\t\tflex: 0 1;\n\t\t}\n\t}\n}\n'],sourceRoot:""}]);const a=s},38933:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var i=n(71354),o=n.n(i),r=n(76314),s=n.n(r)()(o());s.push([t.id,".contactsmenu[data-v-5cad18ba]{overflow-y:hidden}.contactsmenu__trigger-icon[data-v-5cad18ba]{color:var(--color-background-plain-text) !important}.contactsmenu__menu[data-v-5cad18ba]{display:flex;flex-direction:column;overflow:hidden;height:328px;max-height:inherit}.contactsmenu__menu label[for=contactsmenu__menu__search][data-v-5cad18ba]{font-weight:bold;font-size:19px;margin-inline-start:13px}.contactsmenu__menu__input-wrapper[data-v-5cad18ba]{padding:10px;z-index:2;top:0}.contactsmenu__menu__search[data-v-5cad18ba]{width:100%;height:34px;margin-top:0 !important}.contactsmenu__menu__content[data-v-5cad18ba]{overflow-y:auto;margin-top:10px;flex:1 1 auto}.contactsmenu__menu__content__footer[data-v-5cad18ba]{display:flex;flex-direction:column;align-items:center}.contactsmenu__menu a[data-v-5cad18ba]:focus-visible{box-shadow:inset 0 0 0 2px var(--color-main-text) !important}.contactsmenu[data-v-5cad18ba] .empty-content{margin:0 !important}","",{version:3,sources:["webpack://./core/src/views/ContactsMenu.vue"],names:[],mappings:"AACA,+BACC,iBAAA,CAEA,6CACC,mDAAA,CAGD,qCACC,YAAA,CACA,qBAAA,CACA,eAAA,CACA,YAAA,CACA,kBAAA,CAEA,2EACC,gBAAA,CACA,cAAA,CACA,wBAAA,CAGD,oDACC,YAAA,CACA,SAAA,CACA,KAAA,CAGD,6CACC,UAAA,CACA,WAAA,CACA,uBAAA,CAGD,8CACC,eAAA,CACA,eAAA,CACA,aAAA,CAEA,sDACC,YAAA,CACA,qBAAA,CACA,kBAAA,CAKD,qDACC,4DAAA,CAKH,8CACC,mBAAA",sourcesContent:['\n.contactsmenu {\n\toverflow-y: hidden;\n\n\t&__trigger-icon {\n\t\tcolor: var(--color-background-plain-text) !important;\n\t}\n\n\t&__menu {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\toverflow: hidden;\n\t\theight: calc(50px * 6 + 2px + 26px);\n\t\tmax-height: inherit;\n\n\t\tlabel[for="contactsmenu__menu__search"] {\n\t\t\tfont-weight: bold;\n\t\t\tfont-size: 19px;\n\t\t\tmargin-inline-start: 13px;\n\t\t}\n\n\t\t&__input-wrapper {\n\t\t\tpadding: 10px;\n\t\t\tz-index: 2;\n\t\t\ttop: 0;\n\t\t}\n\n\t\t&__search {\n\t\t\twidth: 100%;\n\t\t\theight: 34px;\n\t\t\tmargin-top: 0!important;\n\t\t}\n\n\t\t&__content {\n\t\t\toverflow-y: auto;\n\t\t\tmargin-top: 10px;\n\t\t\tflex: 1 1 auto;\n\n\t\t\t&__footer {\n\t\t\t\tdisplay: flex;\n\t\t\t\tflex-direction: column;\n\t\t\t\talign-items: center;\n\t\t\t}\n\t\t}\n\n\t\ta {\n\t\t\t&:focus-visible {\n\t\t\t\tbox-shadow: inset 0 0 0 2px var(--color-main-text) !important; // override rule in core/css/headers.scss #header a:focus-visible\n\t\t\t}\n\t\t}\n\t}\n\n\t:deep(.empty-content) {\n\t\tmargin: 0 !important;\n\t}\n}\n'],sourceRoot:""}]);const a=s},78112:t=>{var e=e||{};e._XML_CHAR_MAP={"<":"<",">":">","&":"&",'"':""","'":"'"},e._escapeXml=function(t){return t.replace(/[<>&"']/g,(function(t){return e._XML_CHAR_MAP[t]}))},e.Client=function(t){var e;for(e in t)this[e]=t[e]},e.Client.prototype={baseUrl:null,userName:null,password:null,xmlNamespaces:{"DAV:":"d"},propFind:function(t,e,n,i){void 0===n&&(n="0"),n=""+n,(i=i||{}).Depth=n,i["Content-Type"]="application/xml; charset=utf-8";var o,r='\n\n":r+=" \n'}return r+=" \n",r+="",this.request("PROPFIND",t,i,r).then(function(t){return"0"===n?{status:t.status,body:t.body[0],xhr:t.xhr}:{status:t.status,body:t.body,xhr:t.xhr}}.bind(this))},_renderPropSet:function(t){var n=" \n \n";for(var i in t)if(t.hasOwnProperty(i)){var o,r=this.parseClarkNotation(i),s=t[i];"d:resourcetype"!=(o=this.xmlNamespaces[r.namespace]?this.xmlNamespaces[r.namespace]+":"+r.name:"x:"+r.name+' xmlns:x="'+r.namespace+'"')&&(s=e._escapeXml(s)),n+=" <"+o+">"+s+"\n"}return(n+=" \n")+" \n"},propPatch:function(t,e,n){(n=n||{})["Content-Type"]="application/xml; charset=utf-8";var i,o='\n0){for(var n=[],i=0;i{var i=n(93633);t.exports=(i.default||i).template({1:function(t,e,n,i,o){var r,s=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return''},compiler:[8,">= 4.3.0"],main:function(t,e,n,i,o){var r,s,a=null!=e?e:t.nullContext||{},c=t.hooks.helperMissing,l="function",u=t.escapeExpression,h=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'
  • \n\t\n\t\t'+(null!=(r=h(n,"if").call(a,null!=e?h(e,"icon"):e,{name:"if",hash:{},fn:t.program(1,o,0),inverse:t.noop,data:o,loc:{start:{line:3,column:2},end:{line:3,column:41}}}))?r:"")+"\n\t\t"+u(typeof(s=null!=(s=h(n,"title")||(null!=e?h(e,"title"):e))?s:c)===l?s.call(a,{name:"title",hash:{},data:o,loc:{start:{line:4,column:8},end:{line:4,column:17}}}):s)+"\n\t\n
  • \n"},useData:!0})},99660:(t,e,n)=>{var i,o,r;!function(){"use strict";o=[n(74692)],i=function(t){t.ui=t.ui||{},t.ui.version="1.13.3";var e,n=0,i=Array.prototype.hasOwnProperty,o=Array.prototype.slice;t.cleanData=(e=t.cleanData,function(n){var i,o,r;for(r=0;null!=(o=n[r]);r++)(i=t._data(o,"events"))&&i.remove&&t(o).triggerHandler("remove");e(n)}),t.widget=function(e,n,i){var o,r,s,a={},c=e.split(".")[0],l=c+"-"+(e=e.split(".")[1]);return i||(i=n,n=t.Widget),Array.isArray(i)&&(i=t.extend.apply(null,[{}].concat(i))),t.expr.pseudos[l.toLowerCase()]=function(e){return!!t.data(e,l)},t[c]=t[c]||{},o=t[c][e],r=t[c][e]=function(t,e){if(!this||!this._createWidget)return new r(t,e);arguments.length&&this._createWidget(t,e)},t.extend(r,o,{version:i.version,_proto:t.extend({},i),_childConstructors:[]}),(s=new n).options=t.widget.extend({},s.options),t.each(i,(function(t,e){a[t]="function"==typeof e?function(){function i(){return n.prototype[t].apply(this,arguments)}function o(e){return n.prototype[t].apply(this,e)}return function(){var t,n=this._super,r=this._superApply;return this._super=i,this._superApply=o,t=e.apply(this,arguments),this._super=n,this._superApply=r,t}}():e})),r.prototype=t.widget.extend(s,{widgetEventPrefix:o&&s.widgetEventPrefix||e},a,{constructor:r,namespace:c,widgetName:e,widgetFullName:l}),o?(t.each(o._childConstructors,(function(e,n){var i=n.prototype;t.widget(i.namespace+"."+i.widgetName,r,n._proto)})),delete o._childConstructors):n._childConstructors.push(r),t.widget.bridge(e,r),r},t.widget.extend=function(e){for(var n,r,s=o.call(arguments,1),a=0,c=s.length;a",options:{classes:{},disabled:!1,create:null},_createWidget:function(e,i){i=t(i||this.defaultElement||this)[0],this.element=t(i),this.uuid=n++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},i!==this&&(t.data(i,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===i&&this.destroy()}}),this.document=t(i.style?i.ownerDocument:i.document||i),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,(function(t,n){e._removeClass(n,t)})),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,n){var i,o,r,s=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(s={},i=e.split("."),e=i.shift(),i.length){for(o=s[e]=t.widget.extend({},this.options[e]),r=0;r
    "),r=o.children()[0];return t("body").append(o),n=r.offsetWidth,o.css("overflow","scroll"),n===(i=r.offsetWidth)&&(i=o[0].clientWidth),o.remove(),e=n-i},getScrollInfo:function(e){var n=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),i=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),o="scroll"===n||"auto"===n&&e.width0?"right":"center",vertical:u<0?"top":c>0?"bottom":"middle"};pn(i(c),i(u))?h.important="horizontal":h.important="vertical",e.using.call(this,t,h)}),s.offset(t.extend(B,{using:r}))}))},t.ui.position={fit:{left:function(t,e){var i,o=e.within,r=o.isWindow?o.scrollLeft:o.offset.left,s=o.width,a=t.left-e.collisionPosition.marginLeft,c=r-a,l=a+e.collisionWidth-s-r;e.collisionWidth>s?c>0&&l<=0?(i=t.left+c+e.collisionWidth-s-r,t.left+=c-i):t.left=l>0&&c<=0?r:c>l?r+s-e.collisionWidth:r:c>0?t.left+=c:l>0?t.left-=l:t.left=n(t.left-a,t.left)},top:function(t,e){var i,o=e.within,r=o.isWindow?o.scrollTop:o.offset.top,s=e.within.height,a=t.top-e.collisionPosition.marginTop,c=r-a,l=a+e.collisionHeight-s-r;e.collisionHeight>s?c>0&&l<=0?(i=t.top+c+e.collisionHeight-s-r,t.top+=c-i):t.top=l>0&&c<=0?r:c>l?r+s-e.collisionHeight:r:c>0?t.top+=c:l>0?t.top-=l:t.top=n(t.top-a,t.top)}},flip:{left:function(t,e){var n,o,r=e.within,s=r.offset.left+r.scrollLeft,a=r.width,c=r.isWindow?r.scrollLeft:r.offset.left,l=t.left-e.collisionPosition.marginLeft,u=l-c,h=l+e.collisionWidth-a-c,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,A=-2*e.offset[0];u<0?((n=t.left+d+p+A+e.collisionWidth-a-s)<0||n0&&((o=t.left-e.collisionPosition.marginLeft+d+p+A-c)>0||i(o)0&&((n=t.top-e.collisionPosition.marginTop+d+p+A-c)>0||i(n)")[0],m=a.each;function b(t){return null==t?t+"":"object"==typeof t?c[l.call(t)]||"object":typeof t}function v(t,e,n){var i=A[e.type]||{};return null==t?n||!e.def?null:e.def:(t=i.floor?~~t:parseFloat(t),isNaN(t)?e.def:i.mod?(t+i.mod)%i.mod:Math.min(i.max,Math.max(0,t)))}function C(t){var e=d(),n=e._rgba=[];return t=t.toLowerCase(),m(h,(function(i,o){var r,s=o.re.exec(t),a=s&&o.parse(s),c=o.space||"rgba";if(a)return r=e[c](a),e[p[c].cache]=r[p[c].cache],n=e._rgba=r._rgba,!1})),n.length?("0,0,0,0"===n.join()&&a.extend(n,r.transparent),e):r[t]}function x(t,e,n){return 6*(n=(n+1)%1)<1?t+(e-t)*n*6:2*n<1?e:3*n<2?t+(e-t)*(2/3-n)*6:t}g.style.cssText="background-color:rgba(1,1,1,.5)",f.rgba=g.style.backgroundColor.indexOf("rgba")>-1,m(p,(function(t,e){e.cache="_"+t,e.props.alpha={idx:3,type:"percent",def:1}})),a.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),(function(t,e){c["[object "+e+"]"]=e.toLowerCase()})),d.fn=a.extend(d.prototype,{parse:function(t,e,n,i){if(void 0===t)return this._rgba=[null,null,null,null],this;(t.jquery||t.nodeType)&&(t=a(t).css(e),e=void 0);var o=this,s=b(t),c=this._rgba=[];return void 0!==e&&(t=[t,e,n,i],s="array"),"string"===s?this.parse(C(t)||r._default):"array"===s?(m(p.rgba.props,(function(e,n){c[n.idx]=v(t[n.idx],n)})),this):"object"===s?(m(p,t instanceof d?function(e,n){t[n.cache]&&(o[n.cache]=t[n.cache].slice())}:function(e,n){var i=n.cache;m(n.props,(function(e,r){if(!o[i]&&n.to){if("alpha"===e||null==t[e])return;o[i]=n.to(o._rgba)}o[i][r.idx]=v(t[e],r,!0)})),o[i]&&a.inArray(null,o[i].slice(0,3))<0&&(null==o[i][3]&&(o[i][3]=1),n.from&&(o._rgba=n.from(o[i])))}),this):void 0},is:function(t){var e=d(t),n=!0,i=this;return m(p,(function(t,o){var r,s=e[o.cache];return s&&(r=i[o.cache]||o.to&&o.to(i._rgba)||[],m(o.props,(function(t,e){if(null!=s[e.idx])return n=s[e.idx]===r[e.idx]}))),n})),n},_space:function(){var t=[],e=this;return m(p,(function(n,i){e[i.cache]&&t.push(n)})),t.pop()},transition:function(t,e){var n=d(t),i=n._space(),o=p[i],r=0===this.alpha()?d("transparent"):this,s=r[o.cache]||o.to(r._rgba),a=s.slice();return n=n[o.cache],m(o.props,(function(t,i){var o=i.idx,r=s[o],c=n[o],l=A[i.type]||{};null!==c&&(null===r?a[o]=c:(l.mod&&(c-r>l.mod/2?r+=l.mod:r-c>l.mod/2&&(r-=l.mod)),a[o]=v((c-r)*e+r,i)))})),this[i](a)},blend:function(t){if(1===this._rgba[3])return this;var e=this._rgba.slice(),n=e.pop(),i=d(t)._rgba;return d(a.map(e,(function(t,e){return(1-n)*i[e]+n*t})))},toRgbaString:function(){var t="rgba(",e=a.map(this._rgba,(function(t,e){return null!=t?t:e>2?1:0}));return 1===e[3]&&(e.pop(),t="rgb("),t+e.join()+")"},toHslaString:function(){var t="hsla(",e=a.map(this.hsla(),(function(t,e){return null==t&&(t=e>2?1:0),e&&e<3&&(t=Math.round(100*t)+"%"),t}));return 1===e[3]&&(e.pop(),t="hsl("),t+e.join()+")"},toHexString:function(t){var e=this._rgba.slice(),n=e.pop();return t&&e.push(~~(255*n)),"#"+a.map(e,(function(t){return 1===(t=(t||0).toString(16)).length?"0"+t:t})).join("")},toString:function(){return 0===this._rgba[3]?"transparent":this.toRgbaString()}}),d.fn.parse.prototype=d.fn,p.hsla.to=function(t){if(null==t[0]||null==t[1]||null==t[2])return[null,null,null,t[3]];var e,n,i=t[0]/255,o=t[1]/255,r=t[2]/255,s=t[3],a=Math.max(i,o,r),c=Math.min(i,o,r),l=a-c,u=a+c,h=.5*u;return e=c===a?0:i===a?60*(o-r)/l+360:o===a?60*(r-i)/l+120:60*(i-o)/l+240,n=0===l?0:h<=.5?l/u:l/(2-u),[Math.round(e)%360,n,h,null==s?1:s]},p.hsla.from=function(t){if(null==t[0]||null==t[1]||null==t[2])return[null,null,null,t[3]];var e=t[0]/360,n=t[1],i=t[2],o=t[3],r=i<=.5?i*(1+n):i+n-i*n,s=2*i-r;return[Math.round(255*x(s,r,e+1/3)),Math.round(255*x(s,r,e)),Math.round(255*x(s,r,e-1/3)),o]},m(p,(function(t,e){var n=e.props,i=e.cache,o=e.to,r=e.from;d.fn[t]=function(t){if(o&&!this[i]&&(this[i]=o(this._rgba)),void 0===t)return this[i].slice();var e,s=b(t),a="array"===s||"object"===s?t:arguments,c=this[i].slice();return m(n,(function(t,e){var n=a["object"===s?t:e.idx];null==n&&(n=c[e.idx]),c[e.idx]=v(n,e)})),r?((e=d(r(c)))[i]=c,e):d(c)},m(n,(function(e,n){d.fn[e]||(d.fn[e]=function(i){var o,r,s,a,c=b(i);return r=(o=this[a="alpha"===e?this._hsla?"hsla":"rgba":t]())[n.idx],"undefined"===c?r:("function"===c&&(c=b(i=i.call(this,r))),null==i&&n.empty?this:("string"===c&&(s=u.exec(i))&&(i=r+parseFloat(s[2])*("+"===s[1]?1:-1)),o[n.idx]=i,this[a](o)))})}))})),d.hook=function(t){var e=t.split(" ");m(e,(function(t,e){a.cssHooks[e]={set:function(t,n){var i,o,r="";if("transparent"!==n&&("string"!==b(n)||(i=C(n)))){if(n=d(i||n),!f.rgba&&1!==n._rgba[3]){for(o="backgroundColor"===e?t.parentNode:t;(""===r||"transparent"===r)&&o&&o.style;)try{r=a.css(o,"backgroundColor"),o=o.parentNode}catch(t){}n=n.blend(r&&"transparent"!==r?r:"_default")}n=n.toRgbaString()}try{t.style[e]=n}catch(t){}}},a.fx.step[e]=function(t){t.colorInit||(t.start=d(t.elem,e),t.end=d(t.end),t.colorInit=!0),a.cssHooks[e].set(t.elem,t.start.transition(t.end,t.pos))}}))},d.hook("backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor"),a.cssHooks.borderColor={expand:function(t){var e={};return m(["Top","Right","Bottom","Left"],(function(n,i){e["border"+i+"Color"]=t})),e}},r=a.Color.names={aqua:"#00ffff",black:"#000000",blue:"#0000ff",fuchsia:"#ff00ff",gray:"#808080",green:"#008000",lime:"#00ff00",maroon:"#800000",navy:"#000080",olive:"#808000",purple:"#800080",red:"#ff0000",silver:"#c0c0c0",teal:"#008080",white:"#ffffff",yellow:"#ffff00",transparent:[null,null,null,0],_default:"#ffffff"};var w,y,k="ui-effects-",B="ui-effects-style",E="ui-effects-animated";if(t.effects={effect:{}},function(){var e=["add","remove","toggle"],n={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};function i(t){var e,n,i,o=t.ownerDocument.defaultView?t.ownerDocument.defaultView.getComputedStyle(t,null):t.currentStyle,r={};if(o&&o.length&&o[0]&&o[o[0]])for(n=o.length;n--;)"string"==typeof o[e=o[n]]&&(r[(i=e,i.replace(/-([\da-z])/gi,(function(t,e){return e.toUpperCase()})))]=o[e]);else for(e in o)"string"==typeof o[e]&&(r[e]=o[e]);return r}t.each(["borderLeftStyle","borderRightStyle","borderBottomStyle","borderTopStyle"],(function(e,n){t.fx.step[n]=function(t){("none"!==t.end&&!t.setAttr||1===t.pos&&!t.setAttr)&&(a.style(t.elem,n,t.end),t.setAttr=!0)}})),t.fn.addBack||(t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.effects.animateClass=function(o,r,s,a){var c=t.speed(r,s,a);return this.queue((function(){var r,s=t(this),a=s.attr("class")||"",l=c.children?s.find("*").addBack():s;l=l.map((function(){return{el:t(this),start:i(this)}})),(r=function(){t.each(e,(function(t,e){o[e]&&s[e+"Class"](o[e])}))})(),l=l.map((function(){return this.end=i(this.el[0]),this.diff=function(e,i){var o,r,s={};for(o in i)r=i[o],e[o]!==r&&(n[o]||!t.fx.step[o]&&isNaN(parseFloat(r))||(s[o]=r));return s}(this.start,this.end),this})),s.attr("class",a),l=l.map((function(){var e=this,n=t.Deferred(),i=t.extend({},c,{queue:!1,complete:function(){n.resolve(e)}});return this.el.animate(this.diff,i),n.promise()})),t.when.apply(t,l.get()).done((function(){r(),t.each(arguments,(function(){var e=this.el;t.each(this.diff,(function(t){e.css(t,"")}))})),c.complete.call(s[0])}))}))},t.fn.extend({addClass:function(e){return function(n,i,o,r){return i?t.effects.animateClass.call(this,{add:n},i,o,r):e.apply(this,arguments)}}(t.fn.addClass),removeClass:function(e){return function(n,i,o,r){return arguments.length>1?t.effects.animateClass.call(this,{remove:n},i,o,r):e.apply(this,arguments)}}(t.fn.removeClass),toggleClass:function(e){return function(n,i,o,r,s){return"boolean"==typeof i||void 0===i?o?t.effects.animateClass.call(this,i?{add:n}:{remove:n},o,r,s):e.apply(this,arguments):t.effects.animateClass.call(this,{toggle:n},i,o,r)}}(t.fn.toggleClass),switchClass:function(e,n,i,o,r){return t.effects.animateClass.call(this,{add:n,remove:e},i,o,r)}})}(),function(){function e(e,n,i,o){return t.isPlainObject(e)&&(n=e,e=e.effect),e={effect:e},null==n&&(n={}),"function"==typeof n&&(o=n,i=null,n={}),("number"==typeof n||t.fx.speeds[n])&&(o=i,i=n,n={}),"function"==typeof i&&(o=i,i=null),n&&t.extend(e,n),i=i||n.duration,e.duration=t.fx.off?0:"number"==typeof i?i:i in t.fx.speeds?t.fx.speeds[i]:t.fx.speeds._default,e.complete=o||n.complete,e}function n(e){return!(e&&"number"!=typeof e&&!t.fx.speeds[e])||"string"==typeof e&&!t.effects.effect[e]||"function"==typeof e||"object"==typeof e&&!e.effect}function i(t,e){var n=e.outerWidth(),i=e.outerHeight(),o=/^rect\((-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto)\)$/.exec(t)||["",0,n,i,0];return{top:parseFloat(o[1])||0,right:"auto"===o[2]?n:parseFloat(o[2]),bottom:"auto"===o[3]?i:parseFloat(o[3]),left:parseFloat(o[4])||0}}t.expr&&t.expr.pseudos&&t.expr.pseudos.animated&&(t.expr.pseudos.animated=function(e){return function(n){return!!t(n).data(E)||e(n)}}(t.expr.pseudos.animated)),!1!==t.uiBackCompat&&t.extend(t.effects,{save:function(t,e){for(var n=0,i=e.length;n").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),o={width:e.width(),height:e.height()},r=document.activeElement;try{r.id}catch(t){r=document.body}return e.wrap(i),(e[0]===r||t.contains(e[0],r))&&t(r).trigger("focus"),i=e.parent(),"static"===e.css("position")?(i.css({position:"relative"}),e.css({position:"relative"})):(t.extend(n,{position:e.css("position"),zIndex:e.css("z-index")}),t.each(["top","left","bottom","right"],(function(t,i){n[i]=e.css(i),isNaN(parseInt(n[i],10))&&(n[i]="auto")})),e.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),e.css(o),i.css(n).show()},removeWrapper:function(e){var n=document.activeElement;return e.parent().is(".ui-effects-wrapper")&&(e.parent().replaceWith(e),(e[0]===n||t.contains(e[0],n))&&t(n).trigger("focus")),e}}),t.extend(t.effects,{version:"1.13.3",define:function(e,n,i){return i||(i=n,n="effect"),t.effects.effect[e]=i,t.effects.effect[e].mode=n,i},scaledDimensions:function(t,e,n){if(0===e)return{height:0,width:0,outerHeight:0,outerWidth:0};var i="horizontal"!==n?(e||100)/100:1,o="vertical"!==n?(e||100)/100:1;return{height:t.height()*o,width:t.width()*i,outerHeight:t.outerHeight()*o,outerWidth:t.outerWidth()*i}},clipToBox:function(t){return{width:t.clip.right-t.clip.left,height:t.clip.bottom-t.clip.top,left:t.clip.left,top:t.clip.top}},unshift:function(t,e,n){var i=t.queue();e>1&&i.splice.apply(i,[1,0].concat(i.splice(e,n))),t.dequeue()},saveStyle:function(t){t.data(B,t[0].style.cssText)},restoreStyle:function(t){t[0].style.cssText=t.data(B)||"",t.removeData(B)},mode:function(t,e){var n=t.is(":hidden");return"toggle"===e&&(e=n?"show":"hide"),(n?"hide"===e:"show"===e)&&(e="none"),e},getBaseline:function(t,e){var n,i;switch(t[0]){case"top":n=0;break;case"middle":n=.5;break;case"bottom":n=1;break;default:n=t[0]/e.height}switch(t[1]){case"left":i=0;break;case"center":i=.5;break;case"right":i=1;break;default:i=t[1]/e.width}return{x:i,y:n}},createPlaceholder:function(e){var n,i=e.css("position"),o=e.position();return e.css({marginTop:e.css("marginTop"),marginBottom:e.css("marginBottom"),marginLeft:e.css("marginLeft"),marginRight:e.css("marginRight")}).outerWidth(e.outerWidth()).outerHeight(e.outerHeight()),/^(static|relative)/.test(i)&&(i="absolute",n=t("<"+e[0].nodeName+">").insertAfter(e).css({display:/^(inline|ruby)/.test(e.css("display"))?"inline-block":"block",visibility:"hidden",marginTop:e.css("marginTop"),marginBottom:e.css("marginBottom"),marginLeft:e.css("marginLeft"),marginRight:e.css("marginRight"),float:e.css("float")}).outerWidth(e.outerWidth()).outerHeight(e.outerHeight()).addClass("ui-effects-placeholder"),e.data(k+"placeholder",n)),e.css({position:i,left:o.left,top:o.top}),n},removePlaceholder:function(t){var e=k+"placeholder",n=t.data(e);n&&(n.remove(),t.removeData(e))},cleanUp:function(e){t.effects.restoreStyle(e),t.effects.removePlaceholder(e)},setTransition:function(e,n,i,o){return o=o||{},t.each(n,(function(t,n){var r=e.cssUnit(n);r[0]>0&&(o[n]=r[0]*i+r[1])})),o}}),t.fn.extend({effect:function(){var n=e.apply(this,arguments),i=t.effects.effect[n.effect],o=i.mode,r=n.queue,s=r||"fx",a=n.complete,c=n.mode,l=[],u=function(e){var n=t(this),i=t.effects.mode(n,c)||o;n.data(E,!0),l.push(i),o&&("show"===i||i===o&&"hide"===i)&&n.show(),o&&"none"===i||t.effects.saveStyle(n),"function"==typeof e&&e()};if(t.fx.off||!i)return c?this[c](n.duration,a):this.each((function(){a&&a.call(this)}));function h(e){var r=t(this);function s(){"function"==typeof a&&a.call(r[0]),"function"==typeof e&&e()}n.mode=l.shift(),!1===t.uiBackCompat||o?"none"===n.mode?(r[c](),s()):i.call(r[0],n,(function(){r.removeData(E),t.effects.cleanUp(r),"hide"===n.mode&&r.hide(),s()})):(r.is(":hidden")?"hide"===c:"show"===c)?(r[c](),s()):i.call(r[0],n,s)}return!1===r?this.each(u).each(h):this.queue(s,u).queue(s,h)},show:function(t){return function(i){if(n(i))return t.apply(this,arguments);var o=e.apply(this,arguments);return o.mode="show",this.effect.call(this,o)}}(t.fn.show),hide:function(t){return function(i){if(n(i))return t.apply(this,arguments);var o=e.apply(this,arguments);return o.mode="hide",this.effect.call(this,o)}}(t.fn.hide),toggle:function(t){return function(i){if(n(i)||"boolean"==typeof i)return t.apply(this,arguments);var o=e.apply(this,arguments);return o.mode="toggle",this.effect.call(this,o)}}(t.fn.toggle),cssUnit:function(e){var n=this.css(e),i=[];return t.each(["em","px","%","pt"],(function(t,e){n.indexOf(e)>0&&(i=[parseFloat(n),e])})),i},cssClip:function(t){return t?this.css("clip","rect("+t.top+"px "+t.right+"px "+t.bottom+"px "+t.left+"px)"):i(this.css("clip"),this)},transfer:function(e,n){var i=t(this),o=t(e.to),r="fixed"===o.css("position"),s=t("body"),a=r?s.scrollTop():0,c=r?s.scrollLeft():0,l=o.offset(),u={top:l.top-a,left:l.left-c,height:o.innerHeight(),width:o.innerWidth()},h=i.offset(),d=t("
    ");d.appendTo("body").addClass(e.className).css({top:h.top-a,left:h.left-c,height:i.innerHeight(),width:i.innerWidth(),position:r?"fixed":"absolute"}).animate(u,e.duration,e.easing,(function(){d.remove(),"function"==typeof n&&n()}))}}),t.fx.step.clip=function(e){e.clipInit||(e.start=t(e.elem).cssClip(),"string"==typeof e.end&&(e.end=i(e.end,e.elem)),e.clipInit=!0),t(e.elem).cssClip({top:e.pos*(e.end.top-e.start.top)+e.start.top,right:e.pos*(e.end.right-e.start.right)+e.start.right,bottom:e.pos*(e.end.bottom-e.start.bottom)+e.start.bottom,left:e.pos*(e.end.left-e.start.left)+e.start.left})}}(),w={},t.each(["Quad","Cubic","Quart","Quint","Expo"],(function(t,e){w[e]=function(e){return Math.pow(e,t+2)}})),t.extend(w,{Sine:function(t){return 1-Math.cos(t*Math.PI/2)},Circ:function(t){return 1-Math.sqrt(1-t*t)},Elastic:function(t){return 0===t||1===t?t:-Math.pow(2,8*(t-1))*Math.sin((80*(t-1)-7.5)*Math.PI/15)},Back:function(t){return t*t*(3*t-2)},Bounce:function(t){for(var e,n=4;t<((e=Math.pow(2,--n))-1)/11;);return 1/Math.pow(4,3-n)-7.5625*Math.pow((3*e-2)/22-t,2)}}),t.each(w,(function(e,n){t.easing["easeIn"+e]=n,t.easing["easeOut"+e]=function(t){return 1-n(1-t)},t.easing["easeInOut"+e]=function(t){return t<.5?n(2*t)/2:1-n(-2*t+2)/2}})),t.effects,t.effects.define("blind","hide",(function(e,n){var i={up:["bottom","top"],vertical:["bottom","top"],down:["top","bottom"],left:["right","left"],horizontal:["right","left"],right:["left","right"]},o=t(this),r=e.direction||"up",s=o.cssClip(),a={clip:t.extend({},s)},c=t.effects.createPlaceholder(o);a.clip[i[r][0]]=a.clip[i[r][1]],"show"===e.mode&&(o.cssClip(a.clip),c&&c.css(t.effects.clipToBox(a)),a.clip=s),c&&c.animate(t.effects.clipToBox(a),e.duration,e.easing),o.animate(a,{queue:!1,duration:e.duration,easing:e.easing,complete:n})})),t.effects.define("bounce",(function(e,n){var i,o,r,s=t(this),a=e.mode,c="hide"===a,l="show"===a,u=e.direction||"up",h=e.distance,d=e.times||5,p=2*d+(l||c?1:0),A=e.duration/p,f=e.easing,g="up"===u||"down"===u?"top":"left",m="up"===u||"left"===u,b=0,v=s.queue().length;for(t.effects.createPlaceholder(s),r=s.css(g),h||(h=s["top"===g?"outerHeight":"outerWidth"]()/3),l&&((o={opacity:1})[g]=r,s.css("opacity",0).css(g,m?2*-h:2*h).animate(o,A,f)),c&&(h/=Math.pow(2,d-1)),(o={})[g]=r;b").css({position:"absolute",visibility:"visible",left:-o*A,top:-i*f}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:A,height:f,left:r+(d?a*A:0),top:s+(d?c*f:0),opacity:d?0:1}).animate({left:r+(d?0:a*A),top:s+(d?0:c*f),opacity:d?1:0},e.duration||500,e.easing,m)})),t.effects.define("fade","toggle",(function(e,n){var i="show"===e.mode;t(this).css("opacity",i?0:1).animate({opacity:i?1:0},{queue:!1,duration:e.duration,easing:e.easing,complete:n})})),t.effects.define("fold","hide",(function(e,n){var i=t(this),o=e.mode,r="show"===o,s="hide"===o,a=e.size||15,c=/([0-9]+)%/.exec(a),l=e.horizFirst?["right","bottom"]:["bottom","right"],u=e.duration/2,h=t.effects.createPlaceholder(i),d=i.cssClip(),p={clip:t.extend({},d)},A={clip:t.extend({},d)},f=[d[l[0]],d[l[1]]],g=i.queue().length;c&&(a=parseInt(c[1],10)/100*f[s?0:1]),p.clip[l[0]]=a,A.clip[l[0]]=a,A.clip[l[1]]=0,r&&(i.cssClip(A.clip),h&&h.css(t.effects.clipToBox(A)),A.clip=d),i.queue((function(n){h&&h.animate(t.effects.clipToBox(p),u,e.easing).animate(t.effects.clipToBox(A),u,e.easing),n()})).animate(p,u,e.easing).animate(A,u,e.easing).queue(n),t.effects.unshift(i,g,4)})),t.effects.define("highlight","show",(function(e,n){var i=t(this),o={backgroundColor:i.css("backgroundColor")};"hide"===e.mode&&(o.opacity=0),t.effects.saveStyle(i),i.css({backgroundImage:"none",backgroundColor:e.color||"#ffff99"}).animate(o,{queue:!1,duration:e.duration,easing:e.easing,complete:n})})),t.effects.define("size",(function(e,n){var i,o,r,s=t(this),a=["fontSize"],c=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],l=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],u=e.mode,h="effect"!==u,d=e.scale||"both",p=e.origin||["middle","center"],A=s.css("position"),f=s.position(),g=t.effects.scaledDimensions(s),m=e.from||g,b=e.to||t.effects.scaledDimensions(s,0);t.effects.createPlaceholder(s),"show"===u&&(r=m,m=b,b=r),o={from:{y:m.height/g.height,x:m.width/g.width},to:{y:b.height/g.height,x:b.width/g.width}},"box"!==d&&"both"!==d||(o.from.y!==o.to.y&&(m=t.effects.setTransition(s,c,o.from.y,m),b=t.effects.setTransition(s,c,o.to.y,b)),o.from.x!==o.to.x&&(m=t.effects.setTransition(s,l,o.from.x,m),b=t.effects.setTransition(s,l,o.to.x,b))),"content"!==d&&"both"!==d||o.from.y!==o.to.y&&(m=t.effects.setTransition(s,a,o.from.y,m),b=t.effects.setTransition(s,a,o.to.y,b)),p&&(i=t.effects.getBaseline(p,g),m.top=(g.outerHeight-m.outerHeight)*i.y+f.top,m.left=(g.outerWidth-m.outerWidth)*i.x+f.left,b.top=(g.outerHeight-b.outerHeight)*i.y+f.top,b.left=(g.outerWidth-b.outerWidth)*i.x+f.left),delete m.outerHeight,delete m.outerWidth,s.css(m),"content"!==d&&"both"!==d||(c=c.concat(["marginTop","marginBottom"]).concat(a),l=l.concat(["marginLeft","marginRight"]),s.find("*[width]").each((function(){var n=t(this),i=t.effects.scaledDimensions(n),r={height:i.height*o.from.y,width:i.width*o.from.x,outerHeight:i.outerHeight*o.from.y,outerWidth:i.outerWidth*o.from.x},s={height:i.height*o.to.y,width:i.width*o.to.x,outerHeight:i.height*o.to.y,outerWidth:i.width*o.to.x};o.from.y!==o.to.y&&(r=t.effects.setTransition(n,c,o.from.y,r),s=t.effects.setTransition(n,c,o.to.y,s)),o.from.x!==o.to.x&&(r=t.effects.setTransition(n,l,o.from.x,r),s=t.effects.setTransition(n,l,o.to.x,s)),h&&t.effects.saveStyle(n),n.css(r),n.animate(s,e.duration,e.easing,(function(){h&&t.effects.restoreStyle(n)}))}))),s.animate(b,{queue:!1,duration:e.duration,easing:e.easing,complete:function(){var e=s.offset();0===b.opacity&&s.css("opacity",m.opacity),h||(s.css("position","static"===A?"relative":A).offset(e),t.effects.saveStyle(s)),n()}})})),t.effects.define("scale",(function(e,n){var i=t(this),o=e.mode,r=parseInt(e.percent,10)||(0===parseInt(e.percent,10)||"effect"!==o?0:100),s=t.extend(!0,{from:t.effects.scaledDimensions(i),to:t.effects.scaledDimensions(i,r,e.direction||"both"),origin:e.origin||["middle","center"]},e);e.fade&&(s.from.opacity=1,s.to.opacity=0),t.effects.effect.size.call(this,s,n)})),t.effects.define("puff","hide",(function(e,n){var i=t.extend(!0,{},e,{fade:!0,percent:parseInt(e.percent,10)||150});t.effects.effect.scale.call(this,i,n)})),t.effects.define("pulsate","show",(function(e,n){var i=t(this),o=e.mode,r="show"===o,s=r||"hide"===o,a=2*(e.times||5)+(s?1:0),c=e.duration/a,l=0,u=1,h=i.queue().length;for(!r&&i.is(":visible")||(i.css("opacity",0).show(),l=1);u0&&r.is(":visible")):(/^(input|select|textarea|button|object)$/.test(c)?(s=!e.disabled)&&(a=t(e).closest("fieldset")[0])&&(s=!a.disabled):s="a"===c&&e.href||n,s&&t(e).is(":visible")&&function(t){for(var e=t.css("visibility");"inherit"===e;)e=(t=t.parent()).css("visibility");return"visible"===e}(t(e)))},t.extend(t.expr.pseudos,{focusable:function(e){return t.ui.focusable(e,null!=t.attr(e,"tabindex"))}}),t.ui.focusable,t.fn._form=function(){return"string"==typeof this[0].form?this.closest("form"):t(this[0].form)},t.ui.formResetMixin={_formResetHandler:function(){var e=t(this);setTimeout((function(){var n=e.data("ui-form-reset-instances");t.each(n,(function(){this.refresh()}))}))},_bindFormResetHandler:function(){if(this.form=this.element._form(),this.form.length){var t=this.form.data("ui-form-reset-instances")||[];t.length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t)}},_unbindFormResetHandler:function(){if(this.form.length){var e=this.form.data("ui-form-reset-instances");e.splice(t.inArray(this,e),1),e.length?this.form.data("ui-form-reset-instances",e):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset")}}},t.expr.pseudos||(t.expr.pseudos=t.expr[":"]),t.uniqueSort||(t.uniqueSort=t.unique),!t.escapeSelector){var _=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g,I=function(t,e){return e?"\0"===t?"�":t.slice(0,-1)+"\\"+t.charCodeAt(t.length-1).toString(16)+" ":"\\"+t};t.escapeSelector=function(t){return(t+"").replace(_,I)}}t.fn.even&&t.fn.odd||t.fn.extend({even:function(){return this.filter((function(t){return t%2==0}))},odd:function(){return this.filter((function(t){return t%2==1}))}}),t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.fn.labels=function(){var e,n,i,o,r;return this.length?this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(o=this.eq(0).parents("label"),(i=this.attr("id"))&&(r=(e=this.eq(0).parents().last()).add(e.length?e.siblings():this.siblings()),n="label[for='"+t.escapeSelector(i)+"']",o=o.add(r.find(n).addBack(n))),this.pushStack(o)):this.pushStack([])},t.fn.scrollParent=function(e){var n=this.css("position"),i="absolute"===n,o=e?/(auto|scroll|hidden)/:/(auto|scroll)/,r=this.parents().filter((function(){var e=t(this);return(!i||"static"!==e.css("position"))&&o.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))})).eq(0);return"fixed"!==n&&r.length?r:t(this[0].ownerDocument||document)},t.extend(t.expr.pseudos,{tabbable:function(e){var n=t.attr(e,"tabindex"),i=null!=n;return(!i||n>=0)&&t.ui.focusable(e,i)}}),t.fn.extend({uniqueId:(y=0,function(){return this.each((function(){this.id||(this.id="ui-id-"+ ++y)}))}),removeUniqueId:function(){return this.each((function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")}))}}),t.widget("ui.accordion",{version:"1.13.3",options:{active:0,animate:{},classes:{"ui-accordion-header":"ui-corner-top","ui-accordion-header-collapsed":"ui-corner-all","ui-accordion-content":"ui-corner-bottom"},collapsible:!1,event:"click",header:function(t){return t.find("> li > :first-child").add(t.find("> :not(li)").even())},heightStyle:"auto",icons:{activeHeader:"ui-icon-triangle-1-s",header:"ui-icon-triangle-1-e"},activate:null,beforeActivate:null},hideProps:{borderTopWidth:"hide",borderBottomWidth:"hide",paddingTop:"hide",paddingBottom:"hide",height:"hide"},showProps:{borderTopWidth:"show",borderBottomWidth:"show",paddingTop:"show",paddingBottom:"show",height:"show"},_create:function(){var e=this.options;this.prevShow=this.prevHide=t(),this._addClass("ui-accordion","ui-widget ui-helper-reset"),this.element.attr("role","tablist"),e.collapsible||!1!==e.active&&null!=e.active||(e.active=0),this._processPanels(),e.active<0&&(e.active+=this.headers.length),this._refresh()},_getCreateEventData:function(){return{header:this.active,panel:this.active.length?this.active.next():t()}},_createIcons:function(){var e,n,i=this.options.icons;i&&(e=t(""),this._addClass(e,"ui-accordion-header-icon","ui-icon "+i.header),e.prependTo(this.headers),n=this.active.children(".ui-accordion-header-icon"),this._removeClass(n,i.header)._addClass(n,null,i.activeHeader)._addClass(this.headers,"ui-accordion-icons"))},_destroyIcons:function(){this._removeClass(this.headers,"ui-accordion-icons"),this.headers.children(".ui-accordion-header-icon").remove()},_destroy:function(){var t;this.element.removeAttr("role"),this.headers.removeAttr("role aria-expanded aria-selected aria-controls tabIndex").removeUniqueId(),this._destroyIcons(),t=this.headers.next().css("display","").removeAttr("role aria-hidden aria-labelledby").removeUniqueId(),"content"!==this.options.heightStyle&&t.css("height","")},_setOption:function(t,e){"active"!==t?("event"===t&&(this.options.event&&this._off(this.headers,this.options.event),this._setupEvents(e)),this._super(t,e),"collapsible"!==t||e||!1!==this.options.active||this._activate(0),"icons"===t&&(this._destroyIcons(),e&&this._createIcons())):this._activate(e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t),this._toggleClass(null,"ui-state-disabled",!!t),this._toggleClass(this.headers.add(this.headers.next()),null,"ui-state-disabled",!!t)},_keydown:function(e){if(!e.altKey&&!e.ctrlKey){var n=t.ui.keyCode,i=this.headers.length,o=this.headers.index(e.target),r=!1;switch(e.keyCode){case n.RIGHT:case n.DOWN:r=this.headers[(o+1)%i];break;case n.LEFT:case n.UP:r=this.headers[(o-1+i)%i];break;case n.SPACE:case n.ENTER:this._eventHandler(e);break;case n.HOME:r=this.headers[0];break;case n.END:r=this.headers[i-1]}r&&(t(e.target).attr("tabIndex",-1),t(r).attr("tabIndex",0),t(r).trigger("focus"),e.preventDefault())}},_panelKeyDown:function(e){e.keyCode===t.ui.keyCode.UP&&e.ctrlKey&&t(e.currentTarget).prev().trigger("focus")},refresh:function(){var e=this.options;this._processPanels(),!1===e.active&&!0===e.collapsible||!this.headers.length?(e.active=!1,this.active=t()):!1===e.active?this._activate(0):this.active.length&&!t.contains(this.element[0],this.active[0])?this.headers.length===this.headers.find(".ui-state-disabled").length?(e.active=!1,this.active=t()):this._activate(Math.max(0,e.active-1)):e.active=this.headers.index(this.active),this._destroyIcons(),this._refresh()},_processPanels:function(){var t=this.headers,e=this.panels;"function"==typeof this.options.header?this.headers=this.options.header(this.element):this.headers=this.element.find(this.options.header),this._addClass(this.headers,"ui-accordion-header ui-accordion-header-collapsed","ui-state-default"),this.panels=this.headers.next().filter(":not(.ui-accordion-content-active)").hide(),this._addClass(this.panels,"ui-accordion-content","ui-helper-reset ui-widget-content"),e&&(this._off(t.not(this.headers)),this._off(e.not(this.panels)))},_refresh:function(){var e,n=this.options,i=n.heightStyle,o=this.element.parent();this.active=this._findActive(n.active),this._addClass(this.active,"ui-accordion-header-active","ui-state-active")._removeClass(this.active,"ui-accordion-header-collapsed"),this._addClass(this.active.next(),"ui-accordion-content-active"),this.active.next().show(),this.headers.attr("role","tab").each((function(){var e=t(this),n=e.uniqueId().attr("id"),i=e.next(),o=i.uniqueId().attr("id");e.attr("aria-controls",o),i.attr("aria-labelledby",n)})).next().attr("role","tabpanel"),this.headers.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}).next().attr({"aria-hidden":"true"}).hide(),this.active.length?this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}).next().attr({"aria-hidden":"false"}):this.headers.eq(0).attr("tabIndex",0),this._createIcons(),this._setupEvents(n.event),"fill"===i?(e=o.height(),this.element.siblings(":visible").each((function(){var n=t(this),i=n.css("position");"absolute"!==i&&"fixed"!==i&&(e-=n.outerHeight(!0))})),this.headers.each((function(){e-=t(this).outerHeight(!0)})),this.headers.next().each((function(){t(this).height(Math.max(0,e-t(this).innerHeight()+t(this).height()))})).css("overflow","auto")):"auto"===i&&(e=0,this.headers.next().each((function(){var n=t(this).is(":visible");n||t(this).show(),e=Math.max(e,t(this).css("height","").height()),n||t(this).hide()})).height(e))},_activate:function(e){var n=this._findActive(e)[0];n!==this.active[0]&&(n=n||this.active[0],this._eventHandler({target:n,currentTarget:n,preventDefault:t.noop}))},_findActive:function(e){return"number"==typeof e?this.headers.eq(e):t()},_setupEvents:function(e){var n={keydown:"_keydown"};e&&t.each(e.split(" "),(function(t,e){n[e]="_eventHandler"})),this._off(this.headers.add(this.headers.next())),this._on(this.headers,n),this._on(this.headers.next(),{keydown:"_panelKeyDown"}),this._hoverable(this.headers),this._focusable(this.headers)},_eventHandler:function(e){var n,i,o=this.options,r=this.active,s=t(e.currentTarget),a=s[0]===r[0],c=a&&o.collapsible,l=c?t():s.next(),u=r.next(),h={oldHeader:r,oldPanel:u,newHeader:c?t():s,newPanel:l};e.preventDefault(),a&&!o.collapsible||!1===this._trigger("beforeActivate",e,h)||(o.active=!c&&this.headers.index(s),this.active=a?t():s,this._toggle(h),this._removeClass(r,"ui-accordion-header-active","ui-state-active"),o.icons&&(n=r.children(".ui-accordion-header-icon"),this._removeClass(n,null,o.icons.activeHeader)._addClass(n,null,o.icons.header)),a||(this._removeClass(s,"ui-accordion-header-collapsed")._addClass(s,"ui-accordion-header-active","ui-state-active"),o.icons&&(i=s.children(".ui-accordion-header-icon"),this._removeClass(i,null,o.icons.header)._addClass(i,null,o.icons.activeHeader)),this._addClass(s.next(),"ui-accordion-content-active")))},_toggle:function(e){var n=e.newPanel,i=this.prevShow.length?this.prevShow:e.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=n,this.prevHide=i,this.options.animate?this._animate(n,i,e):(i.hide(),n.show(),this._toggleComplete(e)),i.attr({"aria-hidden":"true"}),i.prev().attr({"aria-selected":"false","aria-expanded":"false"}),n.length&&i.length?i.prev().attr({tabIndex:-1,"aria-expanded":"false"}):n.length&&this.headers.filter((function(){return 0===parseInt(t(this).attr("tabIndex"),10)})).attr("tabIndex",-1),n.attr("aria-hidden","false").prev().attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_animate:function(t,e,n){var i,o,r,s=this,a=0,c=t.css("box-sizing"),l=t.length&&(!e.length||t.index()",delay:300,options:{icons:{submenu:"ui-icon-caret-1-e"},items:"> *",menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.lastMousePosition={x:null,y:null},this.element.uniqueId().attr({role:this.options.role,tabIndex:0}),this._addClass("ui-menu","ui-widget ui-widget-content"),this._on({"mousedown .ui-menu-item":function(t){t.preventDefault(),this._activateItem(t)},"click .ui-menu-item":function(e){var n=t(e.target),i=t(t.ui.safeActiveElement(this.document[0]));!this.mouseHandled&&n.not(".ui-state-disabled").length&&(this.select(e),e.isPropagationStopped()||(this.mouseHandled=!0),n.has(".ui-menu").length?this.expand(e):!this.element.is(":focus")&&i.closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":"_activateItem","mousemove .ui-menu-item":"_activateItem",mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var n=this.active||this._menuItems().first();e||this.focus(t,n)},blur:function(e){this._delay((function(){!t.contains(this.element[0],t.ui.safeActiveElement(this.document[0]))&&this.collapseAll(e)}))},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){this._closeOnDocumentClick(t)&&this.collapseAll(t,!0),this.mouseHandled=!1}})},_activateItem:function(e){if(!this.previousFilter&&(e.clientX!==this.lastMousePosition.x||e.clientY!==this.lastMousePosition.y)){this.lastMousePosition={x:e.clientX,y:e.clientY};var n=t(e.target).closest(".ui-menu-item"),i=t(e.currentTarget);n[0]===i[0]&&(i.is(".ui-state-active")||(this._removeClass(i.siblings().children(".ui-state-active"),null,"ui-state-active"),this.focus(e,i)))}},_destroy:function(){var e=this.element.find(".ui-menu-item").removeAttr("role aria-disabled").children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(),e.children().each((function(){var e=t(this);e.data("ui-menu-submenu-caret")&&e.remove()}))},_keydown:function(e){var n,i,o,r,s=!0;switch(e.keyCode){case t.ui.keyCode.PAGE_UP:this.previousPage(e);break;case t.ui.keyCode.PAGE_DOWN:this.nextPage(e);break;case t.ui.keyCode.HOME:this._move("first","first",e);break;case t.ui.keyCode.END:this._move("last","last",e);break;case t.ui.keyCode.UP:this.previous(e);break;case t.ui.keyCode.DOWN:this.next(e);break;case t.ui.keyCode.LEFT:this.collapse(e);break;case t.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(e);break;case t.ui.keyCode.ENTER:case t.ui.keyCode.SPACE:this._activate(e);break;case t.ui.keyCode.ESCAPE:this.collapse(e);break;default:s=!1,i=this.previousFilter||"",r=!1,o=e.keyCode>=96&&e.keyCode<=105?(e.keyCode-96).toString():String.fromCharCode(e.keyCode),clearTimeout(this.filterTimer),o===i?r=!0:o=i+o,n=this._filterMenuItems(o),(n=r&&-1!==n.index(this.active.next())?this.active.nextAll(".ui-menu-item"):n).length||(o=String.fromCharCode(e.keyCode),n=this._filterMenuItems(o)),n.length?(this.focus(e,n),this.previousFilter=o,this.filterTimer=this._delay((function(){delete this.previousFilter}),1e3)):delete this.previousFilter}s&&e.preventDefault()},_activate:function(t){this.active&&!this.active.is(".ui-state-disabled")&&(this.active.children("[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var e,n,i,o,r=this,s=this.options.icons.submenu,a=this.element.find(this.options.menus);this._toggleClass("ui-menu-icons",null,!!this.element.find(".ui-icon").length),n=a.filter(":not(.ui-menu)").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each((function(){var e=t(this),n=e.prev(),i=t("").data("ui-menu-submenu-caret",!0);r._addClass(i,"ui-menu-icon","ui-icon "+s),n.attr("aria-haspopup","true").prepend(i),e.attr("aria-labelledby",n.attr("id"))})),this._addClass(n,"ui-menu","ui-widget ui-widget-content ui-front"),(e=a.add(this.element).find(this.options.items)).not(".ui-menu-item").each((function(){var e=t(this);r._isDivider(e)&&r._addClass(e,"ui-menu-divider","ui-widget-content")})),o=(i=e.not(".ui-menu-item, .ui-menu-divider")).children().not(".ui-menu").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),this._addClass(i,"ui-menu-item")._addClass(o,"ui-menu-item-wrapper"),e.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!t.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){if("icons"===t){var n=this.element.find(".ui-menu-icon");this._removeClass(n,null,this.options.icons.submenu)._addClass(n,null,e.submenu)}this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",String(t)),this._toggleClass(null,"ui-state-disabled",!!t)},focus:function(t,e){var n,i,o;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),i=this.active.children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",i.attr("id")),o=this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper"),this._addClass(o,null,"ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay((function(){this._close()}),this.delay),(n=e.children(".ui-menu")).length&&t&&/^mouse/.test(t.type)&&this._startOpening(n),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(e){var n,i,o,r,s,a;this._hasScroll()&&(n=parseFloat(t.css(this.activeMenu[0],"borderTopWidth"))||0,i=parseFloat(t.css(this.activeMenu[0],"paddingTop"))||0,o=e.offset().top-this.activeMenu.offset().top-n-i,r=this.activeMenu.scrollTop(),s=this.activeMenu.height(),a=e.outerHeight(),o<0?this.activeMenu.scrollTop(r+o):o+a>s&&this.activeMenu.scrollTop(r+o-s+a))},blur:function(t,e){e||clearTimeout(this.timer),this.active&&(this._removeClass(this.active.children(".ui-menu-item-wrapper"),null,"ui-state-active"),this._trigger("blur",t,{item:this.active}),this.active=null)},_startOpening:function(t){clearTimeout(this.timer),"true"===t.attr("aria-hidden")&&(this.timer=this._delay((function(){this._close(),this._open(t)}),this.delay))},_open:function(e){var n=t.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(e.parents(".ui-menu")).hide().attr("aria-hidden","true"),e.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(n)},collapseAll:function(e,n){clearTimeout(this.timer),this.timer=this._delay((function(){var i=n?this.element:t(e&&e.target).closest(this.element.find(".ui-menu"));i.length||(i=this.element),this._close(i),this.blur(e),this._removeClass(i.find(".ui-state-active"),null,"ui-state-active"),this.activeMenu=i}),n?0:this.delay)},_close:function(t){t||(t=this.active?this.active.parent():this.element),t.find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false")},_closeOnDocumentClick:function(e){return!t(e.target).closest(".ui-menu").length},_isDivider:function(t){return!/[^\-\u2014\u2013\s]/.test(t.text())},collapse:function(t){var e=this.active&&this.active.parent().closest(".ui-menu-item",this.element);e&&e.length&&(this._close(),this.focus(t,e))},expand:function(t){var e=this.active&&this._menuItems(this.active.children(".ui-menu")).first();e&&e.length&&(this._open(e.parent()),this._delay((function(){this.focus(t,e)})))},next:function(t){this._move("next","first",t)},previous:function(t){this._move("prev","last",t)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_menuItems:function(t){return(t||this.element).find(this.options.items).filter(".ui-menu-item")},_move:function(t,e,n){var i;this.active&&(i="first"===t||"last"===t?this.active["first"===t?"prevAll":"nextAll"](".ui-menu-item").last():this.active[t+"All"](".ui-menu-item").first()),i&&i.length&&this.active||(i=this._menuItems(this.activeMenu)[e]()),this.focus(n,i)},nextPage:function(e){var n,i,o;this.active?this.isLastItem()||(this._hasScroll()?(i=this.active.offset().top,o=this.element.innerHeight(),0===t.fn.jquery.indexOf("3.2.")&&(o+=this.element[0].offsetHeight-this.element.outerHeight()),this.active.nextAll(".ui-menu-item").each((function(){return(n=t(this)).offset().top-i-o<0})),this.focus(e,n)):this.focus(e,this._menuItems(this.activeMenu)[this.active?"last":"first"]())):this.next(e)},previousPage:function(e){var n,i,o;this.active?this.isFirstItem()||(this._hasScroll()?(i=this.active.offset().top,o=this.element.innerHeight(),0===t.fn.jquery.indexOf("3.2.")&&(o+=this.element[0].offsetHeight-this.element.outerHeight()),this.active.prevAll(".ui-menu-item").each((function(){return(n=t(this)).offset().top-i+o>0})),this.focus(e,n)):this.focus(e,this._menuItems(this.activeMenu).first())):this.next(e)},_hasScroll:function(){return this.element.outerHeight()",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,liveRegionTimer:null,_create:function(){var e,n,i,o=this.element[0].nodeName.toLowerCase(),r="textarea"===o,s="input"===o;this.isMultiLine=r||!s&&this._isContentEditable(this.element),this.valueMethod=this.element[r||s?"val":"text"],this.isNewMenu=!0,this._addClass("ui-autocomplete-input"),this.element.attr("autocomplete","off"),this._on(this.element,{keydown:function(o){if(this.element.prop("readOnly"))return e=!0,i=!0,void(n=!0);e=!1,i=!1,n=!1;var r=t.ui.keyCode;switch(o.keyCode){case r.PAGE_UP:e=!0,this._move("previousPage",o);break;case r.PAGE_DOWN:e=!0,this._move("nextPage",o);break;case r.UP:e=!0,this._keyEvent("previous",o);break;case r.DOWN:e=!0,this._keyEvent("next",o);break;case r.ENTER:this.menu.active&&(e=!0,o.preventDefault(),this.menu.select(o));break;case r.TAB:this.menu.active&&this.menu.select(o);break;case r.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(o),o.preventDefault());break;default:n=!0,this._searchTimeout(o)}},keypress:function(i){if(e)return e=!1,void(this.isMultiLine&&!this.menu.element.is(":visible")||i.preventDefault());if(!n){var o=t.ui.keyCode;switch(i.keyCode){case o.PAGE_UP:this._move("previousPage",i);break;case o.PAGE_DOWN:this._move("nextPage",i);break;case o.UP:this._keyEvent("previous",i);break;case o.DOWN:this._keyEvent("next",i)}}},input:function(t){if(i)return i=!1,void t.preventDefault();this._searchTimeout(t)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(t){clearTimeout(this.searching),this.close(t),this._change(t)}}),this._initSource(),this.menu=t("
      ").appendTo(this._appendTo()).menu({role:null}).hide().attr({unselectable:"on"}).menu("instance"),this._addClass(this.menu.element,"ui-autocomplete","ui-front"),this._on(this.menu.element,{mousedown:function(t){t.preventDefault()},menufocus:function(e,n){var i,o;if(this.isNewMenu&&(this.isNewMenu=!1,e.originalEvent&&/^mouse/.test(e.originalEvent.type)))return this.menu.blur(),void this.document.one("mousemove",(function(){t(e.target).trigger(e.originalEvent)}));o=n.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",e,{item:o})&&e.originalEvent&&/^key/.test(e.originalEvent.type)&&this._value(o.value),(i=n.item.attr("aria-label")||o.value)&&String.prototype.trim.call(i).length&&(clearTimeout(this.liveRegionTimer),this.liveRegionTimer=this._delay((function(){this.liveRegion.html(t("
      ").text(i))}),100))},menuselect:function(e,n){var i=n.item.data("ui-autocomplete-item"),o=this.previous;this.element[0]!==t.ui.safeActiveElement(this.document[0])&&(this.element.trigger("focus"),this.previous=o,this._delay((function(){this.previous=o,this.selectedItem=i}))),!1!==this._trigger("select",e,{item:i})&&this._value(i.value),this.term=this._value(),this.close(e),this.selectedItem=i}}),this.liveRegion=t("
      ",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(t,e){this._super(t,e),"source"===t&&this._initSource(),"appendTo"===t&&this.menu.element.appendTo(this._appendTo()),"disabled"===t&&e&&this.xhr&&this.xhr.abort()},_isEventTargetInWidget:function(e){var n=this.menu.element[0];return e.target===this.element[0]||e.target===n||t.contains(n,e.target)},_closeOnClickOutside:function(t){this._isEventTargetInWidget(t)||this.close()},_appendTo:function(){var e=this.options.appendTo;return e&&(e=e.jquery||e.nodeType?t(e):this.document.find(e).eq(0)),e&&e[0]||(e=this.element.closest(".ui-front, dialog")),e.length||(e=this.document[0].body),e},_initSource:function(){var e,n,i=this;Array.isArray(this.options.source)?(e=this.options.source,this.source=function(n,i){i(t.ui.autocomplete.filter(e,n.term))}):"string"==typeof this.options.source?(n=this.options.source,this.source=function(e,o){i.xhr&&i.xhr.abort(),i.xhr=t.ajax({url:n,data:e,dataType:"json",success:function(t){o(t)},error:function(){o([])}})}):this.source=this.options.source},_searchTimeout:function(t){clearTimeout(this.searching),this.searching=this._delay((function(){var e=this.term===this._value(),n=this.menu.element.is(":visible"),i=t.altKey||t.ctrlKey||t.metaKey||t.shiftKey;e&&(!e||n||i)||(this.selectedItem=null,this.search(null,t))}),this.options.delay)},search:function(t,e){return t=null!=t?t:this._value(),this.term=this._value(),t.length").append(t("
      ").text(n.label)).appendTo(e)},_move:function(t,e){if(this.menu.element.is(":visible"))return this.menu.isFirstItem()&&/^previous/.test(t)||this.menu.isLastItem()&&/^next/.test(t)?(this.isMultiLine||this._value(this.term),void this.menu.blur()):void this.menu[t](e);this.search(null,e)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(t,e){this.isMultiLine&&!this.menu.element.is(":visible")||(this._move(t,e),e.preventDefault())},_isContentEditable:function(t){if(!t.length)return!1;var e=t.prop("contentEditable");return"inherit"===e?this._isContentEditable(t.parent()):"true"===e}}),t.extend(t.ui.autocomplete,{escapeRegex:function(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(e,n){var i=new RegExp(t.ui.autocomplete.escapeRegex(n),"i");return t.grep(e,(function(t){return i.test(t.label||t.value||t)}))}}),t.widget("ui.autocomplete",t.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(t){return t+(t>1?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(e){var n;this._superApply(arguments),this.options.disabled||this.cancelSearch||(n=e&&e.length?this.options.messages.results(e.length):this.options.messages.noResults,clearTimeout(this.liveRegionTimer),this.liveRegionTimer=this._delay((function(){this.liveRegion.html(t("
      ").text(n))}),100))}}),t.ui.autocomplete;var D,S=/ui-corner-([a-z]){2,6}/g;function T(){this._curInst=null,this._keyEvent=!1,this._disabledInputs=[],this._datepickerShowing=!1,this._inDialog=!1,this._mainDivId="ui-datepicker-div",this._inlineClass="ui-datepicker-inline",this._appendClass="ui-datepicker-append",this._triggerClass="ui-datepicker-trigger",this._dialogClass="ui-datepicker-dialog",this._disableClass="ui-datepicker-disabled",this._unselectableClass="ui-datepicker-unselectable",this._currentClass="ui-datepicker-current-day",this._dayOverClass="ui-datepicker-days-cell-over",this.regional=[],this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:"",selectMonthLabel:"Select month",selectYearLabel:"Select year"},this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:!1,hideIfNoPrevNext:!1,navigationAsDateFormat:!1,gotoCurrent:!1,changeMonth:!1,changeYear:!1,yearRange:"c-10:c+10",showOtherMonths:!1,selectOtherMonths:!1,showWeek:!1,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,onUpdateDatepicker:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:!0,showButtonPanel:!1,autoSize:!1,disabled:!1},t.extend(this._defaults,this.regional[""]),this.regional.en=t.extend(!0,{},this.regional[""]),this.regional["en-US"]=t.extend(!0,{},this.regional.en),this.dpDiv=O(t("
      "))}function O(e){var n="button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";return e.on("mouseout",n,(function(){t(this).removeClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&t(this).removeClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&t(this).removeClass("ui-datepicker-next-hover")})).on("mouseover",n,M)}function M(){t.datepicker._isDisabledDatepicker(D.inline?D.dpDiv.parent()[0]:D.input[0])||(t(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"),t(this).addClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&t(this).addClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&t(this).addClass("ui-datepicker-next-hover"))}function P(e,n){for(var i in t.extend(e,n),n)null==n[i]&&(e[i]=n[i]);return e}t.widget("ui.controlgroup",{version:"1.13.3",defaultElement:"
      ",options:{direction:"horizontal",disabled:null,onlyVisible:!0,items:{button:"input[type=button], input[type=submit], input[type=reset], button, a",controlgroupLabel:".ui-controlgroup-label",checkboxradio:"input[type='checkbox'], input[type='radio']",selectmenu:"select",spinner:".ui-spinner-input"}},_create:function(){this._enhance()},_enhance:function(){this.element.attr("role","toolbar"),this.refresh()},_destroy:function(){this._callChildMethod("destroy"),this.childWidgets.removeData("ui-controlgroup-data"),this.element.removeAttr("role"),this.options.items.controlgroupLabel&&this.element.find(this.options.items.controlgroupLabel).find(".ui-controlgroup-label-contents").contents().unwrap()},_initWidgets:function(){var e=this,n=[];t.each(this.options.items,(function(i,o){var r,s={};if(o)return"controlgroupLabel"===i?((r=e.element.find(o)).each((function(){var e=t(this);e.children(".ui-controlgroup-label-contents").length||e.contents().wrapAll("")})),e._addClass(r,null,"ui-widget ui-widget-content ui-state-default"),void(n=n.concat(r.get()))):void(t.fn[i]&&(s=e["_"+i+"Options"]?e["_"+i+"Options"]("middle"):{classes:{}},e.element.find(o).each((function(){var o=t(this),r=o[i]("instance"),a=t.widget.extend({},s);if("button"!==i||!o.parent(".ui-spinner").length){r||(r=o[i]()[i]("instance")),r&&(a.classes=e._resolveClassesValues(a.classes,r)),o[i](a);var c=o[i]("widget");t.data(c[0],"ui-controlgroup-data",r||o[i]("instance")),n.push(c[0])}}))))})),this.childWidgets=t(t.uniqueSort(n)),this._addClass(this.childWidgets,"ui-controlgroup-item")},_callChildMethod:function(e){this.childWidgets.each((function(){var n=t(this).data("ui-controlgroup-data");n&&n[e]&&n[e]()}))},_updateCornerClass:function(t,e){var n=this._buildSimpleOptions(e,"label").classes.label;this._removeClass(t,null,"ui-corner-top ui-corner-bottom ui-corner-left ui-corner-right ui-corner-all"),this._addClass(t,null,n)},_buildSimpleOptions:function(t,e){var n="vertical"===this.options.direction,i={classes:{}};return i.classes[e]={middle:"",first:"ui-corner-"+(n?"top":"left"),last:"ui-corner-"+(n?"bottom":"right"),only:"ui-corner-all"}[t],i},_spinnerOptions:function(t){var e=this._buildSimpleOptions(t,"ui-spinner");return e.classes["ui-spinner-up"]="",e.classes["ui-spinner-down"]="",e},_buttonOptions:function(t){return this._buildSimpleOptions(t,"ui-button")},_checkboxradioOptions:function(t){return this._buildSimpleOptions(t,"ui-checkboxradio-label")},_selectmenuOptions:function(t){var e="vertical"===this.options.direction;return{width:!!e&&"auto",classes:{middle:{"ui-selectmenu-button-open":"","ui-selectmenu-button-closed":""},first:{"ui-selectmenu-button-open":"ui-corner-"+(e?"top":"tl"),"ui-selectmenu-button-closed":"ui-corner-"+(e?"top":"left")},last:{"ui-selectmenu-button-open":e?"":"ui-corner-tr","ui-selectmenu-button-closed":"ui-corner-"+(e?"bottom":"right")},only:{"ui-selectmenu-button-open":"ui-corner-top","ui-selectmenu-button-closed":"ui-corner-all"}}[t]}},_resolveClassesValues:function(e,n){var i={};return t.each(e,(function(t){var o=n.options.classes[t]||"";o=String.prototype.trim.call(o.replace(S,"")),i[t]=(o+" "+e[t]).replace(/\s+/g," ")})),i},_setOption:function(t,e){"direction"===t&&this._removeClass("ui-controlgroup-"+this.options.direction),this._super(t,e),"disabled"!==t?this.refresh():this._callChildMethod(e?"disable":"enable")},refresh:function(){var e,n=this;this._addClass("ui-controlgroup ui-controlgroup-"+this.options.direction),"horizontal"===this.options.direction&&this._addClass(null,"ui-helper-clearfix"),this._initWidgets(),e=this.childWidgets,this.options.onlyVisible&&(e=e.filter(":visible")),e.length&&(t.each(["first","last"],(function(t,i){var o=e[i]().data("ui-controlgroup-data");if(o&&n["_"+o.widgetName+"Options"]){var r=n["_"+o.widgetName+"Options"](1===e.length?"only":i);r.classes=n._resolveClassesValues(r.classes,o),o.element[o.widgetName](r)}else n._updateCornerClass(e[i](),i)})),this._callChildMethod("refresh"))}}),t.widget("ui.checkboxradio",[t.ui.formResetMixin,{version:"1.13.3",options:{disabled:null,label:null,icon:!0,classes:{"ui-checkboxradio-label":"ui-corner-all","ui-checkboxradio-icon":"ui-corner-all"}},_getCreateOptions:function(){var e,n,i,o=this._super()||{};return this._readType(),n=this.element.labels(),this.label=t(n[n.length-1]),this.label.length||t.error("No label found for checkboxradio widget"),this.originalLabel="",(i=this.label.contents().not(this.element[0])).length&&(this.originalLabel+=i.clone().wrapAll("
      ").parent().html()),this.originalLabel&&(o.label=this.originalLabel),null!=(e=this.element[0].disabled)&&(o.disabled=e),o},_create:function(){var t=this.element[0].checked;this._bindFormResetHandler(),null==this.options.disabled&&(this.options.disabled=this.element[0].disabled),this._setOption("disabled",this.options.disabled),this._addClass("ui-checkboxradio","ui-helper-hidden-accessible"),this._addClass(this.label,"ui-checkboxradio-label","ui-button ui-widget"),"radio"===this.type&&this._addClass(this.label,"ui-checkboxradio-radio-label"),this.options.label&&this.options.label!==this.originalLabel?this._updateLabel():this.originalLabel&&(this.options.label=this.originalLabel),this._enhance(),t&&this._addClass(this.label,"ui-checkboxradio-checked","ui-state-active"),this._on({change:"_toggleClasses",focus:function(){this._addClass(this.label,null,"ui-state-focus ui-visual-focus")},blur:function(){this._removeClass(this.label,null,"ui-state-focus ui-visual-focus")}})},_readType:function(){var e=this.element[0].nodeName.toLowerCase();this.type=this.element[0].type,"input"===e&&/radio|checkbox/.test(this.type)||t.error("Can't create checkboxradio on element.nodeName="+e+" and element.type="+this.type)},_enhance:function(){this._updateIcon(this.element[0].checked)},widget:function(){return this.label},_getRadioGroup:function(){var e=this.element[0].name,n="input[name='"+t.escapeSelector(e)+"']";return e?(this.form.length?t(this.form[0].elements).filter(n):t(n).filter((function(){return 0===t(this)._form().length}))).not(this.element):t([])},_toggleClasses:function(){var e=this.element[0].checked;this._toggleClass(this.label,"ui-checkboxradio-checked","ui-state-active",e),this.options.icon&&"checkbox"===this.type&&this._toggleClass(this.icon,null,"ui-icon-check ui-state-checked",e)._toggleClass(this.icon,null,"ui-icon-blank",!e),"radio"===this.type&&this._getRadioGroup().each((function(){var e=t(this).checkboxradio("instance");e&&e._removeClass(e.label,"ui-checkboxradio-checked","ui-state-active")}))},_destroy:function(){this._unbindFormResetHandler(),this.icon&&(this.icon.remove(),this.iconSpace.remove())},_setOption:function(t,e){if("label"!==t||e){if(this._super(t,e),"disabled"===t)return this._toggleClass(this.label,null,"ui-state-disabled",e),void(this.element[0].disabled=e);this.refresh()}},_updateIcon:function(e){var n="ui-icon ui-icon-background ";this.options.icon?(this.icon||(this.icon=t(""),this.iconSpace=t(" "),this._addClass(this.iconSpace,"ui-checkboxradio-icon-space")),"checkbox"===this.type?(n+=e?"ui-icon-check ui-state-checked":"ui-icon-blank",this._removeClass(this.icon,null,e?"ui-icon-blank":"ui-icon-check")):n+="ui-icon-blank",this._addClass(this.icon,"ui-checkboxradio-icon",n),e||this._removeClass(this.icon,null,"ui-icon-check ui-state-checked"),this.icon.prependTo(this.label).after(this.iconSpace)):void 0!==this.icon&&(this.icon.remove(),this.iconSpace.remove(),delete this.icon)},_updateLabel:function(){var t=this.label.contents().not(this.element[0]);this.icon&&(t=t.not(this.icon[0])),this.iconSpace&&(t=t.not(this.iconSpace[0])),t.remove(),this.label.append(this.options.label)},refresh:function(){var t=this.element[0].checked,e=this.element[0].disabled;this._updateIcon(t),this._toggleClass(this.label,"ui-checkboxradio-checked","ui-state-active",t),null!==this.options.label&&this._updateLabel(),e!==this.options.disabled&&this._setOptions({disabled:e})}}]),t.ui.checkboxradio,t.widget("ui.button",{version:"1.13.3",defaultElement:"
      "+(G[0]>0&&B===G[1]-1?"
      ":""):"")}x+=k}return x+=u,e._keyEvent=!1,x},_generateMonthYearHeader:function(t,e,n,i,o,r,s,a){var c,l,u,h,d,p,A,f,g=this._get(t,"changeMonth"),m=this._get(t,"changeYear"),b=this._get(t,"showMonthAfterYear"),v=this._get(t,"selectMonthLabel"),C=this._get(t,"selectYearLabel"),x="
      ",w="";if(r||!g)w+=""+s[e]+"";else{for(c=i&&i.getFullYear()===n,l=o&&o.getFullYear()===n,w+=""}if(b||(x+=w+(!r&&g&&m?"":" ")),!t.yearshtml)if(t.yearshtml="",r||!m)x+=""+n+"";else{for(h=this._get(t,"yearRange").split(":"),d=(new Date).getFullYear(),p=function(t){var e=t.match(/c[+\-].*/)?n+parseInt(t.substring(1),10):t.match(/[+\-].*/)?d+parseInt(t,10):parseInt(t,10);return isNaN(e)?d:e},A=p(h[0]),f=Math.max(A,p(h[1]||"")),A=i?Math.max(A,i.getFullYear()):A,f=o?Math.min(f,o.getFullYear()):f,t.yearshtml+="",x+=t.yearshtml,t.yearshtml=null}return x+=this._get(t,"yearSuffix"),b&&(x+=(!r&&g&&m?"":" ")+w),x+"
      "},_adjustInstDate:function(t,e,n){var i=t.selectedYear+("Y"===n?e:0),o=t.selectedMonth+("M"===n?e:0),r=Math.min(t.selectedDay,this._getDaysInMonth(i,o))+("D"===n?e:0),s=this._restrictMinMax(t,this._daylightSavingAdjust(new Date(i,o,r)));t.selectedDay=s.getDate(),t.drawMonth=t.selectedMonth=s.getMonth(),t.drawYear=t.selectedYear=s.getFullYear(),"M"!==n&&"Y"!==n||this._notifyChange(t)},_restrictMinMax:function(t,e){var n=this._getMinMaxDate(t,"min"),i=this._getMinMaxDate(t,"max"),o=n&&ei?i:o},_notifyChange:function(t){var e=this._get(t,"onChangeMonthYear");e&&e.apply(t.input?t.input[0]:null,[t.selectedYear,t.selectedMonth+1,t])},_getNumberOfMonths:function(t){var e=this._get(t,"numberOfMonths");return null==e?[1,1]:"number"==typeof e?[1,e]:e},_getMinMaxDate:function(t,e){return this._determineDate(t,this._get(t,e+"Date"),null)},_getDaysInMonth:function(t,e){return 32-this._daylightSavingAdjust(new Date(t,e,32)).getDate()},_getFirstDayOfMonth:function(t,e){return new Date(t,e,1).getDay()},_canAdjustMonth:function(t,e,n,i){var o=this._getNumberOfMonths(t),r=this._daylightSavingAdjust(new Date(n,i+(e<0?e:o[0]*o[1]),1));return e<0&&r.setDate(this._getDaysInMonth(r.getFullYear(),r.getMonth())),this._isInRange(t,r)},_isInRange:function(t,e){var n,i,o=this._getMinMaxDate(t,"min"),r=this._getMinMaxDate(t,"max"),s=null,a=null,c=this._get(t,"yearRange");return c&&(n=c.split(":"),i=(new Date).getFullYear(),s=parseInt(n[0],10),a=parseInt(n[1],10),n[0].match(/[+\-].*/)&&(s+=i),n[1].match(/[+\-].*/)&&(a+=i)),(!o||e.getTime()>=o.getTime())&&(!r||e.getTime()<=r.getTime())&&(!s||e.getFullYear()>=s)&&(!a||e.getFullYear()<=a)},_getFormatConfig:function(t){var e=this._get(t,"shortYearCutoff");return{shortYearCutoff:e="string"!=typeof e?e:(new Date).getFullYear()%100+parseInt(e,10),dayNamesShort:this._get(t,"dayNamesShort"),dayNames:this._get(t,"dayNames"),monthNamesShort:this._get(t,"monthNamesShort"),monthNames:this._get(t,"monthNames")}},_formatDate:function(t,e,n,i){e||(t.currentDay=t.selectedDay,t.currentMonth=t.selectedMonth,t.currentYear=t.selectedYear);var o=e?"object"==typeof e?e:this._daylightSavingAdjust(new Date(i,n,e)):this._daylightSavingAdjust(new Date(t.currentYear,t.currentMonth,t.currentDay));return this.formatDate(this._get(t,"dateFormat"),o,this._getFormatConfig(t))}}),t.fn.datepicker=function(e){if(!this.length)return this;t.datepicker.initialized||(t(document).on("mousedown",t.datepicker._checkExternalClick),t.datepicker.initialized=!0),0===t("#"+t.datepicker._mainDivId).length&&t("body").append(t.datepicker.dpDiv);var n=Array.prototype.slice.call(arguments,1);return"string"!=typeof e||"isDisabled"!==e&&"getDate"!==e&&"widget"!==e?"option"===e&&2===arguments.length&&"string"==typeof arguments[1]?t.datepicker["_"+e+"Datepicker"].apply(t.datepicker,[this[0]].concat(n)):this.each((function(){"string"==typeof e?t.datepicker["_"+e+"Datepicker"].apply(t.datepicker,[this].concat(n)):t.datepicker._attachDatepicker(this,e)})):t.datepicker["_"+e+"Datepicker"].apply(t.datepicker,[this[0]].concat(n))},t.datepicker=new T,t.datepicker.initialized=!1,t.datepicker.uuid=(new Date).getTime(),t.datepicker.version="1.13.3",t.datepicker,t.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var R,N=!1;function H(t){return function(){var e=this.element.val();t.apply(this,arguments),this._refresh(),e!==this.element.val()&&this._trigger("change")}}t(document).on("mouseup",(function(){N=!1})),t.widget("ui.mouse",{version:"1.13.3",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,(function(t){return e._mouseDown(t)})).on("click."+this.widgetName,(function(n){if(!0===t.data(n.target,e.widgetName+".preventClickEvent"))return t.removeData(n.target,e.widgetName+".preventClickEvent"),n.stopImmediatePropagation(),!1})),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(e){if(!N){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(e),this._mouseDownEvent=e;var n=this,i=1===e.which,o=!("string"!=typeof this.options.cancel||!e.target.nodeName)&&t(e.target).closest(this.options.cancel).length;return!(i&&!o&&this._mouseCapture(e)&&(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout((function(){n.mouseDelayMet=!0}),this.options.delay)),this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=!1!==this._mouseStart(e),!this._mouseStarted)?(e.preventDefault(),0):(!0===t.data(e.target,this.widgetName+".preventClickEvent")&&t.removeData(e.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return n._mouseMove(t)},this._mouseUpDelegate=function(t){return n._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),e.preventDefault(),N=!0,0)))}},_mouseMove:function(e){if(this._mouseMoved){if(t.ui.ie&&(!document.documentMode||document.documentMode<9)&&!e.button)return this._mouseUp(e);if(!e.which)if(e.originalEvent.altKey||e.originalEvent.ctrlKey||e.originalEvent.metaKey||e.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(e)}return(e.which||e.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=!1!==this._mouseStart(this._mouseDownEvent,e),this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,N=!1,e.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),t.ui.plugin={add:function(e,n,i){var o,r=t.ui[e].prototype;for(o in i)r.plugins[o]=r.plugins[o]||[],r.plugins[o].push([n,i[o]])},call:function(t,e,n,i){var o,r=t.plugins[e];if(r&&(i||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(o=0;o0||(this.handle=this._getHandle(e),!this.handle||(this._blurActiveElement(e),this._blockFrames(!0===n.iframeFix?"iframe":n.iframeFix),0)))},_blockFrames:function(e){this.iframeBlocks=this.document.find(e).map((function(){var e=t(this);return t("
      ").css("position","absolute").appendTo(e.parent()).outerWidth(e.outerWidth()).outerHeight(e.outerHeight()).offset(e.offset())[0]}))},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_blurActiveElement:function(e){var n=t.ui.safeActiveElement(this.document[0]);t(e.target).closest(n).length||t.ui.safeBlur(n)},_mouseStart:function(e){var n=this.options;return this.helper=this._createHelper(e),this._addClass(this.helper,"ui-draggable-dragging"),this._cacheHelperProportions(),t.ui.ddmanager&&(t.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(!0),this.offsetParent=this.helper.offsetParent(),this.hasFixedAncestor=this.helper.parents().filter((function(){return"fixed"===t(this).css("position")})).length>0,this.positionAbs=this.element.offset(),this._refreshOffsets(e),this.originalPosition=this.position=this._generatePosition(e,!1),this.originalPageX=e.pageX,this.originalPageY=e.pageY,n.cursorAt&&this._adjustOffsetFromHelper(n.cursorAt),this._setContainment(),!1===this._trigger("start",e)?(this._clear(),!1):(this._cacheHelperProportions(),t.ui.ddmanager&&!n.dropBehaviour&&t.ui.ddmanager.prepareOffsets(this,e),this._mouseDrag(e,!0),t.ui.ddmanager&&t.ui.ddmanager.dragStart(this,e),!0)},_refreshOffsets:function(t){this.offset={top:this.positionAbs.top-this.margins.top,left:this.positionAbs.left-this.margins.left,scroll:!1,parent:this._getParentOffset(),relative:this._getRelativeOffset()},this.offset.click={left:t.pageX-this.offset.left,top:t.pageY-this.offset.top}},_mouseDrag:function(e,n){if(this.hasFixedAncestor&&(this.offset.parent=this._getParentOffset()),this.position=this._generatePosition(e,!0),this.positionAbs=this._convertPositionTo("absolute"),!n){var i=this._uiHash();if(!1===this._trigger("drag",e,i))return this._mouseUp(new t.Event("mouseup",e)),!1;this.position=i.position}return this.helper[0].style.left=this.position.left+"px",this.helper[0].style.top=this.position.top+"px",t.ui.ddmanager&&t.ui.ddmanager.drag(this,e),!1},_mouseStop:function(e){var n=this,i=!1;return t.ui.ddmanager&&!this.options.dropBehaviour&&(i=t.ui.ddmanager.drop(this,e)),this.dropped&&(i=this.dropped,this.dropped=!1),"invalid"===this.options.revert&&!i||"valid"===this.options.revert&&i||!0===this.options.revert||"function"==typeof this.options.revert&&this.options.revert.call(this.element,i)?t(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),(function(){!1!==n._trigger("stop",e)&&n._clear()})):!1!==this._trigger("stop",e)&&this._clear(),!1},_mouseUp:function(e){return this._unblockFrames(),t.ui.ddmanager&&t.ui.ddmanager.dragStop(this,e),this.handleElement.is(e.target)&&this.element.trigger("focus"),t.ui.mouse.prototype._mouseUp.call(this,e)},cancel:function(){return this.helper.is(".ui-draggable-dragging")?this._mouseUp(new t.Event("mouseup",{target:this.element[0]})):this._clear(),this},_getHandle:function(e){return!this.options.handle||!!t(e.target).closest(this.element.find(this.options.handle)).length},_setHandleClassName:function(){this.handleElement=this.options.handle?this.element.find(this.options.handle):this.element,this._addClass(this.handleElement,"ui-draggable-handle")},_removeHandleClassName:function(){this._removeClass(this.handleElement,"ui-draggable-handle")},_createHelper:function(e){var n=this.options,i="function"==typeof n.helper,o=i?t(n.helper.apply(this.element[0],[e])):"clone"===n.helper?this.element.clone().removeAttr("id"):this.element;return o.parents("body").length||o.appendTo("parent"===n.appendTo?this.element[0].parentNode:n.appendTo),i&&o[0]===this.element[0]&&this._setPositionRelative(),o[0]===this.element[0]||/(fixed|absolute)/.test(o.css("position"))||o.css("position","absolute"),o},_setPositionRelative:function(){/^(?:r|a|f)/.test(this.element.css("position"))||(this.element[0].style.position="relative")},_adjustOffsetFromHelper:function(t){"string"==typeof t&&(t=t.split(" ")),Array.isArray(t)&&(t={left:+t[0],top:+t[1]||0}),"left"in t&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_isRootNode:function(t){return/(html|body)/i.test(t.tagName)||t===this.document[0]},_getParentOffset:function(){var e=this.offsetParent.offset(),n=this.document[0];return"absolute"===this.cssPosition&&this.scrollParent[0]!==n&&t.contains(this.scrollParent[0],this.offsetParent[0])&&(e.left+=this.scrollParent.scrollLeft(),e.top+=this.scrollParent.scrollTop()),this._isRootNode(this.offsetParent[0])&&(e={top:0,left:0}),{top:e.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:e.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"!==this.cssPosition)return{top:0,left:0};var t=this.element.position(),e=this._isRootNode(this.scrollParent[0]);return{top:t.top-(parseInt(this.helper.css("top"),10)||0)+(e?0:this.scrollParent.scrollTop()),left:t.left-(parseInt(this.helper.css("left"),10)||0)+(e?0:this.scrollParent.scrollLeft())}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var e,n,i,o=this.options,r=this.document[0];this.relativeContainer=null,o.containment?"window"!==o.containment?"document"!==o.containment?o.containment.constructor!==Array?("parent"===o.containment&&(o.containment=this.helper[0].parentNode),(i=(n=t(o.containment))[0])&&(e=/(scroll|auto)/.test(n.css("overflow")),this.containment=[(parseInt(n.css("borderLeftWidth"),10)||0)+(parseInt(n.css("paddingLeft"),10)||0),(parseInt(n.css("borderTopWidth"),10)||0)+(parseInt(n.css("paddingTop"),10)||0),(e?Math.max(i.scrollWidth,i.offsetWidth):i.offsetWidth)-(parseInt(n.css("borderRightWidth"),10)||0)-(parseInt(n.css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(e?Math.max(i.scrollHeight,i.offsetHeight):i.offsetHeight)-(parseInt(n.css("borderBottomWidth"),10)||0)-(parseInt(n.css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relativeContainer=n)):this.containment=o.containment:this.containment=[0,0,t(r).width()-this.helperProportions.width-this.margins.left,(t(r).height()||r.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]:this.containment=[t(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,t(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,t(window).scrollLeft()+t(window).width()-this.helperProportions.width-this.margins.left,t(window).scrollTop()+(t(window).height()||r.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]:this.containment=null},_convertPositionTo:function(t,e){e||(e=this.position);var n="absolute"===t?1:-1,i=this._isRootNode(this.scrollParent[0]);return{top:e.top+this.offset.relative.top*n+this.offset.parent.top*n-("fixed"===this.cssPosition?-this.offset.scroll.top:i?0:this.offset.scroll.top)*n,left:e.left+this.offset.relative.left*n+this.offset.parent.left*n-("fixed"===this.cssPosition?-this.offset.scroll.left:i?0:this.offset.scroll.left)*n}},_generatePosition:function(t,e){var n,i,o,r,s=this.options,a=this._isRootNode(this.scrollParent[0]),c=t.pageX,l=t.pageY;return a&&this.offset.scroll||(this.offset.scroll={top:this.scrollParent.scrollTop(),left:this.scrollParent.scrollLeft()}),e&&(this.containment&&(this.relativeContainer?(i=this.relativeContainer.offset(),n=[this.containment[0]+i.left,this.containment[1]+i.top,this.containment[2]+i.left,this.containment[3]+i.top]):n=this.containment,t.pageX-this.offset.click.leftn[2]&&(c=n[2]+this.offset.click.left),t.pageY-this.offset.click.top>n[3]&&(l=n[3]+this.offset.click.top)),s.grid&&(o=s.grid[1]?this.originalPageY+Math.round((l-this.originalPageY)/s.grid[1])*s.grid[1]:this.originalPageY,l=n?o-this.offset.click.top>=n[1]||o-this.offset.click.top>n[3]?o:o-this.offset.click.top>=n[1]?o-s.grid[1]:o+s.grid[1]:o,r=s.grid[0]?this.originalPageX+Math.round((c-this.originalPageX)/s.grid[0])*s.grid[0]:this.originalPageX,c=n?r-this.offset.click.left>=n[0]||r-this.offset.click.left>n[2]?r:r-this.offset.click.left>=n[0]?r-s.grid[0]:r+s.grid[0]:r),"y"===s.axis&&(c=this.originalPageX),"x"===s.axis&&(l=this.originalPageY)),{top:l-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.offset.scroll.top:a?0:this.offset.scroll.top),left:c-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.offset.scroll.left:a?0:this.offset.scroll.left)}},_clear:function(){this._removeClass(this.helper,"ui-draggable-dragging"),this.helper[0]===this.element[0]||this.cancelHelperRemoval||this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1,this.destroyOnClear&&this.destroy()},_trigger:function(e,n,i){return i=i||this._uiHash(),t.ui.plugin.call(this,e,[n,i,this],!0),/^(drag|start|stop)/.test(e)&&(this.positionAbs=this._convertPositionTo("absolute"),i.offset=this.positionAbs),t.Widget.prototype._trigger.call(this,e,n,i)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),t.ui.plugin.add("draggable","connectToSortable",{start:function(e,n,i){var o=t.extend({},n,{item:i.element});i.sortables=[],t(i.options.connectToSortable).each((function(){var n=t(this).sortable("instance");n&&!n.options.disabled&&(i.sortables.push(n),n.refreshPositions(),n._trigger("activate",e,o))}))},stop:function(e,n,i){var o=t.extend({},n,{item:i.element});i.cancelHelperRemoval=!1,t.each(i.sortables,(function(){var t=this;t.isOver?(t.isOver=0,i.cancelHelperRemoval=!0,t.cancelHelperRemoval=!1,t._storedCSS={position:t.placeholder.css("position"),top:t.placeholder.css("top"),left:t.placeholder.css("left")},t._mouseStop(e),t.options.helper=t.options._helper):(t.cancelHelperRemoval=!0,t._trigger("deactivate",e,o))}))},drag:function(e,n,i){t.each(i.sortables,(function(){var o=!1,r=this;r.positionAbs=i.positionAbs,r.helperProportions=i.helperProportions,r.offset.click=i.offset.click,r._intersectsWith(r.containerCache)&&(o=!0,t.each(i.sortables,(function(){return this.positionAbs=i.positionAbs,this.helperProportions=i.helperProportions,this.offset.click=i.offset.click,this!==r&&this._intersectsWith(this.containerCache)&&t.contains(r.element[0],this.element[0])&&(o=!1),o}))),o?(r.isOver||(r.isOver=1,i._parent=n.helper.parent(),r.currentItem=n.helper.appendTo(r.element).data("ui-sortable-item",!0),r.options._helper=r.options.helper,r.options.helper=function(){return n.helper[0]},e.target=r.currentItem[0],r._mouseCapture(e,!0),r._mouseStart(e,!0,!0),r.offset.click.top=i.offset.click.top,r.offset.click.left=i.offset.click.left,r.offset.parent.left-=i.offset.parent.left-r.offset.parent.left,r.offset.parent.top-=i.offset.parent.top-r.offset.parent.top,i._trigger("toSortable",e),i.dropped=r.element,t.each(i.sortables,(function(){this.refreshPositions()})),i.currentItem=i.element,r.fromOutside=i),r.currentItem&&(r._mouseDrag(e),n.position=r.position)):r.isOver&&(r.isOver=0,r.cancelHelperRemoval=!0,r.options._revert=r.options.revert,r.options.revert=!1,r._trigger("out",e,r._uiHash(r)),r._mouseStop(e,!0),r.options.revert=r.options._revert,r.options.helper=r.options._helper,r.placeholder&&r.placeholder.remove(),n.helper.appendTo(i._parent),i._refreshOffsets(e),n.position=i._generatePosition(e,!0),i._trigger("fromSortable",e),i.dropped=!1,t.each(i.sortables,(function(){this.refreshPositions()})))}))}}),t.ui.plugin.add("draggable","cursor",{start:function(e,n,i){var o=t("body"),r=i.options;o.css("cursor")&&(r._cursor=o.css("cursor")),o.css("cursor",r.cursor)},stop:function(e,n,i){var o=i.options;o._cursor&&t("body").css("cursor",o._cursor)}}),t.ui.plugin.add("draggable","opacity",{start:function(e,n,i){var o=t(n.helper),r=i.options;o.css("opacity")&&(r._opacity=o.css("opacity")),o.css("opacity",r.opacity)},stop:function(e,n,i){var o=i.options;o._opacity&&t(n.helper).css("opacity",o._opacity)}}),t.ui.plugin.add("draggable","scroll",{start:function(t,e,n){n.scrollParentNotHidden||(n.scrollParentNotHidden=n.helper.scrollParent(!1)),n.scrollParentNotHidden[0]!==n.document[0]&&"HTML"!==n.scrollParentNotHidden[0].tagName&&(n.overflowOffset=n.scrollParentNotHidden.offset())},drag:function(e,n,i){var o=i.options,r=!1,s=i.scrollParentNotHidden[0],a=i.document[0];s!==a&&"HTML"!==s.tagName?(o.axis&&"x"===o.axis||(i.overflowOffset.top+s.offsetHeight-e.pageY=0;d--)l=(c=i.snapElements[d].left-i.margins.left)+i.snapElements[d].width,h=(u=i.snapElements[d].top-i.margins.top)+i.snapElements[d].height,ml+f||vh+f||!t.contains(i.snapElements[d].item.ownerDocument,i.snapElements[d].item)?(i.snapElements[d].snapping&&i.options.snap.release&&i.options.snap.release.call(i.element,e,t.extend(i._uiHash(),{snapItem:i.snapElements[d].item})),i.snapElements[d].snapping=!1):("inner"!==A.snapMode&&(o=Math.abs(u-v)<=f,r=Math.abs(h-b)<=f,s=Math.abs(c-m)<=f,a=Math.abs(l-g)<=f,o&&(n.position.top=i._convertPositionTo("relative",{top:u-i.helperProportions.height,left:0}).top),r&&(n.position.top=i._convertPositionTo("relative",{top:h,left:0}).top),s&&(n.position.left=i._convertPositionTo("relative",{top:0,left:c-i.helperProportions.width}).left),a&&(n.position.left=i._convertPositionTo("relative",{top:0,left:l}).left)),p=o||r||s||a,"outer"!==A.snapMode&&(o=Math.abs(u-b)<=f,r=Math.abs(h-v)<=f,s=Math.abs(c-g)<=f,a=Math.abs(l-m)<=f,o&&(n.position.top=i._convertPositionTo("relative",{top:u,left:0}).top),r&&(n.position.top=i._convertPositionTo("relative",{top:h-i.helperProportions.height,left:0}).top),s&&(n.position.left=i._convertPositionTo("relative",{top:0,left:c}).left),a&&(n.position.left=i._convertPositionTo("relative",{top:0,left:l-i.helperProportions.width}).left)),!i.snapElements[d].snapping&&(o||r||s||a||p)&&i.options.snap.snap&&i.options.snap.snap.call(i.element,e,t.extend(i._uiHash(),{snapItem:i.snapElements[d].item})),i.snapElements[d].snapping=o||r||s||a||p)}}),t.ui.plugin.add("draggable","stack",{start:function(e,n,i){var o,r=i.options,s=t.makeArray(t(r.stack)).sort((function(e,n){return(parseInt(t(e).css("zIndex"),10)||0)-(parseInt(t(n).css("zIndex"),10)||0)}));s.length&&(o=parseInt(t(s[0]).css("zIndex"),10)||0,t(s).each((function(e){t(this).css("zIndex",o+e)})),this.css("zIndex",o+s.length))}}),t.ui.plugin.add("draggable","zIndex",{start:function(e,n,i){var o=t(n.helper),r=i.options;o.css("zIndex")&&(r._zIndex=o.css("zIndex")),o.css("zIndex",r.zIndex)},stop:function(e,n,i){var o=i.options;o._zIndex&&t(n.helper).css("zIndex",o._zIndex)}}),t.ui.draggable,t.widget("ui.resizable",t.ui.mouse,{version:"1.13.3",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseFloat(t)||0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(e,n){if("hidden"===t(e).css("overflow"))return!1;var i=n&&"left"===n?"scrollLeft":"scrollTop",o=!1;if(e[i]>0)return!0;try{e[i]=1,o=e[i]>0,e[i]=0}catch(t){}return o},_create:function(){var e,n=this.options,i=this;this._addClass("ui-resizable"),t.extend(this,{_aspectRatio:!!n.aspectRatio,aspectRatio:n.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:n.helper||n.ghost||n.animate?n.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(t("
      ").css({overflow:"hidden",position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,e={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(e),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(e),this._proportionallyResize()),this._setupHandles(),n.autoHide&&t(this.element).on("mouseenter",(function(){n.disabled||(i._removeClass("ui-resizable-autohide"),i._handles.show())})).on("mouseleave",(function(){n.disabled||i.resizing||(i._addClass("ui-resizable-autohide"),i._handles.hide())})),this._mouseInit()},_destroy:function(){this._mouseDestroy(),this._addedHandles.remove();var e,n=function(e){t(e).removeData("resizable").removeData("ui-resizable").off(".resizable")};return this.elementIsWrapper&&(n(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),n(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;case"aspectRatio":this._aspectRatio=!!e}},_setupHandles:function(){var e,n,i,o,r,s=this.options,a=this;if(this.handles=s.handles||(t(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=t(),this._addedHandles=t(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),i=this.handles.split(","),this.handles={},n=0;n"),this._addClass(r,"ui-resizable-handle "+o),r.css({zIndex:s.zIndex}),this.handles[e]=".ui-resizable-"+e,this.element.children(this.handles[e]).length||(this.element.append(r),this._addedHandles=this._addedHandles.add(r));this._renderAxis=function(e){var n,i,o,r;for(n in e=e||this.element,this.handles)this.handles[n].constructor===String?this.handles[n]=this.element.children(this.handles[n]).first().show():(this.handles[n].jquery||this.handles[n].nodeType)&&(this.handles[n]=t(this.handles[n]),this._on(this.handles[n],{mousedown:a._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(i=t(this.handles[n],this.element),r=/sw|ne|nw|se|n|s/.test(n)?i.outerHeight():i.outerWidth(),o=["padding",/ne|nw|n/.test(n)?"Top":/se|sw|s/.test(n)?"Bottom":/^e$/.test(n)?"Right":"Left"].join(""),e.css(o,r),this._proportionallyResize()),this._handles=this._handles.add(this.handles[n])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",(function(){a.resizing||(this.className&&(r=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),a.axis=r&&r[1]?r[1]:"se")})),s.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._addedHandles.remove()},_mouseCapture:function(e){var n,i,o=!1;for(n in this.handles)((i=t(this.handles[n])[0])===e.target||t.contains(i,e.target))&&(o=!0);return!this.options.disabled&&o},_mouseStart:function(e){var n,i,o,r=this.options,s=this.element;return this.resizing=!0,this._renderProxy(),n=this._num(this.helper.css("left")),i=this._num(this.helper.css("top")),r.containment&&(n+=t(r.containment).scrollLeft()||0,i+=t(r.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:n,top:i},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:s.width(),height:s.height()},this.originalSize=this._helper?{width:s.outerWidth(),height:s.outerHeight()}:{width:s.width(),height:s.height()},this.sizeDiff={width:s.outerWidth()-s.width(),height:s.outerHeight()-s.height()},this.originalPosition={left:n,top:i},this.originalMousePosition={left:e.pageX,top:e.pageY},this.aspectRatio="number"==typeof r.aspectRatio?r.aspectRatio:this.originalSize.width/this.originalSize.height||1,o=t(".ui-resizable-"+this.axis).css("cursor"),t("body").css("cursor","auto"===o?this.axis+"-resize":o),this._addClass("ui-resizable-resizing"),this._propagate("start",e),!0},_mouseDrag:function(e){var n,i,o=this.originalMousePosition,r=this.axis,s=e.pageX-o.left||0,a=e.pageY-o.top||0,c=this._change[r];return this._updatePrevProperties(),!!c&&(n=c.apply(this,[e,s,a]),this._updateVirtualBoundaries(e.shiftKey),(this._aspectRatio||e.shiftKey)&&(n=this._updateRatio(n,e)),n=this._respectSize(n,e),this._updateCache(n),this._propagate("resize",e),i=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),t.isEmptyObject(i)||(this._updatePrevProperties(),this._trigger("resize",e,this.ui()),this._applyChanges()),!1)},_mouseStop:function(e){this.resizing=!1;var n,i,o,r,s,a,c,l=this.options,u=this;return this._helper&&(o=(i=(n=this._proportionallyResizeElements).length&&/textarea/i.test(n[0].nodeName))&&this._hasScroll(n[0],"left")?0:u.sizeDiff.height,r=i?0:u.sizeDiff.width,s={width:u.helper.width()-r,height:u.helper.height()-o},a=parseFloat(u.element.css("left"))+(u.position.left-u.originalPosition.left)||null,c=parseFloat(u.element.css("top"))+(u.position.top-u.originalPosition.top)||null,l.animate||this.element.css(t.extend(s,{top:c,left:a})),u.helper.height(u.size.height),u.helper.width(u.size.width),this._helper&&!l.animate&&this._proportionallyResize()),t("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",e),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.helper.css(t),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px",this.helper.width(t.width)),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px",this.helper.height(t.height)),t},_updateVirtualBoundaries:function(t){var e,n,i,o,r,s=this.options;r={minWidth:this._isNumber(s.minWidth)?s.minWidth:0,maxWidth:this._isNumber(s.maxWidth)?s.maxWidth:1/0,minHeight:this._isNumber(s.minHeight)?s.minHeight:0,maxHeight:this._isNumber(s.maxHeight)?s.maxHeight:1/0},(this._aspectRatio||t)&&(e=r.minHeight*this.aspectRatio,i=r.minWidth/this.aspectRatio,n=r.maxHeight*this.aspectRatio,o=r.maxWidth/this.aspectRatio,e>r.minWidth&&(r.minWidth=e),i>r.minHeight&&(r.minHeight=i),nt.width,s=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,a=this.originalPosition.left+this.originalSize.width,c=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(n),u=/nw|ne|n/.test(n);return r&&(t.width=e.minWidth),s&&(t.height=e.minHeight),i&&(t.width=e.maxWidth),o&&(t.height=e.maxHeight),r&&l&&(t.left=a-e.minWidth),i&&l&&(t.left=a-e.maxWidth),s&&u&&(t.top=c-e.minHeight),o&&u&&(t.top=c-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,n=[],i=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],o=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];e<4;e++)n[e]=parseFloat(i[e])||0,n[e]+=parseFloat(o[e])||0;return{height:n[0]+n[2],width:n[1]+n[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,n=this.helper||this.element;e
      ").css({overflow:"hidden"}),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++n.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var n=this.originalSize;return{left:this.originalPosition.left+e,width:n.width-e}},n:function(t,e,n){var i=this.originalSize;return{top:this.originalPosition.top+n,height:i.height-n}},s:function(t,e,n){return{height:this.originalSize.height+n}},se:function(e,n,i){return t.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[e,n,i]))},sw:function(e,n,i){return t.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[e,n,i]))},ne:function(e,n,i){return t.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[e,n,i]))},nw:function(e,n,i){return t.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[e,n,i]))}},_propagate:function(e,n){t.ui.plugin.call(this,e,[n,this.ui()]),"resize"!==e&&this._trigger(e,n,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),t.ui.plugin.add("resizable","animate",{stop:function(e){var n=t(this).resizable("instance"),i=n.options,o=n._proportionallyResizeElements,r=o.length&&/textarea/i.test(o[0].nodeName),s=r&&n._hasScroll(o[0],"left")?0:n.sizeDiff.height,a=r?0:n.sizeDiff.width,c={width:n.size.width-a,height:n.size.height-s},l=parseFloat(n.element.css("left"))+(n.position.left-n.originalPosition.left)||null,u=parseFloat(n.element.css("top"))+(n.position.top-n.originalPosition.top)||null;n.element.animate(t.extend(c,u&&l?{top:u,left:l}:{}),{duration:i.animateDuration,easing:i.animateEasing,step:function(){var i={width:parseFloat(n.element.css("width")),height:parseFloat(n.element.css("height")),top:parseFloat(n.element.css("top")),left:parseFloat(n.element.css("left"))};o&&o.length&&t(o[0]).css({width:i.width,height:i.height}),n._updateCache(i),n._propagate("resize",e)}})}}),t.ui.plugin.add("resizable","containment",{start:function(){var e,n,i,o,r,s,a,c=t(this).resizable("instance"),l=c.options,u=c.element,h=l.containment,d=h instanceof t?h.get(0):/parent/.test(h)?u.parent().get(0):h;d&&(c.containerElement=t(d),/document/.test(h)||h===document?(c.containerOffset={left:0,top:0},c.containerPosition={left:0,top:0},c.parentData={element:t(document),left:0,top:0,width:t(document).width(),height:t(document).height()||document.body.parentNode.scrollHeight}):(e=t(d),n=[],t(["Top","Right","Left","Bottom"]).each((function(t,i){n[t]=c._num(e.css("padding"+i))})),c.containerOffset=e.offset(),c.containerPosition=e.position(),c.containerSize={height:e.innerHeight()-n[3],width:e.innerWidth()-n[1]},i=c.containerOffset,o=c.containerSize.height,r=c.containerSize.width,s=c._hasScroll(d,"left")?d.scrollWidth:r,a=c._hasScroll(d)?d.scrollHeight:o,c.parentData={element:d,left:i.left,top:i.top,width:s,height:a}))},resize:function(e){var n,i,o,r,s=t(this).resizable("instance"),a=s.options,c=s.containerOffset,l=s.position,u=s._aspectRatio||e.shiftKey,h={top:0,left:0},d=s.containerElement,p=!0;d[0]!==document&&/static/.test(d.css("position"))&&(h=c),l.left<(s._helper?c.left:0)&&(s.size.width=s.size.width+(s._helper?s.position.left-c.left:s.position.left-h.left),u&&(s.size.height=s.size.width/s.aspectRatio,p=!1),s.position.left=a.helper?c.left:0),l.top<(s._helper?c.top:0)&&(s.size.height=s.size.height+(s._helper?s.position.top-c.top:s.position.top),u&&(s.size.width=s.size.height*s.aspectRatio,p=!1),s.position.top=s._helper?c.top:0),o=s.containerElement.get(0)===s.element.parent().get(0),r=/relative|absolute/.test(s.containerElement.css("position")),o&&r?(s.offset.left=s.parentData.left+s.position.left,s.offset.top=s.parentData.top+s.position.top):(s.offset.left=s.element.offset().left,s.offset.top=s.element.offset().top),n=Math.abs(s.sizeDiff.width+(s._helper?s.offset.left-h.left:s.offset.left-c.left)),i=Math.abs(s.sizeDiff.height+(s._helper?s.offset.top-h.top:s.offset.top-c.top)),n+s.size.width>=s.parentData.width&&(s.size.width=s.parentData.width-n,u&&(s.size.height=s.size.width/s.aspectRatio,p=!1)),i+s.size.height>=s.parentData.height&&(s.size.height=s.parentData.height-i,u&&(s.size.width=s.size.height*s.aspectRatio,p=!1)),p||(s.position.left=s.prevPosition.left,s.position.top=s.prevPosition.top,s.size.width=s.prevSize.width,s.size.height=s.prevSize.height)},stop:function(){var e=t(this).resizable("instance"),n=e.options,i=e.containerOffset,o=e.containerPosition,r=e.containerElement,s=t(e.helper),a=s.offset(),c=s.outerWidth()-e.sizeDiff.width,l=s.outerHeight()-e.sizeDiff.height;e._helper&&!n.animate&&/relative/.test(r.css("position"))&&t(this).css({left:a.left-o.left-i.left,width:c,height:l}),e._helper&&!n.animate&&/static/.test(r.css("position"))&&t(this).css({left:a.left-o.left-i.left,width:c,height:l})}}),t.ui.plugin.add("resizable","alsoResize",{start:function(){var e=t(this).resizable("instance").options;t(e.alsoResize).each((function(){var e=t(this);e.data("ui-resizable-alsoresize",{width:parseFloat(e.css("width")),height:parseFloat(e.css("height")),left:parseFloat(e.css("left")),top:parseFloat(e.css("top"))})}))},resize:function(e,n){var i=t(this).resizable("instance"),o=i.options,r=i.originalSize,s=i.originalPosition,a={height:i.size.height-r.height||0,width:i.size.width-r.width||0,top:i.position.top-s.top||0,left:i.position.left-s.left||0};t(o.alsoResize).each((function(){var e=t(this),i=t(this).data("ui-resizable-alsoresize"),o={},r=e.parents(n.originalElement[0]).length?["width","height"]:["width","height","top","left"];t.each(r,(function(t,e){var n=(i[e]||0)+(a[e]||0);n&&n>=0&&(o[e]=n||null)})),e.css(o)}))},stop:function(){t(this).removeData("ui-resizable-alsoresize")}}),t.ui.plugin.add("resizable","ghost",{start:function(){var e=t(this).resizable("instance"),n=e.size;e.ghost=e.originalElement.clone(),e.ghost.css({opacity:.25,display:"block",position:"relative",height:n.height,width:n.width,margin:0,left:0,top:0}),e._addClass(e.ghost,"ui-resizable-ghost"),!1!==t.uiBackCompat&&"string"==typeof e.options.ghost&&e.ghost.addClass(this.options.ghost),e.ghost.appendTo(e.helper)},resize:function(){var e=t(this).resizable("instance");e.ghost&&e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})},stop:function(){var e=t(this).resizable("instance");e.ghost&&e.helper&&e.helper.get(0).removeChild(e.ghost.get(0))}}),t.ui.plugin.add("resizable","grid",{resize:function(){var e,n=t(this).resizable("instance"),i=n.options,o=n.size,r=n.originalSize,s=n.originalPosition,a=n.axis,c="number"==typeof i.grid?[i.grid,i.grid]:i.grid,l=c[0]||1,u=c[1]||1,h=Math.round((o.width-r.width)/l)*l,d=Math.round((o.height-r.height)/u)*u,p=r.width+h,A=r.height+d,f=i.maxWidth&&i.maxWidthp,b=i.minHeight&&i.minHeight>A;i.grid=c,m&&(p+=l),b&&(A+=u),f&&(p-=l),g&&(A-=u),/^(se|s|e)$/.test(a)?(n.size.width=p,n.size.height=A):/^(ne)$/.test(a)?(n.size.width=p,n.size.height=A,n.position.top=s.top-d):/^(sw)$/.test(a)?(n.size.width=p,n.size.height=A,n.position.left=s.left-h):((A-u<=0||p-l<=0)&&(e=n._getPaddingPlusBorderDimensions(this)),A-u>0?(n.size.height=A,n.position.top=s.top-d):(A=u-e.height,n.size.height=A,n.position.top=s.top+r.height-A),p-l>0?(n.size.width=p,n.position.left=s.left-h):(p=l-e.width,n.size.width=p,n.position.left=s.left+r.width-p))}}),t.ui.resizable,t.widget("ui.dialog",{version:"1.13.3",options:{appendTo:"body",autoOpen:!0,buttons:[],classes:{"ui-dialog":"ui-corner-all","ui-dialog-titlebar":"ui-corner-all"},closeOnEscape:!0,closeText:"Close",draggable:!0,hide:null,height:"auto",maxHeight:null,maxWidth:null,minHeight:150,minWidth:150,modal:!1,position:{my:"center",at:"center",of:window,collision:"fit",using:function(e){var n=t(this).css(e).offset().top;n<0&&t(this).css("top",e.top-n)}},resizable:!0,show:null,title:null,width:300,beforeClose:null,close:null,drag:null,dragStart:null,dragStop:null,focus:null,open:null,resize:null,resizeStart:null,resizeStop:null},sizeRelatedOptions:{buttons:!0,height:!0,maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0,width:!0},resizableRelatedOptions:{maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0},_create:function(){this.originalCss={display:this.element[0].style.display,width:this.element[0].style.width,minHeight:this.element[0].style.minHeight,maxHeight:this.element[0].style.maxHeight,height:this.element[0].style.height},this.originalPosition={parent:this.element.parent(),index:this.element.parent().children().index(this.element)},this.originalTitle=this.element.attr("title"),null==this.options.title&&null!=this.originalTitle&&(this.options.title=this.originalTitle),this.options.disabled&&(this.options.disabled=!1),this._createWrapper(),this.element.show().removeAttr("title").appendTo(this.uiDialog),this._addClass("ui-dialog-content","ui-widget-content"),this._createTitlebar(),this._createButtonPane(),this.options.draggable&&t.fn.draggable&&this._makeDraggable(),this.options.resizable&&t.fn.resizable&&this._makeResizable(),this._isOpen=!1,this._trackFocus()},_init:function(){this.options.autoOpen&&this.open()},_appendTo:function(){var e=this.options.appendTo;return e&&(e.jquery||e.nodeType)?t(e):this.document.find(e||"body").eq(0)},_destroy:function(){var t,e=this.originalPosition;this._untrackInstance(),this._destroyOverlay(),this.element.removeUniqueId().css(this.originalCss).detach(),this.uiDialog.remove(),this.originalTitle&&this.element.attr("title",this.originalTitle),(t=e.parent.children().eq(e.index)).length&&t[0]!==this.element[0]?t.before(this.element):e.parent.append(this.element)},widget:function(){return this.uiDialog},disable:t.noop,enable:t.noop,close:function(e){var n=this;this._isOpen&&!1!==this._trigger("beforeClose",e)&&(this._isOpen=!1,this._focusedElement=null,this._destroyOverlay(),this._untrackInstance(),this.opener.filter(":focusable").trigger("focus").length||t.ui.safeBlur(t.ui.safeActiveElement(this.document[0])),this._hide(this.uiDialog,this.options.hide,(function(){n._trigger("close",e)})))},isOpen:function(){return this._isOpen},moveToTop:function(){this._moveToTop()},_moveToTop:function(e,n){var i=!1,o=this.uiDialog.siblings(".ui-front:visible").map((function(){return+t(this).css("z-index")})).get(),r=Math.max.apply(null,o);return r>=+this.uiDialog.css("z-index")&&(this.uiDialog.css("z-index",r+1),i=!0),i&&!n&&this._trigger("focus",e),i},open:function(){var e=this;this._isOpen?this._moveToTop()&&this._focusTabbable():(this._isOpen=!0,this.opener=t(t.ui.safeActiveElement(this.document[0])),this._size(),this._position(),this._createOverlay(),this._moveToTop(null,!0),this.overlay&&this.overlay.css("z-index",this.uiDialog.css("z-index")-1),this._show(this.uiDialog,this.options.show,(function(){e._focusTabbable(),e._trigger("focus")})),this._makeFocusTarget(),this._trigger("open"))},_focusTabbable:function(){var t=this._focusedElement;t||(t=this.element.find("[autofocus]")),t.length||(t=this.element.find(":tabbable")),t.length||(t=this.uiDialogButtonPane.find(":tabbable")),t.length||(t=this.uiDialogTitlebarClose.filter(":tabbable")),t.length||(t=this.uiDialog),t.eq(0).trigger("focus")},_restoreTabbableFocus:function(){var e=t.ui.safeActiveElement(this.document[0]);this.uiDialog[0]===e||t.contains(this.uiDialog[0],e)||this._focusTabbable()},_keepFocus:function(t){t.preventDefault(),this._restoreTabbableFocus(),this._delay(this._restoreTabbableFocus)},_createWrapper:function(){this.uiDialog=t("
      ").hide().attr({tabIndex:-1,role:"dialog"}).appendTo(this._appendTo()),this._addClass(this.uiDialog,"ui-dialog","ui-widget ui-widget-content ui-front"),this._on(this.uiDialog,{keydown:function(e){if(this.options.closeOnEscape&&!e.isDefaultPrevented()&&e.keyCode&&e.keyCode===t.ui.keyCode.ESCAPE)return e.preventDefault(),void this.close(e);if(e.keyCode===t.ui.keyCode.TAB&&!e.isDefaultPrevented()){var n=this.uiDialog.find(":tabbable"),i=n.first(),o=n.last();e.target!==o[0]&&e.target!==this.uiDialog[0]||e.shiftKey?e.target!==i[0]&&e.target!==this.uiDialog[0]||!e.shiftKey||(this._delay((function(){o.trigger("focus")})),e.preventDefault()):(this._delay((function(){i.trigger("focus")})),e.preventDefault())}},mousedown:function(t){this._moveToTop(t)&&this._focusTabbable()}}),this.element.find("[aria-describedby]").length||this.uiDialog.attr({"aria-describedby":this.element.uniqueId().attr("id")})},_createTitlebar:function(){var e;this.uiDialogTitlebar=t("
      "),this._addClass(this.uiDialogTitlebar,"ui-dialog-titlebar","ui-widget-header ui-helper-clearfix"),this._on(this.uiDialogTitlebar,{mousedown:function(e){t(e.target).closest(".ui-dialog-titlebar-close")||this.uiDialog.trigger("focus")}}),this.uiDialogTitlebarClose=t("").button({label:t("").text(this.options.closeText).html(),icon:"ui-icon-closethick",showLabel:!1}).appendTo(this.uiDialogTitlebar),this._addClass(this.uiDialogTitlebarClose,"ui-dialog-titlebar-close"),this._on(this.uiDialogTitlebarClose,{click:function(t){t.preventDefault(),this.close(t)}}),e=t("").uniqueId().prependTo(this.uiDialogTitlebar),this._addClass(e,"ui-dialog-title"),this._title(e),this.uiDialogTitlebar.prependTo(this.uiDialog),this.uiDialog.attr({"aria-labelledby":e.attr("id")})},_title:function(t){this.options.title?t.text(this.options.title):t.html(" ")},_createButtonPane:function(){this.uiDialogButtonPane=t("
      "),this._addClass(this.uiDialogButtonPane,"ui-dialog-buttonpane","ui-widget-content ui-helper-clearfix"),this.uiButtonSet=t("
      ").appendTo(this.uiDialogButtonPane),this._addClass(this.uiButtonSet,"ui-dialog-buttonset"),this._createButtons()},_createButtons:function(){var e=this,n=this.options.buttons;this.uiDialogButtonPane.remove(),this.uiButtonSet.empty(),t.isEmptyObject(n)||Array.isArray(n)&&!n.length?this._removeClass(this.uiDialog,"ui-dialog-buttons"):(t.each(n,(function(n,i){var o,r;i="function"==typeof i?{click:i,text:n}:i,i=t.extend({type:"button"},i),o=i.click,r={icon:i.icon,iconPosition:i.iconPosition,showLabel:i.showLabel,icons:i.icons,text:i.text},delete i.click,delete i.icon,delete i.iconPosition,delete i.showLabel,delete i.icons,"boolean"==typeof i.text&&delete i.text,t("",i).button(r).appendTo(e.uiButtonSet).on("click",(function(){o.apply(e.element[0],arguments)}))})),this._addClass(this.uiDialog,"ui-dialog-buttons"),this.uiDialogButtonPane.appendTo(this.uiDialog))},_makeDraggable:function(){var e=this,n=this.options;function i(t){return{position:t.position,offset:t.offset}}this.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(n,o){e._addClass(t(this),"ui-dialog-dragging"),e._blockFrames(),e._trigger("dragStart",n,i(o))},drag:function(t,n){e._trigger("drag",t,i(n))},stop:function(o,r){var s=r.offset.left-e.document.scrollLeft(),a=r.offset.top-e.document.scrollTop();n.position={my:"left top",at:"left"+(s>=0?"+":"")+s+" top"+(a>=0?"+":"")+a,of:e.window},e._removeClass(t(this),"ui-dialog-dragging"),e._unblockFrames(),e._trigger("dragStop",o,i(r))}})},_makeResizable:function(){var e=this,n=this.options,i=n.resizable,o=this.uiDialog.css("position"),r="string"==typeof i?i:"n,e,s,w,se,sw,ne,nw";function s(t){return{originalPosition:t.originalPosition,originalSize:t.originalSize,position:t.position,size:t.size}}this.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:this.element,maxWidth:n.maxWidth,maxHeight:n.maxHeight,minWidth:n.minWidth,minHeight:this._minHeight(),handles:r,start:function(n,i){e._addClass(t(this),"ui-dialog-resizing"),e._blockFrames(),e._trigger("resizeStart",n,s(i))},resize:function(t,n){e._trigger("resize",t,s(n))},stop:function(i,o){var r=e.uiDialog.offset(),a=r.left-e.document.scrollLeft(),c=r.top-e.document.scrollTop();n.height=e.uiDialog.height(),n.width=e.uiDialog.width(),n.position={my:"left top",at:"left"+(a>=0?"+":"")+a+" top"+(c>=0?"+":"")+c,of:e.window},e._removeClass(t(this),"ui-dialog-resizing"),e._unblockFrames(),e._trigger("resizeStop",i,s(o))}}).css("position",o)},_trackFocus:function(){this._on(this.widget(),{focusin:function(e){this._makeFocusTarget(),this._focusedElement=t(e.target)}})},_makeFocusTarget:function(){this._untrackInstance(),this._trackingInstances().unshift(this)},_untrackInstance:function(){var e=this._trackingInstances(),n=t.inArray(this,e);-1!==n&&e.splice(n,1)},_trackingInstances:function(){var t=this.document.data("ui-dialog-instances");return t||(t=[],this.document.data("ui-dialog-instances",t)),t},_minHeight:function(){var t=this.options;return"auto"===t.height?t.minHeight:Math.min(t.minHeight,t.height)},_position:function(){var t=this.uiDialog.is(":visible");t||this.uiDialog.show(),this.uiDialog.position(this.options.position),t||this.uiDialog.hide()},_setOptions:function(e){var n=this,i=!1,o={};t.each(e,(function(t,e){n._setOption(t,e),t in n.sizeRelatedOptions&&(i=!0),t in n.resizableRelatedOptions&&(o[t]=e)})),i&&(this._size(),this._position()),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option",o)},_setOption:function(e,n){var i,o,r=this.uiDialog;"disabled"!==e&&(this._super(e,n),"appendTo"===e&&this.uiDialog.appendTo(this._appendTo()),"buttons"===e&&this._createButtons(),"closeText"===e&&this.uiDialogTitlebarClose.button({label:t("").text(""+this.options.closeText).html()}),"draggable"===e&&((i=r.is(":data(ui-draggable)"))&&!n&&r.draggable("destroy"),!i&&n&&this._makeDraggable()),"position"===e&&this._position(),"resizable"===e&&((o=r.is(":data(ui-resizable)"))&&!n&&r.resizable("destroy"),o&&"string"==typeof n&&r.resizable("option","handles",n),o||!1===n||this._makeResizable()),"title"===e&&this._title(this.uiDialogTitlebar.find(".ui-dialog-title")))},_size:function(){var t,e,n,i=this.options;this.element.show().css({width:"auto",minHeight:0,maxHeight:"none",height:0}),i.minWidth>i.width&&(i.width=i.minWidth),t=this.uiDialog.css({height:"auto",width:i.width}).outerHeight(),e=Math.max(0,i.minHeight-t),n="number"==typeof i.maxHeight?Math.max(0,i.maxHeight-t):"none","auto"===i.height?this.element.css({minHeight:e,maxHeight:n,height:"auto"}):this.element.height(Math.max(0,i.height-t)),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())},_blockFrames:function(){this.iframeBlocks=this.document.find("iframe").map((function(){var e=t(this);return t("
      ").css({position:"absolute",width:e.outerWidth(),height:e.outerHeight()}).appendTo(e.parent()).offset(e.offset())[0]}))},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_allowInteraction:function(e){return!!t(e.target).closest(".ui-dialog").length||!!t(e.target).closest(".ui-datepicker").length},_createOverlay:function(){if(this.options.modal){var e=t.fn.jquery.substring(0,4),n=!0;this._delay((function(){n=!1})),this.document.data("ui-dialog-overlays")||this.document.on("focusin.ui-dialog",function(t){if(!n){var i=this._trackingInstances()[0];i._allowInteraction(t)||(t.preventDefault(),i._focusTabbable(),"3.4."!==e&&"3.5."!==e&&"3.6."!==e||i._delay(i._restoreTabbableFocus))}}.bind(this)),this.overlay=t("
      ").appendTo(this._appendTo()),this._addClass(this.overlay,null,"ui-widget-overlay ui-front"),this._on(this.overlay,{mousedown:"_keepFocus"}),this.document.data("ui-dialog-overlays",(this.document.data("ui-dialog-overlays")||0)+1)}},_destroyOverlay:function(){if(this.options.modal&&this.overlay){var t=this.document.data("ui-dialog-overlays")-1;t?this.document.data("ui-dialog-overlays",t):(this.document.off("focusin.ui-dialog"),this.document.removeData("ui-dialog-overlays")),this.overlay.remove(),this.overlay=null}}}),!1!==t.uiBackCompat&&t.widget("ui.dialog",t.ui.dialog,{options:{dialogClass:""},_createWrapper:function(){this._super(),this.uiDialog.addClass(this.options.dialogClass)},_setOption:function(t,e){"dialogClass"===t&&this.uiDialog.removeClass(this.options.dialogClass).addClass(e),this._superApply(arguments)}}),t.ui.dialog,t.widget("ui.droppable",{version:"1.13.3",widgetEventPrefix:"drop",options:{accept:"*",addClasses:!0,greedy:!1,scope:"default",tolerance:"intersect",activate:null,deactivate:null,drop:null,out:null,over:null},_create:function(){var t,e=this.options,n=e.accept;this.isover=!1,this.isout=!0,this.accept="function"==typeof n?n:function(t){return t.is(n)},this.proportions=function(){if(!arguments.length)return t||(t={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight});t=arguments[0]},this._addToManager(e.scope),e.addClasses&&this._addClass("ui-droppable")},_addToManager:function(e){t.ui.ddmanager.droppables[e]=t.ui.ddmanager.droppables[e]||[],t.ui.ddmanager.droppables[e].push(this)},_splice:function(t){for(var e=0;e=e&&t=u&&s<=d||c>=u&&c<=d||sd)&&(r>=l&&r<=h||a>=l&&a<=h||rh);default:return!1}}}(),t.ui.ddmanager={current:null,droppables:{default:[]},prepareOffsets:function(e,n){var i,o,r=t.ui.ddmanager.droppables[e.options.scope]||[],s=n?n.type:null,a=(e.currentItem||e.element).find(":data(ui-droppable)").addBack();t:for(i=0;i").appendTo(this.element),this._addClass(this.valueDiv,"ui-progressbar-value","ui-widget-header"),this._refreshValue()},_destroy:function(){this.element.removeAttr("role aria-valuemin aria-valuemax aria-valuenow"),this.valueDiv.remove()},value:function(t){if(void 0===t)return this.options.value;this.options.value=this._constrainedValue(t),this._refreshValue()},_constrainedValue:function(t){return void 0===t&&(t=this.options.value),this.indeterminate=!1===t,"number"!=typeof t&&(t=0),!this.indeterminate&&Math.min(this.options.max,Math.max(this.min,t))},_setOptions:function(t){var e=t.value;delete t.value,this._super(t),this.options.value=this._constrainedValue(e),this._refreshValue()},_setOption:function(t,e){"max"===t&&(e=Math.max(this.min,e)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t),this._toggleClass(null,"ui-state-disabled",!!t)},_percentage:function(){return this.indeterminate?100:100*(this.options.value-this.min)/(this.options.max-this.min)},_refreshValue:function(){var e=this.options.value,n=this._percentage();this.valueDiv.toggle(this.indeterminate||e>this.min).width(n.toFixed(0)+"%"),this._toggleClass(this.valueDiv,"ui-progressbar-complete",null,e===this.options.max)._toggleClass("ui-progressbar-indeterminate",null,this.indeterminate),this.indeterminate?(this.element.removeAttr("aria-valuenow"),this.overlayDiv||(this.overlayDiv=t("
      ").appendTo(this.valueDiv),this._addClass(this.overlayDiv,"ui-progressbar-overlay"))):(this.element.attr({"aria-valuemax":this.options.max,"aria-valuenow":e}),this.overlayDiv&&(this.overlayDiv.remove(),this.overlayDiv=null)),this.oldValue!==e&&(this.oldValue=e,this._trigger("change")),e===this.options.max&&this._trigger("complete")}}),t.widget("ui.selectable",t.ui.mouse,{version:"1.13.3",options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch",selected:null,selecting:null,start:null,stop:null,unselected:null,unselecting:null},_create:function(){var e=this;this._addClass("ui-selectable"),this.dragged=!1,this.refresh=function(){e.elementPos=t(e.element[0]).offset(),e.selectees=t(e.options.filter,e.element[0]),e._addClass(e.selectees,"ui-selectee"),e.selectees.each((function(){var n=t(this),i=n.offset(),o={left:i.left-e.elementPos.left,top:i.top-e.elementPos.top};t.data(this,"selectable-item",{element:this,$element:n,left:o.left,top:o.top,right:o.left+n.outerWidth(),bottom:o.top+n.outerHeight(),startselected:!1,selected:n.hasClass("ui-selected"),selecting:n.hasClass("ui-selecting"),unselecting:n.hasClass("ui-unselecting")})}))},this.refresh(),this._mouseInit(),this.helper=t("
      "),this._addClass(this.helper,"ui-selectable-helper")},_destroy:function(){this.selectees.removeData("selectable-item"),this._mouseDestroy()},_mouseStart:function(e){var n=this,i=this.options;this.opos=[e.pageX,e.pageY],this.elementPos=t(this.element[0]).offset(),this.options.disabled||(this.selectees=t(i.filter,this.element[0]),this._trigger("start",e),t(i.appendTo).append(this.helper),this.helper.css({left:e.pageX,top:e.pageY,width:0,height:0}),i.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each((function(){var i=t.data(this,"selectable-item");i.startselected=!0,e.metaKey||e.ctrlKey||(n._removeClass(i.$element,"ui-selected"),i.selected=!1,n._addClass(i.$element,"ui-unselecting"),i.unselecting=!0,n._trigger("unselecting",e,{unselecting:i.element}))})),t(e.target).parents().addBack().each((function(){var i,o=t.data(this,"selectable-item");if(o)return i=!e.metaKey&&!e.ctrlKey||!o.$element.hasClass("ui-selected"),n._removeClass(o.$element,i?"ui-unselecting":"ui-selected")._addClass(o.$element,i?"ui-selecting":"ui-unselecting"),o.unselecting=!i,o.selecting=i,o.selected=i,i?n._trigger("selecting",e,{selecting:o.element}):n._trigger("unselecting",e,{unselecting:o.element}),!1})))},_mouseDrag:function(e){if(this.dragged=!0,!this.options.disabled){var n,i=this,o=this.options,r=this.opos[0],s=this.opos[1],a=e.pageX,c=e.pageY;return r>a&&(n=a,a=r,r=n),s>c&&(n=c,c=s,s=n),this.helper.css({left:r,top:s,width:a-r,height:c-s}),this.selectees.each((function(){var n=t.data(this,"selectable-item"),l=!1,u={};n&&n.element!==i.element[0]&&(u.left=n.left+i.elementPos.left,u.right=n.right+i.elementPos.left,u.top=n.top+i.elementPos.top,u.bottom=n.bottom+i.elementPos.top,"touch"===o.tolerance?l=!(u.left>a||u.rightc||u.bottomr&&u.rights&&u.bottom",options:{appendTo:null,classes:{"ui-selectmenu-button-open":"ui-corner-top","ui-selectmenu-button-closed":"ui-corner-all"},disabled:null,icons:{button:"ui-icon-triangle-1-s"},position:{my:"left top",at:"left bottom",collision:"none"},width:!1,change:null,close:null,focus:null,open:null,select:null},_create:function(){var e=this.element.uniqueId().attr("id");this.ids={element:e,button:e+"-button",menu:e+"-menu"},this._drawButton(),this._drawMenu(),this._bindFormResetHandler(),this._rendered=!1,this.menuItems=t()},_drawButton:function(){var e,n=this,i=this._parseOption(this.element.find("option:selected"),this.element[0].selectedIndex);this.labels=this.element.labels().attr("for",this.ids.button),this._on(this.labels,{click:function(t){this.button.trigger("focus"),t.preventDefault()}}),this.element.hide(),this.button=t("",{tabindex:this.options.disabled?-1:0,id:this.ids.button,role:"combobox","aria-expanded":"false","aria-autocomplete":"list","aria-owns":this.ids.menu,"aria-haspopup":"true",title:this.element.attr("title")}).insertAfter(this.element),this._addClass(this.button,"ui-selectmenu-button ui-selectmenu-button-closed","ui-button ui-widget"),e=t("").appendTo(this.button),this._addClass(e,"ui-selectmenu-icon","ui-icon "+this.options.icons.button),this.buttonItem=this._renderButtonItem(i).appendTo(this.button),!1!==this.options.width&&this._resizeButton(),this._on(this.button,this._buttonEvents),this.button.one("focusin",(function(){n._rendered||n._refreshMenu()}))},_drawMenu:function(){var e=this;this.menu=t("
        ",{"aria-hidden":"true","aria-labelledby":this.ids.button,id:this.ids.menu}),this.menuWrap=t("
        ").append(this.menu),this._addClass(this.menuWrap,"ui-selectmenu-menu","ui-front"),this.menuWrap.appendTo(this._appendTo()),this.menuInstance=this.menu.menu({classes:{"ui-menu":"ui-corner-bottom"},role:"listbox",select:function(t,n){t.preventDefault(),e._setSelection(),e._select(n.item.data("ui-selectmenu-item"),t)},focus:function(t,n){var i=n.item.data("ui-selectmenu-item");null!=e.focusIndex&&i.index!==e.focusIndex&&(e._trigger("focus",t,{item:i}),e.isOpen||e._select(i,t)),e.focusIndex=i.index,e.button.attr("aria-activedescendant",e.menuItems.eq(i.index).attr("id"))}}).menu("instance"),this.menuInstance._off(this.menu,"mouseleave"),this.menuInstance._closeOnDocumentClick=function(){return!1},this.menuInstance._isDivider=function(){return!1}},refresh:function(){this._refreshMenu(),this.buttonItem.replaceWith(this.buttonItem=this._renderButtonItem(this._getSelectedItem().data("ui-selectmenu-item")||{})),null===this.options.width&&this._resizeButton()},_refreshMenu:function(){var t,e=this.element.find("option");this.menu.empty(),this._parseOptions(e),this._renderMenu(this.menu,this.items),this.menuInstance.refresh(),this.menuItems=this.menu.find("li").not(".ui-selectmenu-optgroup").find(".ui-menu-item-wrapper"),this._rendered=!0,e.length&&(t=this._getSelectedItem(),this.menuInstance.focus(null,t),this._setAria(t.data("ui-selectmenu-item")),this._setOption("disabled",this.element.prop("disabled")))},open:function(t){this.options.disabled||(this._rendered?(this._removeClass(this.menu.find(".ui-state-active"),null,"ui-state-active"),this.menuInstance.focus(null,this._getSelectedItem())):this._refreshMenu(),this.menuItems.length&&(this.isOpen=!0,this._toggleAttr(),this._resizeMenu(),this._position(),this._on(this.document,this._documentClick),this._trigger("open",t)))},_position:function(){this.menuWrap.position(t.extend({of:this.button},this.options.position))},close:function(t){this.isOpen&&(this.isOpen=!1,this._toggleAttr(),this.range=null,this._off(this.document),this._trigger("close",t))},widget:function(){return this.button},menuWidget:function(){return this.menu},_renderButtonItem:function(e){var n=t("");return this._setText(n,e.label),this._addClass(n,"ui-selectmenu-text"),n},_renderMenu:function(e,n){var i=this,o="";t.each(n,(function(n,r){var s;r.optgroup!==o&&(s=t("
      • ",{text:r.optgroup}),i._addClass(s,"ui-selectmenu-optgroup","ui-menu-divider"+(r.element.parent("optgroup").prop("disabled")?" ui-state-disabled":"")),s.appendTo(e),o=r.optgroup),i._renderItemData(e,r)}))},_renderItemData:function(t,e){return this._renderItem(t,e).data("ui-selectmenu-item",e)},_renderItem:function(e,n){var i=t("
      • "),o=t("
        ",{title:n.element.attr("title")});return n.disabled&&this._addClass(i,null,"ui-state-disabled"),n.hidden?i.prop("hidden",!0):this._setText(o,n.label),i.append(o).appendTo(e)},_setText:function(t,e){e?t.text(e):t.html(" ")},_move:function(t,e){var n,i,o=".ui-menu-item";this.isOpen?n=this.menuItems.eq(this.focusIndex).parent("li"):(n=this.menuItems.eq(this.element[0].selectedIndex).parent("li"),o+=":not(.ui-state-disabled)"),(i="first"===t||"last"===t?n["first"===t?"prevAll":"nextAll"](o).eq(-1):n[t+"All"](o).eq(0)).length&&this.menuInstance.focus(e,i)},_getSelectedItem:function(){return this.menuItems.eq(this.element[0].selectedIndex).parent("li")},_toggle:function(t){this[this.isOpen?"close":"open"](t)},_setSelection:function(){var t;this.range&&(window.getSelection?((t=window.getSelection()).removeAllRanges(),t.addRange(this.range)):this.range.select(),this.button.trigger("focus"))},_documentClick:{mousedown:function(e){this.isOpen&&(t(e.target).closest(".ui-selectmenu-menu, #"+t.escapeSelector(this.ids.button)).length||this.close(e))}},_buttonEvents:{mousedown:function(){var t;window.getSelection?(t=window.getSelection()).rangeCount&&(this.range=t.getRangeAt(0)):this.range=document.selection.createRange()},click:function(t){this._setSelection(),this._toggle(t)},keydown:function(e){var n=!0;switch(e.keyCode){case t.ui.keyCode.TAB:case t.ui.keyCode.ESCAPE:this.close(e),n=!1;break;case t.ui.keyCode.ENTER:this.isOpen&&this._selectFocusedItem(e);break;case t.ui.keyCode.UP:e.altKey?this._toggle(e):this._move("prev",e);break;case t.ui.keyCode.DOWN:e.altKey?this._toggle(e):this._move("next",e);break;case t.ui.keyCode.SPACE:this.isOpen?this._selectFocusedItem(e):this._toggle(e);break;case t.ui.keyCode.LEFT:this._move("prev",e);break;case t.ui.keyCode.RIGHT:this._move("next",e);break;case t.ui.keyCode.HOME:case t.ui.keyCode.PAGE_UP:this._move("first",e);break;case t.ui.keyCode.END:case t.ui.keyCode.PAGE_DOWN:this._move("last",e);break;default:this.menu.trigger(e),n=!1}n&&e.preventDefault()}},_selectFocusedItem:function(t){var e=this.menuItems.eq(this.focusIndex).parent("li");e.hasClass("ui-state-disabled")||this._select(e.data("ui-selectmenu-item"),t)},_select:function(t,e){var n=this.element[0].selectedIndex;this.element[0].selectedIndex=t.index,this.buttonItem.replaceWith(this.buttonItem=this._renderButtonItem(t)),this._setAria(t),this._trigger("select",e,{item:t}),t.index!==n&&this._trigger("change",e,{item:t}),this.close(e)},_setAria:function(t){var e=this.menuItems.eq(t.index).attr("id");this.button.attr({"aria-labelledby":e,"aria-activedescendant":e}),this.menu.attr("aria-activedescendant",e)},_setOption:function(t,e){if("icons"===t){var n=this.button.find("span.ui-icon");this._removeClass(n,null,this.options.icons.button)._addClass(n,null,e.button)}this._super(t,e),"appendTo"===t&&this.menuWrap.appendTo(this._appendTo()),"width"===t&&this._resizeButton()},_setOptionDisabled:function(t){this._super(t),this.menuInstance.option("disabled",t),this.button.attr("aria-disabled",t),this._toggleClass(this.button,null,"ui-state-disabled",t),this.element.prop("disabled",t),t?(this.button.attr("tabindex",-1),this.close()):this.button.attr("tabindex",0)},_appendTo:function(){var e=this.options.appendTo;return e&&(e=e.jquery||e.nodeType?t(e):this.document.find(e).eq(0)),e&&e[0]||(e=this.element.closest(".ui-front, dialog")),e.length||(e=this.document[0].body),e},_toggleAttr:function(){this.button.attr("aria-expanded",this.isOpen),this._removeClass(this.button,"ui-selectmenu-button-"+(this.isOpen?"closed":"open"))._addClass(this.button,"ui-selectmenu-button-"+(this.isOpen?"open":"closed"))._toggleClass(this.menuWrap,"ui-selectmenu-open",null,this.isOpen),this.menu.attr("aria-hidden",!this.isOpen)},_resizeButton:function(){var t=this.options.width;!1!==t?(null===t&&(t=this.element.show().outerWidth(),this.element.hide()),this.button.outerWidth(t)):this.button.css("width","")},_resizeMenu:function(){this.menu.outerWidth(Math.max(this.button.outerWidth(),this.menu.width("").outerWidth()+1))},_getCreateOptions:function(){var t=this._super();return t.disabled=this.element.prop("disabled"),t},_parseOptions:function(e){var n=this,i=[];e.each((function(e,o){i.push(n._parseOption(t(o),e))})),this.items=i},_parseOption:function(t,e){var n=t.parent("optgroup");return{element:t,index:e,value:t.val(),label:t.text(),hidden:n.prop("hidden")||t.prop("hidden"),optgroup:n.attr("label")||"",disabled:n.prop("disabled")||t.prop("disabled")}},_destroy:function(){this._unbindFormResetHandler(),this.menuWrap.remove(),this.button.remove(),this.element.show(),this.element.removeUniqueId(),this.labels.attr("for",this.ids.element)}}]),t.widget("ui.slider",t.ui.mouse,{version:"1.13.3",widgetEventPrefix:"slide",options:{animate:!1,classes:{"ui-slider":"ui-corner-all","ui-slider-handle":"ui-corner-all","ui-slider-range":"ui-corner-all ui-widget-header"},distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null,change:null,slide:null,start:null,stop:null},numPages:5,_create:function(){this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this._calculateNewMax(),this._addClass("ui-slider ui-slider-"+this.orientation,"ui-widget ui-widget-content"),this._refresh(),this._animateOff=!1},_refresh:function(){this._createRange(),this._createHandles(),this._setupEvents(),this._refreshValue()},_createHandles:function(){var e,n,i=this.options,o=this.element.find(".ui-slider-handle"),r=[];for(n=i.values&&i.values.length||1,o.length>n&&(o.slice(n).remove(),o=o.slice(0,n)),e=o.length;e");this.handles=o.add(t(r.join("")).appendTo(this.element)),this._addClass(this.handles,"ui-slider-handle","ui-state-default"),this.handle=this.handles.eq(0),this.handles.each((function(e){t(this).data("ui-slider-handle-index",e).attr("tabIndex",0)}))},_createRange:function(){var e=this.options;e.range?(!0===e.range&&(e.values?e.values.length&&2!==e.values.length?e.values=[e.values[0],e.values[0]]:Array.isArray(e.values)&&(e.values=e.values.slice(0)):e.values=[this._valueMin(),this._valueMin()]),this.range&&this.range.length?(this._removeClass(this.range,"ui-slider-range-min ui-slider-range-max"),this.range.css({left:"",bottom:""})):(this.range=t("
        ").appendTo(this.element),this._addClass(this.range,"ui-slider-range")),"min"!==e.range&&"max"!==e.range||this._addClass(this.range,"ui-slider-range-"+e.range)):(this.range&&this.range.remove(),this.range=null)},_setupEvents:function(){this._off(this.handles),this._on(this.handles,this._handleEvents),this._hoverable(this.handles),this._focusable(this.handles)},_destroy:function(){this.handles.remove(),this.range&&this.range.remove(),this._mouseDestroy()},_mouseCapture:function(e){var n,i,o,r,s,a,c,l=this,u=this.options;return!u.disabled&&(this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),n={x:e.pageX,y:e.pageY},i=this._normValueFromMouse(n),o=this._valueMax()-this._valueMin()+1,this.handles.each((function(e){var n=Math.abs(i-l.values(e));(o>n||o===n&&(e===l._lastChangedValue||l.values(e)===u.min))&&(o=n,r=t(this),s=e)})),!1!==this._start(e,s)&&(this._mouseSliding=!0,this._handleIndex=s,this._addClass(r,null,"ui-state-active"),r.trigger("focus"),a=r.offset(),c=!t(e.target).parents().addBack().is(".ui-slider-handle"),this._clickOffset=c?{left:0,top:0}:{left:e.pageX-a.left-r.width()/2,top:e.pageY-a.top-r.height()/2-(parseInt(r.css("borderTopWidth"),10)||0)-(parseInt(r.css("borderBottomWidth"),10)||0)+(parseInt(r.css("marginTop"),10)||0)},this.handles.hasClass("ui-state-hover")||this._slide(e,s,i),this._animateOff=!0,!0))},_mouseStart:function(){return!0},_mouseDrag:function(t){var e={x:t.pageX,y:t.pageY},n=this._normValueFromMouse(e);return this._slide(t,this._handleIndex,n),!1},_mouseStop:function(t){return this._removeClass(this.handles,null,"ui-state-active"),this._mouseSliding=!1,this._stop(t,this._handleIndex),this._change(t,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!1,!1},_detectOrientation:function(){this.orientation="vertical"===this.options.orientation?"vertical":"horizontal"},_normValueFromMouse:function(t){var e,n,i,o,r;return"horizontal"===this.orientation?(e=this.elementSize.width,n=t.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(e=this.elementSize.height,n=t.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)),(i=n/e)>1&&(i=1),i<0&&(i=0),"vertical"===this.orientation&&(i=1-i),o=this._valueMax()-this._valueMin(),r=this._valueMin()+i*o,this._trimAlignValue(r)},_uiHash:function(t,e,n){var i={handle:this.handles[t],handleIndex:t,value:void 0!==e?e:this.value()};return this._hasMultipleValues()&&(i.value=void 0!==e?e:this.values(t),i.values=n||this.values()),i},_hasMultipleValues:function(){return this.options.values&&this.options.values.length},_start:function(t,e){return this._trigger("start",t,this._uiHash(e))},_slide:function(t,e,n){var i,o=this.value(),r=this.values();this._hasMultipleValues()&&(i=this.values(e?0:1),o=this.values(e),2===this.options.values.length&&!0===this.options.range&&(n=0===e?Math.min(i,n):Math.max(i,n)),r[e]=n),n!==o&&!1!==this._trigger("slide",t,this._uiHash(e,n,r))&&(this._hasMultipleValues()?this.values(e,n):this.value(n))},_stop:function(t,e){this._trigger("stop",t,this._uiHash(e))},_change:function(t,e){this._keySliding||this._mouseSliding||(this._lastChangedValue=e,this._trigger("change",t,this._uiHash(e)))},value:function(t){return arguments.length?(this.options.value=this._trimAlignValue(t),this._refreshValue(),void this._change(null,0)):this._value()},values:function(t,e){var n,i,o;if(arguments.length>1)return this.options.values[t]=this._trimAlignValue(e),this._refreshValue(),void this._change(null,t);if(!arguments.length)return this._values();if(!Array.isArray(arguments[0]))return this._hasMultipleValues()?this._values(t):this.value();for(n=this.options.values,i=arguments[0],o=0;o=0;n--)this._change(null,n);this._animateOff=!1;break;case"step":case"min":case"max":this._animateOff=!0,this._calculateNewMax(),this._refreshValue(),this._animateOff=!1;break;case"range":this._animateOff=!0,this._refresh(),this._animateOff=!1}},_setOptionDisabled:function(t){this._super(t),this._toggleClass(null,"ui-state-disabled",!!t)},_value:function(){var t=this.options.value;return this._trimAlignValue(t)},_values:function(t){var e,n,i;if(arguments.length)return e=this.options.values[t],this._trimAlignValue(e);if(this._hasMultipleValues()){for(n=this.options.values.slice(),i=0;i=this._valueMax())return this._valueMax();var e=this.options.step>0?this.options.step:1,n=(t-this._valueMin())%e,i=t-n;return 2*Math.abs(n)>=e&&(i+=n>0?e:-e),parseFloat(i.toFixed(5))},_calculateNewMax:function(){var t=this.options.max,e=this._valueMin(),n=this.options.step;(t=Math.round((t-e)/n)*n+e)>this.options.max&&(t-=n),this.max=parseFloat(t.toFixed(this._precision()))},_precision:function(){var t=this._precisionOf(this.options.step);return null!==this.options.min&&(t=Math.max(t,this._precisionOf(this.options.min))),t},_precisionOf:function(t){var e=t.toString(),n=e.indexOf(".");return-1===n?0:e.length-n-1},_valueMin:function(){return this.options.min},_valueMax:function(){return this.max},_refreshRange:function(t){"vertical"===t&&this.range.css({width:"",left:""}),"horizontal"===t&&this.range.css({height:"",bottom:""})},_refreshValue:function(){var e,n,i,o,r,s=this.options.range,a=this.options,c=this,l=!this._animateOff&&a.animate,u={};this._hasMultipleValues()?this.handles.each((function(i){n=(c.values(i)-c._valueMin())/(c._valueMax()-c._valueMin())*100,u["horizontal"===c.orientation?"left":"bottom"]=n+"%",t(this).stop(1,1)[l?"animate":"css"](u,a.animate),!0===c.options.range&&("horizontal"===c.orientation?(0===i&&c.range.stop(1,1)[l?"animate":"css"]({left:n+"%"},a.animate),1===i&&c.range[l?"animate":"css"]({width:n-e+"%"},{queue:!1,duration:a.animate})):(0===i&&c.range.stop(1,1)[l?"animate":"css"]({bottom:n+"%"},a.animate),1===i&&c.range[l?"animate":"css"]({height:n-e+"%"},{queue:!1,duration:a.animate}))),e=n})):(i=this.value(),o=this._valueMin(),r=this._valueMax(),n=r!==o?(i-o)/(r-o)*100:0,u["horizontal"===this.orientation?"left":"bottom"]=n+"%",this.handle.stop(1,1)[l?"animate":"css"](u,a.animate),"min"===s&&"horizontal"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({width:n+"%"},a.animate),"max"===s&&"horizontal"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({width:100-n+"%"},a.animate),"min"===s&&"vertical"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({height:n+"%"},a.animate),"max"===s&&"vertical"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({height:100-n+"%"},a.animate))},_handleEvents:{keydown:function(e){var n,i,o,r=t(e.target).data("ui-slider-handle-index");switch(e.keyCode){case t.ui.keyCode.HOME:case t.ui.keyCode.END:case t.ui.keyCode.PAGE_UP:case t.ui.keyCode.PAGE_DOWN:case t.ui.keyCode.UP:case t.ui.keyCode.RIGHT:case t.ui.keyCode.DOWN:case t.ui.keyCode.LEFT:if(e.preventDefault(),!this._keySliding&&(this._keySliding=!0,this._addClass(t(e.target),null,"ui-state-active"),!1===this._start(e,r)))return}switch(o=this.options.step,n=i=this._hasMultipleValues()?this.values(r):this.value(),e.keyCode){case t.ui.keyCode.HOME:i=this._valueMin();break;case t.ui.keyCode.END:i=this._valueMax();break;case t.ui.keyCode.PAGE_UP:i=this._trimAlignValue(n+(this._valueMax()-this._valueMin())/this.numPages);break;case t.ui.keyCode.PAGE_DOWN:i=this._trimAlignValue(n-(this._valueMax()-this._valueMin())/this.numPages);break;case t.ui.keyCode.UP:case t.ui.keyCode.RIGHT:if(n===this._valueMax())return;i=this._trimAlignValue(n+o);break;case t.ui.keyCode.DOWN:case t.ui.keyCode.LEFT:if(n===this._valueMin())return;i=this._trimAlignValue(n-o)}this._slide(e,r,i)},keyup:function(e){var n=t(e.target).data("ui-slider-handle-index");this._keySliding&&(this._keySliding=!1,this._stop(e,n),this._change(e,n),this._removeClass(t(e.target),null,"ui-state-active"))}}}),t.widget("ui.sortable",t.ui.mouse,{version:"1.13.3",widgetEventPrefix:"sort",ready:!1,options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3,activate:null,beforeStop:null,change:null,deactivate:null,out:null,over:null,receive:null,remove:null,sort:null,start:null,stop:null,update:null},_isOverAxis:function(t,e,n){return t>=e&&t=0;t--)this.items[t].item.removeData(this.widgetName+"-item");return this},_mouseCapture:function(e,n){var i=null,o=!1,r=this;return!(this.reverting||this.options.disabled||"static"===this.options.type||(this._refreshItems(e),t(e.target).parents().each((function(){if(t.data(this,r.widgetName+"-item")===r)return i=t(this),!1})),t.data(e.target,r.widgetName+"-item")===r&&(i=t(e.target)),!i||this.options.handle&&!n&&(t(this.options.handle,i).find("*").addBack().each((function(){this===e.target&&(o=!0)})),!o)||(this.currentItem=i,this._removeCurrentsFromItems(),0)))},_mouseStart:function(e,n,i){var o,r,s=this.options;if(this.currentContainer=this,this.refreshPositions(),this.appendTo=t("parent"!==s.appendTo?s.appendTo:this.currentItem.parent()),this.helper=this._createHelper(e),this._cacheHelperProportions(),this._cacheMargins(),this.offset=this.currentItem.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},t.extend(this.offset,{click:{left:e.pageX-this.offset.left,top:e.pageY-this.offset.top},relative:this._getRelativeOffset()}),this.helper.css("position","absolute"),this.cssPosition=this.helper.css("position"),s.cursorAt&&this._adjustOffsetFromHelper(s.cursorAt),this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]},this.helper[0]!==this.currentItem[0]&&this.currentItem.hide(),this._createPlaceholder(),this.scrollParent=this.placeholder.scrollParent(),t.extend(this.offset,{parent:this._getParentOffset()}),s.containment&&this._setContainment(),s.cursor&&"auto"!==s.cursor&&(r=this.document.find("body"),this.storedCursor=r.css("cursor"),r.css("cursor",s.cursor),this.storedStylesheet=t("").appendTo(r)),s.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",s.zIndex)),s.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",s.opacity)),this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",e,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions(),!i)for(o=this.containers.length-1;o>=0;o--)this.containers[o]._trigger("activate",e,this._uiHash(this));return t.ui.ddmanager&&(t.ui.ddmanager.current=this),t.ui.ddmanager&&!s.dropBehaviour&&t.ui.ddmanager.prepareOffsets(this,e),this.dragging=!0,this._addClass(this.helper,"ui-sortable-helper"),this.helper.parent().is(this.appendTo)||(this.helper.detach().appendTo(this.appendTo),this.offset.parent=this._getParentOffset()),this.position=this.originalPosition=this._generatePosition(e),this.originalPageX=e.pageX,this.originalPageY=e.pageY,this.lastPositionAbs=this.positionAbs=this._convertPositionTo("absolute"),this._mouseDrag(e),!0},_scroll:function(t){var e=this.options,n=!1;return this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-t.pageY=0;n--)if(o=(i=this.items[n]).item[0],(r=this._intersectsWithPointer(i))&&i.instance===this.currentContainer&&!(o===this.currentItem[0]||this.placeholder[1===r?"next":"prev"]()[0]===o||t.contains(this.placeholder[0],o)||"semi-dynamic"===this.options.type&&t.contains(this.element[0],o))){if(this.direction=1===r?"down":"up","pointer"!==this.options.tolerance&&!this._intersectsWithSides(i))break;this._rearrange(e,i),this._trigger("change",e,this._uiHash());break}return this._contactContainers(e),t.ui.ddmanager&&t.ui.ddmanager.drag(this,e),this._trigger("sort",e,this._uiHash()),this.lastPositionAbs=this.positionAbs,!1},_mouseStop:function(e,n){if(e){if(t.ui.ddmanager&&!this.options.dropBehaviour&&t.ui.ddmanager.drop(this,e),this.options.revert){var i=this,o=this.placeholder.offset(),r=this.options.axis,s={};r&&"x"!==r||(s.left=o.left-this.offset.parent.left-this.margins.left+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollLeft)),r&&"y"!==r||(s.top=o.top-this.offset.parent.top-this.margins.top+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollTop)),this.reverting=!0,t(this.helper).animate(s,parseInt(this.options.revert,10)||500,(function(){i._clear(e)}))}else this._clear(e,n);return!1}},cancel:function(){if(this.dragging){this._mouseUp(new t.Event("mouseup",{target:null})),"original"===this.options.helper?(this.currentItem.css(this._storedCSS),this._removeClass(this.currentItem,"ui-sortable-helper")):this.currentItem.show();for(var e=this.containers.length-1;e>=0;e--)this.containers[e]._trigger("deactivate",null,this._uiHash(this)),this.containers[e].containerCache.over&&(this.containers[e]._trigger("out",null,this._uiHash(this)),this.containers[e].containerCache.over=0)}return this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),"original"!==this.options.helper&&this.helper&&this.helper[0].parentNode&&this.helper.remove(),t.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?t(this.domPosition.prev).after(this.currentItem):t(this.domPosition.parent).prepend(this.currentItem)),this},serialize:function(e){var n=this._getItemsAsjQuery(e&&e.connected),i=[];return e=e||{},t(n).each((function(){var n=(t(e.item||this).attr(e.attribute||"id")||"").match(e.expression||/(.+)[\-=_](.+)/);n&&i.push((e.key||n[1]+"[]")+"="+(e.key&&e.expression?n[1]:n[2]))})),!i.length&&e.key&&i.push(e.key+"="),i.join("&")},toArray:function(e){var n=this._getItemsAsjQuery(e&&e.connected),i=[];return e=e||{},n.each((function(){i.push(t(e.item||this).attr(e.attribute||"id")||"")})),i},_intersectsWith:function(t){var e=this.positionAbs.left,n=e+this.helperProportions.width,i=this.positionAbs.top,o=i+this.helperProportions.height,r=t.left,s=r+t.width,a=t.top,c=a+t.height,l=this.offset.click.top,u=this.offset.click.left,h="x"===this.options.axis||i+l>a&&i+lr&&e+ut[this.floating?"width":"height"]?p:r0?"down":"up")},_getDragHorizontalDirection:function(){var t=this.positionAbs.left-this.lastPositionAbs.left;return 0!==t&&(t>0?"right":"left")},refresh:function(t){return this._refreshItems(t),this._setHandleClassName(),this.refreshPositions(),this},_connectWith:function(){var t=this.options;return t.connectWith.constructor===String?[t.connectWith]:t.connectWith},_getItemsAsjQuery:function(e){var n,i,o,r,s=[],a=[],c=this._connectWith();if(c&&e)for(n=c.length-1;n>=0;n--)for(i=(o=t(c[n],this.document[0])).length-1;i>=0;i--)(r=t.data(o[i],this.widgetFullName))&&r!==this&&!r.options.disabled&&a.push(["function"==typeof r.options.items?r.options.items.call(r.element):t(r.options.items,r.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),r]);function l(){s.push(this)}for(a.push(["function"==typeof this.options.items?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):t(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]),n=a.length-1;n>=0;n--)a[n][0].each(l);return t(s)},_removeCurrentsFromItems:function(){var e=this.currentItem.find(":data("+this.widgetName+"-item)");this.items=t.grep(this.items,(function(t){for(var n=0;n=0;n--)for(i=(o=t(d[n],this.document[0])).length-1;i>=0;i--)(r=t.data(o[i],this.widgetFullName))&&r!==this&&!r.options.disabled&&(h.push(["function"==typeof r.options.items?r.options.items.call(r.element[0],e,{item:this.currentItem}):t(r.options.items,r.element),r]),this.containers.push(r));for(n=h.length-1;n>=0;n--)for(s=h[n][1],i=0,l=(a=h[n][0]).length;i=0;n--)i=this.items[n],this.currentContainer&&i.instance!==this.currentContainer&&i.item[0]!==this.currentItem[0]||(o=this.options.toleranceElement?t(this.options.toleranceElement,i.item):i.item,e||(i.width=o.outerWidth(),i.height=o.outerHeight()),r=o.offset(),i.left=r.left,i.top=r.top)},refreshPositions:function(t){var e,n;if(this.floating=!!this.items.length&&("x"===this.options.axis||this._isFloating(this.items[0].item)),this.offsetParent&&this.helper&&(this.offset.parent=this._getParentOffset()),this._refreshItemPositions(t),this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(e=this.containers.length-1;e>=0;e--)n=this.containers[e].element.offset(),this.containers[e].containerCache.left=n.left,this.containers[e].containerCache.top=n.top,this.containers[e].containerCache.width=this.containers[e].element.outerWidth(),this.containers[e].containerCache.height=this.containers[e].element.outerHeight();return this},_createPlaceholder:function(e){var n,i,o=(e=e||this).options;o.placeholder&&o.placeholder.constructor!==String||(n=o.placeholder,i=e.currentItem[0].nodeName.toLowerCase(),o.placeholder={element:function(){var o=t("<"+i+">",e.document[0]);return e._addClass(o,"ui-sortable-placeholder",n||e.currentItem[0].className)._removeClass(o,"ui-sortable-helper"),"tbody"===i?e._createTrPlaceholder(e.currentItem.find("tr").eq(0),t("",e.document[0]).appendTo(o)):"tr"===i?e._createTrPlaceholder(e.currentItem,o):"img"===i&&o.attr("src",e.currentItem.attr("src")),n||o.css("visibility","hidden"),o},update:function(t,r){n&&!o.forcePlaceholderSize||(r.height()&&(!o.forcePlaceholderSize||"tbody"!==i&&"tr"!==i)||r.height(e.currentItem.innerHeight()-parseInt(e.currentItem.css("paddingTop")||0,10)-parseInt(e.currentItem.css("paddingBottom")||0,10)),r.width()||r.width(e.currentItem.innerWidth()-parseInt(e.currentItem.css("paddingLeft")||0,10)-parseInt(e.currentItem.css("paddingRight")||0,10)))}}),e.placeholder=t(o.placeholder.element.call(e.element,e.currentItem)),e.currentItem.after(e.placeholder),o.placeholder.update(e,e.placeholder)},_createTrPlaceholder:function(e,n){var i=this;e.children().each((function(){t(" ",i.document[0]).attr("colspan",t(this).attr("colspan")||1).appendTo(n)}))},_contactContainers:function(e){var n,i,o,r,s,a,c,l,u,h,d=null,p=null;for(n=this.containers.length-1;n>=0;n--)if(!t.contains(this.currentItem[0],this.containers[n].element[0]))if(this._intersectsWith(this.containers[n].containerCache)){if(d&&t.contains(this.containers[n].element[0],d.element[0]))continue;d=this.containers[n],p=n}else this.containers[n].containerCache.over&&(this.containers[n]._trigger("out",e,this._uiHash(this)),this.containers[n].containerCache.over=0);if(d)if(1===this.containers.length)this.containers[p].containerCache.over||(this.containers[p]._trigger("over",e,this._uiHash(this)),this.containers[p].containerCache.over=1);else{for(o=1e4,r=null,s=(u=d.floating||this._isFloating(this.currentItem))?"left":"top",a=u?"width":"height",h=u?"pageX":"pageY",i=this.items.length-1;i>=0;i--)t.contains(this.containers[p].element[0],this.items[i].item[0])&&this.items[i].item[0]!==this.currentItem[0]&&(c=this.items[i].item.offset()[s],l=!1,e[h]-c>this.items[i][a]/2&&(l=!0),Math.abs(e[h]-c)this.containment[2]&&(r=this.containment[2]+this.offset.click.left),e.pageY-this.offset.click.top>this.containment[3]&&(s=this.containment[3]+this.offset.click.top)),o.grid&&(n=this.originalPageY+Math.round((s-this.originalPageY)/o.grid[1])*o.grid[1],s=this.containment?n-this.offset.click.top>=this.containment[1]&&n-this.offset.click.top<=this.containment[3]?n:n-this.offset.click.top>=this.containment[1]?n-o.grid[1]:n+o.grid[1]:n,i=this.originalPageX+Math.round((r-this.originalPageX)/o.grid[0])*o.grid[0],r=this.containment?i-this.offset.click.left>=this.containment[0]&&i-this.offset.click.left<=this.containment[2]?i:i-this.offset.click.left>=this.containment[0]?i-o.grid[0]:i+o.grid[0]:i)),{top:s-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.scrollParent.scrollTop():c?0:a.scrollTop()),left:r-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():c?0:a.scrollLeft())}},_rearrange:function(t,e,n,i){n?n[0].appendChild(this.placeholder[0]):e.item[0].parentNode.insertBefore(this.placeholder[0],"down"===this.direction?e.item[0]:e.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var o=this.counter;this._delay((function(){o===this.counter&&this.refreshPositions(!i)}))},_clear:function(t,e){this.reverting=!1;var n,i=[];if(!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null,this.helper[0]===this.currentItem[0]){for(n in this._storedCSS)"auto"!==this._storedCSS[n]&&"static"!==this._storedCSS[n]||(this._storedCSS[n]="");this.currentItem.css(this._storedCSS),this._removeClass(this.currentItem,"ui-sortable-helper")}else this.currentItem.show();function o(t,e,n){return function(i){n._trigger(t,i,e._uiHash(e))}}for(this.fromOutside&&!e&&i.push((function(t){this._trigger("receive",t,this._uiHash(this.fromOutside))})),!this.fromOutside&&this.domPosition.prev===this.currentItem.prev().not(".ui-sortable-helper")[0]&&this.domPosition.parent===this.currentItem.parent()[0]||e||i.push((function(t){this._trigger("update",t,this._uiHash())})),this!==this.currentContainer&&(e||(i.push((function(t){this._trigger("remove",t,this._uiHash())})),i.push(function(t){return function(e){t._trigger("receive",e,this._uiHash(this))}}.call(this,this.currentContainer)),i.push(function(t){return function(e){t._trigger("update",e,this._uiHash(this))}}.call(this,this.currentContainer)))),n=this.containers.length-1;n>=0;n--)e||i.push(o("deactivate",this,this.containers[n])),this.containers[n].containerCache.over&&(i.push(o("out",this,this.containers[n])),this.containers[n].containerCache.over=0);if(this.storedCursor&&(this.document.find("body").css("cursor",this.storedCursor),this.storedStylesheet.remove()),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex","auto"===this._storedZIndex?"":this._storedZIndex),this.dragging=!1,e||this._trigger("beforeStop",t,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.cancelHelperRemoval||(this.helper[0]!==this.currentItem[0]&&this.helper.remove(),this.helper=null),!e){for(n=0;n",widgetEventPrefix:"spin",options:{classes:{"ui-spinner":"ui-corner-all","ui-spinner-down":"ui-corner-br","ui-spinner-up":"ui-corner-tr"},culture:null,icons:{down:"ui-icon-triangle-1-s",up:"ui-icon-triangle-1-n"},incremental:!0,max:null,min:null,numberFormat:null,page:10,step:1,change:null,spin:null,start:null,stop:null},_create:function(){this._setOption("max",this.options.max),this._setOption("min",this.options.min),this._setOption("step",this.options.step),""!==this.value()&&this._value(this.element.val(),!0),this._draw(),this._on(this._events),this._refresh(),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_getCreateOptions:function(){var e=this._super(),n=this.element;return t.each(["min","max","step"],(function(t,i){var o=n.attr(i);null!=o&&o.length&&(e[i]=o)})),e},_events:{keydown:function(t){this._start(t)&&this._keydown(t)&&t.preventDefault()},keyup:"_stop",focus:function(){this.previous=this.element.val()},blur:function(t){this.cancelBlur?delete this.cancelBlur:(this._stop(),this._refresh(),this.previous!==this.element.val()&&this._trigger("change",t))},mousewheel:function(e,n){var i=t.ui.safeActiveElement(this.document[0]);if(this.element[0]===i&&n){if(!this.spinning&&!this._start(e))return!1;this._spin((n>0?1:-1)*this.options.step,e),clearTimeout(this.mousewheelTimer),this.mousewheelTimer=this._delay((function(){this.spinning&&this._stop(e)}),100),e.preventDefault()}},"mousedown .ui-spinner-button":function(e){var n;function i(){this.element[0]===t.ui.safeActiveElement(this.document[0])||(this.element.trigger("focus"),this.previous=n,this._delay((function(){this.previous=n})))}n=this.element[0]===t.ui.safeActiveElement(this.document[0])?this.previous:this.element.val(),e.preventDefault(),i.call(this),this.cancelBlur=!0,this._delay((function(){delete this.cancelBlur,i.call(this)})),!1!==this._start(e)&&this._repeat(null,t(e.currentTarget).hasClass("ui-spinner-up")?1:-1,e)},"mouseup .ui-spinner-button":"_stop","mouseenter .ui-spinner-button":function(e){if(t(e.currentTarget).hasClass("ui-state-active"))return!1!==this._start(e)&&void this._repeat(null,t(e.currentTarget).hasClass("ui-spinner-up")?1:-1,e)},"mouseleave .ui-spinner-button":"_stop"},_enhance:function(){this.uiSpinner=this.element.attr("autocomplete","off").wrap("").parent().append("")},_draw:function(){this._enhance(),this._addClass(this.uiSpinner,"ui-spinner","ui-widget ui-widget-content"),this._addClass("ui-spinner-input"),this.element.attr("role","spinbutton"),this.buttons=this.uiSpinner.children("a").attr("tabIndex",-1).attr("aria-hidden",!0).button({classes:{"ui-button":""}}),this._removeClass(this.buttons,"ui-corner-all"),this._addClass(this.buttons.first(),"ui-spinner-button ui-spinner-up"),this._addClass(this.buttons.last(),"ui-spinner-button ui-spinner-down"),this.buttons.first().button({icon:this.options.icons.up,showLabel:!1}),this.buttons.last().button({icon:this.options.icons.down,showLabel:!1}),this.buttons.height()>Math.ceil(.5*this.uiSpinner.height())&&this.uiSpinner.height()>0&&this.uiSpinner.height(this.uiSpinner.height())},_keydown:function(e){var n=this.options,i=t.ui.keyCode;switch(e.keyCode){case i.UP:return this._repeat(null,1,e),!0;case i.DOWN:return this._repeat(null,-1,e),!0;case i.PAGE_UP:return this._repeat(null,n.page,e),!0;case i.PAGE_DOWN:return this._repeat(null,-n.page,e),!0}return!1},_start:function(t){return!(!this.spinning&&!1===this._trigger("start",t)||(this.counter||(this.counter=1),this.spinning=!0,0))},_repeat:function(t,e,n){t=t||500,clearTimeout(this.timer),this.timer=this._delay((function(){this._repeat(40,e,n)}),t),this._spin(e*this.options.step,n)},_spin:function(t,e){var n=this.value()||0;this.counter||(this.counter=1),n=this._adjustValue(n+t*this._increment(this.counter)),this.spinning&&!1===this._trigger("spin",e,{value:n})||(this._value(n),this.counter++)},_increment:function(t){var e=this.options.incremental;return e?"function"==typeof e?e(t):Math.floor(t*t*t/5e4-t*t/500+17*t/200+1):1},_precision:function(){var t=this._precisionOf(this.options.step);return null!==this.options.min&&(t=Math.max(t,this._precisionOf(this.options.min))),t},_precisionOf:function(t){var e=t.toString(),n=e.indexOf(".");return-1===n?0:e.length-n-1},_adjustValue:function(t){var e,n,i=this.options;return n=t-(e=null!==i.min?i.min:0),t=e+(n=Math.round(n/i.step)*i.step),t=parseFloat(t.toFixed(this._precision())),null!==i.max&&t>i.max?i.max:null!==i.min&&t"},_buttonHtml:function(){return""}}),t.ui.spinner,t.widget("ui.tabs",{version:"1.13.3",delay:300,options:{active:null,classes:{"ui-tabs":"ui-corner-all","ui-tabs-nav":"ui-corner-all","ui-tabs-panel":"ui-corner-bottom","ui-tabs-tab":"ui-corner-top"},collapsible:!1,event:"click",heightStyle:"content",hide:null,show:null,activate:null,beforeActivate:null,beforeLoad:null,load:null},_isLocal:(R=/#.*$/,function(t){var e,n;e=t.href.replace(R,""),n=location.href.replace(R,"");try{e=decodeURIComponent(e)}catch(t){}try{n=decodeURIComponent(n)}catch(t){}return t.hash.length>1&&e===n}),_create:function(){var e=this,n=this.options;this.running=!1,this._addClass("ui-tabs","ui-widget ui-widget-content"),this._toggleClass("ui-tabs-collapsible",null,n.collapsible),this._processTabs(),n.active=this._initialActive(),Array.isArray(n.disabled)&&(n.disabled=t.uniqueSort(n.disabled.concat(t.map(this.tabs.filter(".ui-state-disabled"),(function(t){return e.tabs.index(t)})))).sort()),!1!==this.options.active&&this.anchors.length?this.active=this._findActive(n.active):this.active=t(),this._refresh(),this.active.length&&this.load(n.active)},_initialActive:function(){var e=this.options.active,n=this.options.collapsible,i=location.hash.substring(1);return null===e&&(i&&this.tabs.each((function(n,o){if(t(o).attr("aria-controls")===i)return e=n,!1})),null===e&&(e=this.tabs.index(this.tabs.filter(".ui-tabs-active"))),null!==e&&-1!==e||(e=!!this.tabs.length&&0)),!1!==e&&-1===(e=this.tabs.index(this.tabs.eq(e)))&&(e=!n&&0),!n&&!1===e&&this.anchors.length&&(e=0),e},_getCreateEventData:function(){return{tab:this.active,panel:this.active.length?this._getPanelForTab(this.active):t()}},_tabKeydown:function(e){var n=t(t.ui.safeActiveElement(this.document[0])).closest("li"),i=this.tabs.index(n),o=!0;if(!this._handlePageNav(e)){switch(e.keyCode){case t.ui.keyCode.RIGHT:case t.ui.keyCode.DOWN:i++;break;case t.ui.keyCode.UP:case t.ui.keyCode.LEFT:o=!1,i--;break;case t.ui.keyCode.END:i=this.anchors.length-1;break;case t.ui.keyCode.HOME:i=0;break;case t.ui.keyCode.SPACE:return e.preventDefault(),clearTimeout(this.activating),void this._activate(i);case t.ui.keyCode.ENTER:return e.preventDefault(),clearTimeout(this.activating),void this._activate(i!==this.options.active&&i);default:return}e.preventDefault(),clearTimeout(this.activating),i=this._focusNextTab(i,o),e.ctrlKey||e.metaKey||(n.attr("aria-selected","false"),this.tabs.eq(i).attr("aria-selected","true"),this.activating=this._delay((function(){this.option("active",i)}),this.delay))}},_panelKeydown:function(e){this._handlePageNav(e)||e.ctrlKey&&e.keyCode===t.ui.keyCode.UP&&(e.preventDefault(),this.active.trigger("focus"))},_handlePageNav:function(e){return e.altKey&&e.keyCode===t.ui.keyCode.PAGE_UP?(this._activate(this._focusNextTab(this.options.active-1,!1)),!0):e.altKey&&e.keyCode===t.ui.keyCode.PAGE_DOWN?(this._activate(this._focusNextTab(this.options.active+1,!0)),!0):void 0},_findNextTab:function(e,n){var i=this.tabs.length-1;for(;-1!==t.inArray((e>i&&(e=0),e<0&&(e=i),e),this.options.disabled);)e=n?e+1:e-1;return e},_focusNextTab:function(t,e){return t=this._findNextTab(t,e),this.tabs.eq(t).trigger("focus"),t},_setOption:function(t,e){"active"!==t?(this._super(t,e),"collapsible"===t&&(this._toggleClass("ui-tabs-collapsible",null,e),e||!1!==this.options.active||this._activate(0)),"event"===t&&this._setupEvents(e),"heightStyle"===t&&this._setupHeightStyle(e)):this._activate(e)},_sanitizeSelector:function(t){return t?t.replace(/[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g,"\\$&"):""},refresh:function(){var e=this.options,n=this.tablist.children(":has(a[href])");e.disabled=t.map(n.filter(".ui-state-disabled"),(function(t){return n.index(t)})),this._processTabs(),!1!==e.active&&this.anchors.length?this.active.length&&!t.contains(this.tablist[0],this.active[0])?this.tabs.length===e.disabled.length?(e.active=!1,this.active=t()):this._activate(this._findNextTab(Math.max(0,e.active-1),!1)):e.active=this.tabs.index(this.active):(e.active=!1,this.active=t()),this._refresh()},_refresh:function(){this._setOptionDisabled(this.options.disabled),this._setupEvents(this.options.event),this._setupHeightStyle(this.options.heightStyle),this.tabs.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}),this.panels.not(this._getPanelForTab(this.active)).hide().attr({"aria-hidden":"true"}),this.active.length?(this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}),this._addClass(this.active,"ui-tabs-active","ui-state-active"),this._getPanelForTab(this.active).show().attr({"aria-hidden":"false"})):this.tabs.eq(0).attr("tabIndex",0)},_processTabs:function(){var e=this,n=this.tabs,i=this.anchors,o=this.panels;this.tablist=this._getList().attr("role","tablist"),this._addClass(this.tablist,"ui-tabs-nav","ui-helper-reset ui-helper-clearfix ui-widget-header"),this.tablist.on("mousedown"+this.eventNamespace,"> li",(function(e){t(this).is(".ui-state-disabled")&&e.preventDefault()})).on("focus"+this.eventNamespace,".ui-tabs-anchor",(function(){t(this).closest("li").is(".ui-state-disabled")&&this.blur()})),this.tabs=this.tablist.find("> li:has(a[href])").attr({role:"tab",tabIndex:-1}),this._addClass(this.tabs,"ui-tabs-tab","ui-state-default"),this.anchors=this.tabs.map((function(){return t("a",this)[0]})).attr({tabIndex:-1}),this._addClass(this.anchors,"ui-tabs-anchor"),this.panels=t(),this.anchors.each((function(n,i){var o,r,s,a=t(i).uniqueId().attr("id"),c=t(i).closest("li"),l=c.attr("aria-controls");e._isLocal(i)?(s=(o=i.hash).substring(1),r=e.element.find(e._sanitizeSelector(o))):(o="#"+(s=c.attr("aria-controls")||t({}).uniqueId()[0].id),(r=e.element.find(o)).length||(r=e._createPanel(s)).insertAfter(e.panels[n-1]||e.tablist),r.attr("aria-live","polite")),r.length&&(e.panels=e.panels.add(r)),l&&c.data("ui-tabs-aria-controls",l),c.attr({"aria-controls":s,"aria-labelledby":a}),r.attr("aria-labelledby",a)})),this.panels.attr("role","tabpanel"),this._addClass(this.panels,"ui-tabs-panel","ui-widget-content"),n&&(this._off(n.not(this.tabs)),this._off(i.not(this.anchors)),this._off(o.not(this.panels)))},_getList:function(){return this.tablist||this.element.find("ol, ul").eq(0)},_createPanel:function(e){return t("
        ").attr("id",e).data("ui-tabs-destroy",!0)},_setOptionDisabled:function(e){var n,i,o;for(Array.isArray(e)&&(e.length?e.length===this.anchors.length&&(e=!0):e=!1),o=0;i=this.tabs[o];o++)n=t(i),!0===e||-1!==t.inArray(o,e)?(n.attr("aria-disabled","true"),this._addClass(n,null,"ui-state-disabled")):(n.removeAttr("aria-disabled"),this._removeClass(n,null,"ui-state-disabled"));this.options.disabled=e,this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!0===e)},_setupEvents:function(e){var n={};e&&t.each(e.split(" "),(function(t,e){n[e]="_eventHandler"})),this._off(this.anchors.add(this.tabs).add(this.panels)),this._on(!0,this.anchors,{click:function(t){t.preventDefault()}}),this._on(this.anchors,n),this._on(this.tabs,{keydown:"_tabKeydown"}),this._on(this.panels,{keydown:"_panelKeydown"}),this._focusable(this.tabs),this._hoverable(this.tabs)},_setupHeightStyle:function(e){var n,i=this.element.parent();"fill"===e?(n=i.height(),n-=this.element.outerHeight()-this.element.height(),this.element.siblings(":visible").each((function(){var e=t(this),i=e.css("position");"absolute"!==i&&"fixed"!==i&&(n-=e.outerHeight(!0))})),this.element.children().not(this.panels).each((function(){n-=t(this).outerHeight(!0)})),this.panels.each((function(){t(this).height(Math.max(0,n-t(this).innerHeight()+t(this).height()))})).css("overflow","auto")):"auto"===e&&(n=0,this.panels.each((function(){n=Math.max(n,t(this).height("").height())})).height(n))},_eventHandler:function(e){var n=this.options,i=this.active,o=t(e.currentTarget).closest("li"),r=o[0]===i[0],s=r&&n.collapsible,a=s?t():this._getPanelForTab(o),c=i.length?this._getPanelForTab(i):t(),l={oldTab:i,oldPanel:c,newTab:s?t():o,newPanel:a};e.preventDefault(),o.hasClass("ui-state-disabled")||o.hasClass("ui-tabs-loading")||this.running||r&&!n.collapsible||!1===this._trigger("beforeActivate",e,l)||(n.active=!s&&this.tabs.index(o),this.active=r?t():o,this.xhr&&this.xhr.abort(),c.length||a.length||t.error("jQuery UI Tabs: Mismatching fragment identifier."),a.length&&this.load(this.tabs.index(o),e),this._toggle(e,l))},_toggle:function(e,n){var i=this,o=n.newPanel,r=n.oldPanel;function s(){i.running=!1,i._trigger("activate",e,n)}function a(){i._addClass(n.newTab.closest("li"),"ui-tabs-active","ui-state-active"),o.length&&i.options.show?i._show(o,i.options.show,s):(o.show(),s())}this.running=!0,r.length&&this.options.hide?this._hide(r,this.options.hide,(function(){i._removeClass(n.oldTab.closest("li"),"ui-tabs-active","ui-state-active"),a()})):(this._removeClass(n.oldTab.closest("li"),"ui-tabs-active","ui-state-active"),r.hide(),a()),r.attr("aria-hidden","true"),n.oldTab.attr({"aria-selected":"false","aria-expanded":"false"}),o.length&&r.length?n.oldTab.attr("tabIndex",-1):o.length&&this.tabs.filter((function(){return 0===t(this).attr("tabIndex")})).attr("tabIndex",-1),o.attr("aria-hidden","false"),n.newTab.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_activate:function(e){var n,i=this._findActive(e);i[0]!==this.active[0]&&(i.length||(i=this.active),n=i.find(".ui-tabs-anchor")[0],this._eventHandler({target:n,currentTarget:n,preventDefault:t.noop}))},_findActive:function(e){return!1===e?t():this.tabs.eq(e)},_getIndex:function(e){return"string"==typeof e&&(e=this.anchors.index(this.anchors.filter("[href$='"+t.escapeSelector(e)+"']"))),e},_destroy:function(){this.xhr&&this.xhr.abort(),this.tablist.removeAttr("role").off(this.eventNamespace),this.anchors.removeAttr("role tabIndex").removeUniqueId(),this.tabs.add(this.panels).each((function(){t.data(this,"ui-tabs-destroy")?t(this).remove():t(this).removeAttr("role tabIndex aria-live aria-busy aria-selected aria-labelledby aria-hidden aria-expanded")})),this.tabs.each((function(){var e=t(this),n=e.data("ui-tabs-aria-controls");n?e.attr("aria-controls",n).removeData("ui-tabs-aria-controls"):e.removeAttr("aria-controls")})),this.panels.show(),"content"!==this.options.heightStyle&&this.panels.css("height","")},enable:function(e){var n=this.options.disabled;!1!==n&&(void 0===e?n=!1:(e=this._getIndex(e),n=Array.isArray(n)?t.map(n,(function(t){return t!==e?t:null})):t.map(this.tabs,(function(t,n){return n!==e?n:null}))),this._setOptionDisabled(n))},disable:function(e){var n=this.options.disabled;if(!0!==n){if(void 0===e)n=!0;else{if(e=this._getIndex(e),-1!==t.inArray(e,n))return;n=Array.isArray(n)?t.merge([e],n).sort():[e]}this._setOptionDisabled(n)}},load:function(e,n){e=this._getIndex(e);var i=this,o=this.tabs.eq(e),r=o.find(".ui-tabs-anchor"),s=this._getPanelForTab(o),a={tab:o,panel:s},c=function(t,e){"abort"===e&&i.panels.stop(!1,!0),i._removeClass(o,"ui-tabs-loading"),s.removeAttr("aria-busy"),t===i.xhr&&delete i.xhr};this._isLocal(r[0])||(this.xhr=t.ajax(this._ajaxSettings(r,n,a)),this.xhr&&"canceled"!==this.xhr.statusText&&(this._addClass(o,"ui-tabs-loading"),s.attr("aria-busy","true"),this.xhr.done((function(t,e,o){setTimeout((function(){s.html(t),i._trigger("load",n,a),c(o,e)}),1)})).fail((function(t,e){setTimeout((function(){c(t,e)}),1)}))))},_ajaxSettings:function(e,n,i){var o=this;return{url:e.attr("href").replace(/#.*$/,""),beforeSend:function(e,r){return o._trigger("beforeLoad",n,t.extend({jqXHR:e,ajaxSettings:r},i))}}},_getPanelForTab:function(e){var n=t(e).attr("aria-controls");return this.element.find(this._sanitizeSelector("#"+n))}}),!1!==t.uiBackCompat&&t.widget("ui.tabs",t.ui.tabs,{_processTabs:function(){this._superApply(arguments),this._addClass(this.tabs,"ui-tab")}}),t.ui.tabs,t.widget("ui.tooltip",{version:"1.13.3",options:{classes:{"ui-tooltip":"ui-corner-all ui-widget-shadow"},content:function(){var e=t(this).attr("title");return t("").text(e).html()},hide:!0,items:"[title]:not([disabled])",position:{my:"left top+15",at:"left bottom",collision:"flipfit flip"},show:!0,track:!1,close:null,open:null},_addDescribedBy:function(t,e){var n=(t.attr("aria-describedby")||"").split(/\s+/);n.push(e),t.data("ui-tooltip-id",e).attr("aria-describedby",String.prototype.trim.call(n.join(" ")))},_removeDescribedBy:function(e){var n=e.data("ui-tooltip-id"),i=(e.attr("aria-describedby")||"").split(/\s+/),o=t.inArray(n,i);-1!==o&&i.splice(o,1),e.removeData("ui-tooltip-id"),(i=String.prototype.trim.call(i.join(" ")))?e.attr("aria-describedby",i):e.removeAttr("aria-describedby")},_create:function(){this._on({mouseover:"open",focusin:"open"}),this.tooltips={},this.parents={},this.liveRegion=t("
        ").attr({role:"log","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this.disabledTitles=t([])},_setOption:function(e,n){var i=this;this._super(e,n),"content"===e&&t.each(this.tooltips,(function(t,e){i._updateContent(e.element)}))},_setOptionDisabled:function(t){this[t?"_disable":"_enable"]()},_disable:function(){var e=this;t.each(this.tooltips,(function(n,i){var o=t.Event("blur");o.target=o.currentTarget=i.element[0],e.close(o,!0)})),this.disabledTitles=this.disabledTitles.add(this.element.find(this.options.items).addBack().filter((function(){var e=t(this);if(e.is("[title]"))return e.data("ui-tooltip-title",e.attr("title")).removeAttr("title")})))},_enable:function(){this.disabledTitles.each((function(){var e=t(this);e.data("ui-tooltip-title")&&e.attr("title",e.data("ui-tooltip-title"))})),this.disabledTitles=t([])},open:function(e){var n=this,i=t(e?e.target:this.element).closest(this.options.items);i.length&&!i.data("ui-tooltip-id")&&(i.attr("title")&&i.data("ui-tooltip-title",i.attr("title")),i.data("ui-tooltip-open",!0),e&&"mouseover"===e.type&&i.parents().each((function(){var e,i=t(this);i.data("ui-tooltip-open")&&((e=t.Event("blur")).target=e.currentTarget=this,n.close(e,!0)),i.attr("title")&&(i.uniqueId(),n.parents[this.id]={element:this,title:i.attr("title")},i.attr("title",""))})),this._registerCloseHandlers(e,i),this._updateContent(i,e))},_updateContent:function(t,e){var n,i=this.options.content,o=this,r=e?e.type:null;if("string"==typeof i||i.nodeType||i.jquery)return this._open(e,t,i);(n=i.call(t[0],(function(n){o._delay((function(){t.data("ui-tooltip-open")&&(e&&(e.type=r),this._open(e,t,n))}))})))&&this._open(e,t,n)},_open:function(e,n,i){var o,r,s,a,c=t.extend({},this.options.position);function l(t){c.of=t,r.is(":hidden")||r.position(c)}i&&((o=this._find(n))?o.tooltip.find(".ui-tooltip-content").html(i):(n.is("[title]")&&(e&&"mouseover"===e.type?n.attr("title",""):n.removeAttr("title")),o=this._tooltip(n),r=o.tooltip,this._addDescribedBy(n,r.attr("id")),r.find(".ui-tooltip-content").html(i),this.liveRegion.children().hide(),(a=t("
        ").html(r.find(".ui-tooltip-content").html())).removeAttr("name").find("[name]").removeAttr("name"),a.removeAttr("id").find("[id]").removeAttr("id"),a.appendTo(this.liveRegion),this.options.track&&e&&/^mouse/.test(e.type)?(this._on(this.document,{mousemove:l}),l(e)):r.position(t.extend({of:n},this.options.position)),r.hide(),this._show(r,this.options.show),this.options.track&&this.options.show&&this.options.show.delay&&(s=this.delayedShow=setInterval((function(){r.is(":visible")&&(l(c.of),clearInterval(s))}),13)),this._trigger("open",e,{tooltip:r})))},_registerCloseHandlers:function(e,n){var i={keyup:function(e){if(e.keyCode===t.ui.keyCode.ESCAPE){var i=t.Event(e);i.currentTarget=n[0],this.close(i,!0)}}};n[0]!==this.element[0]&&(i.remove=function(){var t=this._find(n);t&&this._removeTooltip(t.tooltip)}),e&&"mouseover"!==e.type||(i.mouseleave="close"),e&&"focusin"!==e.type||(i.focusout="close"),this._on(!0,n,i)},close:function(e){var n,i=this,o=t(e?e.currentTarget:this.element),r=this._find(o);r?(n=r.tooltip,r.closing||(clearInterval(this.delayedShow),o.data("ui-tooltip-title")&&!o.attr("title")&&o.attr("title",o.data("ui-tooltip-title")),this._removeDescribedBy(o),r.hiding=!0,n.stop(!0),this._hide(n,this.options.hide,(function(){i._removeTooltip(t(this))})),o.removeData("ui-tooltip-open"),this._off(o,"mouseleave focusout keyup"),o[0]!==this.element[0]&&this._off(o,"remove"),this._off(this.document,"mousemove"),e&&"mouseleave"===e.type&&t.each(this.parents,(function(e,n){t(n.element).attr("title",n.title),delete i.parents[e]})),r.closing=!0,this._trigger("close",e,{tooltip:n}),r.hiding||(r.closing=!1))):o.removeData("ui-tooltip-open")},_tooltip:function(e){var n=t("
        ").attr("role","tooltip"),i=t("
        ").appendTo(n),o=n.uniqueId().attr("id");return this._addClass(i,"ui-tooltip-content"),this._addClass(n,"ui-tooltip","ui-widget ui-widget-content"),n.appendTo(this._appendTo(e)),this.tooltips[o]={element:e,tooltip:n}},_find:function(t){var e=t.data("ui-tooltip-id");return e?this.tooltips[e]:null},_removeTooltip:function(t){clearInterval(this.delayedShow),t.remove(),delete this.tooltips[t.attr("id")]},_appendTo:function(t){var e=t.closest(".ui-front, dialog");return e.length||(e=this.document[0].body),e},_destroy:function(){var e=this;t.each(this.tooltips,(function(n,i){var o=t.Event("blur"),r=i.element;o.target=o.currentTarget=r[0],e.close(o,!0),t("#"+n).remove(),r.data("ui-tooltip-title")&&(r.attr("title")||r.attr("title",r.data("ui-tooltip-title")),r.removeData("ui-tooltip-title"))})),this.liveRegion.remove()}}),!1!==t.uiBackCompat&&t.widget("ui.tooltip",t.ui.tooltip,{options:{tooltipClass:null},_tooltip:function(){var t=this._superApply(arguments);return this.options.tooltipClass&&t.tooltip.addClass(this.options.tooltipClass),t}}),t.ui.tooltip},void 0===(r=i.apply(e,o))||(t.exports=r)}()},35358:(t,e,n)=>{var i={"./af":25177,"./af.js":25177,"./ar":61509,"./ar-dz":41488,"./ar-dz.js":41488,"./ar-kw":58676,"./ar-kw.js":58676,"./ar-ly":42353,"./ar-ly.js":42353,"./ar-ma":24496,"./ar-ma.js":24496,"./ar-ps":6947,"./ar-ps.js":6947,"./ar-sa":60301,"./ar-sa.js":60301,"./ar-tn":89756,"./ar-tn.js":89756,"./ar.js":61509,"./az":95533,"./az.js":95533,"./be":28959,"./be.js":28959,"./bg":47777,"./bg.js":47777,"./bm":54903,"./bm.js":54903,"./bn":61290,"./bn-bd":17357,"./bn-bd.js":17357,"./bn.js":61290,"./bo":31545,"./bo.js":31545,"./br":11470,"./br.js":11470,"./bs":44429,"./bs.js":44429,"./ca":7306,"./ca.js":7306,"./cs":56464,"./cs.js":56464,"./cv":73635,"./cv.js":73635,"./cy":64226,"./cy.js":64226,"./da":93601,"./da.js":93601,"./de":77853,"./de-at":26111,"./de-at.js":26111,"./de-ch":54697,"./de-ch.js":54697,"./de.js":77853,"./dv":60708,"./dv.js":60708,"./el":54691,"./el.js":54691,"./en-au":53872,"./en-au.js":53872,"./en-ca":28298,"./en-ca.js":28298,"./en-gb":56195,"./en-gb.js":56195,"./en-ie":66584,"./en-ie.js":66584,"./en-il":65543,"./en-il.js":65543,"./en-in":9033,"./en-in.js":9033,"./en-nz":79402,"./en-nz.js":79402,"./en-sg":43004,"./en-sg.js":43004,"./eo":32934,"./eo.js":32934,"./es":97650,"./es-do":20838,"./es-do.js":20838,"./es-mx":17730,"./es-mx.js":17730,"./es-us":56575,"./es-us.js":56575,"./es.js":97650,"./et":3035,"./et.js":3035,"./eu":3508,"./eu.js":3508,"./fa":119,"./fa.js":119,"./fi":90527,"./fi.js":90527,"./fil":95995,"./fil.js":95995,"./fo":52477,"./fo.js":52477,"./fr":85498,"./fr-ca":26435,"./fr-ca.js":26435,"./fr-ch":37892,"./fr-ch.js":37892,"./fr.js":85498,"./fy":37071,"./fy.js":37071,"./ga":41734,"./ga.js":41734,"./gd":70217,"./gd.js":70217,"./gl":77329,"./gl.js":77329,"./gom-deva":32124,"./gom-deva.js":32124,"./gom-latn":93383,"./gom-latn.js":93383,"./gu":95050,"./gu.js":95050,"./he":11713,"./he.js":11713,"./hi":43861,"./hi.js":43861,"./hr":26308,"./hr.js":26308,"./hu":90609,"./hu.js":90609,"./hy-am":17160,"./hy-am.js":17160,"./id":74063,"./id.js":74063,"./is":89374,"./is.js":89374,"./it":88383,"./it-ch":21827,"./it-ch.js":21827,"./it.js":88383,"./ja":23827,"./ja.js":23827,"./jv":89722,"./jv.js":89722,"./ka":41794,"./ka.js":41794,"./kk":27088,"./kk.js":27088,"./km":96870,"./km.js":96870,"./kn":84451,"./kn.js":84451,"./ko":63164,"./ko.js":63164,"./ku":98174,"./ku-kmr":6181,"./ku-kmr.js":6181,"./ku.js":98174,"./ky":78474,"./ky.js":78474,"./lb":79680,"./lb.js":79680,"./lo":15867,"./lo.js":15867,"./lt":45766,"./lt.js":45766,"./lv":69532,"./lv.js":69532,"./me":58076,"./me.js":58076,"./mi":41848,"./mi.js":41848,"./mk":30306,"./mk.js":30306,"./ml":73739,"./ml.js":73739,"./mn":99053,"./mn.js":99053,"./mr":86169,"./mr.js":86169,"./ms":73386,"./ms-my":92297,"./ms-my.js":92297,"./ms.js":73386,"./mt":77075,"./mt.js":77075,"./my":72264,"./my.js":72264,"./nb":22274,"./nb.js":22274,"./ne":8235,"./ne.js":8235,"./nl":92572,"./nl-be":43784,"./nl-be.js":43784,"./nl.js":92572,"./nn":54566,"./nn.js":54566,"./oc-lnc":69330,"./oc-lnc.js":69330,"./pa-in":29849,"./pa-in.js":29849,"./pl":94418,"./pl.js":94418,"./pt":79834,"./pt-br":48303,"./pt-br.js":48303,"./pt.js":79834,"./ro":24457,"./ro.js":24457,"./ru":82271,"./ru.js":82271,"./sd":1221,"./sd.js":1221,"./se":33478,"./se.js":33478,"./si":17538,"./si.js":17538,"./sk":5784,"./sk.js":5784,"./sl":46637,"./sl.js":46637,"./sq":86794,"./sq.js":86794,"./sr":45719,"./sr-cyrl":3322,"./sr-cyrl.js":3322,"./sr.js":45719,"./ss":56e3,"./ss.js":56e3,"./sv":41011,"./sv.js":41011,"./sw":40748,"./sw.js":40748,"./ta":11025,"./ta.js":11025,"./te":11885,"./te.js":11885,"./tet":28861,"./tet.js":28861,"./tg":86571,"./tg.js":86571,"./th":55802,"./th.js":55802,"./tk":59527,"./tk.js":59527,"./tl-ph":29231,"./tl-ph.js":29231,"./tlh":31052,"./tlh.js":31052,"./tr":85096,"./tr.js":85096,"./tzl":79846,"./tzl.js":79846,"./tzm":81765,"./tzm-latn":97711,"./tzm-latn.js":97711,"./tzm.js":81765,"./ug-cn":48414,"./ug-cn.js":48414,"./uk":16618,"./uk.js":16618,"./ur":57777,"./ur.js":57777,"./uz":57609,"./uz-latn":72475,"./uz-latn.js":72475,"./uz.js":57609,"./vi":21135,"./vi.js":21135,"./x-pseudo":64051,"./x-pseudo.js":64051,"./yo":82218,"./yo.js":82218,"./zh-cn":52648,"./zh-cn.js":52648,"./zh-hk":1632,"./zh-hk.js":1632,"./zh-mo":31541,"./zh-mo.js":31541,"./zh-tw":50304,"./zh-tw.js":50304};function o(t){var e=r(t);return n(e)}function r(t){if(!n.o(i,t)){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}return i[t]}o.keys=function(){return Object.keys(i)},o.resolve=r,t.exports=o,o.id=35358},7452:t=>{var e=function(t){"use strict";var e,n=Object.prototype,i=n.hasOwnProperty,o=Object.defineProperty||function(t,e,n){t[e]=n.value},r="function"==typeof Symbol?Symbol:{},s=r.iterator||"@@iterator",a=r.asyncIterator||"@@asyncIterator",c=r.toStringTag||"@@toStringTag";function l(t,e,n){return Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{l({},"")}catch(t){l=function(t,e,n){return t[e]=n}}function u(t,e,n,i){var r=e&&e.prototype instanceof m?e:m,s=Object.create(r.prototype),a=new S(i||[]);return o(s,"_invoke",{value:E(t,n,a)}),s}function h(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}t.wrap=u;var d="suspendedStart",p="suspendedYield",A="executing",f="completed",g={};function m(){}function b(){}function v(){}var C={};l(C,s,(function(){return this}));var x=Object.getPrototypeOf,w=x&&x(x(T([])));w&&w!==n&&i.call(w,s)&&(C=w);var y=v.prototype=m.prototype=Object.create(C);function k(t){["next","throw","return"].forEach((function(e){l(t,e,(function(t){return this._invoke(e,t)}))}))}function B(t,e){function n(o,r,s,a){var c=h(t[o],t,r);if("throw"!==c.type){var l=c.arg,u=l.value;return u&&"object"==typeof u&&i.call(u,"__await")?e.resolve(u.__await).then((function(t){n("next",t,s,a)}),(function(t){n("throw",t,s,a)})):e.resolve(u).then((function(t){l.value=t,s(l)}),(function(t){return n("throw",t,s,a)}))}a(c.arg)}var r;o(this,"_invoke",{value:function(t,i){function o(){return new e((function(e,o){n(t,i,e,o)}))}return r=r?r.then(o,o):o()}})}function E(t,n,i){var o=d;return function(r,s){if(o===A)throw new Error("Generator is already running");if(o===f){if("throw"===r)throw s;return{value:e,done:!0}}for(i.method=r,i.arg=s;;){var a=i.delegate;if(a){var c=_(a,i);if(c){if(c===g)continue;return c}}if("next"===i.method)i.sent=i._sent=i.arg;else if("throw"===i.method){if(o===d)throw o=f,i.arg;i.dispatchException(i.arg)}else"return"===i.method&&i.abrupt("return",i.arg);o=A;var l=h(t,n,i);if("normal"===l.type){if(o=i.done?f:p,l.arg===g)continue;return{value:l.arg,done:i.done}}"throw"===l.type&&(o=f,i.method="throw",i.arg=l.arg)}}}function _(t,n){var i=n.method,o=t.iterator[i];if(o===e)return n.delegate=null,"throw"===i&&t.iterator.return&&(n.method="return",n.arg=e,_(t,n),"throw"===n.method)||"return"!==i&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+i+"' method")),g;var r=h(o,t.iterator,n.arg);if("throw"===r.type)return n.method="throw",n.arg=r.arg,n.delegate=null,g;var s=r.arg;return s?s.done?(n[t.resultName]=s.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=e),n.delegate=null,g):s:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,g)}function I(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function D(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function S(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(I,this),this.reset(!0)}function T(t){if(null!=t){var n=t[s];if(n)return n.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var o=-1,r=function n(){for(;++o=0;--r){var s=this.tryEntries[r],a=s.completion;if("root"===s.tryLoc)return o("end");if(s.tryLoc<=this.prev){var c=i.call(s,"catchLoc"),l=i.call(s,"finallyLoc");if(c&&l){if(this.prev=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&i.call(o,"finallyLoc")&&this.prev=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),D(n),g}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var i=n.completion;if("throw"===i.type){var o=i.arg;D(n)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,n,i){return this.delegate={iterator:T(t),resultName:n,nextLoc:i},"next"===this.method&&(this.arg=e),g}},t}(t.exports);try{regeneratorRuntime=e}catch(t){"object"==typeof globalThis?globalThis.regeneratorRuntime=e:Function("r","regeneratorRuntime = r")(e)}},44275:(t,e,n)=>{var i,o=n(74692);void 0===(i=o).fn.each2&&i.extend(i.fn,{each2:function(t){for(var e=i([0]),n=-1,o=this.length;++n=112&&t<=123}},d={"Ⓐ":"A",A:"A",À:"A",Á:"A",Â:"A",Ầ:"A",Ấ:"A",Ẫ:"A",Ẩ:"A",Ã:"A",Ā:"A",Ă:"A",Ằ:"A",Ắ:"A",Ẵ:"A",Ẳ:"A",Ȧ:"A",Ǡ:"A",Ä:"A",Ǟ:"A",Ả:"A",Å:"A",Ǻ:"A",Ǎ:"A",Ȁ:"A",Ȃ:"A",Ạ:"A",Ậ:"A",Ặ:"A",Ḁ:"A",Ą:"A",Ⱥ:"A",Ɐ:"A",Ꜳ:"AA",Æ:"AE",Ǽ:"AE",Ǣ:"AE",Ꜵ:"AO",Ꜷ:"AU",Ꜹ:"AV",Ꜻ:"AV",Ꜽ:"AY","Ⓑ":"B",B:"B",Ḃ:"B",Ḅ:"B",Ḇ:"B",Ƀ:"B",Ƃ:"B",Ɓ:"B","Ⓒ":"C",C:"C",Ć:"C",Ĉ:"C",Ċ:"C",Č:"C",Ç:"C",Ḉ:"C",Ƈ:"C",Ȼ:"C",Ꜿ:"C","Ⓓ":"D",D:"D",Ḋ:"D",Ď:"D",Ḍ:"D",Ḑ:"D",Ḓ:"D",Ḏ:"D",Đ:"D",Ƌ:"D",Ɗ:"D",Ɖ:"D",Ꝺ:"D",DZ:"DZ",DŽ:"DZ",Dz:"Dz",Dž:"Dz","Ⓔ":"E",E:"E",È:"E",É:"E",Ê:"E",Ề:"E",Ế:"E",Ễ:"E",Ể:"E",Ẽ:"E",Ē:"E",Ḕ:"E",Ḗ:"E",Ĕ:"E",Ė:"E",Ë:"E",Ẻ:"E",Ě:"E",Ȅ:"E",Ȇ:"E",Ẹ:"E",Ệ:"E",Ȩ:"E",Ḝ:"E",Ę:"E",Ḙ:"E",Ḛ:"E",Ɛ:"E",Ǝ:"E","Ⓕ":"F",F:"F",Ḟ:"F",Ƒ:"F",Ꝼ:"F","Ⓖ":"G",G:"G",Ǵ:"G",Ĝ:"G",Ḡ:"G",Ğ:"G",Ġ:"G",Ǧ:"G",Ģ:"G",Ǥ:"G",Ɠ:"G",Ꞡ:"G",Ᵹ:"G",Ꝿ:"G","Ⓗ":"H",H:"H",Ĥ:"H",Ḣ:"H",Ḧ:"H",Ȟ:"H",Ḥ:"H",Ḩ:"H",Ḫ:"H",Ħ:"H",Ⱨ:"H",Ⱶ:"H",Ɥ:"H","Ⓘ":"I",I:"I",Ì:"I",Í:"I",Î:"I",Ĩ:"I",Ī:"I",Ĭ:"I",İ:"I",Ï:"I",Ḯ:"I",Ỉ:"I",Ǐ:"I",Ȉ:"I",Ȋ:"I",Ị:"I",Į:"I",Ḭ:"I",Ɨ:"I","Ⓙ":"J",J:"J",Ĵ:"J",Ɉ:"J","Ⓚ":"K",K:"K",Ḱ:"K",Ǩ:"K",Ḳ:"K",Ķ:"K",Ḵ:"K",Ƙ:"K",Ⱪ:"K",Ꝁ:"K",Ꝃ:"K",Ꝅ:"K",Ꞣ:"K","Ⓛ":"L",L:"L",Ŀ:"L",Ĺ:"L",Ľ:"L",Ḷ:"L",Ḹ:"L",Ļ:"L",Ḽ:"L",Ḻ:"L",Ł:"L",Ƚ:"L",Ɫ:"L",Ⱡ:"L",Ꝉ:"L",Ꝇ:"L",Ꞁ:"L",LJ:"LJ",Lj:"Lj","Ⓜ":"M",M:"M",Ḿ:"M",Ṁ:"M",Ṃ:"M",Ɱ:"M",Ɯ:"M","Ⓝ":"N",N:"N",Ǹ:"N",Ń:"N",Ñ:"N",Ṅ:"N",Ň:"N",Ṇ:"N",Ņ:"N",Ṋ:"N",Ṉ:"N",Ƞ:"N",Ɲ:"N",Ꞑ:"N",Ꞥ:"N",NJ:"NJ",Nj:"Nj","Ⓞ":"O",O:"O",Ò:"O",Ó:"O",Ô:"O",Ồ:"O",Ố:"O",Ỗ:"O",Ổ:"O",Õ:"O",Ṍ:"O",Ȭ:"O",Ṏ:"O",Ō:"O",Ṑ:"O",Ṓ:"O",Ŏ:"O",Ȯ:"O",Ȱ:"O",Ö:"O",Ȫ:"O",Ỏ:"O",Ő:"O",Ǒ:"O",Ȍ:"O",Ȏ:"O",Ơ:"O",Ờ:"O",Ớ:"O",Ỡ:"O",Ở:"O",Ợ:"O",Ọ:"O",Ộ:"O",Ǫ:"O",Ǭ:"O",Ø:"O",Ǿ:"O",Ɔ:"O",Ɵ:"O",Ꝋ:"O",Ꝍ:"O",Ƣ:"OI",Ꝏ:"OO",Ȣ:"OU","Ⓟ":"P",P:"P",Ṕ:"P",Ṗ:"P",Ƥ:"P",Ᵽ:"P",Ꝑ:"P",Ꝓ:"P",Ꝕ:"P","Ⓠ":"Q",Q:"Q",Ꝗ:"Q",Ꝙ:"Q",Ɋ:"Q","Ⓡ":"R",R:"R",Ŕ:"R",Ṙ:"R",Ř:"R",Ȑ:"R",Ȓ:"R",Ṛ:"R",Ṝ:"R",Ŗ:"R",Ṟ:"R",Ɍ:"R",Ɽ:"R",Ꝛ:"R",Ꞧ:"R",Ꞃ:"R","Ⓢ":"S",S:"S",ẞ:"S",Ś:"S",Ṥ:"S",Ŝ:"S",Ṡ:"S",Š:"S",Ṧ:"S",Ṣ:"S",Ṩ:"S",Ș:"S",Ş:"S",Ȿ:"S",Ꞩ:"S",Ꞅ:"S","Ⓣ":"T",T:"T",Ṫ:"T",Ť:"T",Ṭ:"T",Ț:"T",Ţ:"T",Ṱ:"T",Ṯ:"T",Ŧ:"T",Ƭ:"T",Ʈ:"T",Ⱦ:"T",Ꞇ:"T",Ꜩ:"TZ","Ⓤ":"U",U:"U",Ù:"U",Ú:"U",Û:"U",Ũ:"U",Ṹ:"U",Ū:"U",Ṻ:"U",Ŭ:"U",Ü:"U",Ǜ:"U",Ǘ:"U",Ǖ:"U",Ǚ:"U",Ủ:"U",Ů:"U",Ű:"U",Ǔ:"U",Ȕ:"U",Ȗ:"U",Ư:"U",Ừ:"U",Ứ:"U",Ữ:"U",Ử:"U",Ự:"U",Ụ:"U",Ṳ:"U",Ų:"U",Ṷ:"U",Ṵ:"U",Ʉ:"U","Ⓥ":"V",V:"V",Ṽ:"V",Ṿ:"V",Ʋ:"V",Ꝟ:"V",Ʌ:"V",Ꝡ:"VY","Ⓦ":"W",W:"W",Ẁ:"W",Ẃ:"W",Ŵ:"W",Ẇ:"W",Ẅ:"W",Ẉ:"W",Ⱳ:"W","Ⓧ":"X",X:"X",Ẋ:"X",Ẍ:"X","Ⓨ":"Y",Y:"Y",Ỳ:"Y",Ý:"Y",Ŷ:"Y",Ỹ:"Y",Ȳ:"Y",Ẏ:"Y",Ÿ:"Y",Ỷ:"Y",Ỵ:"Y",Ƴ:"Y",Ɏ:"Y",Ỿ:"Y","Ⓩ":"Z",Z:"Z",Ź:"Z",Ẑ:"Z",Ż:"Z",Ž:"Z",Ẓ:"Z",Ẕ:"Z",Ƶ:"Z",Ȥ:"Z",Ɀ:"Z",Ⱬ:"Z",Ꝣ:"Z","ⓐ":"a",a:"a",ẚ:"a",à:"a",á:"a",â:"a",ầ:"a",ấ:"a",ẫ:"a",ẩ:"a",ã:"a",ā:"a",ă:"a",ằ:"a",ắ:"a",ẵ:"a",ẳ:"a",ȧ:"a",ǡ:"a",ä:"a",ǟ:"a",ả:"a",å:"a",ǻ:"a",ǎ:"a",ȁ:"a",ȃ:"a",ạ:"a",ậ:"a",ặ:"a",ḁ:"a",ą:"a",ⱥ:"a",ɐ:"a",ꜳ:"aa",æ:"ae",ǽ:"ae",ǣ:"ae",ꜵ:"ao",ꜷ:"au",ꜹ:"av",ꜻ:"av",ꜽ:"ay","ⓑ":"b",b:"b",ḃ:"b",ḅ:"b",ḇ:"b",ƀ:"b",ƃ:"b",ɓ:"b","ⓒ":"c",c:"c",ć:"c",ĉ:"c",ċ:"c",č:"c",ç:"c",ḉ:"c",ƈ:"c",ȼ:"c",ꜿ:"c",ↄ:"c","ⓓ":"d",d:"d",ḋ:"d",ď:"d",ḍ:"d",ḑ:"d",ḓ:"d",ḏ:"d",đ:"d",ƌ:"d",ɖ:"d",ɗ:"d",ꝺ:"d",dz:"dz",dž:"dz","ⓔ":"e",e:"e",è:"e",é:"e",ê:"e",ề:"e",ế:"e",ễ:"e",ể:"e",ẽ:"e",ē:"e",ḕ:"e",ḗ:"e",ĕ:"e",ė:"e",ë:"e",ẻ:"e",ě:"e",ȅ:"e",ȇ:"e",ẹ:"e",ệ:"e",ȩ:"e",ḝ:"e",ę:"e",ḙ:"e",ḛ:"e",ɇ:"e",ɛ:"e",ǝ:"e","ⓕ":"f",f:"f",ḟ:"f",ƒ:"f",ꝼ:"f","ⓖ":"g",g:"g",ǵ:"g",ĝ:"g",ḡ:"g",ğ:"g",ġ:"g",ǧ:"g",ģ:"g",ǥ:"g",ɠ:"g",ꞡ:"g",ᵹ:"g",ꝿ:"g","ⓗ":"h",h:"h",ĥ:"h",ḣ:"h",ḧ:"h",ȟ:"h",ḥ:"h",ḩ:"h",ḫ:"h",ẖ:"h",ħ:"h",ⱨ:"h",ⱶ:"h",ɥ:"h",ƕ:"hv","ⓘ":"i",i:"i",ì:"i",í:"i",î:"i",ĩ:"i",ī:"i",ĭ:"i",ï:"i",ḯ:"i",ỉ:"i",ǐ:"i",ȉ:"i",ȋ:"i",ị:"i",į:"i",ḭ:"i",ɨ:"i",ı:"i","ⓙ":"j",j:"j",ĵ:"j",ǰ:"j",ɉ:"j","ⓚ":"k",k:"k",ḱ:"k",ǩ:"k",ḳ:"k",ķ:"k",ḵ:"k",ƙ:"k",ⱪ:"k",ꝁ:"k",ꝃ:"k",ꝅ:"k",ꞣ:"k","ⓛ":"l",l:"l",ŀ:"l",ĺ:"l",ľ:"l",ḷ:"l",ḹ:"l",ļ:"l",ḽ:"l",ḻ:"l",ſ:"l",ł:"l",ƚ:"l",ɫ:"l",ⱡ:"l",ꝉ:"l",ꞁ:"l",ꝇ:"l",lj:"lj","ⓜ":"m",m:"m",ḿ:"m",ṁ:"m",ṃ:"m",ɱ:"m",ɯ:"m","ⓝ":"n",n:"n",ǹ:"n",ń:"n",ñ:"n",ṅ:"n",ň:"n",ṇ:"n",ņ:"n",ṋ:"n",ṉ:"n",ƞ:"n",ɲ:"n",ʼn:"n",ꞑ:"n",ꞥ:"n",nj:"nj","ⓞ":"o",o:"o",ò:"o",ó:"o",ô:"o",ồ:"o",ố:"o",ỗ:"o",ổ:"o",õ:"o",ṍ:"o",ȭ:"o",ṏ:"o",ō:"o",ṑ:"o",ṓ:"o",ŏ:"o",ȯ:"o",ȱ:"o",ö:"o",ȫ:"o",ỏ:"o",ő:"o",ǒ:"o",ȍ:"o",ȏ:"o",ơ:"o",ờ:"o",ớ:"o",ỡ:"o",ở:"o",ợ:"o",ọ:"o",ộ:"o",ǫ:"o",ǭ:"o",ø:"o",ǿ:"o",ɔ:"o",ꝋ:"o",ꝍ:"o",ɵ:"o",ƣ:"oi",ȣ:"ou",ꝏ:"oo","ⓟ":"p",p:"p",ṕ:"p",ṗ:"p",ƥ:"p",ᵽ:"p",ꝑ:"p",ꝓ:"p",ꝕ:"p","ⓠ":"q",q:"q",ɋ:"q",ꝗ:"q",ꝙ:"q","ⓡ":"r",r:"r",ŕ:"r",ṙ:"r",ř:"r",ȑ:"r",ȓ:"r",ṛ:"r",ṝ:"r",ŗ:"r",ṟ:"r",ɍ:"r",ɽ:"r",ꝛ:"r",ꞧ:"r",ꞃ:"r","ⓢ":"s",s:"s",ß:"s",ś:"s",ṥ:"s",ŝ:"s",ṡ:"s",š:"s",ṧ:"s",ṣ:"s",ṩ:"s",ș:"s",ş:"s",ȿ:"s",ꞩ:"s",ꞅ:"s",ẛ:"s","ⓣ":"t",t:"t",ṫ:"t",ẗ:"t",ť:"t",ṭ:"t",ț:"t",ţ:"t",ṱ:"t",ṯ:"t",ŧ:"t",ƭ:"t",ʈ:"t",ⱦ:"t",ꞇ:"t",ꜩ:"tz","ⓤ":"u",u:"u",ù:"u",ú:"u",û:"u",ũ:"u",ṹ:"u",ū:"u",ṻ:"u",ŭ:"u",ü:"u",ǜ:"u",ǘ:"u",ǖ:"u",ǚ:"u",ủ:"u",ů:"u",ű:"u",ǔ:"u",ȕ:"u",ȗ:"u",ư:"u",ừ:"u",ứ:"u",ữ:"u",ử:"u",ự:"u",ụ:"u",ṳ:"u",ų:"u",ṷ:"u",ṵ:"u",ʉ:"u","ⓥ":"v",v:"v",ṽ:"v",ṿ:"v",ʋ:"v",ꝟ:"v",ʌ:"v",ꝡ:"vy","ⓦ":"w",w:"w",ẁ:"w",ẃ:"w",ŵ:"w",ẇ:"w",ẅ:"w",ẘ:"w",ẉ:"w",ⱳ:"w","ⓧ":"x",x:"x",ẋ:"x",ẍ:"x","ⓨ":"y",y:"y",ỳ:"y",ý:"y",ŷ:"y",ỹ:"y",ȳ:"y",ẏ:"y",ÿ:"y",ỷ:"y",ẙ:"y",ỵ:"y",ƴ:"y",ɏ:"y",ỿ:"y","ⓩ":"z",z:"z",ź:"z",ẑ:"z",ż:"z",ž:"z",ẓ:"z",ẕ:"z",ƶ:"z",ȥ:"z",ɀ:"z",ⱬ:"z",ꝣ:"z",Ά:"Α",Έ:"Ε",Ή:"Η",Ί:"Ι",Ϊ:"Ι",Ό:"Ο",Ύ:"Υ",Ϋ:"Υ",Ώ:"Ω",ά:"α",έ:"ε",ή:"η",ί:"ι",ϊ:"ι",ΐ:"ι",ό:"ο",ύ:"υ",ϋ:"υ",ΰ:"υ",ω:"ω",ς:"σ"};a=t(document),l=1,r=function(){return l++},n=O(Object,{bind:function(t){var e=this;return function(){t.apply(e,arguments)}},init:function(n){var i,o,s,a,l=".select2-results";this.opts=n=this.prepareOpts(n),this.id=n.id,n.element.data("select2")!==e&&null!==n.element.data("select2")&&n.element.data("select2").destroy(),this.container=this.createContainer(),this.liveRegion=t("",{role:"status","aria-live":"polite"}).addClass("select2-hidden-accessible").appendTo(document.body),this.containerId="s2id_"+(n.element.attr("id")||"autogen"+r()),this.containerEventName=this.containerId.replace(/([.])/g,"_").replace(/([;&,\-\.\+\*\~':"\!\^#$%@\[\]\(\)=>\|])/g,"\\$1"),this.container.attr("id",this.containerId),this.container.attr("title",n.element.attr("title")),this.body=t("body"),w(this.container,this.opts.element,this.opts.adaptContainerCssClass),this.container.attr("style",n.element.attr("style")),this.container.css(D(n.containerCss,this.opts.element)),this.container.addClass(D(n.containerCssClass,this.opts.element)),this.elementTabIndex=this.opts.element.attr("tabindex"),this.opts.element.data("select2",this).attr("tabindex","-1").before(this.container).on("click.select2",x),this.container.data("select2",this),this.dropdown=this.container.find(".select2-drop"),w(this.dropdown,this.opts.element,this.opts.adaptDropdownCssClass),this.dropdown.addClass(D(n.dropdownCssClass,this.opts.element)),this.dropdown.data("select2",this),this.dropdown.on("click",x),this.results=i=this.container.find(l),this.search=o=this.container.find("input.select2-input"),this.queryCount=0,this.resultsPage=0,this.context=null,this.initContainer(),this.container.on("click",x),this.results.on("mousemove",(function(n){var i=u;i!==e&&i.x===n.pageX&&i.y===n.pageY||t(n.target).trigger("mousemove-filtered",n)})),this.dropdown.on("mousemove-filtered",l,this.bind(this.highlightUnderEvent)),this.dropdown.on("touchstart touchmove touchend",l,this.bind((function(t){this._touchEvent=!0,this.highlightUnderEvent(t)}))),this.dropdown.on("touchmove",l,this.bind(this.touchMoved)),this.dropdown.on("touchstart touchend",l,this.bind(this.clearTouchMoved)),this.dropdown.on("click",this.bind((function(t){this._touchEvent&&(this._touchEvent=!1,this.selectHighlighted())}))),s=this.results,a=C(80,(function(t){s.trigger("scroll-debounced",t)})),s.on("scroll",(function(t){f(t.target,s.get())>=0&&a(t)})),this.dropdown.on("scroll-debounced",l,this.bind(this.loadMoreIfNeeded)),t(this.container).on("change",".select2-input",(function(t){t.stopPropagation()})),t(this.dropdown).on("change",".select2-input",(function(t){t.stopPropagation()})),t.fn.mousewheel&&i.mousewheel((function(t,e,n,o){var r=i.scrollTop();o>0&&r-o<=0?(i.scrollTop(0),x(t)):o<0&&i.get(0).scrollHeight-i.scrollTop()+o<=i.height()&&(i.scrollTop(i.get(0).scrollHeight-i.height()),x(t))})),v(o),o.on("keyup-change input paste",this.bind(this.updateResults)),o.on("focus",(function(){o.addClass("select2-focused")})),o.on("blur",(function(){o.removeClass("select2-focused")})),this.dropdown.on("mouseup",l,this.bind((function(e){t(e.target).closest(".select2-result-selectable").length>0&&(this.highlightUnderEvent(e),this.selectHighlighted(e))}))),this.dropdown.on("click mouseup mousedown touchstart touchend focusin",(function(t){t.stopPropagation()})),this.nextSearchTerm=e,t.isFunction(this.opts.initSelection)&&(this.initSelection(),this.monitorSource()),null!==n.maximumInputLength&&this.search.attr("maxlength",n.maximumInputLength);var h=n.element.prop("disabled");h===e&&(h=!1),this.enable(!h);var d=n.element.prop("readonly");d===e&&(d=!1),this.readonly(d),c=c||function(){var e=t("
        ");e.appendTo("body");var n={width:e.width()-e[0].clientWidth,height:e.height()-e[0].clientHeight};return e.remove(),n}(),this.autofocus=n.element.prop("autofocus"),n.element.prop("autofocus",!1),this.autofocus&&this.focus(),this.search.attr("placeholder",n.searchInputPlaceholder)},destroy:function(){var t=this.opts.element,n=t.data("select2"),i=this;this.close(),t.length&&t[0].detachEvent&&t.each((function(){this.detachEvent("onpropertychange",i._sync)})),this.propertyObserver&&(this.propertyObserver.disconnect(),this.propertyObserver=null),this._sync=null,n!==e&&(n.container.remove(),n.liveRegion.remove(),n.dropdown.remove(),t.removeClass("select2-offscreen").removeData("select2").off(".select2").prop("autofocus",this.autofocus||!1),this.elementTabIndex?t.attr({tabindex:this.elementTabIndex}):t.removeAttr("tabindex"),t.show()),T.call(this,"container","liveRegion","dropdown","results","search")},optionToData:function(t){return t.is("option")?{id:t.prop("value"),text:t.text(),element:t.get(),css:t.attr("class"),disabled:t.prop("disabled"),locked:g(t.attr("locked"),"locked")||g(t.data("locked"),!0)}:t.is("optgroup")?{text:t.attr("label"),children:[],element:t.get(),css:t.attr("class")}:void 0},prepareOpts:function(n){var i,o,s,a,c=this;if("select"===(i=n.element).get(0).tagName.toLowerCase()&&(this.select=o=n.element),o&&t.each(["id","multiple","ajax","query","createSearchChoice","initSelection","data","tags"],(function(){if(this in n)throw new Error("Option '"+this+"' is not allowed for Select2 when attached to a ","
        "," ","
          ","
        ","
        "].join(""))},enableInterface:function(){this.parent.enableInterface.apply(this,arguments)&&this.focusser.prop("disabled",!this.isInterfaceEnabled())},opening:function(){var n,i,o;this.opts.minimumResultsForSearch>=0&&this.showSearch(!0),this.parent.opening.apply(this,arguments),!1!==this.showSearchInput&&this.search.val(this.focusser.val()),this.opts.shouldFocusInput(this)&&(this.search.focus(),(n=this.search.get(0)).createTextRange?((i=n.createTextRange()).collapse(!1),i.select()):n.setSelectionRange&&(o=this.search.val().length,n.setSelectionRange(o,o))),""===this.search.val()&&this.nextSearchTerm!=e&&(this.search.val(this.nextSearchTerm),this.search.select()),this.focusser.prop("disabled",!0).val(""),this.updateResults(!0),this.opts.element.trigger(t.Event("select2-open"))},close:function(){this.opened()&&(this.parent.close.apply(this,arguments),this.focusser.prop("disabled",!1),this.opts.shouldFocusInput(this)&&this.focusser.focus())},focus:function(){this.opened()?this.close():(this.focusser.prop("disabled",!1),this.opts.shouldFocusInput(this)&&this.focusser.focus())},isFocused:function(){return this.container.hasClass("select2-container-active")},cancel:function(){this.parent.cancel.apply(this,arguments),this.focusser.prop("disabled",!1),this.opts.shouldFocusInput(this)&&this.focusser.focus()},destroy:function(){t("label[for='"+this.focusser.attr("id")+"']").attr("for",this.opts.element.attr("id")),this.parent.destroy.apply(this,arguments),T.call(this,"selection","focusser")},initContainer:function(){var e,n,i=this.container,o=this.dropdown,s=r();this.opts.minimumResultsForSearch<0?this.showSearch(!1):this.showSearch(!0),this.selection=e=i.find(".select2-choice"),this.focusser=i.find(".select2-focusser"),e.find(".select2-chosen").attr("id","select2-chosen-"+s),this.focusser.attr("aria-labelledby","select2-chosen-"+s),this.results.attr("id","select2-results-"+s),this.search.attr("aria-owns","select2-results-"+s),this.focusser.attr("id","s2id_autogen"+s),n=t("label[for='"+this.opts.element.attr("id")+"']"),this.focusser.prev().text(n.text()).attr("for",this.focusser.attr("id"));var a=this.opts.element.attr("title");this.opts.element.attr("title",a||n.text()),this.focusser.attr("tabindex",this.elementTabIndex),this.search.attr("id",this.focusser.attr("id")+"_search"),this.search.prev().text(t("label[for='"+this.focusser.attr("id")+"']").text()).attr("for",this.search.attr("id")),this.search.on("keydown",this.bind((function(t){if(this.isInterfaceEnabled()&&229!=t.keyCode)if(t.which!==h.PAGE_UP&&t.which!==h.PAGE_DOWN)switch(t.which){case h.UP:case h.DOWN:return this.moveHighlight(t.which===h.UP?-1:1),void x(t);case h.ENTER:return this.selectHighlighted(),void x(t);case h.TAB:return void this.selectHighlighted({noFocus:!0});case h.ESC:return this.cancel(t),void x(t)}else x(t)}))),this.search.on("blur",this.bind((function(t){document.activeElement===this.body.get(0)&&window.setTimeout(this.bind((function(){this.opened()&&this.search.focus()})),0)}))),this.focusser.on("keydown",this.bind((function(t){if(this.isInterfaceEnabled()&&t.which!==h.TAB&&!h.isControl(t)&&!h.isFunctionKey(t)&&t.which!==h.ESC){if(!1!==this.opts.openOnEnter||t.which!==h.ENTER){if(t.which==h.DOWN||t.which==h.UP||t.which==h.ENTER&&this.opts.openOnEnter){if(t.altKey||t.ctrlKey||t.shiftKey||t.metaKey)return;return this.open(),void x(t)}return t.which==h.DELETE||t.which==h.BACKSPACE?(this.opts.allowClear&&this.clear(),void x(t)):void 0}x(t)}}))),v(this.focusser),this.focusser.on("keyup-change input",this.bind((function(t){if(this.opts.minimumResultsForSearch>=0){if(t.stopPropagation(),this.opened())return;this.open()}}))),e.on("mousedown touchstart","abbr",this.bind((function(t){var e;this.isInterfaceEnabled()&&(this.clear(),(e=t).preventDefault(),e.stopImmediatePropagation(),this.close(),this.selection.focus())}))),e.on("mousedown touchstart",this.bind((function(n){p(e),this.container.hasClass("select2-container-active")||this.opts.element.trigger(t.Event("select2-focus")),this.opened()?this.close():this.isInterfaceEnabled()&&this.open(),x(n)}))),o.on("mousedown touchstart",this.bind((function(){this.opts.shouldFocusInput(this)&&this.search.focus()}))),e.on("focus",this.bind((function(t){x(t)}))),this.focusser.on("focus",this.bind((function(){this.container.hasClass("select2-container-active")||this.opts.element.trigger(t.Event("select2-focus")),this.container.addClass("select2-container-active")}))).on("blur",this.bind((function(){this.opened()||(this.container.removeClass("select2-container-active"),this.opts.element.trigger(t.Event("select2-blur")))}))),this.search.on("focus",this.bind((function(){this.container.hasClass("select2-container-active")||this.opts.element.trigger(t.Event("select2-focus")),this.container.addClass("select2-container-active")}))),this.initContainerWidth(),this.opts.element.addClass("select2-offscreen"),this.setPlaceholder()},clear:function(e){var n=this.selection.data("select2-data");if(n){var i=t.Event("select2-clearing");if(this.opts.element.trigger(i),i.isDefaultPrevented())return;var o=this.getPlaceholderOption();this.opts.element.val(o?o.val():""),this.selection.find(".select2-chosen").empty(),this.selection.removeData("select2-data"),this.setPlaceholder(),!1!==e&&(this.opts.element.trigger({type:"select2-removed",val:this.id(n),choice:n}),this.triggerChange({removed:n}))}},initSelection:function(){if(this.isPlaceholderOptionSelected())this.updateSelection(null),this.close(),this.setPlaceholder();else{var t=this;this.opts.initSelection.call(null,this.opts.element,(function(n){n!==e&&null!==n&&(t.updateSelection(n),t.close(),t.setPlaceholder(),t.nextSearchTerm=t.opts.nextSearchTerm(n,t.search.val()))}))}},isPlaceholderOptionSelected:function(){var t;return this.getPlaceholder()!==e&&((t=this.getPlaceholderOption())!==e&&t.prop("selected")||""===this.opts.element.val()||this.opts.element.val()===e||null===this.opts.element.val())},prepareOpts:function(){var e=this.parent.prepareOpts.apply(this,arguments),n=this;return"select"===e.element.get(0).tagName.toLowerCase()?e.initSelection=function(t,e){var i=t.find("option").filter((function(){return this.selected&&!this.disabled}));e(n.optionToData(i))}:"data"in e&&(e.initSelection=e.initSelection||function(n,i){var o=n.val(),r=null;e.query({matcher:function(t,n,i){var s=g(o,e.id(i));return s&&(r=i),s},callback:t.isFunction(i)?function(){i(r)}:t.noop})}),e},getPlaceholder:function(){return this.select&&this.getPlaceholderOption()===e?e:this.parent.getPlaceholder.apply(this,arguments)},setPlaceholder:function(){var t=this.getPlaceholder();if(this.isPlaceholderOptionSelected()&&t!==e){if(this.select&&this.getPlaceholderOption()===e)return;this.selection.find(".select2-chosen").html(this.opts.escapeMarkup(t)),this.selection.addClass("select2-default"),this.container.removeClass("select2-allowclear")}},postprocessResults:function(t,e,n){var i=0,o=this;if(this.findHighlightableChoices().each2((function(t,e){if(g(o.id(e.data("select2-data")),o.opts.element.val()))return i=t,!1})),!1!==n&&(!0===e&&i>=0?this.highlight(i):this.highlight(0)),!0===e){var r=this.opts.minimumResultsForSearch;r>=0&&this.showSearch(S(t.results)>=r)}},showSearch:function(e){this.showSearchInput!==e&&(this.showSearchInput=e,this.dropdown.find(".select2-search").toggleClass("select2-search-hidden",!e),this.dropdown.find(".select2-search").toggleClass("select2-offscreen",!e),t(this.dropdown,this.container).toggleClass("select2-with-searchbox",e))},onSelect:function(t,e){if(this.triggerSelect(t)){var n=this.opts.element.val(),i=this.data();this.opts.element.val(this.id(t)),this.updateSelection(t),this.opts.element.trigger({type:"select2-selected",val:this.id(t),choice:t}),this.nextSearchTerm=this.opts.nextSearchTerm(t,this.search.val()),this.close(),e&&e.noFocus||!this.opts.shouldFocusInput(this)||this.focusser.focus(),g(n,this.id(t))||this.triggerChange({added:t,removed:i})}},updateSelection:function(t){var n,i,o=this.selection.find(".select2-chosen");this.selection.data("select2-data",t),o.empty(),null!==t&&(n=this.opts.formatSelection(t,o,this.opts.escapeMarkup)),n!==e&&o.append(n),(i=this.opts.formatSelectionCssClass(t,o))!==e&&o.addClass(i),this.selection.removeClass("select2-default"),this.opts.allowClear&&this.getPlaceholder()!==e&&this.container.addClass("select2-allowclear")},val:function(){var t,n=!1,i=null,o=this,r=this.data();if(0===arguments.length)return this.opts.element.val();if(t=arguments[0],arguments.length>1&&(n=arguments[1]),this.select)this.select.val(t).find("option").filter((function(){return this.selected})).each2((function(t,e){return i=o.optionToData(e),!1})),this.updateSelection(i),this.setPlaceholder(),n&&this.triggerChange({added:i,removed:r});else{if(!t&&0!==t)return void this.clear(n);if(this.opts.initSelection===e)throw new Error("cannot call val() if initSelection() is not defined");this.opts.element.val(t),this.opts.initSelection(this.opts.element,(function(t){o.opts.element.val(t?o.id(t):""),o.updateSelection(t),o.setPlaceholder(),n&&o.triggerChange({added:t,removed:r})}))}},clearSearch:function(){this.search.val(""),this.focusser.val("")},data:function(t){var n,i=!1;if(0===arguments.length)return(n=this.selection.data("select2-data"))==e&&(n=null),n;arguments.length>1&&(i=arguments[1]),t?(n=this.data(),this.opts.element.val(t?this.id(t):""),this.updateSelection(t),i&&this.triggerChange({added:t,removed:n})):this.clear(i)}}),o=O(n,{createContainer:function(){return t(document.createElement("div")).attr({class:"select2-container select2-container-multi"}).html(["
          ","
        • "," "," ","
        • ","
        ","
        ","
          ","
        ","
        "].join(""))},prepareOpts:function(){var e=this.parent.prepareOpts.apply(this,arguments),n=this;return"select"===e.element.get(0).tagName.toLowerCase()?e.initSelection=function(t,e){var i=[];t.find("option").filter((function(){return this.selected&&!this.disabled})).each2((function(t,e){i.push(n.optionToData(e))})),e(i)}:"data"in e&&(e.initSelection=e.initSelection||function(n,i){var o=m(n.val(),e.separator),r=[];e.query({matcher:function(n,i,s){var a=t.grep(o,(function(t){return g(t,e.id(s))})).length;return a&&r.push(s),a},callback:t.isFunction(i)?function(){for(var t=[],n=0;n0||(this.selectChoice(null),this.clearPlaceholder(),this.container.hasClass("select2-container-active")||this.opts.element.trigger(t.Event("select2-focus")),this.open(),this.focusSearch(),e.preventDefault()))}))),this.container.on("focus",n,this.bind((function(){this.isInterfaceEnabled()&&(this.container.hasClass("select2-container-active")||this.opts.element.trigger(t.Event("select2-focus")),this.container.addClass("select2-container-active"),this.dropdown.addClass("select2-drop-active"),this.clearPlaceholder())}))),this.initContainerWidth(),this.opts.element.addClass("select2-offscreen"),this.clearSearch()},enableInterface:function(){this.parent.enableInterface.apply(this,arguments)&&this.search.prop("disabled",!this.isInterfaceEnabled())},initSelection:function(){if(""===this.opts.element.val()&&""===this.opts.element.text()&&(this.updateSelection([]),this.close(),this.clearSearch()),this.select||""!==this.opts.element.val()){var t=this;this.opts.initSelection.call(null,this.opts.element,(function(n){n!==e&&null!==n&&(t.updateSelection(n),t.close(),t.clearSearch())}))}},clearSearch:function(){var t=this.getPlaceholder(),n=this.getMaxSearchWidth();t!==e&&0===this.getVal().length&&!1===this.search.hasClass("select2-focused")?(this.search.val(t).addClass("select2-default"),this.search.width(n>0?n:this.container.css("width"))):this.search.val("").width(10)},clearPlaceholder:function(){this.search.hasClass("select2-default")&&this.search.val("").removeClass("select2-default")},opening:function(){this.clearPlaceholder(),this.resizeSearch(),this.parent.opening.apply(this,arguments),this.focusSearch(),""===this.search.val()&&this.nextSearchTerm!=e&&(this.search.val(this.nextSearchTerm),this.search.select()),this.updateResults(!0),this.opts.shouldFocusInput(this)&&this.search.focus(),this.opts.element.trigger(t.Event("select2-open"))},close:function(){this.opened()&&this.parent.close.apply(this,arguments)},focus:function(){this.close(),this.search.focus()},isFocused:function(){return this.search.hasClass("select2-focused")},updateSelection:function(e){var n=[],i=[],o=this;t(e).each((function(){f(o.id(this),n)<0&&(n.push(o.id(this)),i.push(this))})),e=i,this.selection.find(".select2-search-choice").remove(),t(e).each((function(){o.addSelectedChoice(this)})),o.postprocessResults()},tokenize:function(){var t=this.search.val();null!=(t=this.opts.tokenizer.call(this,t,this.data(),this.bind(this.onSelect),this.opts))&&t!=e&&(this.search.val(t),t.length>0&&this.open())},onSelect:function(t,n){this.triggerSelect(t)&&""!==t.text&&(this.addSelectedChoice(t),this.opts.element.trigger({type:"selected",val:this.id(t),choice:t}),this.nextSearchTerm=this.opts.nextSearchTerm(t,this.search.val()),this.clearSearch(),this.updateResults(),!this.select&&this.opts.closeOnSelect||this.postprocessResults(t,!1,!0===this.opts.closeOnSelect),this.opts.closeOnSelect?(this.close(),this.search.width(10)):this.countSelectableResults()>0?(this.search.width(10),this.resizeSearch(),this.getMaximumSelectionSize()>0&&this.val().length>=this.getMaximumSelectionSize()?this.updateResults(!0):this.nextSearchTerm!=e&&(this.search.val(this.nextSearchTerm),this.updateResults(),this.search.select()),this.positionDropdown()):(this.close(),this.search.width(10)),this.triggerChange({added:t}),n&&n.noFocus||this.focusSearch())},cancel:function(){this.close(),this.focusSearch()},addSelectedChoice:function(n){var i,o,r=!n.locked,s=t("
      • "),a=t("
      • "),c=r?s:a,l=this.id(n),u=this.getVal();(i=this.opts.formatSelection(n,c.find("div"),this.opts.escapeMarkup))!=e&&c.find("div").replaceWith("
        "+i+"
        "),(o=this.opts.formatSelectionCssClass(n,c.find("div")))!=e&&c.addClass(o),r&&c.find(".select2-search-choice-close").on("mousedown",x).on("click dblclick",this.bind((function(e){this.isInterfaceEnabled()&&(this.unselect(t(e.target)),this.selection.find(".select2-search-choice-focus").removeClass("select2-search-choice-focus"),x(e),this.close(),this.focusSearch())}))).on("focus",this.bind((function(){this.isInterfaceEnabled()&&(this.container.addClass("select2-container-active"),this.dropdown.addClass("select2-drop-active"))}))),c.data("select2-data",n),c.insertBefore(this.searchContainer),u.push(l),this.setVal(u)},unselect:function(e){var n,i,o=this.getVal();if(0===(e=e.closest(".select2-search-choice")).length)throw"Invalid argument: "+e+". Must be .select2-search-choice";if(n=e.data("select2-data")){var r=t.Event("select2-removing");if(r.val=this.id(n),r.choice=n,this.opts.element.trigger(r),r.isDefaultPrevented())return!1;for(;(i=f(this.id(n),o))>=0;)o.splice(i,1),this.setVal(o),this.select&&this.postprocessResults();return e.remove(),this.opts.element.trigger({type:"select2-removed",val:this.id(n),choice:n}),this.triggerChange({removed:n}),!0}},postprocessResults:function(t,e,n){var i=this.getVal(),o=this.results.find(".select2-result"),r=this.results.find(".select2-result-with-children"),s=this;o.each2((function(t,e){f(s.id(e.data("select2-data")),i)>=0&&(e.addClass("select2-selected"),e.find(".select2-result-selectable").addClass("select2-selected"))})),r.each2((function(t,e){e.is(".select2-result-selectable")||0!==e.find(".select2-result-selectable:not(.select2-selected)").length||e.addClass("select2-selected")})),-1==this.highlight()&&!1!==n&&s.highlight(0),!this.opts.createSearchChoice&&!o.filter(".select2-result:not(.select2-selected)").length>0&&(!t||t&&!t.more&&0===this.results.find(".select2-no-results").length)&&I(s.opts.formatNoMatches,"formatNoMatches")&&this.results.append("
      • "+D(s.opts.formatNoMatches,s.opts.element,s.search.val())+"
      • ")},getMaxSearchWidth:function(){return this.selection.width()-b(this.search)},resizeSearch:function(){var e,n,i,o,r=b(this.search);e=function(e){if(!s){var n=e[0].currentStyle||window.getComputedStyle(e[0],null);(s=t(document.createElement("div")).css({position:"absolute",left:"-10000px",top:"-10000px",display:"none",fontSize:n.fontSize,fontFamily:n.fontFamily,fontStyle:n.fontStyle,fontWeight:n.fontWeight,letterSpacing:n.letterSpacing,textTransform:n.textTransform,whiteSpace:"nowrap"})).attr("class","select2-sizer"),t("body").append(s)}return s.text(e.val()),s.width()}(this.search)+10,n=this.search.offset().left,(o=(i=this.selection.width())-(n-this.selection.offset().left)-r)0&&n--,t.splice(i,1),i--);return{added:e,removed:t}},val:function(n,i){var o,r=this;if(0===arguments.length)return this.getVal();if((o=this.data()).length||(o=[]),!n&&0!==n)return this.opts.element.val(""),this.updateSelection([]),this.clearSearch(),void(i&&this.triggerChange({added:this.data(),removed:o}));if(this.setVal(n),this.select)this.opts.initSelection(this.select,this.bind(this.updateSelection)),i&&this.triggerChange(this.buildChangeDetails(o,this.data()));else{if(this.opts.initSelection===e)throw new Error("val() cannot be called if initSelection() is not defined");this.opts.initSelection(this.opts.element,(function(e){var n=t.map(e,r.id);r.setVal(n),r.updateSelection(e),r.clearSearch(),i&&r.triggerChange(r.buildChangeDetails(o,r.data()))}))}this.clearSearch()},onSortStart:function(){if(this.select)throw new Error("Sorting of elements is not supported when attached to instead.");this.search.width(0),this.searchContainer.hide()},onSortEnd:function(){var e=[],n=this;this.searchContainer.show(),this.searchContainer.appendTo(this.searchContainer.parent()),this.resizeSearch(),this.selection.find(".select2-search-choice").each((function(){e.push(n.opts.id(t(this).data("select2-data")))})),this.setVal(e),this.triggerChange()},data:function(e,n){var i,o,r=this;if(0===arguments.length)return this.selection.children(".select2-search-choice").map((function(){return t(this).data("select2-data")})).get();o=this.data(),e||(e=[]),i=t.map(e,(function(t){return r.opts.id(t)})),this.setVal(i),this.updateSelection(e),this.clearSearch(),n&&this.triggerChange(this.buildChangeDetails(o,this.data()))}}),t.fn.select2=function(){var n,i,o,r,s,a=Array.prototype.slice.call(arguments,0),c=["val","destroy","opened","open","close","focus","isFocused","container","dropdown","onSortStart","onSortEnd","enable","disable","readonly","positionDropdown","data","search"],l=["opened","isFocused","container","dropdown"],u=["val","data"],h={search:"externalSearch"};return this.each((function(){if(0===a.length||"object"==typeof a[0])(n=0===a.length?{}:t.extend({},a[0])).element=t(this),"select"===n.element.get(0).tagName.toLowerCase()?s=n.element.prop("multiple"):(s=n.multiple||!1,"tags"in n&&(n.multiple=s=!0)),(i=s?new window.Select2.class.multi:new window.Select2.class.single).init(n);else{if("string"!=typeof a[0])throw"Invalid arguments to select2 plugin: "+a;if(f(a[0],c)<0)throw"Unknown method: "+a[0];if(r=e,(i=t(this).data("select2"))===e)return;if("container"===(o=a[0])?r=i.container:"dropdown"===o?r=i.dropdown:(h[o]&&(o=h[o]),r=i[o].apply(i,a.slice(1))),f(a[0],l)>=0||f(a[0],u)>=0&&1==a.length)return!1}})),r===e?this:r},t.fn.select2.defaults={width:"copy",loadMorePadding:0,closeOnSelect:!0,openOnEnter:!0,containerCss:{},dropdownCss:{},containerCssClass:"",dropdownCssClass:"",formatResult:function(t,e,n,i){var o=[];return y(t.text,n.term,o,i),o.join("")},formatSelection:function(t,n,i){return t?i(t.text):e},sortResults:function(t,e,n){return t},formatResultCssClass:function(t){return t.css},formatSelectionCssClass:function(t,n){return e},minimumResultsForSearch:0,minimumInputLength:0,maximumInputLength:null,maximumSelectionSize:0,id:function(t){return t==e?null:t.id},matcher:function(t,e){return A(""+e).toUpperCase().indexOf(A(""+t).toUpperCase())>=0},separator:",",tokenSeparators:[],tokenizer:function(t,n,i,o){var r,s,a,c,l,u=t,h=!1;if(!o.createSearchChoice||!o.tokenSeparators||o.tokenSeparators.length<1)return e;for(;;){for(s=-1,a=0,c=o.tokenSeparators.length;a=0));a++);if(s<0)break;if(r=t.substring(0,s),t=t.substring(s+l.length),r.length>0&&(r=o.createSearchChoice.call(this,r,n))!==e&&null!==r&&o.id(r)!==e&&null!==o.id(r)){for(h=!1,a=0,c=n.length;a0)&&t.opts.minimumResultsForSearch<0)}},t.fn.select2.locales=[],t.fn.select2.locales.en={formatMatches:function(t){return 1===t?"One result is available, press enter to select it.":t+" results are available, use up and down arrow keys to navigate."},formatNoMatches:function(){return"No matches found"},formatAjaxError:function(t,e,n){return"Loading failed"},formatInputTooShort:function(t,e){var n=e-t.length;return"Please enter "+n+" or more character"+(1==n?"":"s")},formatInputTooLong:function(t,e){var n=t.length-e;return"Please delete "+n+" character"+(1==n?"":"s")},formatSelectionTooBig:function(t){return"You can only select "+t+" item"+(1==t?"":"s")},formatLoadMore:function(t){return"Loading more results…"},formatSearching:function(){return"Searching…"}},t.extend(t.fn.select2.defaults,t.fn.select2.locales.en),t.fn.select2.ajaxDefaults={transport:t.ajax,params:{type:"GET",cache:!1,dataType:"json"}},window.Select2={query:{ajax:B,local:E,tags:_},util:{debounce:C,markMatch:y,escapeMarkup:k,stripDiacritics:A},class:{abstract:n,single:i,multi:o}}}function p(e){var n=t(document.createTextNode(""));e.before(n),n.before(e),n.remove()}function A(t){return t.replace(/[^\u0000-\u007E]/g,(function(t){return d[t]||t}))}function f(t,e){for(var n=0,i=e.length;n"),n.push(i(t.substring(o,o+r))),n.push(""),n.push(i(t.substring(o+r,t.length))))}function k(t){var e={"\\":"\","&":"&","<":"<",">":">",'"':""","'":"'","/":"/"};return String(t).replace(/[&<>"'\/\\]/g,(function(t){return e[t]}))}function B(n){var i,o=null,r=n.quietMillis||100,s=n.url,a=this;return function(c){window.clearTimeout(i),i=window.setTimeout((function(){var i=n.data,r=s,l=n.transport||t.fn.select2.ajaxDefaults.transport,u={type:n.type||"GET",cache:n.cache||!1,jsonpCallback:n.jsonpCallback||e,dataType:n.dataType||"json"},h=t.extend({},t.fn.select2.ajaxDefaults.params,u);i=i?i.call(a,c.term,c.page,c.context):null,r="function"==typeof r?r.call(a,c.term,c.page,c.context):r,o&&"function"==typeof o.abort&&o.abort(),n.params&&(t.isFunction(n.params)?t.extend(h,n.params.call(a)):t.extend(h,n.params)),t.extend(h,{url:r,dataType:n.dataType,data:i,success:function(t){var e=n.results(t,c.page,c);c.callback(e)},error:function(t,e,n){var i={hasError:!0,jqXHR:t,textStatus:e,errorThrown:n};c.callback(i)}}),o=l.call(a,h)}),r)}}function E(e){var n,i,o=e,r=function(t){return""+t.text};t.isArray(o)&&(o={results:i=o}),!1===t.isFunction(o)&&(i=o,o=function(){return i});var s=o();return s.text&&(r=s.text,t.isFunction(r)||(n=s.text,r=function(t){return t[n]})),function(e){var n,i=e.term,s={results:[]};""!==i?(n=function(o,s){var a,c;if((o=o[0]).children){for(c in a={},o)o.hasOwnProperty(c)&&(a[c]=o[c]);a.children=[],t(o.children).each2((function(t,e){n(e,a.children)})),(a.children.length||e.matcher(i,r(a),o))&&s.push(a)}else e.matcher(i,r(o),o)&&s.push(o)},t(o().results).each2((function(t,e){n(e,s.results)})),e.callback(s)):e.callback(o())}}function _(n){var i=t.isFunction(n);return function(o){var r=o.term,s={results:[]},a=i?n(o):n;t.isArray(a)&&(t(a).each((function(){var t=this.text!==e,n=t?this.text:this;(""===r||o.matcher(r,n))&&s.results.push(t?this:{id:this,text:this})})),o.callback(s))}}function I(e,n){if(t.isFunction(e))return!0;if(!e)return!1;if("string"==typeof e)return!0;throw new Error(n+" must be a string, function, or falsy value")}function D(e,n){if(t.isFunction(e)){var i=Array.prototype.slice.call(arguments,2);return e.apply(n,i)}return e}function S(e){var n=0;return t.each(e,(function(t,e){e.children?n+=S(e.children):n++})),n}function T(){var e=this;t.each(arguments,(function(t,n){e[n].remove(),e[n]=null}))}function O(e,n){var i=function(){};return(i.prototype=new e).constructor=i,i.prototype.parent=e.prototype,i.prototype=t.extend(i.prototype,n),i}}(o)},57223:()=>{"use strict";!function t(e,n,i){function o(s,a){if(!n[s]){if(!e[s]){if(r)return r(s,!0);throw new Error("Cannot find module '"+s+"'")}var c=n[s]={exports:{}};e[s][0].call(c.exports,(function(t){return o(e[s][1][t]||t)}),c,c.exports,t,e,n,i)}return n[s].exports}for(var r=void 0,s=0;s0?e.touches[0]["page"+t]:e.changedTouches[0]["page"+t]:e["page"+t]},klass:{has:function(t,e){return-1!==t.className.indexOf(e)},add:function(t,n){!o.klass.has(t,n)&&e.addBodyClasses&&(t.className+=" "+n)},remove:function(t,n){e.addBodyClasses&&(t.className=t.className.replace(n,"").replace(/^\s+|\s+$/g,""))}},dispatchEvent:function(t){if("function"==typeof i[t])return i[t].call()},vendor:function(){var t,e=document.createElement("div"),n="webkit Moz O ms".split(" ");for(t in n)if(void 0!==e.style[n[t]+"Transition"])return n[t]},transitionCallback:function(){return"Moz"===n.vendor||"ms"===n.vendor?"transitionend":n.vendor+"TransitionEnd"},deepExtend:function(t,e){var n;for(n in e)e[n]&&e[n].constructor&&e[n].constructor===Object?(t[n]=t[n]||{},o.deepExtend(t[n],e[n])):t[n]=e[n];return t},angleOfDrag:function(t,e){var i,o;return(o=Math.atan2(-(n.startDragY-e),n.startDragX-t))<0&&(o+=2*Math.PI),(i=Math.floor(o*(180/Math.PI)-180))<0&&i>-180&&(i=360-Math.abs(i)),Math.abs(i)},events:{addEvent:function(t,e,n){return t.addEventListener?t.addEventListener(e,n,!1):t.attachEvent?t.attachEvent("on"+e,n):void 0},removeEvent:function(t,e,n){return t.addEventListener?t.removeEventListener(e,n,!1):t.attachEvent?t.detachEvent("on"+e,n):void 0},prevent:function(t){t.preventDefault?t.preventDefault():t.returnValue=!1}},parentUntil:function(t,e){for(var n="string"==typeof e;t.parentNode;){if(n&&t.getAttribute&&t.getAttribute(e))return t;if(!n&&t===e)return t;t=t.parentNode}return null}},r={translate:{get:{matrix:function(t){var i=window.getComputedStyle(e.element)[n.vendor+"Transform"].match(/\((.*)\)/);return i?(16===(i=i[1].split(",")).length&&(t+=8),parseInt(i[t],10)):0}},easeCallback:function(){e.element.style[n.vendor+"Transition"]="",n.translation=r.translate.get.matrix(4),n.easing=!1,clearInterval(n.animatingInterval),0===n.easingTo&&(o.klass.remove(document.body,"snapjs-right"),o.klass.remove(document.body,"snapjs-left")),o.dispatchEvent("animated"),o.events.removeEvent(e.element,o.transitionCallback(),r.translate.easeCallback)},easeTo:function(t){n.easing=!0,n.easingTo=t,e.element.style[n.vendor+"Transition"]="all "+e.transitionSpeed+"s "+e.easing,n.animatingInterval=setInterval((function(){o.dispatchEvent("animating")}),1),o.events.addEvent(e.element,o.transitionCallback(),r.translate.easeCallback),r.translate.x(t),0===t&&(e.element.style[n.vendor+"Transform"]="")},x:function(t){if(!("left"===e.disable&&t>0||"right"===e.disable&&t<0)){e.hyperextensible||(t===e.maxPosition||t>e.maxPosition?t=e.maxPosition:(t===e.minPosition||t0,h=l;if(n.intentChecked&&!n.hasIntent)return;if(e.addBodyClasses&&(c>0?(o.klass.add(document.body,"snapjs-left"),o.klass.remove(document.body,"snapjs-right")):c<0&&(o.klass.add(document.body,"snapjs-right"),o.klass.remove(document.body,"snapjs-left"))),!1===n.hasIntent||null===n.hasIntent){var d=o.angleOfDrag(i,s),p=d>=0&&d<=e.slideIntent||d<=360&&d>360-e.slideIntent;d>=180&&d<=180+e.slideIntent||d<=180&&d>=180-e.slideIntent||p?(n.hasIntent=!0,e.stopPropagation&&t.stopPropagation()):n.hasIntent=!1,n.intentChecked=!0}if(e.minDragDistance>=Math.abs(i-n.startDragX)||!1===n.hasIntent)return;o.events.prevent(t),o.dispatchEvent("drag"),n.dragWatchers.current=i,n.dragWatchers.last>i?("left"!==n.dragWatchers.state&&(n.dragWatchers.state="left",n.dragWatchers.hold=i),n.dragWatchers.last=i):n.dragWatchers.laste.maxPosition/2,flick:Math.abs(n.dragWatchers.current-n.dragWatchers.hold)>e.flickThreshold,translation:{absolute:c,relative:l,sinceDirectionChange:n.dragWatchers.current-n.dragWatchers.hold,percentage:c/e.maxPosition*100}}):(e.minPosition>c&&(h=l-(c-e.minPosition)*e.resistance),n.simpleStates={opening:"right",towards:n.dragWatchers.state,hyperExtending:e.minPosition>c,halfway:ce.flickThreshold,translation:{absolute:c,relative:l,sinceDirectionChange:n.dragWatchers.current-n.dragWatchers.hold,percentage:c/e.minPosition*100}}),r.translate.x(h+a)}},endDrag:function(t){if(n.isDragging){o.dispatchEvent("end");var i=r.translate.get.matrix(4);if(0===n.dragWatchers.current&&0!==i&&e.tapToClose)return o.dispatchEvent("close"),o.events.prevent(t),r.translate.easeTo(0),n.isDragging=!1,void(n.startDragX=0);"left"===n.simpleStates.opening?n.simpleStates.halfway||n.simpleStates.hyperExtending||n.simpleStates.flick?n.simpleStates.flick&&"left"===n.simpleStates.towards?r.translate.easeTo(0):(n.simpleStates.flick&&"right"===n.simpleStates.towards||n.simpleStates.halfway||n.simpleStates.hyperExtending)&&r.translate.easeTo(e.maxPosition):r.translate.easeTo(0):"right"===n.simpleStates.opening&&(n.simpleStates.halfway||n.simpleStates.hyperExtending||n.simpleStates.flick?n.simpleStates.flick&&"right"===n.simpleStates.towards?r.translate.easeTo(0):(n.simpleStates.flick&&"left"===n.simpleStates.towards||n.simpleStates.halfway||n.simpleStates.hyperExtending)&&r.translate.easeTo(e.minPosition):r.translate.easeTo(0)),n.isDragging=!1,n.startDragX=o.page("X",t)}}}},s=function(t){if(o.deepExtend(e,t),!e.element)throw"Snap's element argument does not exist.";e.element.setAttribute("touch-action","pan-y")};this.open=function(t){o.dispatchEvent("open"),o.klass.remove(document.body,"snapjs-expand-left"),o.klass.remove(document.body,"snapjs-expand-right"),"left"===t?(n.simpleStates.opening="left",n.simpleStates.towards="right",o.klass.add(document.body,"snapjs-left"),o.klass.remove(document.body,"snapjs-right"),r.translate.easeTo(e.maxPosition)):"right"===t&&(n.simpleStates.opening="right",n.simpleStates.towards="left",o.klass.remove(document.body,"snapjs-left"),o.klass.add(document.body,"snapjs-right"),r.translate.easeTo(e.minPosition))},this.close=function(){o.dispatchEvent("close"),r.translate.easeTo(0)},this.expand=function(t){var e=window.innerWidth||document.documentElement.clientWidth;"left"===t?(o.dispatchEvent("expandLeft"),o.klass.add(document.body,"snapjs-expand-left"),o.klass.remove(document.body,"snapjs-expand-right")):(o.dispatchEvent("expandRight"),o.klass.add(document.body,"snapjs-expand-right"),o.klass.remove(document.body,"snapjs-expand-left"),e*=-1),r.translate.easeTo(e)},this.on=function(t,e){return i[t]=e,this},this.off=function(t){i[t]&&(i[t]=!1)},this.enable=function(){o.dispatchEvent("enable"),r.drag.listen()},this.disable=function(){o.dispatchEvent("disable"),r.drag.stopListening()},this.settings=function(t){s(t)},this.state=function(){var t=r.translate.get.matrix(4);return{state:t===e.maxPosition?"left":t===e.minPosition?"right":"closed",info:n.simpleStates}},s(t),n.vendor=o.vendor(),r.drag.listen()}},{}]},{},[1])},53425:(t,e,n)=>{var i,o=n(96763),r=n(74692);(i=r).fn.strengthify=function(t){"use strict";var e={zxcvbn:"zxcvbn/zxcvbn.js",userInputs:[],titles:["Weakest","Weak","So-so","Good","Perfect"],tilesOptions:{tooltip:!0,element:!1},drawTitles:!1,drawMessage:!1,drawBars:!0,$addAfter:null,nonce:null};return this.each((function(){var n=i.extend(e,t);function r(t){return i('div[data-strengthifyFor="'+t+'"]')}function s(){var t=i(this).val().substring(0,100),e=i(this).attr("id"),o=""===t?0:1,s=zxcvbn(t,n.userInputs),a="",c="",l="",u=r(e),h=u.find(".strengthify-container"),d=u.find("[data-strengthifyMessage]");switch(u.children().css("opacity",o).css("-ms-filter",'"progid:DXImageTransform.Microsoft.Alpha(Opacity='+100*o+')"'),n.onResult&&n.onResult(s),s.score){case 0:case 1:a="password-bad",c="danger",l=s.feedback?s.feedback.suggestions.join("
        "):"";break;case 2:c="warning",l=s.feedback?s.feedback.suggestions.join("
        "):"",a="password-medium";break;case 3:a="password-good",c="info",l="Getting better.";break;case 4:a="password-good",c="success",l="Looks good."}d&&(d.removeAttr("class"),d.addClass("bg-"+c),""===t&&(l=""),d.html(l)),h&&(h.attr("class",a+" strengthify-container").css("width",25*(0===s.score?1:s.score)+"%"),""===t&&h.css("width",0)),n.drawTitles&&(n.tilesOptions.tooltip&&(u.attr("title",n.titles[s.score]).tooltip({placement:"bottom",trigger:"manual"}).tooltip("fixTitle").tooltip("show"),0===o&&u.tooltip("hide")),n.tilesOptions.element&&u.find(".strengthify-tiles").text(n.titles[s.score]))}n.drawTitles||n.drawMessage||n.drawBars||o.warn("expect at least one of 'drawTitles', 'drawMessage', or 'drawBars' to be true"),function(){var t=i(this),e=t.attr("id"),o=s.bind(this),a=n.$addAfter;a||(a=t),a.after('
        '),n.drawBars&&r(e).append('
        ').append('
        ').append('
        ').append('
        ').append('
        '),n.drawMessage&&r(e).append("
        "),n.drawTitles&&n.tilesOptions&&r(e).append('
        ');var c=document.createElement("script");c.src=n.zxcvbn,null!==n.nonce&&c.setAttribute("nonce",n.nonce),c.onload=function(){t.parent().on("scroll",o),t.bind("keyup input change",o)},document.head.appendChild(c)}.call(this)}))}},83864:t=>{"use strict";t.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoAQMAAAC2MCouAAAABlBMVEVmZmZ1dXVT6N0BAAAAUklEQVQIW8XNsQ3AIAwF0bMoKBmBURgNj8YojEBJEcXwu2yQ+p507BTeWDnozPISjPpY4O0W6CqEisUtiG/EF+IT8YG4fznihnhCPCNeEK/89D1Gd22TNOyXVAAAAABJRU5ErkJggg=="},26609:t=>{"use strict";t.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAABkAQMAAADOquA5AAAAA1BMVEUAAACnej3aAAAADklEQVQYGWMYBaOABgAAAlgAARbiVEcAAAAASUVORK5CYII="},7369:t=>{"use strict";t.exports="data:image/png;base64,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"},36114:t=>{"use strict";t.exports="data:image/png;base64,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"},48832:t=>{"use strict";t.exports="data:image/png;base64,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"},3132:t=>{"use strict";t.exports="data:image/png;base64,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"},19394:t=>{"use strict";t.exports="data:image/png;base64,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"},6411:t=>{"use strict";t.exports="data:image/png;base64,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"},64886:t=>{"use strict";t.exports="data:image/png;base64,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"},14506:t=>{"use strict";t.exports="data:image/png;base64,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"},81972:t=>{"use strict";t.exports="data:image/png;base64,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"},22046:t=>{"use strict";t.exports="data:image/gif;base64,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"},65653:t=>{"use strict";t.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAAoCAYAAACiu5n/AAACLElEQVR42u3Zz0sUYRzH8bUISoyF1i5iXSooyYgOEXapZNYNojwU/aAfUAT9A4YhUgdxt1To0KFIBCMIvEcUEXntUtivpYuUhYFIdDBMmD69he/hObgsbSnb13ngdZjZhX3eO8/MDrMpSctKErwsg//HUSgU7uNYsB3hHla4CybqEoRPaMJGFCEMewxuxnsIk5iALPqg1yVdj9eQGUdjiuE1eAs+QOYztrsMJqwFk8EyHguW95klD+ZD08gsYvBFCBPYgHXBOT1UNpg3ncQpnAicRbrCCQ3j8SIf5QvYEWxvxnlb0mWDr0MIvcOaCiayC78gRKmlH+WDbaIjkJnDzgq/+VHIvMWqag3ehBkIAxXGdkAIDVRlsE24H9//4ty9hju4Hej710c5m83WYging32HMYjMnwSvx75UlQ+iOiDEaEMLZiA8dPc7TFQDnkGYxQ8Iz9Hs8k4riqIa4l5ApojVbm8tiduPL5CZRs5lMGFH8DNYxo+C5d3tMfgohJeow0qMQujxuqRb0RBsZ3DA2ZIuP5LgJDgJToKr4ZHOWjTOy+fzNa6DiezCFGReod1lMGF3IYzjMm5B5rirYIJyEJ4iHezfjW+YRr2n4EHE2LrAa1cg5DwFj2DWLlKljn67p+B+CIdKPAaOsddTcBOEKbTZvjp0Qvjo8Sp9DjJFfIVMjBsef4f34AHeYAxX0VfqMbDnfw97IXMTta6DLbobcxBa3Qdb9BPE2LZQ8G98530ecQi/2QAAAABJRU5ErkJggg=="},32095:t=>{"use strict";t.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHgAAABQCAYAAADSm7GJAAADFElEQVR42u2dsW4TQRBAI0ERCYpDpAUdJX/hAlxQ3SekovYXIIvKEiBRIUF1lHT+BP+Br0TCCCsFLW5cmCS3jKWNNFrdZu+EOG7sd9Irkl0p8r3s7Mzs5XLinIMD5uhvAIIBwYBgaMnNNZvNyj0nkUvPQbAdtDjnCSU3zkGwEbS4iOToHATbE6wptVwEGyUhcaW/JkTbT7JcCpIse4K7SC4pk4wRXreE5ZUMUwezgh03lT0YyKKBOhjoZHUi1oCf7mkYohd9ACVFrj50HgxzmtQifKwF15L1fxC8UD9/EQxzHtxC8KiD4FHPNWMhuIACwd33h3kLuXOZ2mc4yyLRZS1kCG6H3uc2Mbl+LO9Z8FRwEaYINnpDdWKVIEdwC/QVC4l97nk6sUqwQHA3wbGEa9Sj4CCxSlIguHtZMg8Tq/4Edy/bLNXB4/G4FKJ1sJ7zTwTrhMuTU3f+NVqc84SSG+bEJR99a3BoaHERybE5HDYYFKwptVwEGyUhcRX5PufBRoiH4Tg80WFMcBfJPJNljfC6JSzzVCUrGMHswUAWDdTBQCcLOveiCdEBnCYBb9kBBAOCAcGAYEDw0XP0NwDBgGBAMCAYEAwIHvD7QzJhIlSCE2rF0o9lav4eBBt5JWHR8EfzdYATfgkFgg2g5J4LdSD1WrjyXDeIPkfwsNErV6/Y38J34aXwWHgkvBJWwi74RSgQPGD8nrtRwrbCe+G0YX9+KHzyc2rPRsgQPFzBEyVrJ7xLvNTsjvBBuFQreYLg4Qpeqv32m3BP+YxJPhUulOAKwQMl2HsnymNK8mudeCF44IK9rCcdBD8XrhBsS/BTBBOibwTPCNEGCFqSX4X7LeSeCRdK8BLBwy6TdIPjo3A3kUF/pkyy1+ioPVsv8KxB7gPhi7BVcndCpqYheKCtSt1+vBR+CG+EZ8IL4a3wU69cRYlgC4cN4UFD/LDBNVAi2NZxYa0Ixe5ikhFs58B/2SC48mOZUMYkI/jw/61diWDzgtOSEWxdcFpyhWDTgtOSEWxccCgZwfZJ9akrJXiKYEDwMfAHMSYobVemsdsAAAAASUVORK5CYII="},59699:t=>{"use strict";t.exports="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"},34213:t=>{"use strict";t.exports="data:image/gif;base64,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"},35548:(t,e,n)=>{"use strict";var i=n(33517),o=n(16823),r=TypeError;t.exports=function(t){if(i(t))return t;throw new r(o(t)+" is not a constructor")}},73506:(t,e,n)=>{"use strict";var i=n(13925),o=String,r=TypeError;t.exports=function(t){if(i(t))return t;throw new r("Can't set "+o(t)+" as a prototype")}},97080:(t,e,n)=>{"use strict";var i=n(94402).has;t.exports=function(t){return i(t),t}},6469:(t,e,n)=>{"use strict";var i=n(78227),o=n(2360),r=n(24913).f,s=i("unscopables"),a=Array.prototype;void 0===a[s]&&r(a,s,{configurable:!0,value:o(null)}),t.exports=function(t){a[s][t]=!0}},90679:(t,e,n)=>{"use strict";var i=n(1625),o=TypeError;t.exports=function(t,e){if(i(e,t))return t;throw new o("Incorrect invocation")}},77811:t=>{"use strict";t.exports="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView},67394:(t,e,n)=>{"use strict";var i=n(44576),o=n(46706),r=n(22195),s=i.ArrayBuffer,a=i.TypeError;t.exports=s&&o(s.prototype,"byteLength","get")||function(t){if("ArrayBuffer"!==r(t))throw new a("ArrayBuffer expected");return t.byteLength}},3238:(t,e,n)=>{"use strict";var i=n(44576),o=n(27476),r=n(67394),s=i.ArrayBuffer,a=s&&s.prototype,c=a&&o(a.slice);t.exports=function(t){if(0!==r(t))return!1;if(!c)return!1;try{return c(t,0,0),!1}catch(t){return!0}}},15652:(t,e,n)=>{"use strict";var i=n(79039);t.exports=i((function(){if("function"==typeof ArrayBuffer){var t=new ArrayBuffer(8);Object.isExtensible(t)&&Object.defineProperty(t,"a",{value:8})}}))},55169:(t,e,n)=>{"use strict";var i=n(3238),o=TypeError;t.exports=function(t){if(i(t))throw new o("ArrayBuffer is detached");return t}},95636:(t,e,n)=>{"use strict";var i=n(44576),o=n(79504),r=n(46706),s=n(57696),a=n(55169),c=n(67394),l=n(94483),u=n(1548),h=i.structuredClone,d=i.ArrayBuffer,p=i.DataView,A=Math.min,f=d.prototype,g=p.prototype,m=o(f.slice),b=r(f,"resizable","get"),v=r(f,"maxByteLength","get"),C=o(g.getInt8),x=o(g.setInt8);t.exports=(u||l)&&function(t,e,n){var i,o=c(t),r=void 0===e?o:s(e),f=!b||!b(t);if(a(t),u&&(t=h(t,{transfer:[t]}),o===r&&(n||f)))return t;if(o>=r&&(!n||f))i=m(t,0,r);else{var g=n&&!f&&v?{maxByteLength:v(t)}:void 0;i=new d(r,g);for(var w=new p(t),y=new p(i),k=A(r,o),B=0;B{"use strict";var i,o,r,s=n(77811),a=n(43724),c=n(44576),l=n(94901),u=n(20034),h=n(39297),d=n(36955),p=n(16823),A=n(66699),f=n(36840),g=n(62106),m=n(1625),b=n(42787),v=n(52967),C=n(78227),x=n(33392),w=n(91181),y=w.enforce,k=w.get,B=c.Int8Array,E=B&&B.prototype,_=c.Uint8ClampedArray,I=_&&_.prototype,D=B&&b(B),S=E&&b(E),T=Object.prototype,O=c.TypeError,M=C("toStringTag"),P=x("TYPED_ARRAY_TAG"),R="TypedArrayConstructor",N=s&&!!v&&"Opera"!==d(c.opera),H=!1,z={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},L={BigInt64Array:8,BigUint64Array:8},F=function(t){var e=b(t);if(u(e)){var n=k(e);return n&&h(n,R)?n[R]:F(e)}},j=function(t){if(!u(t))return!1;var e=d(t);return h(z,e)||h(L,e)};for(i in z)(r=(o=c[i])&&o.prototype)?y(r)[R]=o:N=!1;for(i in L)(r=(o=c[i])&&o.prototype)&&(y(r)[R]=o);if((!N||!l(D)||D===Function.prototype)&&(D=function(){throw new O("Incorrect invocation")},N))for(i in z)c[i]&&v(c[i],D);if((!N||!S||S===T)&&(S=D.prototype,N))for(i in z)c[i]&&v(c[i].prototype,S);if(N&&b(I)!==S&&v(I,S),a&&!h(S,M))for(i in H=!0,g(S,M,{configurable:!0,get:function(){return u(this)?this[P]:void 0}}),z)c[i]&&A(c[i],P,i);t.exports={NATIVE_ARRAY_BUFFER_VIEWS:N,TYPED_ARRAY_TAG:H&&P,aTypedArray:function(t){if(j(t))return t;throw new O("Target is not a typed array")},aTypedArrayConstructor:function(t){if(l(t)&&(!v||m(D,t)))return t;throw new O(p(t)+" is not a typed array constructor")},exportTypedArrayMethod:function(t,e,n,i){if(a){if(n)for(var o in z){var r=c[o];if(r&&h(r.prototype,t))try{delete r.prototype[t]}catch(n){try{r.prototype[t]=e}catch(t){}}}S[t]&&!n||f(S,t,n?e:N&&E[t]||e,i)}},exportTypedArrayStaticMethod:function(t,e,n){var i,o;if(a){if(v){if(n)for(i in z)if((o=c[i])&&h(o,t))try{delete o[t]}catch(t){}if(D[t]&&!n)return;try{return f(D,t,n?e:N&&D[t]||e)}catch(t){}}for(i in z)!(o=c[i])||o[t]&&!n||f(o,t,e)}},getTypedArrayConstructor:F,isView:function(t){if(!u(t))return!1;var e=d(t);return"DataView"===e||h(z,e)||h(L,e)},isTypedArray:j,TypedArray:D,TypedArrayPrototype:S}},66346:(t,e,n)=>{"use strict";var i=n(44576),o=n(79504),r=n(43724),s=n(77811),a=n(10350),c=n(66699),l=n(62106),u=n(56279),h=n(79039),d=n(90679),p=n(91291),A=n(18014),f=n(57696),g=n(15617),m=n(88490),b=n(42787),v=n(52967),C=n(84373),x=n(67680),w=n(23167),y=n(77740),k=n(10687),B=n(91181),E=a.PROPER,_=a.CONFIGURABLE,I="ArrayBuffer",D="DataView",S="prototype",T="Wrong index",O=B.getterFor(I),M=B.getterFor(D),P=B.set,R=i[I],N=R,H=N&&N[S],z=i[D],L=z&&z[S],F=Object.prototype,j=i.Array,U=i.RangeError,W=o(C),Y=o([].reverse),q=m.pack,Q=m.unpack,G=function(t){return[255&t]},X=function(t){return[255&t,t>>8&255]},V=function(t){return[255&t,t>>8&255,t>>16&255,t>>24&255]},K=function(t){return t[3]<<24|t[2]<<16|t[1]<<8|t[0]},J=function(t){return q(g(t),23,4)},Z=function(t){return q(t,52,8)},$=function(t,e,n){l(t[S],e,{configurable:!0,get:function(){return n(this)[e]}})},tt=function(t,e,n,i){var o=M(t),r=f(n),s=!!i;if(r+e>o.byteLength)throw new U(T);var a=o.bytes,c=r+o.byteOffset,l=x(a,c,c+e);return s?l:Y(l)},et=function(t,e,n,i,o,r){var s=M(t),a=f(n),c=i(+o),l=!!r;if(a+e>s.byteLength)throw new U(T);for(var u=s.bytes,h=a+s.byteOffset,d=0;d>24)},setUint8:function(t,e){ot(this,t,e<<24>>24)}},{unsafe:!0})}else H=(N=function(t){d(this,H);var e=f(t);P(this,{type:I,bytes:W(j(e),0),byteLength:e}),r||(this.byteLength=e,this.detached=!1)})[S],L=(z=function(t,e,n){d(this,L),d(t,H);var i=O(t),o=i.byteLength,s=p(e);if(s<0||s>o)throw new U("Wrong offset");if(s+(n=void 0===n?o-s:A(n))>o)throw new U("Wrong length");P(this,{type:D,buffer:t,byteLength:n,byteOffset:s,bytes:i.bytes}),r||(this.buffer=t,this.byteLength=n,this.byteOffset=s)})[S],r&&($(N,"byteLength",O),$(z,"buffer",M),$(z,"byteLength",M),$(z,"byteOffset",M)),u(L,{getInt8:function(t){return tt(this,1,t)[0]<<24>>24},getUint8:function(t){return tt(this,1,t)[0]},getInt16:function(t){var e=tt(this,2,t,arguments.length>1&&arguments[1]);return(e[1]<<8|e[0])<<16>>16},getUint16:function(t){var e=tt(this,2,t,arguments.length>1&&arguments[1]);return e[1]<<8|e[0]},getInt32:function(t){return K(tt(this,4,t,arguments.length>1&&arguments[1]))},getUint32:function(t){return K(tt(this,4,t,arguments.length>1&&arguments[1]))>>>0},getFloat32:function(t){return Q(tt(this,4,t,arguments.length>1&&arguments[1]),23)},getFloat64:function(t){return Q(tt(this,8,t,arguments.length>1&&arguments[1]),52)},setInt8:function(t,e){et(this,1,t,G,e)},setUint8:function(t,e){et(this,1,t,G,e)},setInt16:function(t,e){et(this,2,t,X,e,arguments.length>2&&arguments[2])},setUint16:function(t,e){et(this,2,t,X,e,arguments.length>2&&arguments[2])},setInt32:function(t,e){et(this,4,t,V,e,arguments.length>2&&arguments[2])},setUint32:function(t,e){et(this,4,t,V,e,arguments.length>2&&arguments[2])},setFloat32:function(t,e){et(this,4,t,J,e,arguments.length>2&&arguments[2])},setFloat64:function(t,e){et(this,8,t,Z,e,arguments.length>2&&arguments[2])}});k(N,I),k(z,D),t.exports={ArrayBuffer:N,DataView:z}},57029:(t,e,n)=>{"use strict";var i=n(48981),o=n(35610),r=n(26198),s=n(84606),a=Math.min;t.exports=[].copyWithin||function(t,e){var n=i(this),c=r(n),l=o(t,c),u=o(e,c),h=arguments.length>2?arguments[2]:void 0,d=a((void 0===h?c:o(h,c))-u,c-l),p=1;for(u0;)u in n?n[l]=n[u]:s(n,l),l+=p,u+=p;return n}},84373:(t,e,n)=>{"use strict";var i=n(48981),o=n(35610),r=n(26198);t.exports=function(t){for(var e=i(this),n=r(e),s=arguments.length,a=o(s>1?arguments[1]:void 0,n),c=s>2?arguments[2]:void 0,l=void 0===c?n:o(c,n);l>a;)e[a++]=t;return e}},90235:(t,e,n)=>{"use strict";var i=n(81594).forEach,o=n(34598)("forEach");t.exports=o?[].forEach:function(t){return i(this,t,arguments.length>1?arguments[1]:void 0)}},35370:(t,e,n)=>{"use strict";var i=n(26198);t.exports=function(t,e,n){for(var o=0,r=arguments.length>2?n:i(e),s=new t(r);r>o;)s[o]=e[o++];return s}},97916:(t,e,n)=>{"use strict";var i=n(76080),o=n(69565),r=n(48981),s=n(96319),a=n(44209),c=n(33517),l=n(26198),u=n(97040),h=n(70081),d=n(50851),p=Array;t.exports=function(t){var e=r(t),n=c(this),A=arguments.length,f=A>1?arguments[1]:void 0,g=void 0!==f;g&&(f=i(f,A>2?arguments[2]:void 0));var m,b,v,C,x,w,y=d(e),k=0;if(!y||this===p&&a(y))for(m=l(e),b=n?new this(m):p(m);m>k;k++)w=g?f(e[k],k):e[k],u(b,k,w);else for(b=n?new this:[],x=(C=h(e,y)).next;!(v=o(x,C)).done;k++)w=g?s(C,f,[v.value,k],!0):v.value,u(b,k,w);return b.length=k,b}},43839:(t,e,n)=>{"use strict";var i=n(76080),o=n(47055),r=n(48981),s=n(26198),a=function(t){var e=1===t;return function(n,a,c){for(var l,u=r(n),h=o(u),d=s(h),p=i(a,c);d-- >0;)if(p(l=h[d],d,u))switch(t){case 0:return l;case 1:return d}return e?-1:void 0}};t.exports={findLast:a(0),findLastIndex:a(1)}},81594:(t,e,n)=>{"use strict";var i=n(76080),o=n(79504),r=n(47055),s=n(48981),a=n(26198),c=n(1469),l=o([].push),u=function(t){var e=1===t,n=2===t,o=3===t,u=4===t,h=6===t,d=7===t,p=5===t||h;return function(A,f,g,m){for(var b,v,C=s(A),x=r(C),w=a(x),y=i(f,g),k=0,B=m||c,E=e?B(A,w):n||d?B(A,0):void 0;w>k;k++)if((p||k in x)&&(v=y(b=x[k],k,C),t))if(e)E[k]=v;else if(v)switch(t){case 3:return!0;case 5:return b;case 6:return k;case 2:l(E,b)}else switch(t){case 4:return!1;case 7:l(E,b)}return h?-1:o||u?u:E}};t.exports={forEach:u(0),map:u(1),filter:u(2),some:u(3),every:u(4),find:u(5),findIndex:u(6),filterReject:u(7)}},8379:(t,e,n)=>{"use strict";var i=n(18745),o=n(25397),r=n(91291),s=n(26198),a=n(34598),c=Math.min,l=[].lastIndexOf,u=!!l&&1/[1].lastIndexOf(1,-0)<0,h=a("lastIndexOf"),d=u||!h;t.exports=d?function(t){if(u)return i(l,this,arguments)||0;var e=o(this),n=s(e);if(0===n)return-1;var a=n-1;for(arguments.length>1&&(a=c(a,r(arguments[1]))),a<0&&(a=n+a);a>=0;a--)if(a in e&&e[a]===t)return a||0;return-1}:l},70597:(t,e,n)=>{"use strict";var i=n(79039),o=n(78227),r=n(39519),s=o("species");t.exports=function(t){return r>=51||!i((function(){var e=[];return(e.constructor={})[s]=function(){return{foo:1}},1!==e[t](Boolean).foo}))}},34598:(t,e,n)=>{"use strict";var i=n(79039);t.exports=function(t,e){var n=[][t];return!!n&&i((function(){n.call(null,e||function(){return 1},1)}))}},80926:(t,e,n)=>{"use strict";var i=n(79306),o=n(48981),r=n(47055),s=n(26198),a=TypeError,c="Reduce of empty array with no initial value",l=function(t){return function(e,n,l,u){var h=o(e),d=r(h),p=s(h);if(i(n),0===p&&l<2)throw new a(c);var A=t?p-1:0,f=t?-1:1;if(l<2)for(;;){if(A in d){u=d[A],A+=f;break}if(A+=f,t?A<0:p<=A)throw new a(c)}for(;t?A>=0:p>A;A+=f)A in d&&(u=n(u,d[A],A,h));return u}};t.exports={left:l(!1),right:l(!0)}},34527:(t,e,n)=>{"use strict";var i=n(43724),o=n(34376),r=TypeError,s=Object.getOwnPropertyDescriptor,a=i&&!function(){if(void 0!==this)return!0;try{Object.defineProperty([],"length",{writable:!1}).length=1}catch(t){return t instanceof TypeError}}();t.exports=a?function(t,e){if(o(t)&&!s(t,"length").writable)throw new r("Cannot set read only .length");return t.length=e}:function(t,e){return t.length=e}},67680:(t,e,n)=>{"use strict";var i=n(79504);t.exports=i([].slice)},74488:(t,e,n)=>{"use strict";var i=n(67680),o=Math.floor,r=function(t,e){var n=t.length;if(n<8)for(var s,a,c=1;c0;)t[a]=t[--a];a!==c++&&(t[a]=s)}else for(var l=o(n/2),u=r(i(t,0,l),e),h=r(i(t,l),e),d=u.length,p=h.length,A=0,f=0;A{"use strict";var i=n(34376),o=n(33517),r=n(20034),s=n(78227)("species"),a=Array;t.exports=function(t){var e;return i(t)&&(e=t.constructor,(o(e)&&(e===a||i(e.prototype))||r(e)&&null===(e=e[s]))&&(e=void 0)),void 0===e?a:e}},1469:(t,e,n)=>{"use strict";var i=n(87433);t.exports=function(t,e){return new(i(t))(0===e?0:e)}},37628:(t,e,n)=>{"use strict";var i=n(26198);t.exports=function(t,e){for(var n=i(t),o=new e(n),r=0;r{"use strict";var i=n(26198),o=n(91291),r=RangeError;t.exports=function(t,e,n,s){var a=i(t),c=o(n),l=c<0?a+c:c;if(l>=a||l<0)throw new r("Incorrect index");for(var u=new e(a),h=0;h{"use strict";var e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",n=e+"+/",i=e+"-_",o=function(t){for(var e={},n=0;n<64;n++)e[t.charAt(n)]=n;return e};t.exports={i2c:n,c2i:o(n),i2cUrl:i,c2iUrl:o(i)}},96319:(t,e,n)=>{"use strict";var i=n(28551),o=n(9539);t.exports=function(t,e,n,r){try{return r?e(i(n)[0],n[1]):e(n)}catch(e){o(t,"throw",e)}}},84428:(t,e,n)=>{"use strict";var i=n(78227)("iterator"),o=!1;try{var r=0,s={next:function(){return{done:!!r++}},return:function(){o=!0}};s[i]=function(){return this},Array.from(s,(function(){throw 2}))}catch(t){}t.exports=function(t,e){try{if(!e&&!o)return!1}catch(t){return!1}var n=!1;try{var r={};r[i]=function(){return{next:function(){return{done:n=!0}}}},t(r)}catch(t){}return n}},86938:(t,e,n)=>{"use strict";var i=n(2360),o=n(62106),r=n(56279),s=n(76080),a=n(90679),c=n(64117),l=n(72652),u=n(51088),h=n(62529),d=n(87633),p=n(43724),A=n(3451).fastKey,f=n(91181),g=f.set,m=f.getterFor;t.exports={getConstructor:function(t,e,n,u){var h=t((function(t,o){a(t,d),g(t,{type:e,index:i(null),first:null,last:null,size:0}),p||(t.size=0),c(o)||l(o,t[u],{that:t,AS_ENTRIES:n})})),d=h.prototype,f=m(e),b=function(t,e,n){var i,o,r=f(t),s=v(t,e);return s?s.value=n:(r.last=s={index:o=A(e,!0),key:e,value:n,previous:i=r.last,next:null,removed:!1},r.first||(r.first=s),i&&(i.next=s),p?r.size++:t.size++,"F"!==o&&(r.index[o]=s)),t},v=function(t,e){var n,i=f(t),o=A(e);if("F"!==o)return i.index[o];for(n=i.first;n;n=n.next)if(n.key===e)return n};return r(d,{clear:function(){for(var t=f(this),e=t.first;e;)e.removed=!0,e.previous&&(e.previous=e.previous.next=null),e=e.next;t.first=t.last=null,t.index=i(null),p?t.size=0:this.size=0},delete:function(t){var e=this,n=f(e),i=v(e,t);if(i){var o=i.next,r=i.previous;delete n.index[i.index],i.removed=!0,r&&(r.next=o),o&&(o.previous=r),n.first===i&&(n.first=o),n.last===i&&(n.last=r),p?n.size--:e.size--}return!!i},forEach:function(t){for(var e,n=f(this),i=s(t,arguments.length>1?arguments[1]:void 0);e=e?e.next:n.first;)for(i(e.value,e.key,this);e&&e.removed;)e=e.previous},has:function(t){return!!v(this,t)}}),r(d,n?{get:function(t){var e=v(this,t);return e&&e.value},set:function(t,e){return b(this,0===t?0:t,e)}}:{add:function(t){return b(this,t=0===t?0:t,t)}}),p&&o(d,"size",{configurable:!0,get:function(){return f(this).size}}),h},setStrong:function(t,e,n){var i=e+" Iterator",o=m(e),r=m(i);u(t,e,(function(t,e){g(this,{type:i,target:t,state:o(t),kind:e,last:null})}),(function(){for(var t=r(this),e=t.kind,n=t.last;n&&n.removed;)n=n.previous;return t.target&&(t.last=n=n?n.next:t.state.first)?h("keys"===e?n.key:"values"===e?n.value:[n.key,n.value],!1):(t.target=null,h(void 0,!0))}),n?"entries":"values",!n,!0),d(e)}}},91625:(t,e,n)=>{"use strict";var i=n(79504),o=n(56279),r=n(3451).getWeakData,s=n(90679),a=n(28551),c=n(64117),l=n(20034),u=n(72652),h=n(81594),d=n(39297),p=n(91181),A=p.set,f=p.getterFor,g=h.find,m=h.findIndex,b=i([].splice),v=0,C=function(t){return t.frozen||(t.frozen=new x)},x=function(){this.entries=[]},w=function(t,e){return g(t.entries,(function(t){return t[0]===e}))};x.prototype={get:function(t){var e=w(this,t);if(e)return e[1]},has:function(t){return!!w(this,t)},set:function(t,e){var n=w(this,t);n?n[1]=e:this.entries.push([t,e])},delete:function(t){var e=m(this.entries,(function(e){return e[0]===t}));return~e&&b(this.entries,e,1),!!~e}},t.exports={getConstructor:function(t,e,n,i){var h=t((function(t,o){s(t,p),A(t,{type:e,id:v++,frozen:null}),c(o)||u(o,t[i],{that:t,AS_ENTRIES:n})})),p=h.prototype,g=f(e),m=function(t,e,n){var i=g(t),o=r(a(e),!0);return!0===o?C(i).set(e,n):o[i.id]=n,t};return o(p,{delete:function(t){var e=g(this);if(!l(t))return!1;var n=r(t);return!0===n?C(e).delete(t):n&&d(n,e.id)&&delete n[e.id]},has:function(t){var e=g(this);if(!l(t))return!1;var n=r(t);return!0===n?C(e).has(t):n&&d(n,e.id)}}),o(p,n?{get:function(t){var e=g(this);if(l(t)){var n=r(t);if(!0===n)return C(e).get(t);if(n)return n[e.id]}},set:function(t,e){return m(this,t,e)}}:{add:function(t){return m(this,t,!0)}}),h}}},16468:(t,e,n)=>{"use strict";var i=n(46518),o=n(44576),r=n(79504),s=n(92796),a=n(36840),c=n(3451),l=n(72652),u=n(90679),h=n(94901),d=n(64117),p=n(20034),A=n(79039),f=n(84428),g=n(10687),m=n(23167);t.exports=function(t,e,n){var b=-1!==t.indexOf("Map"),v=-1!==t.indexOf("Weak"),C=b?"set":"add",x=o[t],w=x&&x.prototype,y=x,k={},B=function(t){var e=r(w[t]);a(w,t,"add"===t?function(t){return e(this,0===t?0:t),this}:"delete"===t?function(t){return!(v&&!p(t))&&e(this,0===t?0:t)}:"get"===t?function(t){return v&&!p(t)?void 0:e(this,0===t?0:t)}:"has"===t?function(t){return!(v&&!p(t))&&e(this,0===t?0:t)}:function(t,n){return e(this,0===t?0:t,n),this})};if(s(t,!h(x)||!(v||w.forEach&&!A((function(){(new x).entries().next()})))))y=n.getConstructor(e,t,b,C),c.enable();else if(s(t,!0)){var E=new y,_=E[C](v?{}:-0,1)!==E,I=A((function(){E.has(1)})),D=f((function(t){new x(t)})),S=!v&&A((function(){for(var t=new x,e=5;e--;)t[C](e,e);return!t.has(-0)}));D||((y=e((function(t,e){u(t,w);var n=m(new x,t,y);return d(e)||l(e,n[C],{that:n,AS_ENTRIES:b}),n}))).prototype=w,w.constructor=y),(I||S)&&(B("delete"),B("has"),b&&B("get")),(S||_)&&B(C),v&&w.clear&&delete w.clear}return k[t]=y,i({global:!0,constructor:!0,forced:y!==x},k),g(y,t),v||n.setStrong(y,t,b),y}},41436:(t,e,n)=>{"use strict";var i=n(78227)("match");t.exports=function(t){var e=/./;try{"/./"[t](e)}catch(n){try{return e[i]=!1,"/./"[t](e)}catch(t){}}return!1}},12211:(t,e,n)=>{"use strict";var i=n(79039);t.exports=!i((function(){function t(){}return t.prototype.constructor=null,Object.getPrototypeOf(new t)!==t.prototype}))},77240:(t,e,n)=>{"use strict";var i=n(79504),o=n(67750),r=n(655),s=/"/g,a=i("".replace);t.exports=function(t,e,n,i){var c=r(o(t)),l="<"+e;return""!==n&&(l+=" "+n+'="'+a(r(i),s,""")+'"'),l+">"+c+""}},62529:t=>{"use strict";t.exports=function(t,e){return{value:t,done:e}}},97040:(t,e,n)=>{"use strict";var i=n(43724),o=n(24913),r=n(6980);t.exports=function(t,e,n){i?o.f(t,e,r(0,n)):t[e]=n}},70380:(t,e,n)=>{"use strict";var i=n(79504),o=n(79039),r=n(60533).start,s=RangeError,a=isFinite,c=Math.abs,l=Date.prototype,u=l.toISOString,h=i(l.getTime),d=i(l.getUTCDate),p=i(l.getUTCFullYear),A=i(l.getUTCHours),f=i(l.getUTCMilliseconds),g=i(l.getUTCMinutes),m=i(l.getUTCMonth),b=i(l.getUTCSeconds);t.exports=o((function(){return"0385-07-25T07:06:39.999Z"!==u.call(new Date(-50000000000001))}))||!o((function(){u.call(new Date(NaN))}))?function(){if(!a(h(this)))throw new s("Invalid time value");var t=this,e=p(t),n=f(t),i=e<0?"-":e>9999?"+":"";return i+r(c(e),i?6:4,0)+"-"+r(m(t)+1,2,0)+"-"+r(d(t),2,0)+"T"+r(A(t),2,0)+":"+r(g(t),2,0)+":"+r(b(t),2,0)+"."+r(n,3,0)+"Z"}:u},53640:(t,e,n)=>{"use strict";var i=n(28551),o=n(84270),r=TypeError;t.exports=function(t){if(i(this),"string"===t||"default"===t)t="string";else if("number"!==t)throw new r("Incorrect hint");return o(this,t)}},62106:(t,e,n)=>{"use strict";var i=n(50283),o=n(24913);t.exports=function(t,e,n){return n.get&&i(n.get,e,{getter:!0}),n.set&&i(n.set,e,{setter:!0}),o.f(t,e,n)}},56279:(t,e,n)=>{"use strict";var i=n(36840);t.exports=function(t,e,n){for(var o in e)i(t,o,e[o],n);return t}},84606:(t,e,n)=>{"use strict";var i=n(16823),o=TypeError;t.exports=function(t,e){if(!delete t[e])throw new o("Cannot delete property "+i(e)+" of "+i(t))}},94483:(t,e,n)=>{"use strict";var i,o,r,s,a=n(44576),c=n(89429),l=n(1548),u=a.structuredClone,h=a.ArrayBuffer,d=a.MessageChannel,p=!1;if(l)p=function(t){u(t,{transfer:[t]})};else if(h)try{d||(i=c("worker_threads"))&&(d=i.MessageChannel),d&&(o=new d,r=new h(2),s=function(t){o.port1.postMessage(null,[t])},2===r.byteLength&&(s(r),0===r.byteLength&&(p=s)))}catch(t){}t.exports=p},96837:t=>{"use strict";var e=TypeError;t.exports=function(t){if(t>9007199254740991)throw e("Maximum allowed index exceeded");return t}},55002:t=>{"use strict";t.exports={IndexSizeError:{s:"INDEX_SIZE_ERR",c:1,m:1},DOMStringSizeError:{s:"DOMSTRING_SIZE_ERR",c:2,m:0},HierarchyRequestError:{s:"HIERARCHY_REQUEST_ERR",c:3,m:1},WrongDocumentError:{s:"WRONG_DOCUMENT_ERR",c:4,m:1},InvalidCharacterError:{s:"INVALID_CHARACTER_ERR",c:5,m:1},NoDataAllowedError:{s:"NO_DATA_ALLOWED_ERR",c:6,m:0},NoModificationAllowedError:{s:"NO_MODIFICATION_ALLOWED_ERR",c:7,m:1},NotFoundError:{s:"NOT_FOUND_ERR",c:8,m:1},NotSupportedError:{s:"NOT_SUPPORTED_ERR",c:9,m:1},InUseAttributeError:{s:"INUSE_ATTRIBUTE_ERR",c:10,m:1},InvalidStateError:{s:"INVALID_STATE_ERR",c:11,m:1},SyntaxError:{s:"SYNTAX_ERR",c:12,m:1},InvalidModificationError:{s:"INVALID_MODIFICATION_ERR",c:13,m:1},NamespaceError:{s:"NAMESPACE_ERR",c:14,m:1},InvalidAccessError:{s:"INVALID_ACCESS_ERR",c:15,m:1},ValidationError:{s:"VALIDATION_ERR",c:16,m:0},TypeMismatchError:{s:"TYPE_MISMATCH_ERR",c:17,m:1},SecurityError:{s:"SECURITY_ERR",c:18,m:1},NetworkError:{s:"NETWORK_ERR",c:19,m:1},AbortError:{s:"ABORT_ERR",c:20,m:1},URLMismatchError:{s:"URL_MISMATCH_ERR",c:21,m:1},QuotaExceededError:{s:"QUOTA_EXCEEDED_ERR",c:22,m:1},TimeoutError:{s:"TIMEOUT_ERR",c:23,m:1},InvalidNodeTypeError:{s:"INVALID_NODE_TYPE_ERR",c:24,m:1},DataCloneError:{s:"DATA_CLONE_ERR",c:25,m:1}}},67400:t=>{"use strict";t.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}},79296:(t,e,n)=>{"use strict";var i=n(4055)("span").classList,o=i&&i.constructor&&i.constructor.prototype;t.exports=o===Object.prototype?void 0:o},13709:(t,e,n)=>{"use strict";var i=n(82839).match(/firefox\/(\d+)/i);t.exports=!!i&&+i[1]},13763:(t,e,n)=>{"use strict";var i=n(82839);t.exports=/MSIE|Trident/.test(i)},44265:(t,e,n)=>{"use strict";var i=n(82839);t.exports=/ipad|iphone|ipod/i.test(i)&&"undefined"!=typeof Pebble},89544:(t,e,n)=>{"use strict";var i=n(82839);t.exports=/(?:ipad|iphone|ipod).*applewebkit/i.test(i)},38574:(t,e,n)=>{"use strict";var i=n(84215);t.exports="NODE"===i},7860:(t,e,n)=>{"use strict";var i=n(82839);t.exports=/web0s(?!.*chrome)/i.test(i)},3607:(t,e,n)=>{"use strict";var i=n(82839).match(/AppleWebKit\/(\d+)\./);t.exports=!!i&&+i[1]},84215:(t,e,n)=>{"use strict";var i=n(44576),o=n(82839),r=n(22195),s=function(t){return o.slice(0,t.length)===t};t.exports=s("Bun/")?"BUN":s("Cloudflare-Workers")?"CLOUDFLARE":s("Deno/")?"DENO":s("Node.js/")?"NODE":i.Bun&&"string"==typeof Bun.version?"BUN":i.Deno&&"object"==typeof Deno.version?"DENO":"process"===r(i.process)?"NODE":i.window&&i.document?"BROWSER":"REST"},16193:(t,e,n)=>{"use strict";var i=n(79504),o=Error,r=i("".replace),s=String(new o("zxcasd").stack),a=/\n\s*at [^:]*:[^\n]*/,c=a.test(s);t.exports=function(t,e){if(c&&"string"==typeof t&&!o.prepareStackTrace)for(;e--;)t=r(t,a,"");return t}},80747:(t,e,n)=>{"use strict";var i=n(66699),o=n(16193),r=n(24659),s=Error.captureStackTrace;t.exports=function(t,e,n,a){r&&(s?s(t,e):i(t,"stack",o(n,a)))}},24659:(t,e,n)=>{"use strict";var i=n(79039),o=n(6980);t.exports=!i((function(){var t=new Error("a");return!("stack"in t)||(Object.defineProperty(t,"stack",o(1,7)),7!==t.stack)}))},77536:(t,e,n)=>{"use strict";var i=n(43724),o=n(79039),r=n(28551),s=n(32603),a=Error.prototype.toString,c=o((function(){if(i){var t=Object.create(Object.defineProperty({},"name",{get:function(){return this===t}}));if("true"!==a.call(t))return!0}return"2: 1"!==a.call({message:1,name:2})||"Error"!==a.call({})}));t.exports=c?function(){var t=r(this),e=s(t.name,"Error"),n=s(t.message);return e?n?e+": "+n:e:n}:a},70259:(t,e,n)=>{"use strict";var i=n(34376),o=n(26198),r=n(96837),s=n(76080),a=function(t,e,n,c,l,u,h,d){for(var p,A,f=l,g=0,m=!!h&&s(h,d);g0&&i(p)?(A=o(p),f=a(t,e,p,A,f,u-1)-1):(r(f+1),t[f]=p),f++),g++;return f};t.exports=a},92744:(t,e,n)=>{"use strict";var i=n(79039);t.exports=!i((function(){return Object.isExtensible(Object.preventExtensions({}))}))},76080:(t,e,n)=>{"use strict";var i=n(27476),o=n(79306),r=n(40616),s=i(i.bind);t.exports=function(t,e){return o(t),void 0===e?t:r?s(t,e):function(){return t.apply(e,arguments)}}},30566:(t,e,n)=>{"use strict";var i=n(79504),o=n(79306),r=n(20034),s=n(39297),a=n(67680),c=n(40616),l=Function,u=i([].concat),h=i([].join),d={};t.exports=c?l.bind:function(t){var e=o(this),n=e.prototype,i=a(arguments,1),c=function(){var n=u(i,a(arguments));return this instanceof c?function(t,e,n){if(!s(d,e)){for(var i=[],o=0;o{"use strict";var i=n(79504),o=n(79306);t.exports=function(t,e,n){try{return i(o(Object.getOwnPropertyDescriptor(t,e)[n]))}catch(t){}}},27476:(t,e,n)=>{"use strict";var i=n(22195),o=n(79504);t.exports=function(t){if("Function"===i(t))return o(t)}},89429:(t,e,n)=>{"use strict";var i=n(44576),o=n(38574);t.exports=function(t){if(o){try{return i.process.getBuiltinModule(t)}catch(t){}try{return Function('return require("'+t+'")')()}catch(t){}}}},44124:(t,e,n)=>{"use strict";var i=n(44576);t.exports=function(t,e){var n=i[t],o=n&&n.prototype;return o&&o[e]}},1767:t=>{"use strict";t.exports=function(t){return{iterator:t,next:t.next,done:!1}}},50851:(t,e,n)=>{"use strict";var i=n(36955),o=n(55966),r=n(64117),s=n(26269),a=n(78227)("iterator");t.exports=function(t){if(!r(t))return o(t,a)||o(t,"@@iterator")||s[i(t)]}},70081:(t,e,n)=>{"use strict";var i=n(69565),o=n(79306),r=n(28551),s=n(16823),a=n(50851),c=TypeError;t.exports=function(t,e){var n=arguments.length<2?a(t):e;if(o(n))return r(i(n,t));throw new c(s(t)+" is not iterable")}},66933:(t,e,n)=>{"use strict";var i=n(79504),o=n(34376),r=n(94901),s=n(22195),a=n(655),c=i([].push);t.exports=function(t){if(r(t))return t;if(o(t)){for(var e=t.length,n=[],i=0;i{"use strict";var i=n(79306),o=n(28551),r=n(69565),s=n(91291),a=n(1767),c="Invalid size",l=RangeError,u=TypeError,h=Math.max,d=function(t,e){this.set=t,this.size=h(e,0),this.has=i(t.has),this.keys=i(t.keys)};d.prototype={getIterator:function(){return a(o(r(this.keys,this.set)))},includes:function(t){return r(this.has,this.set,t)}},t.exports=function(t){o(t);var e=+t.size;if(e!=e)throw new u(c);var n=s(e);if(n<0)throw new l(c);return new d(t,n)}},90757:(t,e,n)=>{"use strict";var i=n(96763);t.exports=function(t,e){try{1===arguments.length?i.error(t):i.error(t,e)}catch(t){}}},88490:t=>{"use strict";var e=Array,n=Math.abs,i=Math.pow,o=Math.floor,r=Math.log,s=Math.LN2;t.exports={pack:function(t,a,c){var l,u,h,d=e(c),p=8*c-a-1,A=(1<>1,g=23===a?i(2,-24)-i(2,-77):0,m=t<0||0===t&&1/t<0?1:0,b=0;for((t=n(t))!=t||t===1/0?(u=t!=t?1:0,l=A):(l=o(r(t)/s),t*(h=i(2,-l))<1&&(l--,h*=2),(t+=l+f>=1?g/h:g*i(2,1-f))*h>=2&&(l++,h/=2),l+f>=A?(u=0,l=A):l+f>=1?(u=(t*h-1)*i(2,a),l+=f):(u=t*i(2,f-1)*i(2,a),l=0));a>=8;)d[b++]=255&u,u/=256,a-=8;for(l=l<0;)d[b++]=255&l,l/=256,p-=8;return d[b-1]|=128*m,d},unpack:function(t,e){var n,o=t.length,r=8*o-e-1,s=(1<>1,c=r-7,l=o-1,u=t[l--],h=127&u;for(u>>=7;c>0;)h=256*h+t[l--],c-=8;for(n=h&(1<<-c)-1,h>>=-c,c+=e;c>0;)n=256*n+t[l--],c-=8;if(0===h)h=1-a;else{if(h===s)return n?NaN:u?-1/0:1/0;n+=i(2,e),h-=a}return(u?-1:1)*n*i(2,h-e)}}},23167:(t,e,n)=>{"use strict";var i=n(94901),o=n(20034),r=n(52967);t.exports=function(t,e,n){var s,a;return r&&i(s=e.constructor)&&s!==n&&o(a=s.prototype)&&a!==n.prototype&&r(t,a),t}},77584:(t,e,n)=>{"use strict";var i=n(20034),o=n(66699);t.exports=function(t,e){i(e)&&"cause"in e&&o(t,"cause",e.cause)}},3451:(t,e,n)=>{"use strict";var i=n(46518),o=n(79504),r=n(30421),s=n(20034),a=n(39297),c=n(24913).f,l=n(38480),u=n(10298),h=n(34124),d=n(33392),p=n(92744),A=!1,f=d("meta"),g=0,m=function(t){c(t,f,{value:{objectID:"O"+g++,weakData:{}}})},b=t.exports={enable:function(){b.enable=function(){},A=!0;var t=l.f,e=o([].splice),n={};n[f]=1,t(n).length&&(l.f=function(n){for(var i=t(n),o=0,r=i.length;o{"use strict";var i=n(78227),o=n(26269),r=i("iterator"),s=Array.prototype;t.exports=function(t){return void 0!==t&&(o.Array===t||s[r]===t)}},34376:(t,e,n)=>{"use strict";var i=n(22195);t.exports=Array.isArray||function(t){return"Array"===i(t)}},18727:(t,e,n)=>{"use strict";var i=n(36955);t.exports=function(t){var e=i(t);return"BigInt64Array"===e||"BigUint64Array"===e}},33517:(t,e,n)=>{"use strict";var i=n(79504),o=n(79039),r=n(94901),s=n(36955),a=n(97751),c=n(33706),l=function(){},u=a("Reflect","construct"),h=/^\s*(?:class|function)\b/,d=i(h.exec),p=!h.test(l),A=function(t){if(!r(t))return!1;try{return u(l,[],t),!0}catch(t){return!1}},f=function(t){if(!r(t))return!1;switch(s(t)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return p||!!d(h,c(t))}catch(t){return!0}};f.sham=!0,t.exports=!u||o((function(){var t;return A(A.call)||!A(Object)||!A((function(){t=!0}))||t}))?f:A},16575:(t,e,n)=>{"use strict";var i=n(39297);t.exports=function(t){return void 0!==t&&(i(t,"value")||i(t,"writable"))}},2087:(t,e,n)=>{"use strict";var i=n(20034),o=Math.floor;t.exports=Number.isInteger||function(t){return!i(t)&&isFinite(t)&&o(t)===t}},13925:(t,e,n)=>{"use strict";var i=n(20034);t.exports=function(t){return i(t)||null===t}},60788:(t,e,n)=>{"use strict";var i=n(20034),o=n(22195),r=n(78227)("match");t.exports=function(t){var e;return i(t)&&(void 0!==(e=t[r])?!!e:"RegExp"===o(t))}},40507:(t,e,n)=>{"use strict";var i=n(69565);t.exports=function(t,e,n){for(var o,r,s=n?t:t.iterator,a=t.next;!(o=i(a,s)).done;)if(void 0!==(r=e(o.value)))return r}},72652:(t,e,n)=>{"use strict";var i=n(76080),o=n(69565),r=n(28551),s=n(16823),a=n(44209),c=n(26198),l=n(1625),u=n(70081),h=n(50851),d=n(9539),p=TypeError,A=function(t,e){this.stopped=t,this.result=e},f=A.prototype;t.exports=function(t,e,n){var g,m,b,v,C,x,w,y=n&&n.that,k=!(!n||!n.AS_ENTRIES),B=!(!n||!n.IS_RECORD),E=!(!n||!n.IS_ITERATOR),_=!(!n||!n.INTERRUPTED),I=i(e,y),D=function(t){return g&&d(g,"normal",t),new A(!0,t)},S=function(t){return k?(r(t),_?I(t[0],t[1],D):I(t[0],t[1])):_?I(t,D):I(t)};if(B)g=t.iterator;else if(E)g=t;else{if(!(m=h(t)))throw new p(s(t)+" is not iterable");if(a(m)){for(b=0,v=c(t);v>b;b++)if((C=S(t[b]))&&l(f,C))return C;return new A(!1)}g=u(t,m)}for(x=B?t.next:g.next;!(w=o(x,g)).done;){try{C=S(w.value)}catch(t){d(g,"throw",t)}if("object"==typeof C&&C&&l(f,C))return C}return new A(!1)}},9539:(t,e,n)=>{"use strict";var i=n(69565),o=n(28551),r=n(55966);t.exports=function(t,e,n){var s,a;o(t);try{if(!(s=r(t,"return"))){if("throw"===e)throw n;return n}s=i(s,t)}catch(t){a=!0,s=t}if("throw"===e)throw n;if(a)throw s;return o(s),n}},33994:(t,e,n)=>{"use strict";var i=n(57657).IteratorPrototype,o=n(2360),r=n(6980),s=n(10687),a=n(26269),c=function(){return this};t.exports=function(t,e,n,l){var u=e+" Iterator";return t.prototype=o(i,{next:r(+!l,n)}),s(t,u,!1,!0),a[u]=c,t}},51088:(t,e,n)=>{"use strict";var i=n(46518),o=n(69565),r=n(96395),s=n(10350),a=n(94901),c=n(33994),l=n(42787),u=n(52967),h=n(10687),d=n(66699),p=n(36840),A=n(78227),f=n(26269),g=n(57657),m=s.PROPER,b=s.CONFIGURABLE,v=g.IteratorPrototype,C=g.BUGGY_SAFARI_ITERATORS,x=A("iterator"),w="keys",y="values",k="entries",B=function(){return this};t.exports=function(t,e,n,s,A,g,E){c(n,e,s);var _,I,D,S=function(t){if(t===A&&R)return R;if(!C&&t&&t in M)return M[t];switch(t){case w:case y:case k:return function(){return new n(this,t)}}return function(){return new n(this)}},T=e+" Iterator",O=!1,M=t.prototype,P=M[x]||M["@@iterator"]||A&&M[A],R=!C&&P||S(A),N="Array"===e&&M.entries||P;if(N&&(_=l(N.call(new t)))!==Object.prototype&&_.next&&(r||l(_)===v||(u?u(_,v):a(_[x])||p(_,x,B)),h(_,T,!0,!0),r&&(f[T]=B)),m&&A===y&&P&&P.name!==y&&(!r&&b?d(M,"name",y):(O=!0,R=function(){return o(P,this)})),A)if(I={values:S(y),keys:g?R:S(w),entries:S(k)},E)for(D in I)(C||O||!(D in M))&&p(M,D,I[D]);else i({target:e,proto:!0,forced:C||O},I);return r&&!E||M[x]===R||p(M,x,R,{name:A}),f[e]=R,I}},57657:(t,e,n)=>{"use strict";var i,o,r,s=n(79039),a=n(94901),c=n(20034),l=n(2360),u=n(42787),h=n(36840),d=n(78227),p=n(96395),A=d("iterator"),f=!1;[].keys&&("next"in(r=[].keys())?(o=u(u(r)))!==Object.prototype&&(i=o):f=!0),!c(i)||s((function(){var t={};return i[A].call(t)!==t}))?i={}:p&&(i=l(i)),a(i[A])||h(i,A,(function(){return this})),t.exports={IteratorPrototype:i,BUGGY_SAFARI_ITERATORS:f}},26269:t=>{"use strict";t.exports={}},72248:(t,e,n)=>{"use strict";var i=n(79504),o=Map.prototype;t.exports={Map,set:i(o.set),get:i(o.get),has:i(o.has),remove:i(o.delete),proto:o}},53250:t=>{"use strict";var e=Math.expm1,n=Math.exp;t.exports=!e||e(10)>22025.465794806718||e(10)<22025.465794806718||-2e-17!==e(-2e-17)?function(t){var e=+t;return 0===e?e:e>-1e-6&&e<1e-6?e+e*e/2:n(e)-1}:e},33164:(t,e,n)=>{"use strict";var i=n(77782),o=Math.abs,r=2220446049250313e-31,s=1/r;t.exports=function(t,e,n,a){var c=+t,l=o(c),u=i(c);if(ln||d!=d?u*(1/0):u*d}},15617:(t,e,n)=>{"use strict";var i=n(33164);t.exports=Math.fround||function(t){return i(t,1.1920928955078125e-7,34028234663852886e22,11754943508222875e-54)}},49340:t=>{"use strict";var e=Math.log,n=Math.LOG10E;t.exports=Math.log10||function(t){return e(t)*n}},7740:t=>{"use strict";var e=Math.log;t.exports=Math.log1p||function(t){var n=+t;return n>-1e-8&&n<1e-8?n-n*n/2:e(1+n)}},77782:t=>{"use strict";t.exports=Math.sign||function(t){var e=+t;return 0===e||e!=e?e:e<0?-1:1}},91955:(t,e,n)=>{"use strict";var i,o,r,s,a,c=n(44576),l=n(93389),u=n(76080),h=n(59225).set,d=n(18265),p=n(89544),A=n(44265),f=n(7860),g=n(38574),m=c.MutationObserver||c.WebKitMutationObserver,b=c.document,v=c.process,C=c.Promise,x=l("queueMicrotask");if(!x){var w=new d,y=function(){var t,e;for(g&&(t=v.domain)&&t.exit();e=w.get();)try{e()}catch(t){throw w.head&&i(),t}t&&t.enter()};p||g||f||!m||!b?!A&&C&&C.resolve?((s=C.resolve(void 0)).constructor=C,a=u(s.then,s),i=function(){a(y)}):g?i=function(){v.nextTick(y)}:(h=u(h,c),i=function(){h(y)}):(o=!0,r=b.createTextNode(""),new m(y).observe(r,{characterData:!0}),i=function(){r.data=o=!o}),x=function(t){w.head||i(),w.add(t)}}t.exports=x},36043:(t,e,n)=>{"use strict";var i=n(79306),o=TypeError,r=function(t){var e,n;this.promise=new t((function(t,i){if(void 0!==e||void 0!==n)throw new o("Bad Promise constructor");e=t,n=i})),this.resolve=i(e),this.reject=i(n)};t.exports.f=function(t){return new r(t)}},32603:(t,e,n)=>{"use strict";var i=n(655);t.exports=function(t,e){return void 0===t?arguments.length<2?"":e:i(t)}},60511:(t,e,n)=>{"use strict";var i=n(60788),o=TypeError;t.exports=function(t){if(i(t))throw new o("The method doesn't accept regular expressions");return t}},50360:(t,e,n)=>{"use strict";var i=n(44576).isFinite;t.exports=Number.isFinite||function(t){return"number"==typeof t&&i(t)}},33904:(t,e,n)=>{"use strict";var i=n(44576),o=n(79039),r=n(79504),s=n(655),a=n(43802).trim,c=n(47452),l=r("".charAt),u=i.parseFloat,h=i.Symbol,d=h&&h.iterator,p=1/u(c+"-0")!=-1/0||d&&!o((function(){u(Object(d))}));t.exports=p?function(t){var e=a(s(t)),n=u(e);return 0===n&&"-"===l(e,0)?-0:n}:u},52703:(t,e,n)=>{"use strict";var i=n(44576),o=n(79039),r=n(79504),s=n(655),a=n(43802).trim,c=n(47452),l=i.parseInt,u=i.Symbol,h=u&&u.iterator,d=/^[+-]?0x/i,p=r(d.exec),A=8!==l(c+"08")||22!==l(c+"0x16")||h&&!o((function(){l(Object(h))}));t.exports=A?function(t,e){var n=a(s(t));return l(n,e>>>0||(p(d,n)?16:10))}:l},44213:(t,e,n)=>{"use strict";var i=n(43724),o=n(79504),r=n(69565),s=n(79039),a=n(71072),c=n(33717),l=n(48773),u=n(48981),h=n(47055),d=Object.assign,p=Object.defineProperty,A=o([].concat);t.exports=!d||s((function(){if(i&&1!==d({b:1},d(p({},"a",{enumerable:!0,get:function(){p(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var t={},e={},n=Symbol("assign detection"),o="abcdefghijklmnopqrst";return t[n]=7,o.split("").forEach((function(t){e[t]=t})),7!==d({},t)[n]||a(d({},e)).join("")!==o}))?function(t,e){for(var n=u(t),o=arguments.length,s=1,d=c.f,p=l.f;o>s;)for(var f,g=h(arguments[s++]),m=d?A(a(g),d(g)):a(g),b=m.length,v=0;b>v;)f=m[v++],i&&!r(p,g,f)||(n[f]=g[f]);return n}:d},10298:(t,e,n)=>{"use strict";var i=n(22195),o=n(25397),r=n(38480).f,s=n(67680),a="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];t.exports.f=function(t){return a&&"Window"===i(t)?function(t){try{return r(t)}catch(t){return s(a)}}(t):r(o(t))}},42787:(t,e,n)=>{"use strict";var i=n(39297),o=n(94901),r=n(48981),s=n(66119),a=n(12211),c=s("IE_PROTO"),l=Object,u=l.prototype;t.exports=a?l.getPrototypeOf:function(t){var e=r(t);if(i(e,c))return e[c];var n=e.constructor;return o(n)&&e instanceof n?n.prototype:e instanceof l?u:null}},34124:(t,e,n)=>{"use strict";var i=n(79039),o=n(20034),r=n(22195),s=n(15652),a=Object.isExtensible,c=i((function(){a(1)}));t.exports=c||s?function(t){return!!o(t)&&(!s||"ArrayBuffer"!==r(t))&&(!a||a(t))}:a},42551:(t,e,n)=>{"use strict";var i=n(96395),o=n(44576),r=n(79039),s=n(3607);t.exports=i||!r((function(){if(!(s&&s<535)){var t=Math.random();__defineSetter__.call(null,t,(function(){})),delete o[t]}}))},52967:(t,e,n)=>{"use strict";var i=n(46706),o=n(20034),r=n(67750),s=n(73506);t.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var t,e=!1,n={};try{(t=i(Object.prototype,"__proto__","set"))(n,[]),e=n instanceof Array}catch(t){}return function(n,i){return r(n),s(i),o(n)?(e?t(n,i):n.__proto__=i,n):n}}():void 0)},32357:(t,e,n)=>{"use strict";var i=n(43724),o=n(79039),r=n(79504),s=n(42787),a=n(71072),c=n(25397),l=r(n(48773).f),u=r([].push),h=i&&o((function(){var t=Object.create(null);return t[2]=2,!l(t,2)})),d=function(t){return function(e){for(var n,o=c(e),r=a(o),d=h&&null===s(o),p=r.length,A=0,f=[];p>A;)n=r[A++],i&&!(d?n in o:l(o,n))||u(f,t?[n,o[n]]:o[n]);return f}};t.exports={entries:d(!0),values:d(!1)}},53179:(t,e,n)=>{"use strict";var i=n(92140),o=n(36955);t.exports=i?{}.toString:function(){return"[object "+o(this)+"]"}},19167:(t,e,n)=>{"use strict";var i=n(44576);t.exports=i},1103:t=>{"use strict";t.exports=function(t){try{return{error:!1,value:t()}}catch(t){return{error:!0,value:t}}}},10916:(t,e,n)=>{"use strict";var i=n(44576),o=n(80550),r=n(94901),s=n(92796),a=n(33706),c=n(78227),l=n(84215),u=n(96395),h=n(39519),d=o&&o.prototype,p=c("species"),A=!1,f=r(i.PromiseRejectionEvent),g=s("Promise",(function(){var t=a(o),e=t!==String(o);if(!e&&66===h)return!0;if(u&&(!d.catch||!d.finally))return!0;if(!h||h<51||!/native code/.test(t)){var n=new o((function(t){t(1)})),i=function(t){t((function(){}),(function(){}))};if((n.constructor={})[p]=i,!(A=n.then((function(){}))instanceof i))return!0}return!(e||"BROWSER"!==l&&"DENO"!==l||f)}));t.exports={CONSTRUCTOR:g,REJECTION_EVENT:f,SUBCLASSING:A}},80550:(t,e,n)=>{"use strict";var i=n(44576);t.exports=i.Promise},93438:(t,e,n)=>{"use strict";var i=n(28551),o=n(20034),r=n(36043);t.exports=function(t,e){if(i(t),o(e)&&e.constructor===t)return e;var n=r.f(t);return(0,n.resolve)(e),n.promise}},90537:(t,e,n)=>{"use strict";var i=n(80550),o=n(84428),r=n(10916).CONSTRUCTOR;t.exports=r||!o((function(t){i.all(t).then(void 0,(function(){}))}))},11056:(t,e,n)=>{"use strict";var i=n(24913).f;t.exports=function(t,e,n){n in t||i(t,n,{configurable:!0,get:function(){return e[n]},set:function(t){e[n]=t}})}},18265:t=>{"use strict";var e=function(){this.head=null,this.tail=null};e.prototype={add:function(t){var e={item:t,next:null},n=this.tail;n?n.next=e:this.head=e,this.tail=e},get:function(){var t=this.head;if(t)return null===(this.head=t.next)&&(this.tail=null),t.item}},t.exports=e},61034:(t,e,n)=>{"use strict";var i=n(69565),o=n(39297),r=n(1625),s=n(67979),a=RegExp.prototype;t.exports=function(t){var e=t.flags;return void 0!==e||"flags"in a||o(t,"flags")||!r(a,t)?e:i(s,t)}},93389:(t,e,n)=>{"use strict";var i=n(44576),o=n(43724),r=Object.getOwnPropertyDescriptor;t.exports=function(t){if(!o)return i[t];var e=r(i,t);return e&&e.value}},3470:t=>{"use strict";t.exports=Object.is||function(t,e){return t===e?0!==t||1/t==1/e:t!=t&&e!=e}},79472:(t,e,n)=>{"use strict";var i,o=n(44576),r=n(18745),s=n(94901),a=n(84215),c=n(82839),l=n(67680),u=n(22812),h=o.Function,d=/MSIE .\./.test(c)||"BUN"===a&&((i=o.Bun.version.split(".")).length<3||"0"===i[0]&&(i[1]<3||"3"===i[1]&&"0"===i[2]));t.exports=function(t,e){var n=e?2:1;return d?function(i,o){var a=u(arguments.length,1)>n,c=s(i)?i:h(i),d=a?l(arguments,n):[],p=a?function(){r(c,this,d)}:c;return e?t(p,o):t(p)}:t}},89286:(t,e,n)=>{"use strict";var i=n(94402),o=n(38469),r=i.Set,s=i.add;t.exports=function(t){var e=new r;return o(t,(function(t){s(e,t)})),e}},83440:(t,e,n)=>{"use strict";var i=n(97080),o=n(94402),r=n(89286),s=n(25170),a=n(83789),c=n(38469),l=n(40507),u=o.has,h=o.remove;t.exports=function(t){var e=i(this),n=a(t),o=r(e);return s(e)<=n.size?c(e,(function(t){n.includes(t)&&h(o,t)})):l(n.getIterator(),(function(t){u(e,t)&&h(o,t)})),o}},94402:(t,e,n)=>{"use strict";var i=n(79504),o=Set.prototype;t.exports={Set,add:i(o.add),has:i(o.has),remove:i(o.delete),proto:o}},68750:(t,e,n)=>{"use strict";var i=n(97080),o=n(94402),r=n(25170),s=n(83789),a=n(38469),c=n(40507),l=o.Set,u=o.add,h=o.has;t.exports=function(t){var e=i(this),n=s(t),o=new l;return r(e)>n.size?c(n.getIterator(),(function(t){h(e,t)&&u(o,t)})):a(e,(function(t){n.includes(t)&&u(o,t)})),o}},64449:(t,e,n)=>{"use strict";var i=n(97080),o=n(94402).has,r=n(25170),s=n(83789),a=n(38469),c=n(40507),l=n(9539);t.exports=function(t){var e=i(this),n=s(t);if(r(e)<=n.size)return!1!==a(e,(function(t){if(n.includes(t))return!1}),!0);var u=n.getIterator();return!1!==c(u,(function(t){if(o(e,t))return l(u,"normal",!1)}))}},53838:(t,e,n)=>{"use strict";var i=n(97080),o=n(25170),r=n(38469),s=n(83789);t.exports=function(t){var e=i(this),n=s(t);return!(o(e)>n.size)&&!1!==r(e,(function(t){if(!n.includes(t))return!1}),!0)}},28527:(t,e,n)=>{"use strict";var i=n(97080),o=n(94402).has,r=n(25170),s=n(83789),a=n(40507),c=n(9539);t.exports=function(t){var e=i(this),n=s(t);if(r(e){"use strict";var i=n(79504),o=n(40507),r=n(94402),s=r.Set,a=r.proto,c=i(a.forEach),l=i(a.keys),u=l(new s).next;t.exports=function(t,e,n){return n?o({iterator:l(t),next:u},e):c(t,e)}},84916:(t,e,n)=>{"use strict";var i=n(97751),o=function(t){return{size:t,has:function(){return!1},keys:function(){return{next:function(){return{done:!0}}}}}};t.exports=function(t){var e=i("Set");try{(new e)[t](o(0));try{return(new e)[t](o(-1)),!1}catch(t){return!0}}catch(t){return!1}}},25170:(t,e,n)=>{"use strict";var i=n(46706),o=n(94402);t.exports=i(o.proto,"size","get")||function(t){return t.size}},87633:(t,e,n)=>{"use strict";var i=n(97751),o=n(62106),r=n(78227),s=n(43724),a=r("species");t.exports=function(t){var e=i(t);s&&e&&!e[a]&&o(e,a,{configurable:!0,get:function(){return this}})}},83650:(t,e,n)=>{"use strict";var i=n(97080),o=n(94402),r=n(89286),s=n(83789),a=n(40507),c=o.add,l=o.has,u=o.remove;t.exports=function(t){var e=i(this),n=s(t).getIterator(),o=r(e);return a(n,(function(t){l(e,t)?u(o,t):c(o,t)})),o}},10687:(t,e,n)=>{"use strict";var i=n(24913).f,o=n(39297),r=n(78227)("toStringTag");t.exports=function(t,e,n){t&&!n&&(t=t.prototype),t&&!o(t,r)&&i(t,r,{configurable:!0,value:e})}},44204:(t,e,n)=>{"use strict";var i=n(97080),o=n(94402).add,r=n(89286),s=n(83789),a=n(40507);t.exports=function(t){var e=i(this),n=s(t).getIterator(),c=r(e);return a(n,(function(t){o(c,t)})),c}},2293:(t,e,n)=>{"use strict";var i=n(28551),o=n(35548),r=n(64117),s=n(78227)("species");t.exports=function(t,e){var n,a=i(t).constructor;return void 0===a||r(n=i(a)[s])?e:o(n)}},23061:(t,e,n)=>{"use strict";var i=n(79039);t.exports=function(t){return i((function(){var e=""[t]('"');return e!==e.toLowerCase()||e.split('"').length>3}))}},83063:(t,e,n)=>{"use strict";var i=n(82839);t.exports=/Version\/10(?:\.\d+){1,2}(?: [\w./]+)?(?: Mobile\/\w+)? Safari\//.test(i)},60533:(t,e,n)=>{"use strict";var i=n(79504),o=n(18014),r=n(655),s=n(72333),a=n(67750),c=i(s),l=i("".slice),u=Math.ceil,h=function(t){return function(e,n,i){var s,h,d=r(a(e)),p=o(n),A=d.length,f=void 0===i?" ":r(i);return p<=A||""===f?d:((h=c(f,u((s=p-A)/f.length))).length>s&&(h=l(h,0,s)),t?d+h:h+d)}};t.exports={start:h(!1),end:h(!0)}},3717:(t,e,n)=>{"use strict";var i=n(79504),o=2147483647,r=/[^\0-\u007E]/,s=/[.\u3002\uFF0E\uFF61]/g,a="Overflow: input needs wider integers to process",c=RangeError,l=i(s.exec),u=Math.floor,h=String.fromCharCode,d=i("".charCodeAt),p=i([].join),A=i([].push),f=i("".replace),g=i("".split),m=i("".toLowerCase),b=function(t){return t+22+75*(t<26)},v=function(t,e,n){var i=0;for(t=n?u(t/700):t>>1,t+=u(t/e);t>455;)t=u(t/35),i+=36;return u(i+36*t/(t+38))},C=function(t){var e=[];t=function(t){for(var e=[],n=0,i=t.length;n=55296&&o<=56319&&n=s&&iu((o-l)/x))throw new c(a);for(l+=(C-s)*x,s=C,n=0;no)throw new c(a);if(i===s){for(var w=l,y=36;;){var k=y<=f?1:y>=f+26?26:y-f;if(w{"use strict";var i=n(91291),o=n(655),r=n(67750),s=RangeError;t.exports=function(t){var e=o(r(this)),n="",a=i(t);if(a<0||a===1/0)throw new s("Wrong number of repetitions");for(;a>0;(a>>>=1)&&(e+=e))1&a&&(n+=e);return n}},18866:(t,e,n)=>{"use strict";var i=n(43802).end,o=n(60706);t.exports=o("trimEnd")?function(){return i(this)}:"".trimEnd},60706:(t,e,n)=>{"use strict";var i=n(10350).PROPER,o=n(79039),r=n(47452);t.exports=function(t){return o((function(){return!!r[t]()||"​…᠎"!=="​…᠎"[t]()||i&&r[t].name!==t}))}},53487:(t,e,n)=>{"use strict";var i=n(43802).start,o=n(60706);t.exports=o("trimStart")?function(){return i(this)}:"".trimStart},43802:(t,e,n)=>{"use strict";var i=n(79504),o=n(67750),r=n(655),s=n(47452),a=i("".replace),c=RegExp("^["+s+"]+"),l=RegExp("(^|[^"+s+"])["+s+"]+$"),u=function(t){return function(e){var n=r(o(e));return 1&t&&(n=a(n,c,"")),2&t&&(n=a(n,l,"$1")),n}};t.exports={start:u(1),end:u(2),trim:u(3)}},1548:(t,e,n)=>{"use strict";var i=n(44576),o=n(79039),r=n(39519),s=n(84215),a=i.structuredClone;t.exports=!!a&&!o((function(){if("DENO"===s&&r>92||"NODE"===s&&r>94||"BROWSER"===s&&r>97)return!1;var t=new ArrayBuffer(8),e=a(t,{transfer:[t]});return 0!==t.byteLength||8!==e.byteLength}))},58242:(t,e,n)=>{"use strict";var i=n(69565),o=n(97751),r=n(78227),s=n(36840);t.exports=function(){var t=o("Symbol"),e=t&&t.prototype,n=e&&e.valueOf,a=r("toPrimitive");e&&!e[a]&&s(e,a,(function(t){return i(n,this)}),{arity:1})}},91296:(t,e,n)=>{"use strict";var i=n(4495);t.exports=i&&!!Symbol.for&&!!Symbol.keyFor},59225:(t,e,n)=>{"use strict";var i,o,r,s,a=n(44576),c=n(18745),l=n(76080),u=n(94901),h=n(39297),d=n(79039),p=n(20397),A=n(67680),f=n(4055),g=n(22812),m=n(89544),b=n(38574),v=a.setImmediate,C=a.clearImmediate,x=a.process,w=a.Dispatch,y=a.Function,k=a.MessageChannel,B=a.String,E=0,_={},I="onreadystatechange";d((function(){i=a.location}));var D=function(t){if(h(_,t)){var e=_[t];delete _[t],e()}},S=function(t){return function(){D(t)}},T=function(t){D(t.data)},O=function(t){a.postMessage(B(t),i.protocol+"//"+i.host)};v&&C||(v=function(t){g(arguments.length,1);var e=u(t)?t:y(t),n=A(arguments,1);return _[++E]=function(){c(e,void 0,n)},o(E),E},C=function(t){delete _[t]},b?o=function(t){x.nextTick(S(t))}:w&&w.now?o=function(t){w.now(S(t))}:k&&!m?(s=(r=new k).port2,r.port1.onmessage=T,o=l(s.postMessage,s)):a.addEventListener&&u(a.postMessage)&&!a.importScripts&&i&&"file:"!==i.protocol&&!d(O)?(o=O,a.addEventListener("message",T,!1)):o=I in f("script")?function(t){p.appendChild(f("script"))[I]=function(){p.removeChild(this),D(t)}}:function(t){setTimeout(S(t),0)}),t.exports={set:v,clear:C}},31240:(t,e,n)=>{"use strict";var i=n(79504);t.exports=i(1..valueOf)},75854:(t,e,n)=>{"use strict";var i=n(72777),o=TypeError;t.exports=function(t){var e=i(t,"number");if("number"==typeof e)throw new o("Can't convert number to bigint");return BigInt(e)}},57696:(t,e,n)=>{"use strict";var i=n(91291),o=n(18014),r=RangeError;t.exports=function(t){if(void 0===t)return 0;var e=i(t),n=o(e);if(e!==n)throw new r("Wrong length or index");return n}},58229:(t,e,n)=>{"use strict";var i=n(99590),o=RangeError;t.exports=function(t,e){var n=i(t);if(n%e)throw new o("Wrong offset");return n}},99590:(t,e,n)=>{"use strict";var i=n(91291),o=RangeError;t.exports=function(t){var e=i(t);if(e<0)throw new o("The argument can't be less than 0");return e}},58319:t=>{"use strict";var e=Math.round;t.exports=function(t){var n=e(t);return n<0?0:n>255?255:255&n}},15823:(t,e,n)=>{"use strict";var i=n(46518),o=n(44576),r=n(69565),s=n(43724),a=n(72805),c=n(94644),l=n(66346),u=n(90679),h=n(6980),d=n(66699),p=n(2087),A=n(18014),f=n(57696),g=n(58229),m=n(58319),b=n(56969),v=n(39297),C=n(36955),x=n(20034),w=n(10757),y=n(2360),k=n(1625),B=n(52967),E=n(38480).f,_=n(43251),I=n(81594).forEach,D=n(87633),S=n(62106),T=n(24913),O=n(77347),M=n(35370),P=n(91181),R=n(23167),N=P.get,H=P.set,z=P.enforce,L=T.f,F=O.f,j=o.RangeError,U=l.ArrayBuffer,W=U.prototype,Y=l.DataView,q=c.NATIVE_ARRAY_BUFFER_VIEWS,Q=c.TYPED_ARRAY_TAG,G=c.TypedArray,X=c.TypedArrayPrototype,V=c.isTypedArray,K="BYTES_PER_ELEMENT",J="Wrong length",Z=function(t,e){S(t,e,{configurable:!0,get:function(){return N(this)[e]}})},$=function(t){var e;return k(W,t)||"ArrayBuffer"===(e=C(t))||"SharedArrayBuffer"===e},tt=function(t,e){return V(t)&&!w(e)&&e in t&&p(+e)&&e>=0},et=function(t,e){return e=b(e),tt(t,e)?h(2,t[e]):F(t,e)},nt=function(t,e,n){return e=b(e),!(tt(t,e)&&x(n)&&v(n,"value"))||v(n,"get")||v(n,"set")||n.configurable||v(n,"writable")&&!n.writable||v(n,"enumerable")&&!n.enumerable?L(t,e,n):(t[e]=n.value,t)};s?(q||(O.f=et,T.f=nt,Z(X,"buffer"),Z(X,"byteOffset"),Z(X,"byteLength"),Z(X,"length")),i({target:"Object",stat:!0,forced:!q},{getOwnPropertyDescriptor:et,defineProperty:nt}),t.exports=function(t,e,n){var s=t.match(/\d+/)[0]/8,c=t+(n?"Clamped":"")+"Array",l="get"+t,h="set"+t,p=o[c],b=p,v=b&&b.prototype,C={},w=function(t,e){L(t,e,{get:function(){return function(t,e){var n=N(t);return n.view[l](e*s+n.byteOffset,!0)}(this,e)},set:function(t){return function(t,e,i){var o=N(t);o.view[h](e*s+o.byteOffset,n?m(i):i,!0)}(this,e,t)},enumerable:!0})};q?a&&(b=e((function(t,e,n,i){return u(t,v),R(x(e)?$(e)?void 0!==i?new p(e,g(n,s),i):void 0!==n?new p(e,g(n,s)):new p(e):V(e)?M(b,e):r(_,b,e):new p(f(e)),t,b)})),B&&B(b,G),I(E(p),(function(t){t in b||d(b,t,p[t])})),b.prototype=v):(b=e((function(t,e,n,i){u(t,v);var o,a,c,l=0,h=0;if(x(e)){if(!$(e))return V(e)?M(b,e):r(_,b,e);o=e,h=g(n,s);var d=e.byteLength;if(void 0===i){if(d%s)throw new j(J);if((a=d-h)<0)throw new j(J)}else if((a=A(i)*s)+h>d)throw new j(J);c=a/s}else c=f(e),o=new U(a=c*s);for(H(t,{buffer:o,byteOffset:h,byteLength:a,length:c,view:new Y(o)});l{"use strict";var i=n(44576),o=n(79039),r=n(84428),s=n(94644).NATIVE_ARRAY_BUFFER_VIEWS,a=i.ArrayBuffer,c=i.Int8Array;t.exports=!s||!o((function(){c(1)}))||!o((function(){new c(-1)}))||!r((function(t){new c,new c(null),new c(1.5),new c(t)}),!0)||o((function(){return 1!==new c(new a(2),1,void 0).length}))},26357:(t,e,n)=>{"use strict";var i=n(35370),o=n(61412);t.exports=function(t,e){return i(o(t),e)}},43251:(t,e,n)=>{"use strict";var i=n(76080),o=n(69565),r=n(35548),s=n(48981),a=n(26198),c=n(70081),l=n(50851),u=n(44209),h=n(18727),d=n(94644).aTypedArrayConstructor,p=n(75854);t.exports=function(t){var e,n,A,f,g,m,b,v,C=r(this),x=s(t),w=arguments.length,y=w>1?arguments[1]:void 0,k=void 0!==y,B=l(x);if(B&&!u(B))for(v=(b=c(x,B)).next,x=[];!(m=o(v,b)).done;)x.push(m.value);for(k&&w>2&&(y=i(y,arguments[2])),n=a(x),A=new(d(C))(n),f=h(A),e=0;n>e;e++)g=k?y(x[e],e):x[e],A[e]=f?p(g):+g;return A}},61412:(t,e,n)=>{"use strict";var i=n(94644),o=n(2293),r=i.aTypedArrayConstructor,s=i.getTypedArrayConstructor;t.exports=function(t){return r(o(t,s(t)))}},67416:(t,e,n)=>{"use strict";var i=n(79039),o=n(78227),r=n(43724),s=n(96395),a=o("iterator");t.exports=!i((function(){var t=new URL("b?a=1&b=2&c=3","https://a"),e=t.searchParams,n=new URLSearchParams("a=1&a=2&b=3"),i="";return t.pathname="c%20d",e.forEach((function(t,n){e.delete("b"),i+=n+t})),n.delete("a",2),n.delete("b",void 0),s&&(!t.toJSON||!n.has("a",1)||n.has("a",2)||!n.has("a",void 0)||n.has("b"))||!e.size&&(s||!r)||!e.sort||"https://a/c%20d?a=1&c=3"!==t.href||"3"!==e.get("c")||"a=1"!==String(new URLSearchParams("?a=1"))||!e[a]||"a"!==new URL("https://a@b").username||"b"!==new URLSearchParams(new URLSearchParams("a=b")).get("a")||"xn--e1aybc"!==new URL("https://тест").host||"#%D0%B1"!==new URL("https://a#б").hash||"a1c3"!==i||"x"!==new URL("https://x",void 0).host}))},22812:t=>{"use strict";var e=TypeError;t.exports=function(t,n){if(t{"use strict";var i=n(19167),o=n(39297),r=n(1951),s=n(24913).f;t.exports=function(t){var e=i.Symbol||(i.Symbol={});o(e,t)||s(e,t,{value:r.f(t)})}},1951:(t,e,n)=>{"use strict";var i=n(78227);e.f=i},47452:t=>{"use strict";t.exports="\t\n\v\f\r                 \u2028\u2029\ufeff"},14601:(t,e,n)=>{"use strict";var i=n(97751),o=n(39297),r=n(66699),s=n(1625),a=n(52967),c=n(77740),l=n(11056),u=n(23167),h=n(32603),d=n(77584),p=n(80747),A=n(43724),f=n(96395);t.exports=function(t,e,n,g){var m="stackTraceLimit",b=g?2:1,v=t.split("."),C=v[v.length-1],x=i.apply(null,v);if(x){var w=x.prototype;if(!f&&o(w,"cause")&&delete w.cause,!n)return x;var y=i("Error"),k=e((function(t,e){var n=h(g?e:t,void 0),i=g?new x(t):new x;return void 0!==n&&r(i,"message",n),p(i,k,i.stack,2),this&&s(w,this)&&u(i,this,k),arguments.length>b&&d(i,arguments[b]),i}));if(k.prototype=w,"Error"!==C?a?a(k,y):c(k,y,{name:!0}):A&&m in x&&(l(k,x,m),l(k,x,"prepareStackTrace")),c(k,x),!f)try{w.name!==C&&r(w,"name",C),w.constructor=k}catch(t){}return k}}},4294:(t,e,n)=>{"use strict";var i=n(46518),o=n(97751),r=n(18745),s=n(79039),a=n(14601),c="AggregateError",l=o(c),u=!s((function(){return 1!==l([1]).errors[0]}))&&s((function(){return 7!==l([1],c,{cause:7}).cause}));i({global:!0,constructor:!0,arity:2,forced:u},{AggregateError:a(c,(function(t){return function(e,n){return r(t,this,arguments)}}),u,!0)})},17145:(t,e,n)=>{"use strict";var i=n(46518),o=n(1625),r=n(42787),s=n(52967),a=n(77740),c=n(2360),l=n(66699),u=n(6980),h=n(77584),d=n(80747),p=n(72652),A=n(32603),f=n(78227)("toStringTag"),g=Error,m=[].push,b=function(t,e){var n,i=o(v,this);s?n=s(new g,i?r(this):v):(n=i?this:c(v),l(n,f,"Error")),void 0!==e&&l(n,"message",A(e)),d(n,b,n.stack,1),arguments.length>2&&h(n,arguments[2]);var a=[];return p(t,m,{that:a}),l(n,"errors",a),n};s?s(b,g):a(b,g,{name:!0});var v=b.prototype=c(g.prototype,{constructor:u(1,b),message:u(1,""),name:u(1,"AggregateError")});i({global:!0,constructor:!0,arity:2},{AggregateError:b})},30067:(t,e,n)=>{"use strict";n(17145)},54743:(t,e,n)=>{"use strict";var i=n(46518),o=n(44576),r=n(66346),s=n(87633),a="ArrayBuffer",c=r[a];i({global:!0,constructor:!0,forced:o[a]!==c},{ArrayBuffer:c}),s(a)},16573:(t,e,n)=>{"use strict";var i=n(43724),o=n(62106),r=n(3238),s=ArrayBuffer.prototype;i&&!("detached"in s)&&o(s,"detached",{configurable:!0,get:function(){return r(this)}})},46761:(t,e,n)=>{"use strict";var i=n(46518),o=n(94644);i({target:"ArrayBuffer",stat:!0,forced:!o.NATIVE_ARRAY_BUFFER_VIEWS},{isView:o.isView})},11745:(t,e,n)=>{"use strict";var i=n(46518),o=n(27476),r=n(79039),s=n(66346),a=n(28551),c=n(35610),l=n(18014),u=n(2293),h=s.ArrayBuffer,d=s.DataView,p=d.prototype,A=o(h.prototype.slice),f=o(p.getUint8),g=o(p.setUint8);i({target:"ArrayBuffer",proto:!0,unsafe:!0,forced:r((function(){return!new h(2).slice(1,void 0).byteLength}))},{slice:function(t,e){if(A&&void 0===e)return A(a(this),t);for(var n=a(this).byteLength,i=c(t,n),o=c(void 0===e?n:e,n),r=new(u(this,h))(l(o-i)),s=new d(this),p=new d(r),m=0;i{"use strict";var i=n(46518),o=n(95636);o&&i({target:"ArrayBuffer",proto:!0},{transferToFixedLength:function(){return o(this,arguments.length?arguments[0]:void 0,!1)}})},78100:(t,e,n)=>{"use strict";var i=n(46518),o=n(95636);o&&i({target:"ArrayBuffer",proto:!0},{transfer:function(){return o(this,arguments.length?arguments[0]:void 0,!0)}})},18107:(t,e,n)=>{"use strict";var i=n(46518),o=n(48981),r=n(26198),s=n(91291),a=n(6469);i({target:"Array",proto:!0},{at:function(t){var e=o(this),n=r(e),i=s(t),a=i>=0?i:n+i;return a<0||a>=n?void 0:e[a]}}),a("at")},28706:(t,e,n)=>{"use strict";var i=n(46518),o=n(79039),r=n(34376),s=n(20034),a=n(48981),c=n(26198),l=n(96837),u=n(97040),h=n(1469),d=n(70597),p=n(78227),A=n(39519),f=p("isConcatSpreadable"),g=A>=51||!o((function(){var t=[];return t[f]=!1,t.concat()[0]!==t})),m=function(t){if(!s(t))return!1;var e=t[f];return void 0!==e?!!e:r(t)};i({target:"Array",proto:!0,arity:1,forced:!g||!d("concat")},{concat:function(t){var e,n,i,o,r,s=a(this),d=h(s,0),p=0;for(e=-1,i=arguments.length;e{"use strict";var i=n(46518),o=n(57029),r=n(6469);i({target:"Array",proto:!0},{copyWithin:o}),r("copyWithin")},88431:(t,e,n)=>{"use strict";var i=n(46518),o=n(81594).every;i({target:"Array",proto:!0,forced:!n(34598)("every")},{every:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}})},33771:(t,e,n)=>{"use strict";var i=n(46518),o=n(84373),r=n(6469);i({target:"Array",proto:!0},{fill:o}),r("fill")},2008:(t,e,n)=>{"use strict";var i=n(46518),o=n(81594).filter;i({target:"Array",proto:!0,forced:!n(70597)("filter")},{filter:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}})},48980:(t,e,n)=>{"use strict";var i=n(46518),o=n(81594).findIndex,r=n(6469),s="findIndex",a=!0;s in[]&&Array(1)[s]((function(){a=!1})),i({target:"Array",proto:!0,forced:a},{findIndex:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}}),r(s)},13451:(t,e,n)=>{"use strict";var i=n(46518),o=n(43839).findLastIndex,r=n(6469);i({target:"Array",proto:!0},{findLastIndex:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}}),r("findLastIndex")},10838:(t,e,n)=>{"use strict";var i=n(46518),o=n(43839).findLast,r=n(6469);i({target:"Array",proto:!0},{findLast:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}}),r("findLast")},50113:(t,e,n)=>{"use strict";var i=n(46518),o=n(81594).find,r=n(6469),s="find",a=!0;s in[]&&Array(1)[s]((function(){a=!1})),i({target:"Array",proto:!0,forced:a},{find:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}}),r(s)},78350:(t,e,n)=>{"use strict";var i=n(46518),o=n(70259),r=n(79306),s=n(48981),a=n(26198),c=n(1469);i({target:"Array",proto:!0},{flatMap:function(t){var e,n=s(this),i=a(n);return r(t),(e=c(n,0)).length=o(e,n,n,i,0,1,t,arguments.length>1?arguments[1]:void 0),e}})},46449:(t,e,n)=>{"use strict";var i=n(46518),o=n(70259),r=n(48981),s=n(26198),a=n(91291),c=n(1469);i({target:"Array",proto:!0},{flat:function(){var t=arguments.length?arguments[0]:void 0,e=r(this),n=s(e),i=c(e,0);return i.length=o(i,e,e,n,0,void 0===t?1:a(t)),i}})},51629:(t,e,n)=>{"use strict";var i=n(46518),o=n(90235);i({target:"Array",proto:!0,forced:[].forEach!==o},{forEach:o})},23418:(t,e,n)=>{"use strict";var i=n(46518),o=n(97916);i({target:"Array",stat:!0,forced:!n(84428)((function(t){Array.from(t)}))},{from:o})},74423:(t,e,n)=>{"use strict";var i=n(46518),o=n(19617).includes,r=n(79039),s=n(6469);i({target:"Array",proto:!0,forced:r((function(){return!Array(1).includes()}))},{includes:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}}),s("includes")},25276:(t,e,n)=>{"use strict";var i=n(46518),o=n(27476),r=n(19617).indexOf,s=n(34598),a=o([].indexOf),c=!!a&&1/a([1],1,-0)<0;i({target:"Array",proto:!0,forced:c||!s("indexOf")},{indexOf:function(t){var e=arguments.length>1?arguments[1]:void 0;return c?a(this,t,e)||0:r(this,t,e)}})},64346:(t,e,n)=>{"use strict";n(46518)({target:"Array",stat:!0},{isArray:n(34376)})},23792:(t,e,n)=>{"use strict";var i=n(25397),o=n(6469),r=n(26269),s=n(91181),a=n(24913).f,c=n(51088),l=n(62529),u=n(96395),h=n(43724),d="Array Iterator",p=s.set,A=s.getterFor(d);t.exports=c(Array,"Array",(function(t,e){p(this,{type:d,target:i(t),index:0,kind:e})}),(function(){var t=A(this),e=t.target,n=t.index++;if(!e||n>=e.length)return t.target=null,l(void 0,!0);switch(t.kind){case"keys":return l(n,!1);case"values":return l(e[n],!1)}return l([n,e[n]],!1)}),"values");var f=r.Arguments=r.Array;if(o("keys"),o("values"),o("entries"),!u&&h&&"values"!==f.name)try{a(f,"name",{value:"values"})}catch(t){}},48598:(t,e,n)=>{"use strict";var i=n(46518),o=n(79504),r=n(47055),s=n(25397),a=n(34598),c=o([].join);i({target:"Array",proto:!0,forced:r!==Object||!a("join",",")},{join:function(t){return c(s(this),void 0===t?",":t)}})},8921:(t,e,n)=>{"use strict";var i=n(46518),o=n(8379);i({target:"Array",proto:!0,forced:o!==[].lastIndexOf},{lastIndexOf:o})},62062:(t,e,n)=>{"use strict";var i=n(46518),o=n(81594).map;i({target:"Array",proto:!0,forced:!n(70597)("map")},{map:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}})},31051:(t,e,n)=>{"use strict";var i=n(46518),o=n(79039),r=n(33517),s=n(97040),a=Array;i({target:"Array",stat:!0,forced:o((function(){function t(){}return!(a.of.call(t)instanceof t)}))},{of:function(){for(var t=0,e=arguments.length,n=new(r(this)?this:a)(e);e>t;)s(n,t,arguments[t++]);return n.length=e,n}})},44114:(t,e,n)=>{"use strict";var i=n(46518),o=n(48981),r=n(26198),s=n(34527),a=n(96837);i({target:"Array",proto:!0,arity:1,forced:n(79039)((function(){return 4294967297!==[].push.call({length:4294967296},1)}))||!function(){try{Object.defineProperty([],"length",{writable:!1}).push()}catch(t){return t instanceof TypeError}}()},{push:function(t){var e=o(this),n=r(e),i=arguments.length;a(n+i);for(var c=0;c{"use strict";var i=n(46518),o=n(80926).right,r=n(34598),s=n(39519);i({target:"Array",proto:!0,forced:!n(38574)&&s>79&&s<83||!r("reduceRight")},{reduceRight:function(t){return o(this,t,arguments.length,arguments.length>1?arguments[1]:void 0)}})},72712:(t,e,n)=>{"use strict";var i=n(46518),o=n(80926).left,r=n(34598),s=n(39519);i({target:"Array",proto:!0,forced:!n(38574)&&s>79&&s<83||!r("reduce")},{reduce:function(t){var e=arguments.length;return o(this,t,e,e>1?arguments[1]:void 0)}})},94490:(t,e,n)=>{"use strict";var i=n(46518),o=n(79504),r=n(34376),s=o([].reverse),a=[1,2];i({target:"Array",proto:!0,forced:String(a)===String(a.reverse())},{reverse:function(){return r(this)&&(this.length=this.length),s(this)}})},34782:(t,e,n)=>{"use strict";var i=n(46518),o=n(34376),r=n(33517),s=n(20034),a=n(35610),c=n(26198),l=n(25397),u=n(97040),h=n(78227),d=n(70597),p=n(67680),A=d("slice"),f=h("species"),g=Array,m=Math.max;i({target:"Array",proto:!0,forced:!A},{slice:function(t,e){var n,i,h,d=l(this),A=c(d),b=a(t,A),v=a(void 0===e?A:e,A);if(o(d)&&(n=d.constructor,(r(n)&&(n===g||o(n.prototype))||s(n)&&null===(n=n[f]))&&(n=void 0),n===g||void 0===n))return p(d,b,v);for(i=new(void 0===n?g:n)(m(v-b,0)),h=0;b{"use strict";var i=n(46518),o=n(81594).some;i({target:"Array",proto:!0,forced:!n(34598)("some")},{some:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}})},26910:(t,e,n)=>{"use strict";var i=n(46518),o=n(79504),r=n(79306),s=n(48981),a=n(26198),c=n(84606),l=n(655),u=n(79039),h=n(74488),d=n(34598),p=n(13709),A=n(13763),f=n(39519),g=n(3607),m=[],b=o(m.sort),v=o(m.push),C=u((function(){m.sort(void 0)})),x=u((function(){m.sort(null)})),w=d("sort"),y=!u((function(){if(f)return f<70;if(!(p&&p>3)){if(A)return!0;if(g)return g<603;var t,e,n,i,o="";for(t=65;t<76;t++){switch(e=String.fromCharCode(t),t){case 66:case 69:case 70:case 72:n=3;break;case 68:case 71:n=4;break;default:n=2}for(i=0;i<47;i++)m.push({k:e+i,v:n})}for(m.sort((function(t,e){return e.v-t.v})),i=0;il(n)?1:-1}}(t)),n=a(o),i=0;i{"use strict";n(87633)("Array")},54554:(t,e,n)=>{"use strict";var i=n(46518),o=n(48981),r=n(35610),s=n(91291),a=n(26198),c=n(34527),l=n(96837),u=n(1469),h=n(97040),d=n(84606),p=n(70597)("splice"),A=Math.max,f=Math.min;i({target:"Array",proto:!0,forced:!p},{splice:function(t,e){var n,i,p,g,m,b,v=o(this),C=a(v),x=r(t,C),w=arguments.length;for(0===w?n=i=0:1===w?(n=0,i=C-x):(n=w-2,i=f(A(s(e),0),C-x)),l(C+n-i),p=u(v,i),g=0;gC-i+n;g--)d(v,g-1)}else if(n>i)for(g=C-i;g>x;g--)b=g+n-1,(m=g+i-1)in v?v[b]=v[m]:d(v,b);for(g=0;g{"use strict";var i=n(46518),o=n(37628),r=n(25397),s=n(6469),a=Array;i({target:"Array",proto:!0},{toReversed:function(){return o(r(this),a)}}),s("toReversed")},57145:(t,e,n)=>{"use strict";var i=n(46518),o=n(79504),r=n(79306),s=n(25397),a=n(35370),c=n(44124),l=n(6469),u=Array,h=o(c("Array","sort"));i({target:"Array",proto:!0},{toSorted:function(t){void 0!==t&&r(t);var e=s(this),n=a(u,e);return h(n,t)}}),l("toSorted")},71658:(t,e,n)=>{"use strict";var i=n(46518),o=n(6469),r=n(96837),s=n(26198),a=n(35610),c=n(25397),l=n(91291),u=Array,h=Math.max,d=Math.min;i({target:"Array",proto:!0},{toSpliced:function(t,e){var n,i,o,p,A=c(this),f=s(A),g=a(t,f),m=arguments.length,b=0;for(0===m?n=i=0:1===m?(n=0,i=f-g):(n=m-2,i=d(h(l(e),0),f-g)),o=r(f+n-i),p=u(o);b{"use strict";n(6469)("flatMap")},93514:(t,e,n)=>{"use strict";n(6469)("flat")},13609:(t,e,n)=>{"use strict";var i=n(46518),o=n(48981),r=n(26198),s=n(34527),a=n(84606),c=n(96837);i({target:"Array",proto:!0,arity:1,forced:1!==[].unshift(0)||!function(){try{Object.defineProperty([],"length",{writable:!1}).unshift()}catch(t){return t instanceof TypeError}}()},{unshift:function(t){var e=o(this),n=r(e),i=arguments.length;if(i){c(n+i);for(var l=n;l--;){var u=l+i;l in e?e[u]=e[l]:a(e,u)}for(var h=0;h{"use strict";var i=n(46518),o=n(39928),r=n(25397),s=Array;i({target:"Array",proto:!0},{with:function(t,e){return o(r(this),s,t,e)}})},24359:(t,e,n)=>{"use strict";var i=n(46518),o=n(66346);i({global:!0,constructor:!0,forced:!n(77811)},{DataView:o.DataView})},38309:(t,e,n)=>{"use strict";n(24359)},61699:(t,e,n)=>{"use strict";var i=n(46518),o=n(79504),r=n(79039)((function(){return 120!==new Date(16e11).getYear()})),s=o(Date.prototype.getFullYear);i({target:"Date",proto:!0,forced:r},{getYear:function(){return s(this)-1900}})},59089:(t,e,n)=>{"use strict";var i=n(46518),o=n(79504),r=Date,s=o(r.prototype.getTime);i({target:"Date",stat:!0},{now:function(){return s(new r)}})},91191:(t,e,n)=>{"use strict";var i=n(46518),o=n(79504),r=n(91291),s=Date.prototype,a=o(s.getTime),c=o(s.setFullYear);i({target:"Date",proto:!0},{setYear:function(t){a(this);var e=r(t);return c(this,e>=0&&e<=99?e+1900:e)}})},93515:(t,e,n)=>{"use strict";n(46518)({target:"Date",proto:!0},{toGMTString:Date.prototype.toUTCString})},1688:(t,e,n)=>{"use strict";var i=n(46518),o=n(70380);i({target:"Date",proto:!0,forced:Date.prototype.toISOString!==o},{toISOString:o})},60739:(t,e,n)=>{"use strict";var i=n(46518),o=n(79039),r=n(48981),s=n(72777);i({target:"Date",proto:!0,arity:1,forced:o((function(){return null!==new Date(NaN).toJSON()||1!==Date.prototype.toJSON.call({toISOString:function(){return 1}})}))},{toJSON:function(t){var e=r(this),n=s(e,"number");return"number"!=typeof n||isFinite(n)?e.toISOString():null}})},89572:(t,e,n)=>{"use strict";var i=n(39297),o=n(36840),r=n(53640),s=n(78227)("toPrimitive"),a=Date.prototype;i(a,s)||o(a,s,r)},23288:(t,e,n)=>{"use strict";var i=n(79504),o=n(36840),r=Date.prototype,s="Invalid Date",a="toString",c=i(r[a]),l=i(r.getTime);String(new Date(NaN))!==s&&o(r,a,(function(){var t=l(this);return t==t?c(this):s}))},16280:(t,e,n)=>{"use strict";var i=n(46518),o=n(44576),r=n(18745),s=n(14601),a="WebAssembly",c=o[a],l=7!==new Error("e",{cause:7}).cause,u=function(t,e){var n={};n[t]=s(t,e,l),i({global:!0,constructor:!0,arity:1,forced:l},n)},h=function(t,e){if(c&&c[t]){var n={};n[t]=s(a+"."+t,e,l),i({target:a,stat:!0,constructor:!0,arity:1,forced:l},n)}};u("Error",(function(t){return function(e){return r(t,this,arguments)}})),u("EvalError",(function(t){return function(e){return r(t,this,arguments)}})),u("RangeError",(function(t){return function(e){return r(t,this,arguments)}})),u("ReferenceError",(function(t){return function(e){return r(t,this,arguments)}})),u("SyntaxError",(function(t){return function(e){return r(t,this,arguments)}})),u("TypeError",(function(t){return function(e){return r(t,this,arguments)}})),u("URIError",(function(t){return function(e){return r(t,this,arguments)}})),h("CompileError",(function(t){return function(e){return r(t,this,arguments)}})),h("LinkError",(function(t){return function(e){return r(t,this,arguments)}})),h("RuntimeError",(function(t){return function(e){return r(t,this,arguments)}}))},76918:(t,e,n)=>{"use strict";var i=n(36840),o=n(77536),r=Error.prototype;r.toString!==o&&i(r,"toString",o)},36456:(t,e,n)=>{"use strict";var i=n(46518),o=n(79504),r=n(655),s=o("".charAt),a=o("".charCodeAt),c=o(/./.exec),l=o(1..toString),u=o("".toUpperCase),h=/[\w*+\-./@]/,d=function(t,e){for(var n=l(t,16);n.length{"use strict";var i=n(46518),o=n(30566);i({target:"Function",proto:!0,forced:Function.bind!==o},{bind:o})},48957:(t,e,n)=>{"use strict";var i=n(94901),o=n(20034),r=n(24913),s=n(1625),a=n(78227),c=n(50283),l=a("hasInstance"),u=Function.prototype;l in u||r.f(u,l,{value:c((function(t){if(!i(this)||!o(t))return!1;var e=this.prototype;return o(e)?s(e,t):t instanceof this}),l)})},62010:(t,e,n)=>{"use strict";var i=n(43724),o=n(10350).EXISTS,r=n(79504),s=n(62106),a=Function.prototype,c=r(a.toString),l=/function\b(?:\s|\/\*[\S\s]*?\*\/|\/\/[^\n\r]*[\n\r]+)*([^\s(/]*)/,u=r(l.exec);i&&!o&&s(a,"name",{configurable:!0,get:function(){try{return u(l,c(this))[1]}catch(t){return""}}})},55081:(t,e,n)=>{"use strict";var i=n(46518),o=n(44576);i({global:!0,forced:o.globalThis!==o},{globalThis:o})},33110:(t,e,n)=>{"use strict";var i=n(46518),o=n(97751),r=n(18745),s=n(69565),a=n(79504),c=n(79039),l=n(94901),u=n(10757),h=n(67680),d=n(66933),p=n(4495),A=String,f=o("JSON","stringify"),g=a(/./.exec),m=a("".charAt),b=a("".charCodeAt),v=a("".replace),C=a(1..toString),x=/[\uD800-\uDFFF]/g,w=/^[\uD800-\uDBFF]$/,y=/^[\uDC00-\uDFFF]$/,k=!p||c((function(){var t=o("Symbol")("stringify detection");return"[null]"!==f([t])||"{}"!==f({a:t})||"{}"!==f(Object(t))})),B=c((function(){return'"\\udf06\\ud834"'!==f("\udf06\ud834")||'"\\udead"'!==f("\udead")})),E=function(t,e){var n=h(arguments),i=d(e);if(l(i)||void 0!==t&&!u(t))return n[1]=function(t,e){if(l(i)&&(e=s(i,this,A(t),e)),!u(e))return e},r(f,null,n)},_=function(t,e,n){var i=m(n,e-1),o=m(n,e+1);return g(w,t)&&!g(y,o)||g(y,t)&&!g(w,i)?"\\u"+C(b(t,0),16):t};f&&i({target:"JSON",stat:!0,arity:3,forced:k||B},{stringify:function(t,e,n){var i=h(arguments),o=r(k?E:f,null,i);return B&&"string"==typeof o?v(o,x,_):o}})},4731:(t,e,n)=>{"use strict";var i=n(44576);n(10687)(i.JSON,"JSON",!0)},48523:(t,e,n)=>{"use strict";n(16468)("Map",(function(t){return function(){return t(this,arguments.length?arguments[0]:void 0)}}),n(86938))},47072:(t,e,n)=>{"use strict";var i=n(46518),o=n(79504),r=n(79306),s=n(67750),a=n(72652),c=n(72248),l=n(96395),u=n(79039),h=c.Map,d=c.has,p=c.get,A=c.set,f=o([].push),g=l||u((function(){return 1!==h.groupBy("ab",(function(t){return t})).get("a").length}));i({target:"Map",stat:!0,forced:l||g},{groupBy:function(t,e){s(t),r(e);var n=new h,i=0;return a(t,(function(t){var o=e(t,i++);d(n,o)?f(p(n,o),t):A(n,o,[t])})),n}})},36033:(t,e,n)=>{"use strict";n(48523)},93153:(t,e,n)=>{"use strict";var i=n(46518),o=n(7740),r=Math.acosh,s=Math.log,a=Math.sqrt,c=Math.LN2;i({target:"Math",stat:!0,forced:!r||710!==Math.floor(r(Number.MAX_VALUE))||r(1/0)!==1/0},{acosh:function(t){var e=+t;return e<1?NaN:e>94906265.62425156?s(e)+c:o(e-1+a(e-1)*a(e+1))}})},82326:(t,e,n)=>{"use strict";var i=n(46518),o=Math.asinh,r=Math.log,s=Math.sqrt;i({target:"Math",stat:!0,forced:!(o&&1/o(0)>0)},{asinh:function t(e){var n=+e;return isFinite(n)&&0!==n?n<0?-t(-n):r(n+s(n*n+1)):n}})},36389:(t,e,n)=>{"use strict";var i=n(46518),o=Math.atanh,r=Math.log;i({target:"Math",stat:!0,forced:!(o&&1/o(-0)<0)},{atanh:function(t){var e=+t;return 0===e?e:r((1+e)/(1-e))/2}})},64444:(t,e,n)=>{"use strict";var i=n(46518),o=n(77782),r=Math.abs,s=Math.pow;i({target:"Math",stat:!0},{cbrt:function(t){var e=+t;return o(e)*s(r(e),1/3)}})},8085:(t,e,n)=>{"use strict";var i=n(46518),o=Math.floor,r=Math.log,s=Math.LOG2E;i({target:"Math",stat:!0},{clz32:function(t){var e=t>>>0;return e?31-o(r(e+.5)*s):32}})},77762:(t,e,n)=>{"use strict";var i=n(46518),o=n(53250),r=Math.cosh,s=Math.abs,a=Math.E;i({target:"Math",stat:!0,forced:!r||r(710)===1/0},{cosh:function(t){var e=o(s(t)-1)+1;return(e+1/(e*a*a))*(a/2)}})},65070:(t,e,n)=>{"use strict";var i=n(46518),o=n(53250);i({target:"Math",stat:!0,forced:o!==Math.expm1},{expm1:o})},60605:(t,e,n)=>{"use strict";n(46518)({target:"Math",stat:!0},{fround:n(15617)})},39469:(t,e,n)=>{"use strict";var i=n(46518),o=Math.hypot,r=Math.abs,s=Math.sqrt;i({target:"Math",stat:!0,arity:2,forced:!!o&&o(1/0,NaN)!==1/0},{hypot:function(t,e){for(var n,i,o=0,a=0,c=arguments.length,l=0;a0?(i=n/l)*i:n;return l===1/0?1/0:l*s(o)}})},72152:(t,e,n)=>{"use strict";var i=n(46518),o=n(79039),r=Math.imul;i({target:"Math",stat:!0,forced:o((function(){return-5!==r(4294967295,5)||2!==r.length}))},{imul:function(t,e){var n=65535,i=+t,o=+e,r=n&i,s=n&o;return 0|r*s+((n&i>>>16)*s+r*(n&o>>>16)<<16>>>0)}})},75376:(t,e,n)=>{"use strict";n(46518)({target:"Math",stat:!0},{log10:n(49340)})},56624:(t,e,n)=>{"use strict";n(46518)({target:"Math",stat:!0},{log1p:n(7740)})},11367:(t,e,n)=>{"use strict";var i=n(46518),o=Math.log,r=Math.LN2;i({target:"Math",stat:!0},{log2:function(t){return o(t)/r}})},5914:(t,e,n)=>{"use strict";n(46518)({target:"Math",stat:!0},{sign:n(77782)})},78553:(t,e,n)=>{"use strict";var i=n(46518),o=n(79039),r=n(53250),s=Math.abs,a=Math.exp,c=Math.E;i({target:"Math",stat:!0,forced:o((function(){return-2e-17!==Math.sinh(-2e-17)}))},{sinh:function(t){var e=+t;return s(e)<1?(r(e)-r(-e))/2:(a(e-1)-a(-e-1))*(c/2)}})},98690:(t,e,n)=>{"use strict";var i=n(46518),o=n(53250),r=Math.exp;i({target:"Math",stat:!0},{tanh:function(t){var e=+t,n=o(e),i=o(-e);return n===1/0?1:i===1/0?-1:(n-i)/(r(e)+r(-e))}})},60479:(t,e,n)=>{"use strict";n(10687)(Math,"Math",!0)},70761:(t,e,n)=>{"use strict";n(46518)({target:"Math",stat:!0},{trunc:n(80741)})},2892:(t,e,n)=>{"use strict";var i=n(46518),o=n(96395),r=n(43724),s=n(44576),a=n(19167),c=n(79504),l=n(92796),u=n(39297),h=n(23167),d=n(1625),p=n(10757),A=n(72777),f=n(79039),g=n(38480).f,m=n(77347).f,b=n(24913).f,v=n(31240),C=n(43802).trim,x="Number",w=s[x],y=a[x],k=w.prototype,B=s.TypeError,E=c("".slice),_=c("".charCodeAt),I=l(x,!w(" 0o1")||!w("0b1")||w("+0x1")),D=function(t){var e,n=arguments.length<1?0:w(function(t){var e=A(t,"number");return"bigint"==typeof e?e:function(t){var e,n,i,o,r,s,a,c,l=A(t,"number");if(p(l))throw new B("Cannot convert a Symbol value to a number");if("string"==typeof l&&l.length>2)if(l=C(l),43===(e=_(l,0))||45===e){if(88===(n=_(l,2))||120===n)return NaN}else if(48===e){switch(_(l,1)){case 66:case 98:i=2,o=49;break;case 79:case 111:i=8,o=55;break;default:return+l}for(s=(r=E(l,2)).length,a=0;ao)return NaN;return parseInt(r,i)}return+l}(e)}(t));return d(k,e=this)&&f((function(){v(e)}))?h(Object(n),this,D):n};D.prototype=k,I&&!o&&(k.constructor=D),i({global:!0,constructor:!0,wrap:!0,forced:I},{Number:D});var S=function(t,e){for(var n,i=r?g(e):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,isFinite,isInteger,isNaN,isSafeInteger,parseFloat,parseInt,fromString,range".split(","),o=0;i.length>o;o++)u(e,n=i[o])&&!u(t,n)&&b(t,n,m(e,n))};o&&y&&S(a[x],y),(I||o)&&S(a[x],w)},45374:(t,e,n)=>{"use strict";n(46518)({target:"Number",stat:!0,nonConfigurable:!0,nonWritable:!0},{EPSILON:Math.pow(2,-52)})},25428:(t,e,n)=>{"use strict";n(46518)({target:"Number",stat:!0},{isFinite:n(50360)})},32637:(t,e,n)=>{"use strict";n(46518)({target:"Number",stat:!0},{isInteger:n(2087)})},40150:(t,e,n)=>{"use strict";n(46518)({target:"Number",stat:!0},{isNaN:function(t){return t!=t}})},59149:(t,e,n)=>{"use strict";var i=n(46518),o=n(2087),r=Math.abs;i({target:"Number",stat:!0},{isSafeInteger:function(t){return o(t)&&r(t)<=9007199254740991}})},64601:(t,e,n)=>{"use strict";n(46518)({target:"Number",stat:!0,nonConfigurable:!0,nonWritable:!0},{MAX_SAFE_INTEGER:9007199254740991})},44435:(t,e,n)=>{"use strict";n(46518)({target:"Number",stat:!0,nonConfigurable:!0,nonWritable:!0},{MIN_SAFE_INTEGER:-9007199254740991})},87220:(t,e,n)=>{"use strict";var i=n(46518),o=n(33904);i({target:"Number",stat:!0,forced:Number.parseFloat!==o},{parseFloat:o})},25843:(t,e,n)=>{"use strict";var i=n(46518),o=n(52703);i({target:"Number",stat:!0,forced:Number.parseInt!==o},{parseInt:o})},62337:(t,e,n)=>{"use strict";var i=n(46518),o=n(79504),r=n(91291),s=n(31240),a=n(72333),c=n(49340),l=n(79039),u=RangeError,h=String,d=isFinite,p=Math.abs,A=Math.floor,f=Math.pow,g=Math.round,m=o(1..toExponential),b=o(a),v=o("".slice),C="-6.9000e-11"===m(-69e-12,4)&&"1.25e+0"===m(1.255,2)&&"1.235e+4"===m(12345,3)&&"3e+1"===m(25,0);i({target:"Number",proto:!0,forced:!C||!(l((function(){m(1,1/0)}))&&l((function(){m(1,-1/0)})))||!!l((function(){m(1/0,1/0),m(NaN,1/0)}))},{toExponential:function(t){var e=s(this);if(void 0===t)return m(e);var n=r(t);if(!d(e))return String(e);if(n<0||n>20)throw new u("Incorrect fraction digits");if(C)return m(e,n);var i,o,a,l,x="";if(e<0&&(x="-",e=-e),0===e)o=0,i=b("0",n+1);else{var w=c(e);o=A(w);var y=f(10,o-n),k=g(e/y);2*e>=(2*k+1)*y&&(k+=1),k>=f(10,n+1)&&(k/=10,o+=1),i=h(k)}return 0!==n&&(i=v(i,0,1)+"."+v(i,1)),0===o?(a="+",l="0"):(a=o>0?"+":"-",l=h(p(o))),x+(i+"e")+a+l}})},9868:(t,e,n)=>{"use strict";var i=n(46518),o=n(79504),r=n(91291),s=n(31240),a=n(72333),c=n(79039),l=RangeError,u=String,h=Math.floor,d=o(a),p=o("".slice),A=o(1..toFixed),f=function(t,e,n){return 0===e?n:e%2==1?f(t,e-1,n*t):f(t*t,e/2,n)},g=function(t,e,n){for(var i=-1,o=n;++i<6;)o+=e*t[i],t[i]=o%1e7,o=h(o/1e7)},m=function(t,e){for(var n=6,i=0;--n>=0;)i+=t[n],t[n]=h(i/e),i=i%e*1e7},b=function(t){for(var e=6,n="";--e>=0;)if(""!==n||0===e||0!==t[e]){var i=u(t[e]);n=""===n?i:n+d("0",7-i.length)+i}return n};i({target:"Number",proto:!0,forced:c((function(){return"0.000"!==A(8e-5,3)||"1"!==A(.9,0)||"1.25"!==A(1.255,2)||"1000000000000000128"!==A(0xde0b6b3a7640080,0)}))||!c((function(){A({})}))},{toFixed:function(t){var e,n,i,o,a=s(this),c=r(t),h=[0,0,0,0,0,0],A="",v="0";if(c<0||c>20)throw new l("Incorrect fraction digits");if(a!=a)return"NaN";if(a<=-1e21||a>=1e21)return u(a);if(a<0&&(A="-",a=-a),a>1e-21)if(n=(e=function(t){for(var e=0,n=t;n>=4096;)e+=12,n/=4096;for(;n>=2;)e+=1,n/=2;return e}(a*f(2,69,1))-69)<0?a*f(2,-e,1):a/f(2,e,1),n*=4503599627370496,(e=52-e)>0){for(g(h,0,n),i=c;i>=7;)g(h,1e7,0),i-=7;for(g(h,f(10,i,1),0),i=e-1;i>=23;)m(h,1<<23),i-=23;m(h,1<0?A+((o=v.length)<=c?"0."+d("0",c-o)+v:p(v,0,o-c)+"."+p(v,o-c)):A+v}})},80630:(t,e,n)=>{"use strict";var i=n(46518),o=n(79504),r=n(79039),s=n(31240),a=o(1..toPrecision);i({target:"Number",proto:!0,forced:r((function(){return"1"!==a(1,void 0)}))||!r((function(){a({})}))},{toPrecision:function(t){return void 0===t?a(s(this)):a(s(this),t)}})},69085:(t,e,n)=>{"use strict";var i=n(46518),o=n(44213);i({target:"Object",stat:!0,arity:2,forced:Object.assign!==o},{assign:o})},59904:(t,e,n)=>{"use strict";n(46518)({target:"Object",stat:!0,sham:!n(43724)},{create:n(2360)})},17427:(t,e,n)=>{"use strict";var i=n(46518),o=n(43724),r=n(42551),s=n(79306),a=n(48981),c=n(24913);o&&i({target:"Object",proto:!0,forced:r},{__defineGetter__:function(t,e){c.f(a(this),t,{get:s(e),enumerable:!0,configurable:!0})}})},67945:(t,e,n)=>{"use strict";var i=n(46518),o=n(43724),r=n(96801).f;i({target:"Object",stat:!0,forced:Object.defineProperties!==r,sham:!o},{defineProperties:r})},84185:(t,e,n)=>{"use strict";var i=n(46518),o=n(43724),r=n(24913).f;i({target:"Object",stat:!0,forced:Object.defineProperty!==r,sham:!o},{defineProperty:r})},87607:(t,e,n)=>{"use strict";var i=n(46518),o=n(43724),r=n(42551),s=n(79306),a=n(48981),c=n(24913);o&&i({target:"Object",proto:!0,forced:r},{__defineSetter__:function(t,e){c.f(a(this),t,{set:s(e),enumerable:!0,configurable:!0})}})},5506:(t,e,n)=>{"use strict";var i=n(46518),o=n(32357).entries;i({target:"Object",stat:!0},{entries:function(t){return o(t)}})},52811:(t,e,n)=>{"use strict";var i=n(46518),o=n(92744),r=n(79039),s=n(20034),a=n(3451).onFreeze,c=Object.freeze;i({target:"Object",stat:!0,forced:r((function(){c(1)})),sham:!o},{freeze:function(t){return c&&s(t)?c(a(t)):t}})},53921:(t,e,n)=>{"use strict";var i=n(46518),o=n(72652),r=n(97040);i({target:"Object",stat:!0},{fromEntries:function(t){var e={};return o(t,(function(t,n){r(e,t,n)}),{AS_ENTRIES:!0}),e}})},83851:(t,e,n)=>{"use strict";var i=n(46518),o=n(79039),r=n(25397),s=n(77347).f,a=n(43724);i({target:"Object",stat:!0,forced:!a||o((function(){s(1)})),sham:!a},{getOwnPropertyDescriptor:function(t,e){return s(r(t),e)}})},81278:(t,e,n)=>{"use strict";var i=n(46518),o=n(43724),r=n(35031),s=n(25397),a=n(77347),c=n(97040);i({target:"Object",stat:!0,sham:!o},{getOwnPropertyDescriptors:function(t){for(var e,n,i=s(t),o=a.f,l=r(i),u={},h=0;l.length>h;)void 0!==(n=o(i,e=l[h++]))&&c(u,e,n);return u}})},1480:(t,e,n)=>{"use strict";var i=n(46518),o=n(79039),r=n(10298).f;i({target:"Object",stat:!0,forced:o((function(){return!Object.getOwnPropertyNames(1)}))},{getOwnPropertyNames:r})},49773:(t,e,n)=>{"use strict";var i=n(46518),o=n(4495),r=n(79039),s=n(33717),a=n(48981);i({target:"Object",stat:!0,forced:!o||r((function(){s.f(1)}))},{getOwnPropertySymbols:function(t){var e=s.f;return e?e(a(t)):[]}})},40875:(t,e,n)=>{"use strict";var i=n(46518),o=n(79039),r=n(48981),s=n(42787),a=n(12211);i({target:"Object",stat:!0,forced:o((function(){s(1)})),sham:!a},{getPrototypeOf:function(t){return s(r(t))}})},77691:(t,e,n)=>{"use strict";var i=n(46518),o=n(97751),r=n(79504),s=n(79306),a=n(67750),c=n(56969),l=n(72652),u=n(79039),h=Object.groupBy,d=o("Object","create"),p=r([].push);i({target:"Object",stat:!0,forced:!h||u((function(){return 1!==h("ab",(function(t){return t})).a.length}))},{groupBy:function(t,e){a(t),s(e);var n=d(null),i=0;return l(t,(function(t){var o=c(e(t,i++));o in n?p(n[o],t):n[o]=[t]})),n}})},78347:(t,e,n)=>{"use strict";n(46518)({target:"Object",stat:!0},{hasOwn:n(39297)})},94052:(t,e,n)=>{"use strict";var i=n(46518),o=n(34124);i({target:"Object",stat:!0,forced:Object.isExtensible!==o},{isExtensible:o})},94003:(t,e,n)=>{"use strict";var i=n(46518),o=n(79039),r=n(20034),s=n(22195),a=n(15652),c=Object.isFrozen;i({target:"Object",stat:!0,forced:a||o((function(){c(1)}))},{isFrozen:function(t){return!r(t)||!(!a||"ArrayBuffer"!==s(t))||!!c&&c(t)}})},221:(t,e,n)=>{"use strict";var i=n(46518),o=n(79039),r=n(20034),s=n(22195),a=n(15652),c=Object.isSealed;i({target:"Object",stat:!0,forced:a||o((function(){c(1)}))},{isSealed:function(t){return!r(t)||!(!a||"ArrayBuffer"!==s(t))||!!c&&c(t)}})},29908:(t,e,n)=>{"use strict";n(46518)({target:"Object",stat:!0},{is:n(3470)})},79432:(t,e,n)=>{"use strict";var i=n(46518),o=n(48981),r=n(71072);i({target:"Object",stat:!0,forced:n(79039)((function(){r(1)}))},{keys:function(t){return r(o(t))}})},9220:(t,e,n)=>{"use strict";var i=n(46518),o=n(43724),r=n(42551),s=n(48981),a=n(56969),c=n(42787),l=n(77347).f;o&&i({target:"Object",proto:!0,forced:r},{__lookupGetter__:function(t){var e,n=s(this),i=a(t);do{if(e=l(n,i))return e.get}while(n=c(n))}})},7904:(t,e,n)=>{"use strict";var i=n(46518),o=n(43724),r=n(42551),s=n(48981),a=n(56969),c=n(42787),l=n(77347).f;o&&i({target:"Object",proto:!0,forced:r},{__lookupSetter__:function(t){var e,n=s(this),i=a(t);do{if(e=l(n,i))return e.set}while(n=c(n))}})},16348:(t,e,n)=>{"use strict";var i=n(46518),o=n(20034),r=n(3451).onFreeze,s=n(92744),a=n(79039),c=Object.preventExtensions;i({target:"Object",stat:!0,forced:a((function(){c(1)})),sham:!s},{preventExtensions:function(t){return c&&o(t)?c(r(t)):t}})},63548:(t,e,n)=>{"use strict";var i=n(43724),o=n(62106),r=n(20034),s=n(13925),a=n(48981),c=n(67750),l=Object.getPrototypeOf,u=Object.setPrototypeOf,h=Object.prototype,d="__proto__";if(i&&l&&u&&!(d in h))try{o(h,d,{configurable:!0,get:function(){return l(a(this))},set:function(t){var e=c(this);s(t)&&r(e)&&u(e,t)}})}catch(t){}},93941:(t,e,n)=>{"use strict";var i=n(46518),o=n(20034),r=n(3451).onFreeze,s=n(92744),a=n(79039),c=Object.seal;i({target:"Object",stat:!0,forced:a((function(){c(1)})),sham:!s},{seal:function(t){return c&&o(t)?c(r(t)):t}})},10287:(t,e,n)=>{"use strict";n(46518)({target:"Object",stat:!0},{setPrototypeOf:n(52967)})},26099:(t,e,n)=>{"use strict";var i=n(92140),o=n(36840),r=n(53179);i||o(Object.prototype,"toString",r,{unsafe:!0})},16034:(t,e,n)=>{"use strict";var i=n(46518),o=n(32357).values;i({target:"Object",stat:!0},{values:function(t){return o(t)}})},78459:(t,e,n)=>{"use strict";var i=n(46518),o=n(33904);i({global:!0,forced:parseFloat!==o},{parseFloat:o})},58940:(t,e,n)=>{"use strict";var i=n(46518),o=n(52703);i({global:!0,forced:parseInt!==o},{parseInt:o})},96167:(t,e,n)=>{"use strict";var i=n(46518),o=n(69565),r=n(79306),s=n(36043),a=n(1103),c=n(72652);i({target:"Promise",stat:!0,forced:n(90537)},{allSettled:function(t){var e=this,n=s.f(e),i=n.resolve,l=n.reject,u=a((function(){var n=r(e.resolve),s=[],a=0,l=1;c(t,(function(t){var r=a++,c=!1;l++,o(n,e,t).then((function(t){c||(c=!0,s[r]={status:"fulfilled",value:t},--l||i(s))}),(function(t){c||(c=!0,s[r]={status:"rejected",reason:t},--l||i(s))}))})),--l||i(s)}));return u.error&&l(u.value),n.promise}})},16499:(t,e,n)=>{"use strict";var i=n(46518),o=n(69565),r=n(79306),s=n(36043),a=n(1103),c=n(72652);i({target:"Promise",stat:!0,forced:n(90537)},{all:function(t){var e=this,n=s.f(e),i=n.resolve,l=n.reject,u=a((function(){var n=r(e.resolve),s=[],a=0,u=1;c(t,(function(t){var r=a++,c=!1;u++,o(n,e,t).then((function(t){c||(c=!0,s[r]=t,--u||i(s))}),l)})),--u||i(s)}));return u.error&&l(u.value),n.promise}})},93518:(t,e,n)=>{"use strict";var i=n(46518),o=n(69565),r=n(79306),s=n(97751),a=n(36043),c=n(1103),l=n(72652),u=n(90537),h="No one promise resolved";i({target:"Promise",stat:!0,forced:u},{any:function(t){var e=this,n=s("AggregateError"),i=a.f(e),u=i.resolve,d=i.reject,p=c((function(){var i=r(e.resolve),s=[],a=0,c=1,p=!1;l(t,(function(t){var r=a++,l=!1;c++,o(i,e,t).then((function(t){l||p||(p=!0,u(t))}),(function(t){l||p||(l=!0,s[r]=t,--c||d(new n(s,h)))}))})),--c||d(new n(s,h))}));return p.error&&d(p.value),i.promise}})},82003:(t,e,n)=>{"use strict";var i=n(46518),o=n(96395),r=n(10916).CONSTRUCTOR,s=n(80550),a=n(97751),c=n(94901),l=n(36840),u=s&&s.prototype;if(i({target:"Promise",proto:!0,forced:r,real:!0},{catch:function(t){return this.then(void 0,t)}}),!o&&c(s)){var h=a("Promise").prototype.catch;u.catch!==h&&l(u,"catch",h,{unsafe:!0})}},10436:(t,e,n)=>{"use strict";var i,o,r,s=n(46518),a=n(96395),c=n(38574),l=n(44576),u=n(69565),h=n(36840),d=n(52967),p=n(10687),A=n(87633),f=n(79306),g=n(94901),m=n(20034),b=n(90679),v=n(2293),C=n(59225).set,x=n(91955),w=n(90757),y=n(1103),k=n(18265),B=n(91181),E=n(80550),_=n(10916),I=n(36043),D="Promise",S=_.CONSTRUCTOR,T=_.REJECTION_EVENT,O=_.SUBCLASSING,M=B.getterFor(D),P=B.set,R=E&&E.prototype,N=E,H=R,z=l.TypeError,L=l.document,F=l.process,j=I.f,U=j,W=!!(L&&L.createEvent&&l.dispatchEvent),Y="unhandledrejection",q=function(t){var e;return!(!m(t)||!g(e=t.then))&&e},Q=function(t,e){var n,i,o,r=e.value,s=1===e.state,a=s?t.ok:t.fail,c=t.resolve,l=t.reject,h=t.domain;try{a?(s||(2===e.rejection&&J(e),e.rejection=1),!0===a?n=r:(h&&h.enter(),n=a(r),h&&(h.exit(),o=!0)),n===t.promise?l(new z("Promise-chain cycle")):(i=q(n))?u(i,n,c,l):c(n)):l(r)}catch(t){h&&!o&&h.exit(),l(t)}},G=function(t,e){t.notified||(t.notified=!0,x((function(){for(var n,i=t.reactions;n=i.get();)Q(n,t);t.notified=!1,e&&!t.rejection&&V(t)})))},X=function(t,e,n){var i,o;W?((i=L.createEvent("Event")).promise=e,i.reason=n,i.initEvent(t,!1,!0),l.dispatchEvent(i)):i={promise:e,reason:n},!T&&(o=l["on"+t])?o(i):t===Y&&w("Unhandled promise rejection",n)},V=function(t){u(C,l,(function(){var e,n=t.facade,i=t.value;if(K(t)&&(e=y((function(){c?F.emit("unhandledRejection",i,n):X(Y,n,i)})),t.rejection=c||K(t)?2:1,e.error))throw e.value}))},K=function(t){return 1!==t.rejection&&!t.parent},J=function(t){u(C,l,(function(){var e=t.facade;c?F.emit("rejectionHandled",e):X("rejectionhandled",e,t.value)}))},Z=function(t,e,n){return function(i){t(e,i,n)}},$=function(t,e,n){t.done||(t.done=!0,n&&(t=n),t.value=e,t.state=2,G(t,!0))},tt=function(t,e,n){if(!t.done){t.done=!0,n&&(t=n);try{if(t.facade===e)throw new z("Promise can't be resolved itself");var i=q(e);i?x((function(){var n={done:!1};try{u(i,e,Z(tt,n,t),Z($,n,t))}catch(e){$(n,e,t)}})):(t.value=e,t.state=1,G(t,!1))}catch(e){$({done:!1},e,t)}}};if(S&&(H=(N=function(t){b(this,H),f(t),u(i,this);var e=M(this);try{t(Z(tt,e),Z($,e))}catch(t){$(e,t)}}).prototype,(i=function(t){P(this,{type:D,done:!1,notified:!1,parent:!1,reactions:new k,rejection:!1,state:0,value:null})}).prototype=h(H,"then",(function(t,e){var n=M(this),i=j(v(this,N));return n.parent=!0,i.ok=!g(t)||t,i.fail=g(e)&&e,i.domain=c?F.domain:void 0,0===n.state?n.reactions.add(i):x((function(){Q(i,n)})),i.promise})),o=function(){var t=new i,e=M(t);this.promise=t,this.resolve=Z(tt,e),this.reject=Z($,e)},I.f=j=function(t){return t===N||void 0===t?new o(t):U(t)},!a&&g(E)&&R!==Object.prototype)){r=R.then,O||h(R,"then",(function(t,e){var n=this;return new N((function(t,e){u(r,n,t,e)})).then(t,e)}),{unsafe:!0});try{delete R.constructor}catch(t){}d&&d(R,H)}s({global:!0,constructor:!0,wrap:!0,forced:S},{Promise:N}),p(N,D,!1,!0),A(D)},9391:(t,e,n)=>{"use strict";var i=n(46518),o=n(96395),r=n(80550),s=n(79039),a=n(97751),c=n(94901),l=n(2293),u=n(93438),h=n(36840),d=r&&r.prototype;if(i({target:"Promise",proto:!0,real:!0,forced:!!r&&s((function(){d.finally.call({then:function(){}},(function(){}))}))},{finally:function(t){var e=l(this,a("Promise")),n=c(t);return this.then(n?function(n){return u(e,t()).then((function(){return n}))}:t,n?function(n){return u(e,t()).then((function(){throw n}))}:t)}}),!o&&c(r)){var p=a("Promise").prototype.finally;d.finally!==p&&h(d,"finally",p,{unsafe:!0})}},3362:(t,e,n)=>{"use strict";n(10436),n(16499),n(82003),n(7743),n(51481),n(40280)},7743:(t,e,n)=>{"use strict";var i=n(46518),o=n(69565),r=n(79306),s=n(36043),a=n(1103),c=n(72652);i({target:"Promise",stat:!0,forced:n(90537)},{race:function(t){var e=this,n=s.f(e),i=n.reject,l=a((function(){var s=r(e.resolve);c(t,(function(t){o(s,e,t).then(n.resolve,i)}))}));return l.error&&i(l.value),n.promise}})},51481:(t,e,n)=>{"use strict";var i=n(46518),o=n(36043);i({target:"Promise",stat:!0,forced:n(10916).CONSTRUCTOR},{reject:function(t){var e=o.f(this);return(0,e.reject)(t),e.promise}})},40280:(t,e,n)=>{"use strict";var i=n(46518),o=n(97751),r=n(96395),s=n(80550),a=n(10916).CONSTRUCTOR,c=n(93438),l=o("Promise"),u=r&&!a;i({target:"Promise",stat:!0,forced:r||a},{resolve:function(t){return c(u&&this===l?s:this,t)}})},14628:(t,e,n)=>{"use strict";var i=n(46518),o=n(36043);i({target:"Promise",stat:!0},{withResolvers:function(){var t=o.f(this);return{promise:t.promise,resolve:t.resolve,reject:t.reject}}})},39796:(t,e,n)=>{"use strict";var i=n(46518),o=n(18745),r=n(79306),s=n(28551);i({target:"Reflect",stat:!0,forced:!n(79039)((function(){Reflect.apply((function(){}))}))},{apply:function(t,e,n){return o(r(t),e,s(n))}})},60825:(t,e,n)=>{"use strict";var i=n(46518),o=n(97751),r=n(18745),s=n(30566),a=n(35548),c=n(28551),l=n(20034),u=n(2360),h=n(79039),d=o("Reflect","construct"),p=Object.prototype,A=[].push,f=h((function(){function t(){}return!(d((function(){}),[],t)instanceof t)})),g=!h((function(){d((function(){}))})),m=f||g;i({target:"Reflect",stat:!0,forced:m,sham:m},{construct:function(t,e){a(t),c(e);var n=arguments.length<3?t:a(arguments[2]);if(g&&!f)return d(t,e,n);if(t===n){switch(e.length){case 0:return new t;case 1:return new t(e[0]);case 2:return new t(e[0],e[1]);case 3:return new t(e[0],e[1],e[2]);case 4:return new t(e[0],e[1],e[2],e[3])}var i=[null];return r(A,i,e),new(r(s,t,i))}var o=n.prototype,h=u(l(o)?o:p),m=r(t,h,e);return l(m)?m:h}})},87411:(t,e,n)=>{"use strict";var i=n(46518),o=n(43724),r=n(28551),s=n(56969),a=n(24913);i({target:"Reflect",stat:!0,forced:n(79039)((function(){Reflect.defineProperty(a.f({},1,{value:1}),1,{value:2})})),sham:!o},{defineProperty:function(t,e,n){r(t);var i=s(e);r(n);try{return a.f(t,i,n),!0}catch(t){return!1}}})},21211:(t,e,n)=>{"use strict";var i=n(46518),o=n(28551),r=n(77347).f;i({target:"Reflect",stat:!0},{deleteProperty:function(t,e){var n=r(o(t),e);return!(n&&!n.configurable)&&delete t[e]}})},9065:(t,e,n)=>{"use strict";var i=n(46518),o=n(43724),r=n(28551),s=n(77347);i({target:"Reflect",stat:!0,sham:!o},{getOwnPropertyDescriptor:function(t,e){return s.f(r(t),e)}})},86565:(t,e,n)=>{"use strict";var i=n(46518),o=n(28551),r=n(42787);i({target:"Reflect",stat:!0,sham:!n(12211)},{getPrototypeOf:function(t){return r(o(t))}})},40888:(t,e,n)=>{"use strict";var i=n(46518),o=n(69565),r=n(20034),s=n(28551),a=n(16575),c=n(77347),l=n(42787);i({target:"Reflect",stat:!0},{get:function t(e,n){var i,u,h=arguments.length<3?e:arguments[2];return s(e)===h?e[n]:(i=c.f(e,n))?a(i)?i.value:void 0===i.get?void 0:o(i.get,h):r(u=l(e))?t(u,n,h):void 0}})},32812:(t,e,n)=>{"use strict";n(46518)({target:"Reflect",stat:!0},{has:function(t,e){return e in t}})},84634:(t,e,n)=>{"use strict";var i=n(46518),o=n(28551),r=n(34124);i({target:"Reflect",stat:!0},{isExtensible:function(t){return o(t),r(t)}})},71137:(t,e,n)=>{"use strict";n(46518)({target:"Reflect",stat:!0},{ownKeys:n(35031)})},30985:(t,e,n)=>{"use strict";var i=n(46518),o=n(97751),r=n(28551);i({target:"Reflect",stat:!0,sham:!n(92744)},{preventExtensions:function(t){r(t);try{var e=o("Object","preventExtensions");return e&&e(t),!0}catch(t){return!1}}})},34873:(t,e,n)=>{"use strict";var i=n(46518),o=n(28551),r=n(73506),s=n(52967);s&&i({target:"Reflect",stat:!0},{setPrototypeOf:function(t,e){o(t),r(e);try{return s(t,e),!0}catch(t){return!1}}})},34268:(t,e,n)=>{"use strict";var i=n(46518),o=n(69565),r=n(28551),s=n(20034),a=n(16575),c=n(79039),l=n(24913),u=n(77347),h=n(42787),d=n(6980);i({target:"Reflect",stat:!0,forced:c((function(){var t=function(){},e=l.f(new t,"a",{configurable:!0});return!1!==Reflect.set(t.prototype,"a",1,e)}))},{set:function t(e,n,i){var c,p,A,f=arguments.length<4?e:arguments[3],g=u.f(r(e),n);if(!g){if(s(p=h(e)))return t(p,n,i,f);g=d(0)}if(a(g)){if(!1===g.writable||!s(f))return!1;if(c=u.f(f,n)){if(c.get||c.set||!1===c.writable)return!1;c.value=i,l.f(f,n,c)}else l.f(f,n,d(0,i))}else{if(void 0===(A=g.set))return!1;o(A,f,i)}return!0}})},15472:(t,e,n)=>{"use strict";var i=n(46518),o=n(44576),r=n(10687);i({global:!0},{Reflect:{}}),r(o.Reflect,"Reflect",!0)},84864:(t,e,n)=>{"use strict";var i=n(43724),o=n(44576),r=n(79504),s=n(92796),a=n(23167),c=n(66699),l=n(2360),u=n(38480).f,h=n(1625),d=n(60788),p=n(655),A=n(61034),f=n(58429),g=n(11056),m=n(36840),b=n(79039),v=n(39297),C=n(91181).enforce,x=n(87633),w=n(78227),y=n(83635),k=n(18814),B=w("match"),E=o.RegExp,_=E.prototype,I=o.SyntaxError,D=r(_.exec),S=r("".charAt),T=r("".replace),O=r("".indexOf),M=r("".slice),P=/^\?<[^\s\d!#%&*+<=>@^][^\s!#%&*+<=>@^]*>/,R=/a/g,N=/a/g,H=new E(R)!==R,z=f.MISSED_STICKY,L=f.UNSUPPORTED_Y;if(s("RegExp",i&&(!H||z||y||k||b((function(){return N[B]=!1,E(R)!==R||E(N)===N||"/a/i"!==String(E(R,"i"))}))))){for(var F=function(t,e){var n,i,o,r,s,u,f=h(_,this),g=d(t),m=void 0===e,b=[],x=t;if(!f&&g&&m&&t.constructor===F)return t;if((g||h(_,t))&&(t=t.source,m&&(e=A(x))),t=void 0===t?"":p(t),e=void 0===e?"":p(e),x=t,y&&"dotAll"in R&&(i=!!e&&O(e,"s")>-1)&&(e=T(e,/s/g,"")),n=e,z&&"sticky"in R&&(o=!!e&&O(e,"y")>-1)&&L&&(e=T(e,/y/g,"")),k&&(r=function(t){for(var e,n=t.length,i=0,o="",r=[],s=l(null),a=!1,c=!1,u=0,h="";i<=n;i++){if("\\"===(e=S(t,i)))e+=S(t,++i);else if("]"===e)a=!1;else if(!a)switch(!0){case"["===e:a=!0;break;case"("===e:if(o+=e,"?:"===M(t,i+1,i+3))continue;D(P,M(t,i+1))&&(i+=2,c=!0),u++;continue;case">"===e&&c:if(""===h||v(s,h))throw new I("Invalid capture group name");s[h]=!0,r[r.length]=[h,u],c=!1,h="";continue}c?h+=e:o+=e}return[o,r]}(t),t=r[0],b=r[1]),s=a(E(t,e),f?this:_,F),(i||o||b.length)&&(u=C(s),i&&(u.dotAll=!0,u.raw=F(function(t){for(var e,n=t.length,i=0,o="",r=!1;i<=n;i++)"\\"!==(e=S(t,i))?r||"."!==e?("["===e?r=!0:"]"===e&&(r=!1),o+=e):o+="[\\s\\S]":o+=e+S(t,++i);return o}(t),n)),o&&(u.sticky=!0),b.length&&(u.groups=b)),t!==x)try{c(s,"source",""===x?"(?:)":x)}catch(t){}return s},j=u(E),U=0;j.length>U;)g(F,E,j[U++]);_.constructor=F,F.prototype=_,m(o,"RegExp",F,{constructor:!0})}x("RegExp")},57465:(t,e,n)=>{"use strict";var i=n(43724),o=n(83635),r=n(22195),s=n(62106),a=n(91181).get,c=RegExp.prototype,l=TypeError;i&&o&&s(c,"dotAll",{configurable:!0,get:function(){if(this!==c){if("RegExp"===r(this))return!!a(this).dotAll;throw new l("Incompatible receiver, RegExp required")}}})},69479:(t,e,n)=>{"use strict";var i=n(44576),o=n(43724),r=n(62106),s=n(67979),a=n(79039),c=i.RegExp,l=c.prototype;o&&a((function(){var t=!0;try{c(".","d")}catch(e){t=!1}var e={},n="",i=t?"dgimsy":"gimsy",o=function(t,i){Object.defineProperty(e,t,{get:function(){return n+=i,!0}})},r={dotAll:"s",global:"g",ignoreCase:"i",multiline:"m",sticky:"y"};for(var s in t&&(r.hasIndices="d"),r)o(s,r[s]);return Object.getOwnPropertyDescriptor(l,"flags").get.call(e)!==i||n!==i}))&&r(l,"flags",{configurable:!0,get:s})},87745:(t,e,n)=>{"use strict";var i=n(43724),o=n(58429).MISSED_STICKY,r=n(22195),s=n(62106),a=n(91181).get,c=RegExp.prototype,l=TypeError;i&&o&&s(c,"sticky",{configurable:!0,get:function(){if(this!==c){if("RegExp"===r(this))return!!a(this).sticky;throw new l("Incompatible receiver, RegExp required")}}})},90906:(t,e,n)=>{"use strict";n(27495);var i,o,r=n(46518),s=n(69565),a=n(94901),c=n(28551),l=n(655),u=(i=!1,(o=/[ac]/).exec=function(){return i=!0,/./.exec.apply(this,arguments)},!0===o.test("abc")&&i),h=/./.test;r({target:"RegExp",proto:!0,forced:!u},{test:function(t){var e=c(this),n=l(t),i=e.exec;if(!a(i))return s(h,e,n);var o=s(i,e,n);return null!==o&&(c(o),!0)}})},38781:(t,e,n)=>{"use strict";var i=n(10350).PROPER,o=n(36840),r=n(28551),s=n(655),a=n(79039),c=n(61034),l="toString",u=RegExp.prototype,h=u[l],d=a((function(){return"/a/b"!==h.call({source:"a",flags:"b"})})),p=i&&h.name!==l;(d||p)&&o(u,l,(function(){var t=r(this);return"/"+s(t.source)+"/"+s(c(t))}),{unsafe:!0})},92405:(t,e,n)=>{"use strict";n(16468)("Set",(function(t){return function(){return t(this,arguments.length?arguments[0]:void 0)}}),n(86938))},17642:(t,e,n)=>{"use strict";var i=n(46518),o=n(83440);i({target:"Set",proto:!0,real:!0,forced:!n(84916)("difference")},{difference:o})},58004:(t,e,n)=>{"use strict";var i=n(46518),o=n(79039),r=n(68750);i({target:"Set",proto:!0,real:!0,forced:!n(84916)("intersection")||o((function(){return"3,2"!==String(Array.from(new Set([1,2,3]).intersection(new Set([3,2]))))}))},{intersection:r})},33853:(t,e,n)=>{"use strict";var i=n(46518),o=n(64449);i({target:"Set",proto:!0,real:!0,forced:!n(84916)("isDisjointFrom")},{isDisjointFrom:o})},45876:(t,e,n)=>{"use strict";var i=n(46518),o=n(53838);i({target:"Set",proto:!0,real:!0,forced:!n(84916)("isSubsetOf")},{isSubsetOf:o})},32475:(t,e,n)=>{"use strict";var i=n(46518),o=n(28527);i({target:"Set",proto:!0,real:!0,forced:!n(84916)("isSupersetOf")},{isSupersetOf:o})},31415:(t,e,n)=>{"use strict";n(92405)},15024:(t,e,n)=>{"use strict";var i=n(46518),o=n(83650);i({target:"Set",proto:!0,real:!0,forced:!n(84916)("symmetricDifference")},{symmetricDifference:o})},31698:(t,e,n)=>{"use strict";var i=n(46518),o=n(44204);i({target:"Set",proto:!0,real:!0,forced:!n(84916)("union")},{union:o})},89907:(t,e,n)=>{"use strict";var i=n(46518),o=n(77240);i({target:"String",proto:!0,forced:n(23061)("anchor")},{anchor:function(t){return o(this,"a","name",t)}})},67357:(t,e,n)=>{"use strict";var i=n(46518),o=n(79504),r=n(67750),s=n(91291),a=n(655),c=n(79039),l=o("".charAt);i({target:"String",proto:!0,forced:c((function(){return"\ud842"!=="𠮷".at(-2)}))},{at:function(t){var e=a(r(this)),n=e.length,i=s(t),o=i>=0?i:n+i;return o<0||o>=n?void 0:l(e,o)}})},11898:(t,e,n)=>{"use strict";var i=n(46518),o=n(77240);i({target:"String",proto:!0,forced:n(23061)("big")},{big:function(){return o(this,"big","","")}})},35490:(t,e,n)=>{"use strict";var i=n(46518),o=n(77240);i({target:"String",proto:!0,forced:n(23061)("blink")},{blink:function(){return o(this,"blink","","")}})},5745:(t,e,n)=>{"use strict";var i=n(46518),o=n(77240);i({target:"String",proto:!0,forced:n(23061)("bold")},{bold:function(){return o(this,"b","","")}})},23860:(t,e,n)=>{"use strict";var i=n(46518),o=n(68183).codeAt;i({target:"String",proto:!0},{codePointAt:function(t){return o(this,t)}})},21830:(t,e,n)=>{"use strict";var i,o=n(46518),r=n(27476),s=n(77347).f,a=n(18014),c=n(655),l=n(60511),u=n(67750),h=n(41436),d=n(96395),p=r("".slice),A=Math.min,f=h("endsWith");o({target:"String",proto:!0,forced:!(!d&&!f&&(i=s(String.prototype,"endsWith"),i&&!i.writable)||f)},{endsWith:function(t){var e=c(u(this));l(t);var n=arguments.length>1?arguments[1]:void 0,i=e.length,o=void 0===n?i:A(a(n),i),r=c(t);return p(e,o-r.length,o)===r}})},94298:(t,e,n)=>{"use strict";var i=n(46518),o=n(77240);i({target:"String",proto:!0,forced:n(23061)("fixed")},{fixed:function(){return o(this,"tt","","")}})},60268:(t,e,n)=>{"use strict";var i=n(46518),o=n(77240);i({target:"String",proto:!0,forced:n(23061)("fontcolor")},{fontcolor:function(t){return o(this,"font","color",t)}})},69546:(t,e,n)=>{"use strict";var i=n(46518),o=n(77240);i({target:"String",proto:!0,forced:n(23061)("fontsize")},{fontsize:function(t){return o(this,"font","size",t)}})},27337:(t,e,n)=>{"use strict";var i=n(46518),o=n(79504),r=n(35610),s=RangeError,a=String.fromCharCode,c=String.fromCodePoint,l=o([].join);i({target:"String",stat:!0,arity:1,forced:!!c&&1!==c.length},{fromCodePoint:function(t){for(var e,n=[],i=arguments.length,o=0;i>o;){if(e=+arguments[o++],r(e,1114111)!==e)throw new s(e+" is not a valid code point");n[o]=e<65536?a(e):a(55296+((e-=65536)>>10),e%1024+56320)}return l(n,"")}})},21699:(t,e,n)=>{"use strict";var i=n(46518),o=n(79504),r=n(60511),s=n(67750),a=n(655),c=n(41436),l=o("".indexOf);i({target:"String",proto:!0,forced:!c("includes")},{includes:function(t){return!!~l(a(s(this)),a(r(t)),arguments.length>1?arguments[1]:void 0)}})},42043:(t,e,n)=>{"use strict";var i=n(46518),o=n(79504),r=n(67750),s=n(655),a=o("".charCodeAt);i({target:"String",proto:!0},{isWellFormed:function(){for(var t=s(r(this)),e=t.length,n=0;n=56320||++n>=e||56320!=(64512&a(t,n))))return!1}return!0}})},20781:(t,e,n)=>{"use strict";var i=n(46518),o=n(77240);i({target:"String",proto:!0,forced:n(23061)("italics")},{italics:function(){return o(this,"i","","")}})},47764:(t,e,n)=>{"use strict";var i=n(68183).charAt,o=n(655),r=n(91181),s=n(51088),a=n(62529),c="String Iterator",l=r.set,u=r.getterFor(c);s(String,"String",(function(t){l(this,{type:c,string:o(t),index:0})}),(function(){var t,e=u(this),n=e.string,o=e.index;return o>=n.length?a(void 0,!0):(t=i(n,o),e.index+=t.length,a(t,!1))}))},50778:(t,e,n)=>{"use strict";var i=n(46518),o=n(77240);i({target:"String",proto:!0,forced:n(23061)("link")},{link:function(t){return o(this,"a","href",t)}})},28543:(t,e,n)=>{"use strict";var i=n(46518),o=n(69565),r=n(27476),s=n(33994),a=n(62529),c=n(67750),l=n(18014),u=n(655),h=n(28551),d=n(64117),p=n(22195),A=n(60788),f=n(61034),g=n(55966),m=n(36840),b=n(79039),v=n(78227),C=n(2293),x=n(57829),w=n(56682),y=n(91181),k=n(96395),B=v("matchAll"),E="RegExp String",_=E+" Iterator",I=y.set,D=y.getterFor(_),S=RegExp.prototype,T=TypeError,O=r("".indexOf),M=r("".matchAll),P=!!M&&!b((function(){M("a",/./)})),R=s((function(t,e,n,i){I(this,{type:_,regexp:t,string:e,global:n,unicode:i,done:!1})}),E,(function(){var t=D(this);if(t.done)return a(void 0,!0);var e=t.regexp,n=t.string,i=w(e,n);return null===i?(t.done=!0,a(void 0,!0)):t.global?(""===u(i[0])&&(e.lastIndex=x(n,l(e.lastIndex),t.unicode)),a(i,!1)):(t.done=!0,a(i,!1))})),N=function(t){var e,n,i,o=h(this),r=u(t),s=C(o,RegExp),a=u(f(o));return e=new s(s===RegExp?o.source:o,a),n=!!~O(a,"g"),i=!!~O(a,"u"),e.lastIndex=l(o.lastIndex),new R(e,r,n,i)};i({target:"String",proto:!0,forced:P},{matchAll:function(t){var e,n,i,r,s=c(this);if(d(t)){if(P)return M(s,t)}else{if(A(t)&&(e=u(c(f(t))),!~O(e,"g")))throw new T("`.matchAll` does not allow non-global regexes");if(P)return M(s,t);if(void 0===(i=g(t,B))&&k&&"RegExp"===p(t)&&(i=N),i)return o(i,t,s)}return n=u(s),r=new RegExp(t,"g"),k?o(N,r,n):r[B](n)}}),k||B in S||m(S,B,N)},71761:(t,e,n)=>{"use strict";var i=n(69565),o=n(89228),r=n(28551),s=n(64117),a=n(18014),c=n(655),l=n(67750),u=n(55966),h=n(57829),d=n(56682);o("match",(function(t,e,n){return[function(e){var n=l(this),o=s(e)?void 0:u(e,t);return o?i(o,e,n):new RegExp(e)[t](c(n))},function(t){var i=r(this),o=c(t),s=n(e,i,o);if(s.done)return s.value;if(!i.global)return d(i,o);var l=i.unicode;i.lastIndex=0;for(var u,p=[],A=0;null!==(u=d(i,o));){var f=c(u[0]);p[A]=f,""===f&&(i.lastIndex=h(o,a(i.lastIndex),l)),A++}return 0===A?null:p}]}))},35701:(t,e,n)=>{"use strict";var i=n(46518),o=n(60533).end;i({target:"String",proto:!0,forced:n(83063)},{padEnd:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}})},68156:(t,e,n)=>{"use strict";var i=n(46518),o=n(60533).start;i({target:"String",proto:!0,forced:n(83063)},{padStart:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}})},85906:(t,e,n)=>{"use strict";var i=n(46518),o=n(79504),r=n(25397),s=n(48981),a=n(655),c=n(26198),l=o([].push),u=o([].join);i({target:"String",stat:!0},{raw:function(t){var e=r(s(t).raw),n=c(e);if(!n)return"";for(var i=arguments.length,o=[],h=0;;){if(l(o,a(e[h++])),h===n)return u(o,"");h{"use strict";n(46518)({target:"String",proto:!0},{repeat:n(72333)})},79978:(t,e,n)=>{"use strict";var i=n(46518),o=n(69565),r=n(79504),s=n(67750),a=n(94901),c=n(64117),l=n(60788),u=n(655),h=n(55966),d=n(61034),p=n(2478),A=n(78227),f=n(96395),g=A("replace"),m=TypeError,b=r("".indexOf),v=r("".replace),C=r("".slice),x=Math.max;i({target:"String",proto:!0},{replaceAll:function(t,e){var n,i,r,A,w,y,k,B,E,_,I=s(this),D=0,S="";if(!c(t)){if((n=l(t))&&(i=u(s(d(t))),!~b(i,"g")))throw new m("`.replaceAll` does not allow non-global regexes");if(r=h(t,g))return o(r,t,I,e);if(f&&n)return v(u(I),t,e)}for(A=u(I),w=u(t),(y=a(e))||(e=u(e)),k=w.length,B=x(1,k),E=b(A,w);-1!==E;)_=y?u(e(w,E,A)):p(w,A,E,[],void 0,e),S+=C(A,D,E)+_,D=E+k,E=E+B>A.length?-1:b(A,w,E+B);return D{"use strict";var i=n(69565),o=n(89228),r=n(28551),s=n(64117),a=n(67750),c=n(3470),l=n(655),u=n(55966),h=n(56682);o("search",(function(t,e,n){return[function(e){var n=a(this),o=s(e)?void 0:u(e,t);return o?i(o,e,n):new RegExp(e)[t](l(n))},function(t){var i=r(this),o=l(t),s=n(e,i,o);if(s.done)return s.value;var a=i.lastIndex;c(a,0)||(i.lastIndex=0);var u=h(i,o);return c(i.lastIndex,a)||(i.lastIndex=a),null===u?-1:u.index}]}))},89195:(t,e,n)=>{"use strict";var i=n(46518),o=n(77240);i({target:"String",proto:!0,forced:n(23061)("small")},{small:function(){return o(this,"small","","")}})},90744:(t,e,n)=>{"use strict";var i=n(69565),o=n(79504),r=n(89228),s=n(28551),a=n(64117),c=n(67750),l=n(2293),u=n(57829),h=n(18014),d=n(655),p=n(55966),A=n(56682),f=n(58429),g=n(79039),m=f.UNSUPPORTED_Y,b=Math.min,v=o([].push),C=o("".slice),x=!g((function(){var t=/(?:)/,e=t.exec;t.exec=function(){return e.apply(this,arguments)};var n="ab".split(t);return 2!==n.length||"a"!==n[0]||"b"!==n[1]})),w="c"==="abbc".split(/(b)*/)[1]||4!=="test".split(/(?:)/,-1).length||2!=="ab".split(/(?:ab)*/).length||4!==".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length;r("split",(function(t,e,n){var o="0".split(void 0,0).length?function(t,n){return void 0===t&&0===n?[]:i(e,this,t,n)}:e;return[function(e,n){var r=c(this),s=a(e)?void 0:p(e,t);return s?i(s,e,r,n):i(o,d(r),e,n)},function(t,i){var r=s(this),a=d(t);if(!w){var c=n(o,r,a,i,o!==e);if(c.done)return c.value}var p=l(r,RegExp),f=r.unicode,g=(r.ignoreCase?"i":"")+(r.multiline?"m":"")+(r.unicode?"u":"")+(m?"g":"y"),x=new p(m?"^(?:"+r.source+")":r,g),y=void 0===i?4294967295:i>>>0;if(0===y)return[];if(0===a.length)return null===A(x,a)?[a]:[];for(var k=0,B=0,E=[];B{"use strict";var i,o=n(46518),r=n(27476),s=n(77347).f,a=n(18014),c=n(655),l=n(60511),u=n(67750),h=n(41436),d=n(96395),p=r("".slice),A=Math.min,f=h("startsWith");o({target:"String",proto:!0,forced:!(!d&&!f&&(i=s(String.prototype,"startsWith"),i&&!i.writable)||f)},{startsWith:function(t){var e=c(u(this));l(t);var n=a(A(arguments.length>1?arguments[1]:void 0,e.length)),i=c(t);return p(e,n,n+i.length)===i}})},46276:(t,e,n)=>{"use strict";var i=n(46518),o=n(77240);i({target:"String",proto:!0,forced:n(23061)("strike")},{strike:function(){return o(this,"strike","","")}})},48718:(t,e,n)=>{"use strict";var i=n(46518),o=n(77240);i({target:"String",proto:!0,forced:n(23061)("sub")},{sub:function(){return o(this,"sub","","")}})},50375:(t,e,n)=>{"use strict";var i=n(46518),o=n(79504),r=n(67750),s=n(91291),a=n(655),c=o("".slice),l=Math.max,u=Math.min;i({target:"String",proto:!0,forced:!"".substr||"b"!=="ab".substr(-1)},{substr:function(t,e){var n,i,o=a(r(this)),h=o.length,d=s(t);return d===1/0&&(d=0),d<0&&(d=l(h+d,0)),(n=void 0===e?h:s(e))<=0||n===1/0||d>=(i=u(d+n,h))?"":c(o,d,i)}})},16308:(t,e,n)=>{"use strict";var i=n(46518),o=n(77240);i({target:"String",proto:!0,forced:n(23061)("sup")},{sup:function(){return o(this,"sup","","")}})},67438:(t,e,n)=>{"use strict";var i=n(46518),o=n(69565),r=n(79504),s=n(67750),a=n(655),c=n(79039),l=Array,u=r("".charAt),h=r("".charCodeAt),d=r([].join),p="".toWellFormed,A=p&&c((function(){return"1"!==o(p,1)}));i({target:"String",proto:!0,forced:A},{toWellFormed:function(){var t=a(s(this));if(A)return o(p,t);for(var e=t.length,n=l(e),i=0;i=56320||i+1>=e||56320!=(64512&h(t,i+1))?n[i]="�":(n[i]=u(t,i),n[++i]=u(t,i))}return d(n,"")}})},39202:(t,e,n)=>{"use strict";n(33313);var i=n(46518),o=n(18866);i({target:"String",proto:!0,name:"trimEnd",forced:"".trimEnd!==o},{trimEnd:o})},58934:(t,e,n)=>{"use strict";var i=n(46518),o=n(53487);i({target:"String",proto:!0,name:"trimStart",forced:"".trimLeft!==o},{trimLeft:o})},33313:(t,e,n)=>{"use strict";var i=n(46518),o=n(18866);i({target:"String",proto:!0,name:"trimEnd",forced:"".trimRight!==o},{trimRight:o})},43359:(t,e,n)=>{"use strict";n(58934);var i=n(46518),o=n(53487);i({target:"String",proto:!0,name:"trimStart",forced:"".trimStart!==o},{trimStart:o})},42762:(t,e,n)=>{"use strict";var i=n(46518),o=n(43802).trim;i({target:"String",proto:!0,forced:n(60706)("trim")},{trim:function(){return o(this)}})},66412:(t,e,n)=>{"use strict";n(70511)("asyncIterator")},6761:(t,e,n)=>{"use strict";var i=n(46518),o=n(44576),r=n(69565),s=n(79504),a=n(96395),c=n(43724),l=n(4495),u=n(79039),h=n(39297),d=n(1625),p=n(28551),A=n(25397),f=n(56969),g=n(655),m=n(6980),b=n(2360),v=n(71072),C=n(38480),x=n(10298),w=n(33717),y=n(77347),k=n(24913),B=n(96801),E=n(48773),_=n(36840),I=n(62106),D=n(25745),S=n(66119),T=n(30421),O=n(33392),M=n(78227),P=n(1951),R=n(70511),N=n(58242),H=n(10687),z=n(91181),L=n(81594).forEach,F=S("hidden"),j="Symbol",U="prototype",W=z.set,Y=z.getterFor(j),q=Object[U],Q=o.Symbol,G=Q&&Q[U],X=o.RangeError,V=o.TypeError,K=o.QObject,J=y.f,Z=k.f,$=x.f,tt=E.f,et=s([].push),nt=D("symbols"),it=D("op-symbols"),ot=D("wks"),rt=!K||!K[U]||!K[U].findChild,st=function(t,e,n){var i=J(q,e);i&&delete q[e],Z(t,e,n),i&&t!==q&&Z(q,e,i)},at=c&&u((function(){return 7!==b(Z({},"a",{get:function(){return Z(this,"a",{value:7}).a}})).a}))?st:Z,ct=function(t,e){var n=nt[t]=b(G);return W(n,{type:j,tag:t,description:e}),c||(n.description=e),n},lt=function(t,e,n){t===q&<(it,e,n),p(t);var i=f(e);return p(n),h(nt,i)?(n.enumerable?(h(t,F)&&t[F][i]&&(t[F][i]=!1),n=b(n,{enumerable:m(0,!1)})):(h(t,F)||Z(t,F,m(1,b(null))),t[F][i]=!0),at(t,i,n)):Z(t,i,n)},ut=function(t,e){p(t);var n=A(e),i=v(n).concat(At(n));return L(i,(function(e){c&&!r(ht,n,e)||lt(t,e,n[e])})),t},ht=function(t){var e=f(t),n=r(tt,this,e);return!(this===q&&h(nt,e)&&!h(it,e))&&(!(n||!h(this,e)||!h(nt,e)||h(this,F)&&this[F][e])||n)},dt=function(t,e){var n=A(t),i=f(e);if(n!==q||!h(nt,i)||h(it,i)){var o=J(n,i);return!o||!h(nt,i)||h(n,F)&&n[F][i]||(o.enumerable=!0),o}},pt=function(t){var e=$(A(t)),n=[];return L(e,(function(t){h(nt,t)||h(T,t)||et(n,t)})),n},At=function(t){var e=t===q,n=$(e?it:A(t)),i=[];return L(n,(function(t){!h(nt,t)||e&&!h(q,t)||et(i,nt[t])})),i};l||(_(G=(Q=function(){if(d(G,this))throw new V("Symbol is not a constructor");var t=arguments.length&&void 0!==arguments[0]?g(arguments[0]):void 0,e=O(t),n=function(t){var i=void 0===this?o:this;i===q&&r(n,it,t),h(i,F)&&h(i[F],e)&&(i[F][e]=!1);var s=m(1,t);try{at(i,e,s)}catch(t){if(!(t instanceof X))throw t;st(i,e,s)}};return c&&rt&&at(q,e,{configurable:!0,set:n}),ct(e,t)})[U],"toString",(function(){return Y(this).tag})),_(Q,"withoutSetter",(function(t){return ct(O(t),t)})),E.f=ht,k.f=lt,B.f=ut,y.f=dt,C.f=x.f=pt,w.f=At,P.f=function(t){return ct(M(t),t)},c&&(I(G,"description",{configurable:!0,get:function(){return Y(this).description}}),a||_(q,"propertyIsEnumerable",ht,{unsafe:!0}))),i({global:!0,constructor:!0,wrap:!0,forced:!l,sham:!l},{Symbol:Q}),L(v(ot),(function(t){R(t)})),i({target:j,stat:!0,forced:!l},{useSetter:function(){rt=!0},useSimple:function(){rt=!1}}),i({target:"Object",stat:!0,forced:!l,sham:!c},{create:function(t,e){return void 0===e?b(t):ut(b(t),e)},defineProperty:lt,defineProperties:ut,getOwnPropertyDescriptor:dt}),i({target:"Object",stat:!0,forced:!l},{getOwnPropertyNames:pt}),N(),H(Q,j),T[F]=!0},89463:(t,e,n)=>{"use strict";var i=n(46518),o=n(43724),r=n(44576),s=n(79504),a=n(39297),c=n(94901),l=n(1625),u=n(655),h=n(62106),d=n(77740),p=r.Symbol,A=p&&p.prototype;if(o&&c(p)&&(!("description"in A)||void 0!==p().description)){var f={},g=function(){var t=arguments.length<1||void 0===arguments[0]?void 0:u(arguments[0]),e=l(A,this)?new p(t):void 0===t?p():p(t);return""===t&&(f[e]=!0),e};d(g,p),g.prototype=A,A.constructor=g;var m="Symbol(description detection)"===String(p("description detection")),b=s(A.valueOf),v=s(A.toString),C=/^Symbol\((.*)\)[^)]+$/,x=s("".replace),w=s("".slice);h(A,"description",{configurable:!0,get:function(){var t=b(this);if(a(f,t))return"";var e=v(t),n=m?w(e,7,-1):x(e,C,"$1");return""===n?void 0:n}}),i({global:!0,constructor:!0,forced:!0},{Symbol:g})}},81510:(t,e,n)=>{"use strict";var i=n(46518),o=n(97751),r=n(39297),s=n(655),a=n(25745),c=n(91296),l=a("string-to-symbol-registry"),u=a("symbol-to-string-registry");i({target:"Symbol",stat:!0,forced:!c},{for:function(t){var e=s(t);if(r(l,e))return l[e];var n=o("Symbol")(e);return l[e]=n,u[n]=e,n}})},60193:(t,e,n)=>{"use strict";n(70511)("hasInstance")},92168:(t,e,n)=>{"use strict";n(70511)("isConcatSpreadable")},2259:(t,e,n)=>{"use strict";n(70511)("iterator")},52675:(t,e,n)=>{"use strict";n(6761),n(81510),n(97812),n(33110),n(49773)},97812:(t,e,n)=>{"use strict";var i=n(46518),o=n(39297),r=n(10757),s=n(16823),a=n(25745),c=n(91296),l=a("symbol-to-string-registry");i({target:"Symbol",stat:!0,forced:!c},{keyFor:function(t){if(!r(t))throw new TypeError(s(t)+" is not a symbol");if(o(l,t))return l[t]}})},83142:(t,e,n)=>{"use strict";n(70511)("matchAll")},86964:(t,e,n)=>{"use strict";n(70511)("match")},83237:(t,e,n)=>{"use strict";n(70511)("replace")},61833:(t,e,n)=>{"use strict";n(70511)("search")},67947:(t,e,n)=>{"use strict";n(70511)("species")},31073:(t,e,n)=>{"use strict";n(70511)("split")},45700:(t,e,n)=>{"use strict";var i=n(70511),o=n(58242);i("toPrimitive"),o()},78125:(t,e,n)=>{"use strict";var i=n(97751),o=n(70511),r=n(10687);o("toStringTag"),r(i("Symbol"),"Symbol")},20326:(t,e,n)=>{"use strict";n(70511)("unscopables")},48140:(t,e,n)=>{"use strict";var i=n(94644),o=n(26198),r=n(91291),s=i.aTypedArray;(0,i.exportTypedArrayMethod)("at",(function(t){var e=s(this),n=o(e),i=r(t),a=i>=0?i:n+i;return a<0||a>=n?void 0:e[a]}))},81630:(t,e,n)=>{"use strict";var i=n(79504),o=n(94644),r=i(n(57029)),s=o.aTypedArray;(0,o.exportTypedArrayMethod)("copyWithin",(function(t,e){return r(s(this),t,e,arguments.length>2?arguments[2]:void 0)}))},72170:(t,e,n)=>{"use strict";var i=n(94644),o=n(81594).every,r=i.aTypedArray;(0,i.exportTypedArrayMethod)("every",(function(t){return o(r(this),t,arguments.length>1?arguments[1]:void 0)}))},75044:(t,e,n)=>{"use strict";var i=n(94644),o=n(84373),r=n(75854),s=n(36955),a=n(69565),c=n(79504),l=n(79039),u=i.aTypedArray,h=i.exportTypedArrayMethod,d=c("".slice);h("fill",(function(t){var e=arguments.length;u(this);var n="Big"===d(s(this),0,3)?r(t):+t;return a(o,this,n,e>1?arguments[1]:void 0,e>2?arguments[2]:void 0)}),l((function(){var t=0;return new Int8Array(2).fill({valueOf:function(){return t++}}),1!==t})))},69539:(t,e,n)=>{"use strict";var i=n(94644),o=n(81594).filter,r=n(26357),s=i.aTypedArray;(0,i.exportTypedArrayMethod)("filter",(function(t){var e=o(s(this),t,arguments.length>1?arguments[1]:void 0);return r(this,e)}))},89955:(t,e,n)=>{"use strict";var i=n(94644),o=n(81594).findIndex,r=i.aTypedArray;(0,i.exportTypedArrayMethod)("findIndex",(function(t){return o(r(this),t,arguments.length>1?arguments[1]:void 0)}))},91134:(t,e,n)=>{"use strict";var i=n(94644),o=n(43839).findLastIndex,r=i.aTypedArray;(0,i.exportTypedArrayMethod)("findLastIndex",(function(t){return o(r(this),t,arguments.length>1?arguments[1]:void 0)}))},21903:(t,e,n)=>{"use strict";var i=n(94644),o=n(43839).findLast,r=i.aTypedArray;(0,i.exportTypedArrayMethod)("findLast",(function(t){return o(r(this),t,arguments.length>1?arguments[1]:void 0)}))},31694:(t,e,n)=>{"use strict";var i=n(94644),o=n(81594).find,r=i.aTypedArray;(0,i.exportTypedArrayMethod)("find",(function(t){return o(r(this),t,arguments.length>1?arguments[1]:void 0)}))},34594:(t,e,n)=>{"use strict";n(15823)("Float32",(function(t){return function(e,n,i){return t(this,e,n,i)}}))},29833:(t,e,n)=>{"use strict";n(15823)("Float64",(function(t){return function(e,n,i){return t(this,e,n,i)}}))},33206:(t,e,n)=>{"use strict";var i=n(94644),o=n(81594).forEach,r=i.aTypedArray;(0,i.exportTypedArrayMethod)("forEach",(function(t){o(r(this),t,arguments.length>1?arguments[1]:void 0)}))},48345:(t,e,n)=>{"use strict";var i=n(72805);(0,n(94644).exportTypedArrayStaticMethod)("from",n(43251),i)},44496:(t,e,n)=>{"use strict";var i=n(94644),o=n(19617).includes,r=i.aTypedArray;(0,i.exportTypedArrayMethod)("includes",(function(t){return o(r(this),t,arguments.length>1?arguments[1]:void 0)}))},66651:(t,e,n)=>{"use strict";var i=n(94644),o=n(19617).indexOf,r=i.aTypedArray;(0,i.exportTypedArrayMethod)("indexOf",(function(t){return o(r(this),t,arguments.length>1?arguments[1]:void 0)}))},72107:(t,e,n)=>{"use strict";n(15823)("Int16",(function(t){return function(e,n,i){return t(this,e,n,i)}}))},95477:(t,e,n)=>{"use strict";n(15823)("Int32",(function(t){return function(e,n,i){return t(this,e,n,i)}}))},46594:(t,e,n)=>{"use strict";n(15823)("Int8",(function(t){return function(e,n,i){return t(this,e,n,i)}}))},12887:(t,e,n)=>{"use strict";var i=n(44576),o=n(79039),r=n(79504),s=n(94644),a=n(23792),c=n(78227)("iterator"),l=i.Uint8Array,u=r(a.values),h=r(a.keys),d=r(a.entries),p=s.aTypedArray,A=s.exportTypedArrayMethod,f=l&&l.prototype,g=!o((function(){f[c].call([1])})),m=!!f&&f.values&&f[c]===f.values&&"values"===f.values.name,b=function(){return u(p(this))};A("entries",(function(){return d(p(this))}),g),A("keys",(function(){return h(p(this))}),g),A("values",b,g||!m,{name:"values"}),A(c,b,g||!m,{name:"values"})},19369:(t,e,n)=>{"use strict";var i=n(94644),o=n(79504),r=i.aTypedArray,s=i.exportTypedArrayMethod,a=o([].join);s("join",(function(t){return a(r(this),t)}))},66812:(t,e,n)=>{"use strict";var i=n(94644),o=n(18745),r=n(8379),s=i.aTypedArray;(0,i.exportTypedArrayMethod)("lastIndexOf",(function(t){var e=arguments.length;return o(r,s(this),e>1?[t,arguments[1]]:[t])}))},8995:(t,e,n)=>{"use strict";var i=n(94644),o=n(81594).map,r=n(61412),s=i.aTypedArray;(0,i.exportTypedArrayMethod)("map",(function(t){return o(s(this),t,arguments.length>1?arguments[1]:void 0,(function(t,e){return new(r(t))(e)}))}))},52568:(t,e,n)=>{"use strict";var i=n(94644),o=n(72805),r=i.aTypedArrayConstructor;(0,i.exportTypedArrayStaticMethod)("of",(function(){for(var t=0,e=arguments.length,n=new(r(this))(e);e>t;)n[t]=arguments[t++];return n}),o)},36072:(t,e,n)=>{"use strict";var i=n(94644),o=n(80926).right,r=i.aTypedArray;(0,i.exportTypedArrayMethod)("reduceRight",(function(t){var e=arguments.length;return o(r(this),t,e,e>1?arguments[1]:void 0)}))},31575:(t,e,n)=>{"use strict";var i=n(94644),o=n(80926).left,r=i.aTypedArray;(0,i.exportTypedArrayMethod)("reduce",(function(t){var e=arguments.length;return o(r(this),t,e,e>1?arguments[1]:void 0)}))},88747:(t,e,n)=>{"use strict";var i=n(94644),o=i.aTypedArray,r=i.exportTypedArrayMethod,s=Math.floor;r("reverse",(function(){for(var t,e=this,n=o(e).length,i=s(n/2),r=0;r{"use strict";var i=n(44576),o=n(69565),r=n(94644),s=n(26198),a=n(58229),c=n(48981),l=n(79039),u=i.RangeError,h=i.Int8Array,d=h&&h.prototype,p=d&&d.set,A=r.aTypedArray,f=r.exportTypedArrayMethod,g=!l((function(){var t=new Uint8ClampedArray(2);return o(p,t,{length:1,0:3},1),3!==t[1]})),m=g&&r.NATIVE_ARRAY_BUFFER_VIEWS&&l((function(){var t=new h(2);return t.set(1),t.set("2",1),0!==t[0]||2!==t[1]}));f("set",(function(t){A(this);var e=a(arguments.length>1?arguments[1]:void 0,1),n=c(t);if(g)return o(p,this,n,e);var i=this.length,r=s(n),l=0;if(r+e>i)throw new u("Wrong length");for(;l{"use strict";var i=n(94644),o=n(61412),r=n(79039),s=n(67680),a=i.aTypedArray;(0,i.exportTypedArrayMethod)("slice",(function(t,e){for(var n=s(a(this),t,e),i=o(this),r=0,c=n.length,l=new i(c);c>r;)l[r]=n[r++];return l}),r((function(){new Int8Array(1).slice()})))},57301:(t,e,n)=>{"use strict";var i=n(94644),o=n(81594).some,r=i.aTypedArray;(0,i.exportTypedArrayMethod)("some",(function(t){return o(r(this),t,arguments.length>1?arguments[1]:void 0)}))},373:(t,e,n)=>{"use strict";var i=n(44576),o=n(27476),r=n(79039),s=n(79306),a=n(74488),c=n(94644),l=n(13709),u=n(13763),h=n(39519),d=n(3607),p=c.aTypedArray,A=c.exportTypedArrayMethod,f=i.Uint16Array,g=f&&o(f.prototype.sort),m=!(!g||r((function(){g(new f(2),null)}))&&r((function(){g(new f(2),{})}))),b=!!g&&!r((function(){if(h)return h<74;if(l)return l<67;if(u)return!0;if(d)return d<602;var t,e,n=new f(516),i=Array(516);for(t=0;t<516;t++)e=t%4,n[t]=515-t,i[t]=t-2*e+3;for(g(n,(function(t,e){return(t/4|0)-(e/4|0)})),t=0;t<516;t++)if(n[t]!==i[t])return!0}));A("sort",(function(t){return void 0!==t&&s(t),b?g(this,t):a(p(this),function(t){return function(e,n){return void 0!==t?+t(e,n)||0:n!=n?-1:e!=e?1:0===e&&0===n?1/e>0&&1/n<0?1:-1:e>n}}(t))}),!b||m)},86614:(t,e,n)=>{"use strict";var i=n(94644),o=n(18014),r=n(35610),s=n(61412),a=i.aTypedArray;(0,i.exportTypedArrayMethod)("subarray",(function(t,e){var n=a(this),i=n.length,c=r(t,i);return new(s(n))(n.buffer,n.byteOffset+c*n.BYTES_PER_ELEMENT,o((void 0===e?i:r(e,i))-c))}))},41405:(t,e,n)=>{"use strict";var i=n(44576),o=n(18745),r=n(94644),s=n(79039),a=n(67680),c=i.Int8Array,l=r.aTypedArray,u=r.exportTypedArrayMethod,h=[].toLocaleString,d=!!c&&s((function(){h.call(new c(1))}));u("toLocaleString",(function(){return o(h,d?a(l(this)):l(this),a(arguments))}),s((function(){return[1,2].toLocaleString()!==new c([1,2]).toLocaleString()}))||!s((function(){c.prototype.toLocaleString.call([1,2])})))},37467:(t,e,n)=>{"use strict";var i=n(37628),o=n(94644),r=o.aTypedArray,s=o.exportTypedArrayMethod,a=o.getTypedArrayConstructor;s("toReversed",(function(){return i(r(this),a(this))}))},44732:(t,e,n)=>{"use strict";var i=n(94644),o=n(79504),r=n(79306),s=n(35370),a=i.aTypedArray,c=i.getTypedArrayConstructor,l=i.exportTypedArrayMethod,u=o(i.TypedArrayPrototype.sort);l("toSorted",(function(t){void 0!==t&&r(t);var e=a(this),n=s(c(e),e);return u(n,t)}))},33684:(t,e,n)=>{"use strict";var i=n(94644).exportTypedArrayMethod,o=n(79039),r=n(44576),s=n(79504),a=r.Uint8Array,c=a&&a.prototype||{},l=[].toString,u=s([].join);o((function(){l.call({})}))&&(l=function(){return u(this)});var h=c.toString!==l;i("toString",l,h)},3690:(t,e,n)=>{"use strict";n(15823)("Uint16",(function(t){return function(e,n,i){return t(this,e,n,i)}}))},61740:(t,e,n)=>{"use strict";n(15823)("Uint32",(function(t){return function(e,n,i){return t(this,e,n,i)}}))},21489:(t,e,n)=>{"use strict";n(15823)("Uint8",(function(t){return function(e,n,i){return t(this,e,n,i)}}))},22134:(t,e,n)=>{"use strict";n(15823)("Uint8",(function(t){return function(e,n,i){return t(this,e,n,i)}}),!0)},79577:(t,e,n)=>{"use strict";var i=n(39928),o=n(94644),r=n(18727),s=n(91291),a=n(75854),c=o.aTypedArray,l=o.getTypedArrayConstructor,u=o.exportTypedArrayMethod,h=!!function(){try{new Int8Array(1).with(2,{valueOf:function(){throw 8}})}catch(t){return 8===t}}();u("with",{with:function(t,e){var n=c(this),o=s(t),u=r(n)?a(e):+e;return i(n,l(n),o,u)}}.with,!h)},88267:(t,e,n)=>{"use strict";var i=n(46518),o=n(79504),r=n(655),s=String.fromCharCode,a=o("".charAt),c=o(/./.exec),l=o("".slice),u=/^[\da-f]{2}$/i,h=/^[\da-f]{4}$/i;i({global:!0},{unescape:function(t){for(var e,n,i=r(t),o="",d=i.length,p=0;p{"use strict";var i,o=n(92744),r=n(44576),s=n(79504),a=n(56279),c=n(3451),l=n(16468),u=n(91625),h=n(20034),d=n(91181).enforce,p=n(79039),A=n(58622),f=Object,g=Array.isArray,m=f.isExtensible,b=f.isFrozen,v=f.isSealed,C=f.freeze,x=f.seal,w=!r.ActiveXObject&&"ActiveXObject"in r,y=function(t){return function(){return t(this,arguments.length?arguments[0]:void 0)}},k=l("WeakMap",y,u),B=k.prototype,E=s(B.set);if(A)if(w){i=u.getConstructor(y,"WeakMap",!0),c.enable();var _=s(B.delete),I=s(B.has),D=s(B.get);a(B,{delete:function(t){if(h(t)&&!m(t)){var e=d(this);return e.frozen||(e.frozen=new i),_(this,t)||e.frozen.delete(t)}return _(this,t)},has:function(t){if(h(t)&&!m(t)){var e=d(this);return e.frozen||(e.frozen=new i),I(this,t)||e.frozen.has(t)}return I(this,t)},get:function(t){if(h(t)&&!m(t)){var e=d(this);return e.frozen||(e.frozen=new i),I(this,t)?D(this,t):e.frozen.get(t)}return D(this,t)},set:function(t,e){if(h(t)&&!m(t)){var n=d(this);n.frozen||(n.frozen=new i),I(this,t)?E(this,t,e):n.frozen.set(t,e)}else E(this,t,e);return this}})}else o&&p((function(){var t=C([]);return E(new k,t,1),!b(t)}))&&a(B,{set:function(t,e){var n;return g(t)&&(b(t)?n=C:v(t)&&(n=x)),E(this,t,e),n&&n(t),this}})},73772:(t,e,n)=>{"use strict";n(65746)},5240:(t,e,n)=>{"use strict";n(16468)("WeakSet",(function(t){return function(){return t(this,arguments.length?arguments[0]:void 0)}}),n(91625))},30958:(t,e,n)=>{"use strict";n(5240)},2945:(t,e,n)=>{"use strict";var i=n(46518),o=n(44576),r=n(97751),s=n(79504),a=n(69565),c=n(79039),l=n(655),u=n(22812),h=n(92804).c2i,d=/[^\d+/a-z]/i,p=/[\t\n\f\r ]+/g,A=/[=]{1,2}$/,f=r("atob"),g=String.fromCharCode,m=s("".charAt),b=s("".replace),v=s(d.exec),C=!!f&&!c((function(){return"hi"!==f("aGk=")})),x=C&&c((function(){return""!==f(" ")})),w=C&&!c((function(){f("a")})),y=C&&!c((function(){f()})),k=C&&1!==f.length;i({global:!0,bind:!0,enumerable:!0,forced:!C||x||w||y||k},{atob:function(t){if(u(arguments.length,1),C&&!x&&!w)return a(f,o,t);var e,n,i,s=b(l(t),p,""),c="",y=0,k=0;if(s.length%4==0&&(s=b(s,A,"")),(e=s.length)%4==1||v(d,s))throw new(r("DOMException"))("The string is not correctly encoded","InvalidCharacterError");for(;y>(-2*k&6)));return c}})},42207:(t,e,n)=>{"use strict";var i=n(46518),o=n(44576),r=n(97751),s=n(79504),a=n(69565),c=n(79039),l=n(655),u=n(22812),h=n(92804).i2c,d=r("btoa"),p=s("".charAt),A=s("".charCodeAt),f=!!d&&!c((function(){return"aGk="!==d("hi")})),g=f&&!c((function(){d()})),m=f&&c((function(){return"bnVsbA=="!==d(null)})),b=f&&1!==d.length;i({global:!0,bind:!0,enumerable:!0,forced:!f||g||m||b},{btoa:function(t){if(u(arguments.length,1),f)return a(d,o,l(t));for(var e,n,i=l(t),s="",c=0,g=h;p(i,c)||(g="=",c%1);){if((n=A(i,c+=3/4))>255)throw new(r("DOMException"))("The string contains characters outside of the Latin1 range","InvalidCharacterError");s+=p(g,63&(e=e<<8|n)>>8-c%1*8)}return s}})},86368:(t,e,n)=>{"use strict";var i=n(46518),o=n(44576),r=n(59225).clear;i({global:!0,bind:!0,enumerable:!0,forced:o.clearImmediate!==r},{clearImmediate:r})},23500:(t,e,n)=>{"use strict";var i=n(44576),o=n(67400),r=n(79296),s=n(90235),a=n(66699),c=function(t){if(t&&t.forEach!==s)try{a(t,"forEach",s)}catch(e){t.forEach=s}};for(var l in o)o[l]&&c(i[l]&&i[l].prototype);c(r)},62953:(t,e,n)=>{"use strict";var i=n(44576),o=n(67400),r=n(79296),s=n(23792),a=n(66699),c=n(10687),l=n(78227)("iterator"),u=s.values,h=function(t,e){if(t){if(t[l]!==u)try{a(t,l,u)}catch(e){t[l]=u}if(c(t,e,!0),o[e])for(var n in s)if(t[n]!==s[n])try{a(t,n,s[n])}catch(e){t[n]=s[n]}}};for(var d in o)h(i[d]&&i[d].prototype,d);h(r,"DOMTokenList")},55815:(t,e,n)=>{"use strict";var i=n(46518),o=n(97751),r=n(89429),s=n(79039),a=n(2360),c=n(6980),l=n(24913).f,u=n(36840),h=n(62106),d=n(39297),p=n(90679),A=n(28551),f=n(77536),g=n(32603),m=n(55002),b=n(16193),v=n(91181),C=n(43724),x=n(96395),w="DOMException",y="DATA_CLONE_ERR",k=o("Error"),B=o(w)||function(){try{(new(o("MessageChannel")||r("worker_threads").MessageChannel)).port1.postMessage(new WeakMap)}catch(t){if(t.name===y&&25===t.code)return t.constructor}}(),E=B&&B.prototype,_=k.prototype,I=v.set,D=v.getterFor(w),S="stack"in new k(w),T=function(t){return d(m,t)&&m[t].m?m[t].c:0},O=function(){p(this,M);var t=arguments.length,e=g(t<1?void 0:arguments[0]),n=g(t<2?void 0:arguments[1],"Error"),i=T(n);if(I(this,{type:w,name:n,message:e,code:i}),C||(this.name=n,this.message=e,this.code=i),S){var o=new k(e);o.name=w,l(this,"stack",c(1,b(o.stack,1)))}},M=O.prototype=a(_),P=function(t){return{enumerable:!0,configurable:!0,get:t}},R=function(t){return P((function(){return D(this)[t]}))};C&&(h(M,"code",R("code")),h(M,"message",R("message")),h(M,"name",R("name"))),l(M,"constructor",c(1,O));var N=s((function(){return!(new B instanceof k)})),H=N||s((function(){return _.toString!==f||"2: 1"!==String(new B(1,2))})),z=N||s((function(){return 25!==new B(1,"DataCloneError").code})),L=N||25!==B[y]||25!==E[y],F=x?H||z||L:N;i({global:!0,constructor:!0,forced:F},{DOMException:F?O:B});var j=o(w),U=j.prototype;for(var W in H&&(x||B===j)&&u(U,"toString",f),z&&C&&B===j&&h(U,"code",P((function(){return T(A(this).name)}))),m)if(d(m,W)){var Y=m[W],q=Y.s,Q=c(6,Y.c);d(j,q)||l(j,q,Q),d(U,q)||l(U,q,Q)}},64979:(t,e,n)=>{"use strict";var i=n(46518),o=n(44576),r=n(97751),s=n(6980),a=n(24913).f,c=n(39297),l=n(90679),u=n(23167),h=n(32603),d=n(55002),p=n(16193),A=n(43724),f=n(96395),g="DOMException",m=r("Error"),b=r(g),v=function(){l(this,C);var t=arguments.length,e=h(t<1?void 0:arguments[0]),n=h(t<2?void 0:arguments[1],"Error"),i=new b(e,n),o=new m(e);return o.name=g,a(i,"stack",s(1,p(o.stack,1))),u(i,this,v),i},C=v.prototype=b.prototype,x="stack"in new m(g),w="stack"in new b(1,2),y=b&&A&&Object.getOwnPropertyDescriptor(o,g),k=!(!y||y.writable&&y.configurable),B=x&&!k&&!w;i({global:!0,constructor:!0,forced:f||B},{DOMException:B?v:b});var E=r(g),_=E.prototype;if(_.constructor!==E)for(var I in f||a(_,"constructor",s(1,E)),d)if(c(d,I)){var D=d[I],S=D.s;c(E,S)||a(E,S,s(6,D.c))}},79739:(t,e,n)=>{"use strict";var i=n(97751),o="DOMException";n(10687)(i(o),o)},59848:(t,e,n)=>{"use strict";n(86368),n(29309)},122:(t,e,n)=>{"use strict";var i=n(46518),o=n(44576),r=n(91955),s=n(79306),a=n(22812),c=n(79039),l=n(43724);i({global:!0,enumerable:!0,dontCallGetSet:!0,forced:c((function(){return l&&1!==Object.getOwnPropertyDescriptor(o,"queueMicrotask").value.length}))},{queueMicrotask:function(t){a(arguments.length,1),r(s(t))}})},13611:(t,e,n)=>{"use strict";var i=n(46518),o=n(44576),r=n(62106),s=n(43724),a=TypeError,c=Object.defineProperty,l=o.self!==o;try{if(s){var u=Object.getOwnPropertyDescriptor(o,"self");!l&&u&&u.get&&u.enumerable||r(o,"self",{get:function(){return o},set:function(t){if(this!==o)throw new a("Illegal invocation");c(o,"self",{value:t,writable:!0,configurable:!0,enumerable:!0})},configurable:!0,enumerable:!0})}else i({global:!0,simple:!0,forced:l},{self:o})}catch(t){}},29309:(t,e,n)=>{"use strict";var i=n(46518),o=n(44576),r=n(59225).set,s=n(79472),a=o.setImmediate?s(r,!1):r;i({global:!0,bind:!0,enumerable:!0,forced:o.setImmediate!==a},{setImmediate:a})},15575:(t,e,n)=>{"use strict";var i=n(46518),o=n(44576),r=n(79472)(o.setInterval,!0);i({global:!0,bind:!0,forced:o.setInterval!==r},{setInterval:r})},24599:(t,e,n)=>{"use strict";var i=n(46518),o=n(44576),r=n(79472)(o.setTimeout,!0);i({global:!0,bind:!0,forced:o.setTimeout!==r},{setTimeout:r})},71678:(t,e,n)=>{"use strict";var i,o=n(96395),r=n(46518),s=n(44576),a=n(97751),c=n(79504),l=n(79039),u=n(33392),h=n(94901),d=n(33517),p=n(64117),A=n(20034),f=n(10757),g=n(72652),m=n(28551),b=n(36955),v=n(39297),C=n(97040),x=n(66699),w=n(26198),y=n(22812),k=n(61034),B=n(72248),E=n(94402),_=n(38469),I=n(94483),D=n(24659),S=n(1548),T=s.Object,O=s.Array,M=s.Date,P=s.Error,R=s.TypeError,N=s.PerformanceMark,H=a("DOMException"),z=B.Map,L=B.has,F=B.get,j=B.set,U=E.Set,W=E.add,Y=E.has,q=a("Object","keys"),Q=c([].push),G=c((!0).valueOf),X=c(1..valueOf),V=c("".valueOf),K=c(M.prototype.getTime),J=u("structuredClone"),Z="DataCloneError",$="Transferring",tt=function(t){return!l((function(){var e=new s.Set([7]),n=t(e),i=t(T(7));return n===e||!n.has(7)||!A(i)||7!=+i}))&&t},et=function(t,e){return!l((function(){var n=new e,i=t({a:n,b:n});return!(i&&i.a===i.b&&i.a instanceof e&&i.a.stack===n.stack)}))},nt=s.structuredClone,it=o||!et(nt,P)||!et(nt,H)||(i=nt,!!l((function(){var t=i(new s.AggregateError([1],J,{cause:3}));return"AggregateError"!==t.name||1!==t.errors[0]||t.message!==J||3!==t.cause}))),ot=!nt&&tt((function(t){return new N(J,{detail:t}).detail})),rt=tt(nt)||ot,st=function(t){throw new H("Uncloneable type: "+t,Z)},at=function(t,e){throw new H((e||"Cloning")+" of "+t+" cannot be properly polyfilled in this engine",Z)},ct=function(t,e){return rt||at(e),rt(t)},lt=function(t,e,n){if(L(e,t))return F(e,t);var i,o,r,a,c,l;if("SharedArrayBuffer"===(n||b(t)))i=rt?rt(t):t;else{var u=s.DataView;u||h(t.slice)||at("ArrayBuffer");try{if(h(t.slice)&&!t.resizable)i=t.slice(0);else{o=t.byteLength,r="maxByteLength"in t?{maxByteLength:t.maxByteLength}:void 0,i=new ArrayBuffer(o,r),a=new u(t),c=new u(i);for(l=0;l1&&!p(arguments[1])?m(arguments[1]):void 0,o=i?i.transfer:void 0;void 0!==o&&(n=function(t,e){if(!A(t))throw new R("Transfer option cannot be converted to a sequence");var n=[];g(t,(function(t){Q(n,m(t))}));for(var i,o,r,a,c,l=0,u=w(n),p=new U;l{"use strict";n(15575),n(24599)},98406:(t,e,n)=>{"use strict";n(23792),n(27337);var i=n(46518),o=n(44576),r=n(93389),s=n(97751),a=n(69565),c=n(79504),l=n(43724),u=n(67416),h=n(36840),d=n(62106),p=n(56279),A=n(10687),f=n(33994),g=n(91181),m=n(90679),b=n(94901),v=n(39297),C=n(76080),x=n(36955),w=n(28551),y=n(20034),k=n(655),B=n(2360),E=n(6980),_=n(70081),I=n(50851),D=n(62529),S=n(22812),T=n(78227),O=n(74488),M=T("iterator"),P="URLSearchParams",R=P+"Iterator",N=g.set,H=g.getterFor(P),z=g.getterFor(R),L=r("fetch"),F=r("Request"),j=r("Headers"),U=F&&F.prototype,W=j&&j.prototype,Y=o.TypeError,q=o.encodeURIComponent,Q=String.fromCharCode,G=s("String","fromCodePoint"),X=parseInt,V=c("".charAt),K=c([].join),J=c([].push),Z=c("".replace),$=c([].shift),tt=c([].splice),et=c("".split),nt=c("".slice),it=c(/./.exec),ot=/\+/g,rt=/^[0-9a-f]+$/i,st=function(t,e){var n=nt(t,e,e+2);return it(rt,n)?X(n,16):NaN},at=function(t){for(var e=0,n=128;n>0&&t&n;n>>=1)e++;return e},ct=function(t){var e=null;switch(t.length){case 1:e=t[0];break;case 2:e=(31&t[0])<<6|63&t[1];break;case 3:e=(15&t[0])<<12|(63&t[1])<<6|63&t[2];break;case 4:e=(7&t[0])<<18|(63&t[1])<<12|(63&t[2])<<6|63&t[3]}return e>1114111?null:e},lt=function(t){for(var e=(t=Z(t,ot," ")).length,n="",i=0;ie){n+="%",i++;continue}var r=st(t,i+1);if(r!=r){n+=o,i++;continue}i+=2;var s=at(r);if(0===s)o=Q(r);else{if(1===s||s>4){n+="�",i++;continue}for(var a=[r],c=1;ce||"%"!==V(t,i));){var l=st(t,i+1);if(l!=l){i+=3;break}if(l>191||l<128)break;J(a,l),i+=2,c++}if(a.length!==s){n+="�";continue}var u=ct(a);null===u?n+="�":o=G(u)}}n+=o,i++}return n},ut=/[!'()~]|%20/g,ht={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+"},dt=function(t){return ht[t]},pt=function(t){return Z(q(t),ut,dt)},At=f((function(t,e){N(this,{type:R,target:H(t).entries,index:0,kind:e})}),P,(function(){var t=z(this),e=t.target,n=t.index++;if(!e||n>=e.length)return t.target=null,D(void 0,!0);var i=e[n];switch(t.kind){case"keys":return D(i.key,!1);case"values":return D(i.value,!1)}return D([i.key,i.value],!1)}),!0),ft=function(t){this.entries=[],this.url=null,void 0!==t&&(y(t)?this.parseObject(t):this.parseQuery("string"==typeof t?"?"===V(t,0)?nt(t,1):t:k(t)))};ft.prototype={type:P,bindURL:function(t){this.url=t,this.update()},parseObject:function(t){var e,n,i,o,r,s,c,l=this.entries,u=I(t);if(u)for(n=(e=_(t,u)).next;!(i=a(n,e)).done;){if(r=(o=_(w(i.value))).next,(s=a(r,o)).done||(c=a(r,o)).done||!a(r,o).done)throw new Y("Expected sequence with length 2");J(l,{key:k(s.value),value:k(c.value)})}else for(var h in t)v(t,h)&&J(l,{key:h,value:k(t[h])})},parseQuery:function(t){if(t)for(var e,n,i=this.entries,o=et(t,"&"),r=0;r0?arguments[0]:void 0));l||(this.size=t.entries.length)},mt=gt.prototype;if(p(mt,{append:function(t,e){var n=H(this);S(arguments.length,2),J(n.entries,{key:k(t),value:k(e)}),l||this.length++,n.updateURL()},delete:function(t){for(var e=H(this),n=S(arguments.length,1),i=e.entries,o=k(t),r=n<2?void 0:arguments[1],s=void 0===r?r:k(r),a=0;ae.key?1:-1})),t.updateURL()},forEach:function(t){for(var e,n=H(this).entries,i=C(t,arguments.length>1?arguments[1]:void 0),o=0;o1?Ct(arguments[1]):{})}}),b(F)){var xt=function(t){return m(this,U),new F(t,arguments.length>1?Ct(arguments[1]):{})};U.constructor=xt,xt.prototype=U,i({global:!0,constructor:!0,dontCallGetSet:!0,forced:!0},{Request:xt})}}t.exports={URLSearchParams:gt,getState:H}},14603:(t,e,n)=>{"use strict";var i=n(36840),o=n(79504),r=n(655),s=n(22812),a=URLSearchParams,c=a.prototype,l=o(c.append),u=o(c.delete),h=o(c.forEach),d=o([].push),p=new a("a=1&a=2&b=3");p.delete("a",1),p.delete("b",void 0),p+""!="a=2"&&i(c,"delete",(function(t){var e=arguments.length,n=e<2?void 0:arguments[1];if(e&&void 0===n)return u(this,t);var i=[];h(this,(function(t,e){d(i,{key:e,value:t})})),s(e,1);for(var o,a=r(t),c=r(n),p=0,A=0,f=!1,g=i.length;p{"use strict";var i=n(36840),o=n(79504),r=n(655),s=n(22812),a=URLSearchParams,c=a.prototype,l=o(c.getAll),u=o(c.has),h=new a("a=1");!h.has("a",2)&&h.has("a",void 0)||i(c,"has",(function(t){var e=arguments.length,n=e<2?void 0:arguments[1];if(e&&void 0===n)return u(this,t);var i=l(this,t);s(e,1);for(var o=r(n),a=0;a{"use strict";n(98406)},98721:(t,e,n)=>{"use strict";var i=n(43724),o=n(79504),r=n(62106),s=URLSearchParams.prototype,a=o(s.forEach);i&&!("size"in s)&&r(s,"size",{get:function(){var t=0;return a(this,(function(){t++})),t},configurable:!0,enumerable:!0})},2222:(t,e,n)=>{"use strict";var i=n(46518),o=n(97751),r=n(79039),s=n(22812),a=n(655),c=n(67416),l=o("URL"),u=c&&r((function(){l.canParse()})),h=r((function(){return 1!==l.canParse.length}));i({target:"URL",stat:!0,forced:!u||h},{canParse:function(t){var e=s(arguments.length,1),n=a(t),i=e<2||void 0===arguments[1]?void 0:a(arguments[1]);try{return!!new l(n,i)}catch(t){return!1}}})},45806:(t,e,n)=>{"use strict";n(47764);var i,o=n(46518),r=n(43724),s=n(67416),a=n(44576),c=n(76080),l=n(79504),u=n(36840),h=n(62106),d=n(90679),p=n(39297),A=n(44213),f=n(97916),g=n(67680),m=n(68183).codeAt,b=n(3717),v=n(655),C=n(10687),x=n(22812),w=n(98406),y=n(91181),k=y.set,B=y.getterFor("URL"),E=w.URLSearchParams,_=w.getState,I=a.URL,D=a.TypeError,S=a.parseInt,T=Math.floor,O=Math.pow,M=l("".charAt),P=l(/./.exec),R=l([].join),N=l(1..toString),H=l([].pop),z=l([].push),L=l("".replace),F=l([].shift),j=l("".split),U=l("".slice),W=l("".toLowerCase),Y=l([].unshift),q="Invalid scheme",Q="Invalid host",G="Invalid port",X=/[a-z]/i,V=/[\d+-.a-z]/i,K=/\d/,J=/^0x/i,Z=/^[0-7]+$/,$=/^\d+$/,tt=/^[\da-f]+$/i,et=/[\0\t\n\r #%/:<>?@[\\\]^|]/,nt=/[\0\t\n\r #/:<>?@[\\\]^|]/,it=/^[\u0000-\u0020]+/,ot=/(^|[^\u0000-\u0020])[\u0000-\u0020]+$/,rt=/[\t\n\r]/g,st=function(t){var e,n,i,o;if("number"==typeof t){for(e=[],n=0;n<4;n++)Y(e,t%256),t=T(t/256);return R(e,".")}if("object"==typeof t){for(e="",i=function(t){for(var e=null,n=1,i=null,o=0,r=0;r<8;r++)0!==t[r]?(o>n&&(e=i,n=o),i=null,o=0):(null===i&&(i=r),++o);return o>n?i:e}(t),n=0;n<8;n++)o&&0===t[n]||(o&&(o=!1),i===n?(e+=n?":":"::",o=!0):(e+=N(t[n],16),n<7&&(e+=":")));return"["+e+"]"}return t},at={},ct=A({},at,{" ":1,'"':1,"<":1,">":1,"`":1}),lt=A({},ct,{"#":1,"?":1,"{":1,"}":1}),ut=A({},lt,{"/":1,":":1,";":1,"=":1,"@":1,"[":1,"\\":1,"]":1,"^":1,"|":1}),ht=function(t,e){var n=m(t,0);return n>32&&n<127&&!p(e,t)?t:encodeURIComponent(t)},dt={ftp:21,file:null,http:80,https:443,ws:80,wss:443},pt=function(t,e){var n;return 2===t.length&&P(X,M(t,0))&&(":"===(n=M(t,1))||!e&&"|"===n)},At=function(t){var e;return t.length>1&&pt(U(t,0,2))&&(2===t.length||"/"===(e=M(t,2))||"\\"===e||"?"===e||"#"===e)},ft=function(t){return"."===t||"%2e"===W(t)},gt={},mt={},bt={},vt={},Ct={},xt={},wt={},yt={},kt={},Bt={},Et={},_t={},It={},Dt={},St={},Tt={},Ot={},Mt={},Pt={},Rt={},Nt={},Ht=function(t,e,n){var i,o,r,s=v(t);if(e){if(o=this.parse(s))throw new D(o);this.searchParams=null}else{if(void 0!==n&&(i=new Ht(n,!0)),o=this.parse(s,null,i))throw new D(o);(r=_(new E)).bindURL(this),this.searchParams=r}};Ht.prototype={type:"URL",parse:function(t,e,n){var o,r,s,a,c,l=this,u=e||gt,h=0,d="",A=!1,m=!1,b=!1;for(t=v(t),e||(l.scheme="",l.username="",l.password="",l.host=null,l.port=null,l.path=[],l.query=null,l.fragment=null,l.cannotBeABaseURL=!1,t=L(t,it,""),t=L(t,ot,"$1")),t=L(t,rt,""),o=f(t);h<=o.length;){switch(r=o[h],u){case gt:if(!r||!P(X,r)){if(e)return q;u=bt;continue}d+=W(r),u=mt;break;case mt:if(r&&(P(V,r)||"+"===r||"-"===r||"."===r))d+=W(r);else{if(":"!==r){if(e)return q;d="",u=bt,h=0;continue}if(e&&(l.isSpecial()!==p(dt,d)||"file"===d&&(l.includesCredentials()||null!==l.port)||"file"===l.scheme&&!l.host))return;if(l.scheme=d,e)return void(l.isSpecial()&&dt[l.scheme]===l.port&&(l.port=null));d="","file"===l.scheme?u=Dt:l.isSpecial()&&n&&n.scheme===l.scheme?u=vt:l.isSpecial()?u=yt:"/"===o[h+1]?(u=Ct,h++):(l.cannotBeABaseURL=!0,z(l.path,""),u=Pt)}break;case bt:if(!n||n.cannotBeABaseURL&&"#"!==r)return q;if(n.cannotBeABaseURL&&"#"===r){l.scheme=n.scheme,l.path=g(n.path),l.query=n.query,l.fragment="",l.cannotBeABaseURL=!0,u=Nt;break}u="file"===n.scheme?Dt:xt;continue;case vt:if("/"!==r||"/"!==o[h+1]){u=xt;continue}u=kt,h++;break;case Ct:if("/"===r){u=Bt;break}u=Mt;continue;case xt:if(l.scheme=n.scheme,r===i)l.username=n.username,l.password=n.password,l.host=n.host,l.port=n.port,l.path=g(n.path),l.query=n.query;else if("/"===r||"\\"===r&&l.isSpecial())u=wt;else if("?"===r)l.username=n.username,l.password=n.password,l.host=n.host,l.port=n.port,l.path=g(n.path),l.query="",u=Rt;else{if("#"!==r){l.username=n.username,l.password=n.password,l.host=n.host,l.port=n.port,l.path=g(n.path),l.path.length--,u=Mt;continue}l.username=n.username,l.password=n.password,l.host=n.host,l.port=n.port,l.path=g(n.path),l.query=n.query,l.fragment="",u=Nt}break;case wt:if(!l.isSpecial()||"/"!==r&&"\\"!==r){if("/"!==r){l.username=n.username,l.password=n.password,l.host=n.host,l.port=n.port,u=Mt;continue}u=Bt}else u=kt;break;case yt:if(u=kt,"/"!==r||"/"!==M(d,h+1))continue;h++;break;case kt:if("/"!==r&&"\\"!==r){u=Bt;continue}break;case Bt:if("@"===r){A&&(d="%40"+d),A=!0,s=f(d);for(var C=0;C65535)return G;l.port=l.isSpecial()&&y===dt[l.scheme]?null:y,d=""}if(e)return;u=Ot;continue}return G}d+=r;break;case Dt:if(l.scheme="file","/"===r||"\\"===r)u=St;else{if(!n||"file"!==n.scheme){u=Mt;continue}switch(r){case i:l.host=n.host,l.path=g(n.path),l.query=n.query;break;case"?":l.host=n.host,l.path=g(n.path),l.query="",u=Rt;break;case"#":l.host=n.host,l.path=g(n.path),l.query=n.query,l.fragment="",u=Nt;break;default:At(R(g(o,h),""))||(l.host=n.host,l.path=g(n.path),l.shortenPath()),u=Mt;continue}}break;case St:if("/"===r||"\\"===r){u=Tt;break}n&&"file"===n.scheme&&!At(R(g(o,h),""))&&(pt(n.path[0],!0)?z(l.path,n.path[0]):l.host=n.host),u=Mt;continue;case Tt:if(r===i||"/"===r||"\\"===r||"?"===r||"#"===r){if(!e&&pt(d))u=Mt;else if(""===d){if(l.host="",e)return;u=Ot}else{if(a=l.parseHost(d))return a;if("localhost"===l.host&&(l.host=""),e)return;d="",u=Ot}continue}d+=r;break;case Ot:if(l.isSpecial()){if(u=Mt,"/"!==r&&"\\"!==r)continue}else if(e||"?"!==r)if(e||"#"!==r){if(r!==i&&(u=Mt,"/"!==r))continue}else l.fragment="",u=Nt;else l.query="",u=Rt;break;case Mt:if(r===i||"/"===r||"\\"===r&&l.isSpecial()||!e&&("?"===r||"#"===r)){if(".."===(c=W(c=d))||"%2e."===c||".%2e"===c||"%2e%2e"===c?(l.shortenPath(),"/"===r||"\\"===r&&l.isSpecial()||z(l.path,"")):ft(d)?"/"===r||"\\"===r&&l.isSpecial()||z(l.path,""):("file"===l.scheme&&!l.path.length&&pt(d)&&(l.host&&(l.host=""),d=M(d,0)+":"),z(l.path,d)),d="","file"===l.scheme&&(r===i||"?"===r||"#"===r))for(;l.path.length>1&&""===l.path[0];)F(l.path);"?"===r?(l.query="",u=Rt):"#"===r&&(l.fragment="",u=Nt)}else d+=ht(r,lt);break;case Pt:"?"===r?(l.query="",u=Rt):"#"===r?(l.fragment="",u=Nt):r!==i&&(l.path[0]+=ht(r,at));break;case Rt:e||"#"!==r?r!==i&&("'"===r&&l.isSpecial()?l.query+="%27":l.query+="#"===r?"%23":ht(r,at)):(l.fragment="",u=Nt);break;case Nt:r!==i&&(l.fragment+=ht(r,ct))}h++}},parseHost:function(t){var e,n,i;if("["===M(t,0)){if("]"!==M(t,t.length-1))return Q;if(e=function(t){var e,n,i,o,r,s,a,c=[0,0,0,0,0,0,0,0],l=0,u=null,h=0,d=function(){return M(t,h)};if(":"===d()){if(":"!==M(t,1))return;h+=2,u=++l}for(;d();){if(8===l)return;if(":"!==d()){for(e=n=0;n<4&&P(tt,d());)e=16*e+S(d(),16),h++,n++;if("."===d()){if(0===n)return;if(h-=n,l>6)return;for(i=0;d();){if(o=null,i>0){if(!("."===d()&&i<4))return;h++}if(!P(K,d()))return;for(;P(K,d());){if(r=S(d(),10),null===o)o=r;else{if(0===o)return;o=10*o+r}if(o>255)return;h++}c[l]=256*c[l]+o,2!=++i&&4!==i||l++}if(4!==i)return;break}if(":"===d()){if(h++,!d())return}else if(d())return;c[l++]=e}else{if(null!==u)return;h++,u=++l}}if(null!==u)for(s=l-u,l=7;0!==l&&s>0;)a=c[l],c[l--]=c[u+s-1],c[u+--s]=a;else if(8!==l)return;return c}(U(t,1,-1)),!e)return Q;this.host=e}else if(this.isSpecial()){if(t=b(t),P(et,t))return Q;if(e=function(t){var e,n,i,o,r,s,a,c=j(t,".");if(c.length&&""===c[c.length-1]&&c.length--,(e=c.length)>4)return t;for(n=[],i=0;i1&&"0"===M(o,0)&&(r=P(J,o)?16:8,o=U(o,8===r?1:2)),""===o)s=0;else{if(!P(10===r?$:8===r?Z:tt,o))return t;s=S(o,r)}z(n,s)}for(i=0;i=O(256,5-e))return null}else if(s>255)return null;for(a=H(n),i=0;i1?arguments[1]:void 0,i=k(e,new Ht(t,!1,n));r||(e.href=i.serialize(),e.origin=i.getOrigin(),e.protocol=i.getProtocol(),e.username=i.getUsername(),e.password=i.getPassword(),e.host=i.getHost(),e.hostname=i.getHostname(),e.port=i.getPort(),e.pathname=i.getPathname(),e.search=i.getSearch(),e.searchParams=i.getSearchParams(),e.hash=i.getHash())},Lt=zt.prototype,Ft=function(t,e){return{get:function(){return B(this)[t]()},set:e&&function(t){return B(this)[e](t)},configurable:!0,enumerable:!0}};if(r&&(h(Lt,"href",Ft("serialize","setHref")),h(Lt,"origin",Ft("getOrigin")),h(Lt,"protocol",Ft("getProtocol","setProtocol")),h(Lt,"username",Ft("getUsername","setUsername")),h(Lt,"password",Ft("getPassword","setPassword")),h(Lt,"host",Ft("getHost","setHost")),h(Lt,"hostname",Ft("getHostname","setHostname")),h(Lt,"port",Ft("getPort","setPort")),h(Lt,"pathname",Ft("getPathname","setPathname")),h(Lt,"search",Ft("getSearch","setSearch")),h(Lt,"searchParams",Ft("getSearchParams")),h(Lt,"hash",Ft("getHash","setHash"))),u(Lt,"toJSON",(function(){return B(this).serialize()}),{enumerable:!0}),u(Lt,"toString",(function(){return B(this).serialize()}),{enumerable:!0}),I){var jt=I.createObjectURL,Ut=I.revokeObjectURL;jt&&u(zt,"createObjectURL",c(jt,I)),Ut&&u(zt,"revokeObjectURL",c(Ut,I))}C(zt,"URL"),o({global:!0,constructor:!0,forced:!s,sham:!r},{URL:zt})},3296:(t,e,n)=>{"use strict";n(45806)},45781:(t,e,n)=>{"use strict";var i=n(46518),o=n(97751),r=n(22812),s=n(655),a=n(67416),c=o("URL");i({target:"URL",stat:!0,forced:!a},{parse:function(t){var e=r(arguments.length,1),n=s(t),i=e<2||void 0===arguments[1]?void 0:s(arguments[1]);try{return new c(n,i)}catch(t){return null}}})},27208:(t,e,n)=>{"use strict";var i=n(46518),o=n(69565);i({target:"URL",proto:!0,enumerable:!0},{toJSON:function(){return o(URL.prototype.toString,this)}})},84315:(t,e,n)=>{"use strict";n(52675),n(89463),n(66412),n(60193),n(92168),n(2259),n(86964),n(83142),n(83237),n(61833),n(67947),n(31073),n(45700),n(78125),n(20326),n(16280),n(76918),n(30067),n(4294),n(18107),n(28706),n(26835),n(88431),n(33771),n(2008),n(50113),n(48980),n(10838),n(13451),n(46449),n(78350),n(51629),n(23418),n(74423),n(25276),n(64346),n(23792),n(48598),n(8921),n(62062),n(31051),n(44114),n(72712),n(18863),n(94490),n(34782),n(15086),n(26910),n(87478),n(54554),n(9678),n(57145),n(71658),n(93514),n(30237),n(13609),n(11558),n(54743),n(46761),n(11745),n(38309),n(16573),n(78100),n(77936),n(61699),n(59089),n(91191),n(93515),n(1688),n(60739),n(89572),n(23288),n(36456),n(94170),n(48957),n(62010),n(55081),n(33110),n(4731),n(36033),n(47072),n(93153),n(82326),n(36389),n(64444),n(8085),n(77762),n(65070),n(60605),n(39469),n(72152),n(75376),n(56624),n(11367),n(5914),n(78553),n(98690),n(60479),n(70761),n(2892),n(45374),n(25428),n(32637),n(40150),n(59149),n(64601),n(44435),n(87220),n(25843),n(62337),n(9868),n(80630),n(69085),n(59904),n(17427),n(67945),n(84185),n(87607),n(5506),n(52811),n(53921),n(83851),n(81278),n(1480),n(40875),n(77691),n(78347),n(29908),n(94052),n(94003),n(221),n(79432),n(9220),n(7904),n(16348),n(63548),n(93941),n(10287),n(26099),n(16034),n(78459),n(58940),n(3362),n(96167),n(93518),n(9391),n(14628),n(39796),n(60825),n(87411),n(21211),n(40888),n(9065),n(86565),n(32812),n(84634),n(71137),n(30985),n(34268),n(34873),n(15472),n(84864),n(57465),n(27495),n(69479),n(87745),n(90906),n(38781),n(31415),n(17642),n(58004),n(33853),n(45876),n(32475),n(15024),n(31698),n(67357),n(23860),n(21830),n(27337),n(21699),n(42043),n(47764),n(71761),n(28543),n(35701),n(68156),n(85906),n(42781),n(25440),n(79978),n(5746),n(90744),n(11392),n(50375),n(67438),n(42762),n(39202),n(43359),n(89907),n(11898),n(35490),n(5745),n(94298),n(60268),n(69546),n(20781),n(50778),n(89195),n(46276),n(48718),n(16308),n(34594),n(29833),n(46594),n(72107),n(95477),n(21489),n(22134),n(3690),n(61740),n(48140),n(81630),n(72170),n(75044),n(69539),n(31694),n(89955),n(21903),n(91134),n(33206),n(48345),n(44496),n(66651),n(12887),n(19369),n(66812),n(8995),n(52568),n(31575),n(36072),n(88747),n(28845),n(29423),n(57301),n(373),n(86614),n(41405),n(37467),n(44732),n(33684),n(79577),n(88267),n(73772),n(30958),n(2945),n(42207),n(23500),n(62953),n(55815),n(64979),n(79739),n(59848),n(122),n(13611),n(71678),n(76031),n(3296),n(2222),n(45781),n(27208),n(48408),n(14603),n(47566),n(98721),n(19167)},35810:(t,e,n)=>{"use strict";n.d(e,{Al:()=>P,H4:()=>O,Q$:()=>M,R3:()=>w,VL:()=>x,lJ:()=>S,pt:()=>y,ur:()=>L,v7:()=>H});var i=n(35947),o=n(21777),r=n(43627),s=n(71225),a=n(63814),c=n(36117),l=n(44719),u=n(82680),h=(n(87485),n(53334)),d=n(380),p=n(65606),A=n(96763);const f=(0,i.YK)().setApp("@nextcloud/files").detectUser().build();var g=(t=>(t[t.NONE=0]="NONE",t[t.CREATE=4]="CREATE",t[t.READ=1]="READ",t[t.UPDATE=2]="UPDATE",t[t.DELETE=8]="DELETE",t[t.SHARE=16]="SHARE",t[t.ALL=31]="ALL",t))(g||{});const m=["d:getcontentlength","d:getcontenttype","d:getetag","d:getlastmodified","d:creationdate","d:displayname","d:quota-available-bytes","d:resourcetype","nc:has-preview","nc:is-encrypted","nc:mount-type","oc:comments-unread","oc:favorite","oc:fileid","oc:owner-display-name","oc:owner-id","oc:permissions","oc:size"],b={d:"DAV:",nc:"http://nextcloud.org/ns",oc:"http://owncloud.org/ns",ocs:"http://open-collaboration-services.org/ns"},v=function(){return void 0===window._nc_dav_properties&&(window._nc_dav_properties=[...m]),window._nc_dav_properties.map((t=>`<${t} />`)).join(" ")},C=function(){return void 0===window._nc_dav_namespaces&&(window._nc_dav_namespaces={...b}),Object.keys(window._nc_dav_namespaces).map((t=>`xmlns:${t}="${window._nc_dav_namespaces?.[t]}"`)).join(" ")},x=function(){return`\n\t\t\n\t\t\t\n\t\t\t\t${v()}\n\t\t\t\n\t\t`},w=function(t){return`\n\n\t\n\t\t\n\t\t\t\n\t\t\t\t${v()}\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t/files/${(0,o.HW)()?.uid}/\n\t\t\t\tinfinity\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\thttpd/unix-directory\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t0\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t${t}\n\t\t\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t100\n\t\t\t0\n\t\t\n\t\n`};var y=(t=>(t.Folder="folder",t.File="file",t))(y||{});const k=function(t,e){return null!==t.match(e)},B=(t,e)=>{if(t.id&&"number"!=typeof t.id)throw new Error("Invalid id type of value");if(!t.source)throw new Error("Missing mandatory source");try{new URL(t.source)}catch(t){throw new Error("Invalid source format, source must be a valid URL")}if(!t.source.startsWith("http"))throw new Error("Invalid source format, only http(s) is supported");if(t.displayname&&"string"!=typeof t.displayname)throw new Error("Invalid displayname type");if(t.mtime&&!(t.mtime instanceof Date))throw new Error("Invalid mtime type");if(t.crtime&&!(t.crtime instanceof Date))throw new Error("Invalid crtime type");if(!t.mime||"string"!=typeof t.mime||!t.mime.match(/^[-\w.]+\/[-+\w.]+$/gi))throw new Error("Missing or invalid mandatory mime");if("size"in t&&"number"!=typeof t.size&&void 0!==t.size)throw new Error("Invalid size type");if("permissions"in t&&void 0!==t.permissions&&!("number"==typeof t.permissions&&t.permissions>=g.NONE&&t.permissions<=g.ALL))throw new Error("Invalid permissions");if(t.owner&&null!==t.owner&&"string"!=typeof t.owner)throw new Error("Invalid owner type");if(t.attributes&&"object"!=typeof t.attributes)throw new Error("Invalid attributes type");if(t.root&&"string"!=typeof t.root)throw new Error("Invalid root type");if(t.root&&!t.root.startsWith("/"))throw new Error("Root must start with a leading slash");if(t.root&&!t.source.includes(t.root))throw new Error("Root must be part of the source");if(t.root&&k(t.source,e)){const n=t.source.match(e)[0];if(!t.source.includes((0,r.join)(n,t.root)))throw new Error("The root must be relative to the service. e.g /files/emma")}if(t.status&&!Object.values(E).includes(t.status))throw new Error("Status must be a valid NodeStatus")};var E=(t=>(t.NEW="new",t.FAILED="failed",t.LOADING="loading",t.LOCKED="locked",t))(E||{});class _{_data;_attributes;_knownDavService=/(remote|public)\.php\/(web)?dav/i;readonlyAttributes=Object.entries(Object.getOwnPropertyDescriptors(_.prototype)).filter((t=>"function"==typeof t[1].get&&"__proto__"!==t[0])).map((t=>t[0]));handler={set:(t,e,n)=>!this.readonlyAttributes.includes(e)&&Reflect.set(t,e,n),deleteProperty:(t,e)=>!this.readonlyAttributes.includes(e)&&Reflect.deleteProperty(t,e),get:(t,e,n)=>this.readonlyAttributes.includes(e)?(f.warn(`Accessing "Node.attributes.${e}" is deprecated, access it directly on the Node instance.`),Reflect.get(this,e)):Reflect.get(t,e,n)};constructor(t,e){B(t,e||this._knownDavService),this._data={displayname:t.attributes?.displayname,...t,attributes:{}},this._attributes=new Proxy(this._data.attributes,this.handler),this.update(t.attributes??{}),e&&(this._knownDavService=e)}get source(){return this._data.source.replace(/\/$/i,"")}get encodedSource(){const{origin:t}=new URL(this.source);return t+(0,s.O0)(this.source.slice(t.length))}get basename(){return(0,r.basename)(this.source)}get displayname(){return this._data.displayname||this.basename}set displayname(t){this._data.displayname=t}get extension(){return(0,r.extname)(this.source)}get dirname(){if(this.root){let t=this.source;this.isDavRessource&&(t=t.split(this._knownDavService).pop());const e=t.indexOf(this.root),n=this.root.replace(/\/$/,"");return(0,r.dirname)(t.slice(e+n.length)||"/")}const t=new URL(this.source);return(0,r.dirname)(t.pathname)}get mime(){return this._data.mime}get mtime(){return this._data.mtime}set mtime(t){this._data.mtime=t}get crtime(){return this._data.crtime}get size(){return this._data.size}set size(t){this.updateMtime(),this._data.size=t}get attributes(){return this._attributes}get permissions(){return null!==this.owner||this.isDavRessource?void 0!==this._data.permissions?this._data.permissions:g.NONE:g.READ}set permissions(t){this.updateMtime(),this._data.permissions=t}get owner(){return this.isDavRessource?this._data.owner:null}get isDavRessource(){return k(this.source,this._knownDavService)}get root(){return this._data.root?this._data.root.replace(/^(.+)\/$/,"$1"):this.isDavRessource&&(0,r.dirname)(this.source).split(this._knownDavService).pop()||null}get path(){if(this.root){let t=this.source;this.isDavRessource&&(t=t.split(this._knownDavService).pop());const e=t.indexOf(this.root),n=this.root.replace(/\/$/,"");return t.slice(e+n.length)||"/"}return(this.dirname+"/"+this.basename).replace(/\/\//g,"/")}get fileid(){return this._data?.id}get status(){return this._data?.status}set status(t){this._data.status=t}move(t){B({...this._data,source:t},this._knownDavService);const e=this.basename;this._data.source=t,this.displayname===e&&this.basename!==e&&(this.displayname=this.basename),this.updateMtime()}rename(t){if(t.includes("/"))throw new Error("Invalid basename");this.move((0,r.dirname)(this.source)+"/"+t)}updateMtime(){this._data.mtime&&(this._data.mtime=new Date)}update(t){for(const[e,n]of Object.entries(t))try{void 0===n?delete this.attributes[e]:this.attributes[e]=n}catch(t){if(t instanceof TypeError)continue;throw t}}}class I extends _{get type(){return y.File}}class D extends _{constructor(t){super({...t,mime:"httpd/unix-directory"})}get type(){return y.Folder}get extension(){return null}get mime(){return"httpd/unix-directory"}}const S=(0,u.f)()?`/files/${(0,u.G)()}`:`/files/${(0,o.HW)()?.uid}`,T=function(){const t=(0,a.dC)("dav");return(0,u.f)()?t.replace("remote.php","public.php"):t}(),O=function(t=T,e={}){const n=(0,l.UU)(t,{headers:e});function i(t){n.setHeaders({...e,"X-Requested-With":"XMLHttpRequest",requesttoken:t??""})}return(0,o.zo)(i),i((0,o.do)()),(0,l.Gu)().patch("fetch",((t,e)=>{const n=e.headers;return n?.method&&(e.method=n.method,delete n.method),fetch(t,e)})),n},M=(t,e="/",n=S)=>{const i=new AbortController;return new c.CancelablePromise((async(o,r,s)=>{s((()=>i.abort()));try{o((await t.getDirectoryContents(`${n}${e}`,{signal:i.signal,details:!0,data:`\n\t\t\n\t\t\t\n\t\t\t\t${v()}\n\t\t\t\n\t\t\t\n\t\t\t\t1\n\t\t\t\n\t\t`,headers:{method:"REPORT"},includeSelf:!0})).data.filter((t=>t.filename!==e)).map((t=>P(t,n))))}catch(t){r(t)}}))},P=function(t,e=S,n=T){let i=(0,o.HW)()?.uid;if((0,u.f)())i=i??"anonymous";else if(!i)throw new Error("No user id found");const r=t.props,s=function(t=""){let e=g.NONE;return t?((t.includes("C")||t.includes("K"))&&(e|=g.CREATE),t.includes("G")&&(e|=g.READ),(t.includes("W")||t.includes("N")||t.includes("V"))&&(e|=g.UPDATE),t.includes("D")&&(e|=g.DELETE),t.includes("R")&&(e|=g.SHARE),e):e}(r?.permissions),a=String(r?.["owner-id"]||i),c=r.fileid||0,l={id:c,source:`${n}${t.filename}`,mtime:new Date(Date.parse(t.lastmod)),mime:t.mime||"application/octet-stream",displayname:void 0!==r.displayname?String(r.displayname):void 0,size:r?.size||Number.parseInt(r.getcontentlength||"0"),status:c<0?E.FAILED:void 0,permissions:s,owner:a,root:e,attributes:{...t,...r,hasPreview:r?.["has-preview"]}};return delete l.attributes?.props,"file"===t.type?new I(l):new D(l)};Error;const R=["B","KB","MB","GB","TB","PB"],N=["B","KiB","MiB","GiB","TiB","PiB"];function H(t,e=!1,n=!1,i=!1){n=n&&!i,"string"==typeof t&&(t=Number(t));let o=t>0?Math.floor(Math.log(t)/Math.log(i?1e3:1024)):0;o=Math.min((n?N.length:R.length)-1,o);const r=n?N[o]:R[o];let s=(t/Math.pow(i?1e3:1024,o)).toFixed(1);return!0===e&&0===o?("0.0"!==s?"< 1 ":"0 ")+(n?N[1]:R[1]):(s=o<2?parseFloat(s).toFixed(0):parseFloat(s).toLocaleString((0,h.lO)()),s+" "+r)}function z(t){return t instanceof Date?t.toISOString():String(t)}function L(t,e={}){const n={sortingMode:"basename",sortingOrder:"asc",...e};return function(t,e,n){n=n??[];const i=(e=e??[t=>t]).map(((t,e)=>"asc"===(n[e]??"asc")?1:-1)),o=Intl.Collator([(0,h.Z0)(),(0,h.lO)()],{numeric:!0,usage:"sort"});return[...t].sort(((t,n)=>{for(const[r,s]of e.entries()){const e=o.compare(z(s(t)),z(s(n)));if(0!==e)return e*i[r]}return 0}))}(t,[...n.sortFavoritesFirst?[t=>1!==t.attributes?.favorite]:[],...n.sortFoldersFirst?[t=>"folder"!==t.type]:[],..."basename"!==n.sortingMode?[t=>t[n.sortingMode]]:[],t=>{return(e=t.attributes?.displayname||t.basename).lastIndexOf(".")>0?e.slice(0,e.lastIndexOf(".")):e;var e},t=>t.basename],[...n.sortFavoritesFirst?["asc"]:[],...n.sortFoldersFirst?["asc"]:[],..."mtime"===n.sortingMode?["asc"===n.sortingOrder?"desc":"asc"]:[],..."mtime"!==n.sortingMode&&"basename"!==n.sortingMode?[n.sortingOrder]:[],n.sortingOrder,n.sortingOrder])}var F={};!function(t){const e=":A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD",n="["+e+"]["+e+"\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*",i=new RegExp("^"+n+"$");t.isExist=function(t){return void 0!==t},t.isEmptyObject=function(t){return 0===Object.keys(t).length},t.merge=function(t,e,n){if(e){const i=Object.keys(e),o=i.length;for(let r=0;r!1,commentPropName:!1,unpairedTags:[],processEntities:!0,htmlEntities:!1,ignoreDeclaration:!1,ignorePiTags:!1,transformTagName:!1,transformAttributeName:!1,updateTag:function(t,e,n){return t}};j.buildOptions=function(t){return Object.assign({},U,t)},j.defaultOptions=U,!Number.parseInt&&window.parseInt&&(Number.parseInt=window.parseInt),!Number.parseFloat&&window.parseFloat&&(Number.parseFloat=window.parseFloat),new RegExp("([^\\s=]+)\\s*(=\\s*(['\"])([\\s\\S]*?)\\3)?","gm");var W={};function Y(t,e,n){let i;const o={};for(let r=0;r0&&(o[e.textNodeName]=i):void 0!==i&&(o[e.textNodeName]=i),o}function q(t){const e=Object.keys(t);for(let t=0;t`,r=!1;continue}if(c===e.commentPropName){o+=i+`\x3c!--${a[c][0][e.textNodeName]}--\x3e`,r=!0;continue}if("?"===c[0]){const t=Z(a[":@"],e),n="?xml"===c?"":i;let s=a[c][0][e.textNodeName];s=0!==s.length?" "+s:"",o+=n+`<${c}${s}${t}?>`,r=!0;continue}let u=i;""!==u&&(u+=e.indentBy);const h=i+`<${c}${Z(a[":@"],e)}`,d=K(a[c],e,l,u);-1!==e.unpairedTags.indexOf(c)?e.suppressUnpairedNode?o+=h+">":o+=h+"/>":d&&0!==d.length||!e.suppressEmptyNode?d&&d.endsWith(">")?o+=h+`>${d}${i}`:(o+=h+">",d&&""!==i&&(d.includes("/>")||d.includes("`):o+=h+"/>",r=!0}return o}function J(t){const e=Object.keys(t);for(let n=0;n0&&e.processEntities)for(let n=0;n0&&(n="\n"),K(t,e,"",n)},nt={attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,cdataPropName:!1,format:!1,indentBy:" ",suppressEmptyNode:!1,suppressUnpairedNode:!0,suppressBooleanAttributes:!0,tagValueProcessor:function(t,e){return e},attributeValueProcessor:function(t,e){return e},preserveOrder:!1,commentPropName:!1,unpairedTags:[],entities:[{regex:new RegExp("&","g"),val:"&"},{regex:new RegExp(">","g"),val:">"},{regex:new RegExp("<","g"),val:"<"},{regex:new RegExp("'","g"),val:"'"},{regex:new RegExp('"',"g"),val:"""}],processEntities:!0,stopNodes:[],oneListGroup:!1};function it(t){this.options=Object.assign({},nt,t),this.options.ignoreAttributes||this.options.attributesGroupName?this.isAttribute=function(){return!1}:(this.attrPrefixLen=this.options.attributeNamePrefix.length,this.isAttribute=st),this.processTextOrObjNode=ot,this.options.format?(this.indentate=rt,this.tagEndChar=">\n",this.newLine="\n"):(this.indentate=function(){return""},this.tagEndChar=">",this.newLine="")}function ot(t,e,n){const i=this.j2x(t,n+1);return void 0!==t[this.options.textNodeName]&&1===Object.keys(t).length?this.buildTextValNode(t[this.options.textNodeName],e,i.attrStr,n):this.buildObjectNode(i.val,e,i.attrStr,n)}function rt(t){return this.options.indentBy.repeat(t)}function st(t){return!(!t.startsWith(this.options.attributeNamePrefix)||t===this.options.textNodeName)&&t.substr(this.attrPrefixLen)}it.prototype.build=function(t){return this.options.preserveOrder?et(t,this.options):(Array.isArray(t)&&this.options.arrayNodeName&&this.options.arrayNodeName.length>1&&(t={[this.options.arrayNodeName]:t}),this.j2x(t,0).val)},it.prototype.j2x=function(t,e){let n="",i="";for(let o in t)if(Object.prototype.hasOwnProperty.call(t,o))if(void 0===t[o])this.isAttribute(o)&&(i+="");else if(null===t[o])this.isAttribute(o)?i+="":"?"===o[0]?i+=this.indentate(e)+"<"+o+"?"+this.tagEndChar:i+=this.indentate(e)+"<"+o+"/"+this.tagEndChar;else if(t[o]instanceof Date)i+=this.buildTextValNode(t[o],o,"",e);else if("object"!=typeof t[o]){const r=this.isAttribute(o);if(r)n+=this.buildAttrPairStr(r,""+t[o]);else if(o===this.options.textNodeName){let e=this.options.tagValueProcessor(o,""+t[o]);i+=this.replaceEntitiesValue(e)}else i+=this.buildTextValNode(t[o],o,"",e)}else if(Array.isArray(t[o])){const n=t[o].length;let r="",s="";for(let a=0;a"+t+o}},it.prototype.closeTag=function(t){let e="";return-1!==this.options.unpairedTags.indexOf(t)?this.options.suppressUnpairedNode||(e="/"):e=this.options.suppressEmptyNode?"/":`>`+this.newLine;if(!1!==this.options.commentPropName&&e===this.options.commentPropName)return this.indentate(i)+`\x3c!--${t}--\x3e`+this.newLine;if("?"===e[0])return this.indentate(i)+"<"+e+n+"?"+this.tagEndChar;{let o=this.options.tagValueProcessor(e,t);return o=this.replaceEntitiesValue(o),""===o?this.indentate(i)+"<"+e+n+this.closeTag(e)+this.tagEndChar:this.indentate(i)+"<"+e+n+">"+o+"0&&this.options.processEntities)for(let e=0;eA.error("SEMVER",...t):()=>{},ct={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:16,MAX_SAFE_BUILD_LENGTH:250,MAX_SAFE_INTEGER:Number.MAX_SAFE_INTEGER||9007199254740991,RELEASE_TYPES:["major","premajor","minor","preminor","patch","prepatch","prerelease"],SEMVER_SPEC_VERSION:"2.0.0",FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2},lt={exports:{}};!function(t,e){const{MAX_SAFE_COMPONENT_LENGTH:n,MAX_SAFE_BUILD_LENGTH:i,MAX_LENGTH:o}=ct,r=at,s=(e=t.exports={}).re=[],a=e.safeRe=[],c=e.src=[],l=e.t={};let u=0;const h="[a-zA-Z0-9-]",d=[["\\s",1],["\\d",o],[h,i]],p=(t,e,n)=>{const i=(t=>{for(const[e,n]of d)t=t.split(`${e}*`).join(`${e}{0,${n}}`).split(`${e}+`).join(`${e}{1,${n}}`);return t})(e),o=u++;r(t,o,e),l[t]=o,c[o]=e,s[o]=new RegExp(e,n?"g":void 0),a[o]=new RegExp(i,n?"g":void 0)};p("NUMERICIDENTIFIER","0|[1-9]\\d*"),p("NUMERICIDENTIFIERLOOSE","\\d+"),p("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${h}*`),p("MAINVERSION",`(${c[l.NUMERICIDENTIFIER]})\\.(${c[l.NUMERICIDENTIFIER]})\\.(${c[l.NUMERICIDENTIFIER]})`),p("MAINVERSIONLOOSE",`(${c[l.NUMERICIDENTIFIERLOOSE]})\\.(${c[l.NUMERICIDENTIFIERLOOSE]})\\.(${c[l.NUMERICIDENTIFIERLOOSE]})`),p("PRERELEASEIDENTIFIER",`(?:${c[l.NUMERICIDENTIFIER]}|${c[l.NONNUMERICIDENTIFIER]})`),p("PRERELEASEIDENTIFIERLOOSE",`(?:${c[l.NUMERICIDENTIFIERLOOSE]}|${c[l.NONNUMERICIDENTIFIER]})`),p("PRERELEASE",`(?:-(${c[l.PRERELEASEIDENTIFIER]}(?:\\.${c[l.PRERELEASEIDENTIFIER]})*))`),p("PRERELEASELOOSE",`(?:-?(${c[l.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${c[l.PRERELEASEIDENTIFIERLOOSE]})*))`),p("BUILDIDENTIFIER",`${h}+`),p("BUILD",`(?:\\+(${c[l.BUILDIDENTIFIER]}(?:\\.${c[l.BUILDIDENTIFIER]})*))`),p("FULLPLAIN",`v?${c[l.MAINVERSION]}${c[l.PRERELEASE]}?${c[l.BUILD]}?`),p("FULL",`^${c[l.FULLPLAIN]}$`),p("LOOSEPLAIN",`[v=\\s]*${c[l.MAINVERSIONLOOSE]}${c[l.PRERELEASELOOSE]}?${c[l.BUILD]}?`),p("LOOSE",`^${c[l.LOOSEPLAIN]}$`),p("GTLT","((?:<|>)?=?)"),p("XRANGEIDENTIFIERLOOSE",`${c[l.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`),p("XRANGEIDENTIFIER",`${c[l.NUMERICIDENTIFIER]}|x|X|\\*`),p("XRANGEPLAIN",`[v=\\s]*(${c[l.XRANGEIDENTIFIER]})(?:\\.(${c[l.XRANGEIDENTIFIER]})(?:\\.(${c[l.XRANGEIDENTIFIER]})(?:${c[l.PRERELEASE]})?${c[l.BUILD]}?)?)?`),p("XRANGEPLAINLOOSE",`[v=\\s]*(${c[l.XRANGEIDENTIFIERLOOSE]})(?:\\.(${c[l.XRANGEIDENTIFIERLOOSE]})(?:\\.(${c[l.XRANGEIDENTIFIERLOOSE]})(?:${c[l.PRERELEASELOOSE]})?${c[l.BUILD]}?)?)?`),p("XRANGE",`^${c[l.GTLT]}\\s*${c[l.XRANGEPLAIN]}$`),p("XRANGELOOSE",`^${c[l.GTLT]}\\s*${c[l.XRANGEPLAINLOOSE]}$`),p("COERCEPLAIN",`(^|[^\\d])(\\d{1,${n}})(?:\\.(\\d{1,${n}}))?(?:\\.(\\d{1,${n}}))?`),p("COERCE",`${c[l.COERCEPLAIN]}(?:$|[^\\d])`),p("COERCEFULL",c[l.COERCEPLAIN]+`(?:${c[l.PRERELEASE]})?(?:${c[l.BUILD]})?(?:$|[^\\d])`),p("COERCERTL",c[l.COERCE],!0),p("COERCERTLFULL",c[l.COERCEFULL],!0),p("LONETILDE","(?:~>?)"),p("TILDETRIM",`(\\s*)${c[l.LONETILDE]}\\s+`,!0),e.tildeTrimReplace="$1~",p("TILDE",`^${c[l.LONETILDE]}${c[l.XRANGEPLAIN]}$`),p("TILDELOOSE",`^${c[l.LONETILDE]}${c[l.XRANGEPLAINLOOSE]}$`),p("LONECARET","(?:\\^)"),p("CARETTRIM",`(\\s*)${c[l.LONECARET]}\\s+`,!0),e.caretTrimReplace="$1^",p("CARET",`^${c[l.LONECARET]}${c[l.XRANGEPLAIN]}$`),p("CARETLOOSE",`^${c[l.LONECARET]}${c[l.XRANGEPLAINLOOSE]}$`),p("COMPARATORLOOSE",`^${c[l.GTLT]}\\s*(${c[l.LOOSEPLAIN]})$|^$`),p("COMPARATOR",`^${c[l.GTLT]}\\s*(${c[l.FULLPLAIN]})$|^$`),p("COMPARATORTRIM",`(\\s*)${c[l.GTLT]}\\s*(${c[l.LOOSEPLAIN]}|${c[l.XRANGEPLAIN]})`,!0),e.comparatorTrimReplace="$1$2$3",p("HYPHENRANGE",`^\\s*(${c[l.XRANGEPLAIN]})\\s+-\\s+(${c[l.XRANGEPLAIN]})\\s*$`),p("HYPHENRANGELOOSE",`^\\s*(${c[l.XRANGEPLAINLOOSE]})\\s+-\\s+(${c[l.XRANGEPLAINLOOSE]})\\s*$`),p("STAR","(<|>)?=?\\s*\\*"),p("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$"),p("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")}(lt,lt.exports);var ut=lt.exports;Object.freeze({loose:!0}),Object.freeze({});const ht=/^[0-9]+$/,dt=(t,e)=>{const n=ht.test(t),i=ht.test(e);return n&&i&&(t=+t,e=+e),t===e?0:n&&!i?-1:i&&!n?1:tdt(e,t)};const{MAX_LENGTH:At,MAX_SAFE_INTEGER:ft}=ct,{safeRe:gt,t:mt}=ut,{compareIdentifiers:bt}=pt;d.m},4523:(t,e,n)=>{"use strict";n.r(e),n.d(e,{VERSION:()=>o,after:()=>Pe,all:()=>tn,allKeys:()=>gt,any:()=>en,assign:()=>Pt,before:()=>Re,bind:()=>we,bindAll:()=>Be,chain:()=>be,chunk:()=>zn,clone:()=>zt,collect:()=>Xe,compact:()=>_n,compose:()=>Me,constant:()=>Z,contains:()=>nn,countBy:()=>mn,create:()=>Ht,debounce:()=>Se,default:()=>Wn,defaults:()=>Rt,defer:()=>Ie,delay:()=>_e,detect:()=>qe,difference:()=>Dn,drop:()=>Bn,each:()=>Ge,escape:()=>se,every:()=>tn,extend:()=>Mt,extendOwn:()=>Pt,filter:()=>Ze,find:()=>qe,findIndex:()=>Le,findKey:()=>He,findLastIndex:()=>Fe,findWhere:()=>Qe,first:()=>kn,flatten:()=>In,foldl:()=>Ke,foldr:()=>Je,forEach:()=>Ge,functions:()=>Tt,get:()=>Wt,groupBy:()=>fn,has:()=>Yt,head:()=>kn,identity:()=>qt,include:()=>nn,includes:()=>nn,indexBy:()=>gn,indexOf:()=>We,initial:()=>yn,inject:()=>Ke,intersection:()=>Mn,invert:()=>St,invoke:()=>on,isArguments:()=>V,isArray:()=>Q,isArrayBuffer:()=>H,isBoolean:()=>I,isDataView:()=>q,isDate:()=>M,isElement:()=>D,isEmpty:()=>ct,isEqual:()=>ft,isError:()=>R,isFinite:()=>K,isFunction:()=>F,isMap:()=>kt,isMatch:()=>lt,isNaN:()=>J,isNull:()=>E,isNumber:()=>O,isObject:()=>B,isRegExp:()=>P,isSet:()=>Et,isString:()=>T,isSymbol:()=>N,isTypedArray:()=>ot,isUndefined:()=>_,isWeakMap:()=>Bt,isWeakSet:()=>_t,iteratee:()=>Kt,keys:()=>at,last:()=>En,lastIndexOf:()=>Ye,map:()=>Xe,mapObject:()=>Zt,matcher:()=>Qt,matches:()=>Qt,max:()=>an,memoize:()=>Ee,methods:()=>Tt,min:()=>cn,mixin:()=>Fn,negate:()=>Oe,noop:()=>$t,now:()=>ie,object:()=>Nn,omit:()=>wn,once:()=>Ne,pairs:()=>Dt,partial:()=>xe,partition:()=>bn,pick:()=>xn,pluck:()=>rn,property:()=>Gt,propertyOf:()=>te,random:()=>ne,range:()=>Hn,reduce:()=>Ke,reduceRight:()=>Je,reject:()=>$e,rest:()=>Bn,restArguments:()=>k,result:()=>fe,sample:()=>hn,select:()=>Ze,shuffle:()=>dn,size:()=>vn,some:()=>en,sortBy:()=>pn,sortedIndex:()=>je,tail:()=>Bn,take:()=>kn,tap:()=>Lt,template:()=>Ae,templateSettings:()=>ce,throttle:()=>De,times:()=>ee,toArray:()=>un,toPath:()=>Ft,transpose:()=>Pn,unescape:()=>ae,union:()=>On,uniq:()=>Tn,unique:()=>Tn,uniqueId:()=>me,unzip:()=>Pn,values:()=>It,where:()=>sn,without:()=>Sn,wrap:()=>Te,zip:()=>Rn});var i={};n.r(i),n.d(i,{VERSION:()=>o,after:()=>Pe,all:()=>tn,allKeys:()=>gt,any:()=>en,assign:()=>Pt,before:()=>Re,bind:()=>we,bindAll:()=>Be,chain:()=>be,chunk:()=>zn,clone:()=>zt,collect:()=>Xe,compact:()=>_n,compose:()=>Me,constant:()=>Z,contains:()=>nn,countBy:()=>mn,create:()=>Ht,debounce:()=>Se,default:()=>jn,defaults:()=>Rt,defer:()=>Ie,delay:()=>_e,detect:()=>qe,difference:()=>Dn,drop:()=>Bn,each:()=>Ge,escape:()=>se,every:()=>tn,extend:()=>Mt,extendOwn:()=>Pt,filter:()=>Ze,find:()=>qe,findIndex:()=>Le,findKey:()=>He,findLastIndex:()=>Fe,findWhere:()=>Qe,first:()=>kn,flatten:()=>In,foldl:()=>Ke,foldr:()=>Je,forEach:()=>Ge,functions:()=>Tt,get:()=>Wt,groupBy:()=>fn,has:()=>Yt,head:()=>kn,identity:()=>qt,include:()=>nn,includes:()=>nn,indexBy:()=>gn,indexOf:()=>We,initial:()=>yn,inject:()=>Ke,intersection:()=>Mn,invert:()=>St,invoke:()=>on,isArguments:()=>V,isArray:()=>Q,isArrayBuffer:()=>H,isBoolean:()=>I,isDataView:()=>q,isDate:()=>M,isElement:()=>D,isEmpty:()=>ct,isEqual:()=>ft,isError:()=>R,isFinite:()=>K,isFunction:()=>F,isMap:()=>kt,isMatch:()=>lt,isNaN:()=>J,isNull:()=>E,isNumber:()=>O,isObject:()=>B,isRegExp:()=>P,isSet:()=>Et,isString:()=>T,isSymbol:()=>N,isTypedArray:()=>ot,isUndefined:()=>_,isWeakMap:()=>Bt,isWeakSet:()=>_t,iteratee:()=>Kt,keys:()=>at,last:()=>En,lastIndexOf:()=>Ye,map:()=>Xe,mapObject:()=>Zt,matcher:()=>Qt,matches:()=>Qt,max:()=>an,memoize:()=>Ee,methods:()=>Tt,min:()=>cn,mixin:()=>Fn,negate:()=>Oe,noop:()=>$t,now:()=>ie,object:()=>Nn,omit:()=>wn,once:()=>Ne,pairs:()=>Dt,partial:()=>xe,partition:()=>bn,pick:()=>xn,pluck:()=>rn,property:()=>Gt,propertyOf:()=>te,random:()=>ne,range:()=>Hn,reduce:()=>Ke,reduceRight:()=>Je,reject:()=>$e,rest:()=>Bn,restArguments:()=>k,result:()=>fe,sample:()=>hn,select:()=>Ze,shuffle:()=>dn,size:()=>vn,some:()=>en,sortBy:()=>pn,sortedIndex:()=>je,tail:()=>Bn,take:()=>kn,tap:()=>Lt,template:()=>Ae,templateSettings:()=>ce,throttle:()=>De,times:()=>ee,toArray:()=>un,toPath:()=>Ft,transpose:()=>Pn,unescape:()=>ae,union:()=>On,uniq:()=>Tn,unique:()=>Tn,uniqueId:()=>me,unzip:()=>Pn,values:()=>It,where:()=>sn,without:()=>Sn,wrap:()=>Te,zip:()=>Rn});var o="1.13.7",r="object"==typeof self&&self.self===self&&self||"object"==typeof global&&global.global===global&&global||Function("return this")()||{},s=Array.prototype,a=Object.prototype,c="undefined"!=typeof Symbol?Symbol.prototype:null,l=s.push,u=s.slice,h=a.toString,d=a.hasOwnProperty,p="undefined"!=typeof ArrayBuffer,A="undefined"!=typeof DataView,f=Array.isArray,g=Object.keys,m=Object.create,b=p&&ArrayBuffer.isView,v=isNaN,C=isFinite,x=!{toString:null}.propertyIsEnumerable("toString"),w=["valueOf","isPrototypeOf","toString","propertyIsEnumerable","hasOwnProperty","toLocaleString"],y=Math.pow(2,53)-1;function k(t,e){return e=null==e?t.length-1:+e,function(){for(var n=Math.max(arguments.length-e,0),i=Array(n),o=0;o=0&&n<=y}}function tt(t){return function(e){return null==e?void 0:e[t]}}const et=tt("byteLength"),nt=$(et);var it=/\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\]/;const ot=p?function(t){return b?b(t)&&!q(t):nt(t)&&it.test(h.call(t))}:Z(!1),rt=tt("length");function st(t,e){e=function(t){for(var e={},n=t.length,i=0;i":">",'"':""","'":"'","`":"`"},se=oe(re),ae=oe(St(re)),ce=ut.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var le=/(.)^/,ue={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},he=/\\|'|\r|\n|\u2028|\u2029/g;function de(t){return"\\"+ue[t]}var pe=/^\s*(\w|\$)+\s*$/;function Ae(t,e,n){!e&&n&&(e=n),e=Rt({},e,ut.templateSettings);var i=RegExp([(e.escape||le).source,(e.interpolate||le).source,(e.evaluate||le).source].join("|")+"|$","g"),o=0,r="__p+='";t.replace(i,(function(e,n,i,s,a){return r+=t.slice(o,a).replace(he,de),o=a+e.length,n?r+="'+\n((__t=("+n+"))==null?'':_.escape(__t))+\n'":i?r+="'+\n((__t=("+i+"))==null?'':__t)+\n'":s&&(r+="';\n"+s+"\n__p+='"),e})),r+="';\n";var s,a=e.variable;if(a){if(!pe.test(a))throw new Error("variable is not a bare identifier: "+a)}else r="with(obj||{}){\n"+r+"}\n",a="obj";r="var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\n"+r+"return __p;\n";try{s=new Function(a,"_",r)}catch(t){throw t.source=r,t}var c=function(t){return s.call(this,t,ut)};return c.source="function("+a+"){\n"+r+"}",c}function fe(t,e,n){var i=(e=jt(e)).length;if(!i)return F(n)?n.call(t):n;for(var o=0;o1)ke(a,e-1,n,i),o=i.length;else for(var c=0,l=a.length;ce?(i&&(clearTimeout(i),i=null),a=l,s=t.apply(o,r),i||(o=r=null)):i||!1===n.trailing||(i=setTimeout(c,u)),s};return l.cancel=function(){clearTimeout(i),a=0,i=o=r=null},l}function Se(t,e,n){var i,o,r,s,a,c=function(){var l=ie()-o;e>l?i=setTimeout(c,e-l):(i=null,n||(s=t.apply(a,r)),i||(r=a=null))},l=k((function(l){return a=this,r=l,o=ie(),i||(i=setTimeout(c,e),n&&(s=t.apply(a,r))),s}));return l.cancel=function(){clearTimeout(i),i=r=a=null},l}function Te(t,e){return xe(e,t)}function Oe(t){return function(){return!t.apply(this,arguments)}}function Me(){var t=arguments,e=t.length-1;return function(){for(var n=e,i=t[e].apply(this,arguments);n--;)i=t[n].call(this,i);return i}}function Pe(t,e){return function(){if(--t<1)return e.apply(this,arguments)}}function Re(t,e){var n;return function(){return--t>0&&(n=e.apply(this,arguments)),t<=1&&(e=null),n}}const Ne=xe(Re,2);function He(t,e,n){e=Jt(e,n);for(var i,o=at(t),r=0,s=o.length;r0?0:o-1;r>=0&&r0?s=r>=0?r:Math.max(r+a,s):a=r>=0?Math.min(r+1,a):r+a+1;else if(n&&r&&a)return i[r=n(i,o)]===o?r:-1;if(o!=o)return(r=e(u.call(i,s,a),J))>=0?r+s:-1;for(r=t>0?s:a-1;r>=0&&r=3;return function(e,n,i,o){var r=!ye(e)&&at(e),s=(r||e).length,a=t>0?0:s-1;for(o||(i=e[r?r[a]:a],a+=t);a>=0&&a=0}const on=k((function(t,e,n){var i,o;return F(e)?o=e:(e=jt(e),i=e.slice(0,-1),e=e[e.length-1]),Xe(t,(function(t){var r=o;if(!r){if(i&&i.length&&(t=Ut(t,i)),null==t)return;r=t[e]}return null==r?r:r.apply(t,n)}))}));function rn(t,e){return Xe(t,Gt(e))}function sn(t,e){return Ze(t,Qt(e))}function an(t,e,n){var i,o,r=-1/0,s=-1/0;if(null==e||"number"==typeof e&&"object"!=typeof t[0]&&null!=t)for(var a=0,c=(t=ye(t)?t:It(t)).length;ar&&(r=i);else e=Jt(e,n),Ge(t,(function(t,n,i){((o=e(t,n,i))>s||o===-1/0&&r===-1/0)&&(r=t,s=o)}));return r}function cn(t,e,n){var i,o,r=1/0,s=1/0;if(null==e||"number"==typeof e&&"object"!=typeof t[0]&&null!=t)for(var a=0,c=(t=ye(t)?t:It(t)).length;ai||void 0===n)return 1;if(n1&&(i=Xt(i,e[1])),e=gt(t)):(i=Cn,e=ke(e,!1,!1),t=Object(t));for(var o=0,r=e.length;o1&&(n=e[1])):(e=Xe(ke(e,!1,!1),String),i=function(t,n){return!nn(e,n)}),xn(t,i,n)}));function yn(t,e,n){return u.call(t,0,Math.max(0,t.length-(null==e||n?1:e)))}function kn(t,e,n){return null==t||t.length<1?null==e||n?void 0:[]:null==e||n?t[0]:yn(t,t.length-e)}function Bn(t,e,n){return u.call(t,null==e||n?1:e)}function En(t,e,n){return null==t||t.length<1?null==e||n?void 0:[]:null==e||n?t[t.length-1]:Bn(t,Math.max(0,t.length-e))}function _n(t){return Ze(t,Boolean)}function In(t,e){return ke(t,e,!1)}const Dn=k((function(t,e){return e=ke(e,!0,!0),Ze(t,(function(t){return!nn(e,t)}))})),Sn=k((function(t,e){return Dn(t,e)}));function Tn(t,e,n,i){I(e)||(i=n,n=e,e=!1),null!=n&&(n=Jt(n,i));for(var o=[],r=[],s=0,a=rt(t);s{if(!n){var r=1/0;for(u=0;u=o)&&Object.keys(a.O).every((t=>a.O[t](n[c])))?n.splice(c--,1):(s=!1,o0&&e[u-1][2]>o;u--)e[u]=e[u-1];e[u]=[n,i,o]},a.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return a.d(e,{a:e}),e},a.d=(t,e)=>{for(var n in e)a.o(e,n)&&!a.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},a.f={},a.e=t=>Promise.all(Object.keys(a.f).reduce(((e,n)=>(a.f[n](t,e),e)),[])),a.u=t=>t+"-"+t+".js?v="+{802:"eddac441912aee9d7aa8",1642:"0e50a2b32d2d64b50afa",9291:"077955af818a227340aa"}[t],a.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),a.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),i={},o="nextcloud:",a.l=(t,e,n,r)=>{if(i[t])i[t].push(e);else{var s,c;if(void 0!==n)for(var l=document.getElementsByTagName("script"),u=0;u{s.onerror=s.onload=null,clearTimeout(p);var o=i[t];if(delete i[t],s.parentNode&&s.parentNode.removeChild(s),o&&o.forEach((t=>t(n))),e)return e(n)},p=setTimeout(d.bind(null,void 0,{type:"timeout",target:s}),12e4);s.onerror=d.bind(null,s.onerror),s.onload=d.bind(null,s.onload),c&&document.head.appendChild(s)}},a.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},a.nmd=t=>(t.paths=[],t.children||(t.children=[]),t),a.j=2228,(()=>{var t;a.g.importScripts&&(t=a.g.location+"");var e=a.g.document;if(!t&&e&&(e.currentScript&&"SCRIPT"===e.currentScript.tagName.toUpperCase()&&(t=e.currentScript.src),!t)){var n=e.getElementsByTagName("script");if(n.length)for(var i=n.length-1;i>-1&&(!t||!/^http(s?):/.test(t));)t=n[i--].src}if(!t)throw new Error("Automatic publicPath is not supported in this browser");t=t.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),a.p=t})(),(()=>{a.b=document.baseURI||self.location.href;var t={2228:0};a.f.j=(e,n)=>{var i=a.o(t,e)?t[e]:void 0;if(0!==i)if(i)n.push(i[2]);else{var o=new Promise(((n,o)=>i=t[e]=[n,o]));n.push(i[2]=o);var r=a.p+a.u(e),s=new Error;a.l(r,(n=>{if(a.o(t,e)&&(0!==(i=t[e])&&(t[e]=void 0),i)){var o=n&&("load"===n.type?"missing":n.type),r=n&&n.target&&n.target.src;s.message="Loading chunk "+e+" failed.\n("+o+": "+r+")",s.name="ChunkLoadError",s.type=o,s.request=r,i[1](s)}}),"chunk-"+e,e)}},a.O.j=e=>0===t[e];var e=(e,n)=>{var i,o,r=n[0],s=n[1],c=n[2],l=0;if(r.some((e=>0!==t[e]))){for(i in s)a.o(s,i)&&(a.m[i]=s[i]);if(c)var u=c(a)}for(e&&e(n);la(17036)));c=a.O(c)})(); -//# sourceMappingURL=core-main.js.map?v=b146ec0bb883fea3e3c0 \ No newline at end of file +(()=>{var e,i,o,r={17036:(e,i,o)=>{"use strict";var r={};o.r(r),o.d(r,{deleteKey:()=>B,getApps:()=>x,getKeys:()=>w,getValue:()=>y,setValue:()=>k});var s={};o.r(s),o.d(s,{formatLinksPlain:()=>En,formatLinksRich:()=>Bn,plainToRich:()=>yn,richToPlain:()=>kn});var a={};o.r(a),o.d(a,{dismiss:()=>Dn,query:()=>In}),o(84315),o(7452);var c=o(61338),l=o(4523),u=o(74692),h=o.n(u),d=o(85168),p=o(96763);const A={updatableNotification:null,getDefaultNotificationFunction:null,setDefault(t){this.getDefaultNotificationFunction=t},hide(t,e){l.default.isFunction(t)&&(e=t,t=void 0),t?(t.each((function(){h()(this)[0].toastify?h()(this)[0].toastify.hideToast():p.error("cannot hide toast because object is not set"),this===this.updatableNotification&&(this.updatableNotification=null)})),e&&e.call(),this.getDefaultNotificationFunction&&this.getDefaultNotificationFunction()):p.error("Missing argument $row in OC.Notification.hide() call, caller needs to be adjusted to only dismiss its own notification")},showHtml(t,e){(e=e||{}).isHTML=!0,e.timeout=e.timeout?e.timeout:d.DH;const n=(0,d.rG)(t,e);return n.toastElement.toastify=n,h()(n.toastElement)},show(t,e){(e=e||{}).timeout=e.timeout?e.timeout:d.DH;const n=(0,d.rG)(function(t){return t.toString().split("&").join("&").split("<").join("<").split(">").join(">").split('"').join(""").split("'").join("'")}(t),e);return n.toastElement.toastify=n,h()(n.toastElement)},showUpdate(t){return this.updatableNotification&&this.updatableNotification.hideToast(),this.updatableNotification=(0,d.rG)(t,{timeout:d.DH}),this.updatableNotification.toastElement.toastify=this.updatableNotification,h()(this.updatableNotification.toastElement)},showTemporary(t,e){(e=e||{}).timeout=e.timeout||d.Jt;const n=(0,d.rG)(t,e);return n.toastElement.toastify=n,h()(n.toastElement)},isHidden:()=>!h()("#content").find(".toastify").length};var f=o(21777);const g=l.default.throttle((()=>{(0,d.I9)(t("core","Connection to server lost"))}),7e3,{trailing:!1});let m=!1;const b={enableDynamicSlideToggle(){m=!0},showAppSidebar:function(t){(t||h()("#app-sidebar")).removeClass("disappear").show(),h()("#app-content").trigger(new(h().Event)("appresized"))},hideAppSidebar:function(t){(t||h()("#app-sidebar")).hide().addClass("disappear"),h()("#app-content").trigger(new(h().Event)("appresized"))}};var v=o(63814);function C(t,e,n){"post"!==t&&"delete"!==t||!St.PasswordConfirmation.requiresPasswordConfirmation()?(n=n||{},h().ajax({type:t.toUpperCase(),url:(0,v.KT)("apps/provisioning_api/api/v1/config/apps")+e,data:n.data||{},success:n.success,error:n.error})):St.PasswordConfirmation.requirePasswordConfirmation(_.bind(C,this,t,e,n))}function x(t){C("get","",t)}function w(t,e){C("get","/"+t,e)}function y(t,e,n,i){(i=i||{}).data={defaultValue:n},C("get","/"+t+"/"+e,i)}function k(t,e,n,i){(i=i||{}).data={value:n},C("post","/"+t+"/"+e,i)}function B(t,e,n){C("delete","/"+t+"/"+e,n)}const E=window.oc_appconfig||{},I={getValue:function(t,e,n,i){y(t,e,n,{success:i})},setValue:function(t,e,n){k(t,e,n)},getApps:function(t){x({success:t})},getKeys:function(t,e){w(t,{success:e})},deleteKey:function(t,e){B(t,e)}},D=void 0!==window._oc_appswebroots&&window._oc_appswebroots;var S=o(21391),T=o.n(S),O=o(78112),M=o(96763);const P={create:"POST",update:"PROPPATCH",patch:"PROPPATCH",delete:"DELETE",read:"PROPFIND"};function R(t,e){if(l.default.isArray(t))return l.default.map(t,(function(t){return R(t,e)}));var n={href:t.href};return l.default.each(t.propStat,(function(t){if("HTTP/1.1 200 OK"===t.status)for(var i in t.properties){var o=i;i in e&&(o=e[i]),n[o]=t.properties[i]}})),n.id||(n.id=N(n.href)),n}function N(t){var e=t.indexOf("?");e>0&&(t=t.substr(0,e));var n,i=t.split("/");do{n=i[i.length-1],i.pop()}while(!n&&i.length>0);return n}function H(t){return t>=200&&t<=299}function z(t,e,n,i){return t.propPatch(e.url,function(t,e){var n,i={};for(n in t){var o=e[n],r=t[n];o||(M.warn('No matching DAV property for property "'+n),o=n),(l.default.isBoolean(r)||l.default.isNumber(r))&&(r=""+r),i[o]=r}return i}(n.changed,e.davProperties),i).then((function(t){H(t.status)?l.default.isFunction(e.success)&&e.success(n.toJSON()):l.default.isFunction(e.error)&&e.error(t)}))}const L=T().noConflict();Object.assign(L,{davCall:(t,e)=>{var n=new O.dav.Client({baseUrl:t.url,xmlNamespaces:l.default.extend({"DAV:":"d","http://owncloud.org/ns":"oc"},t.xmlNamespaces||{})});n.resolveUrl=function(){return t.url};var i=l.default.extend({"X-Requested-With":"XMLHttpRequest",requesttoken:OC.requestToken},t.headers);return"PROPFIND"===t.type?function(t,e,n,i){return t.propFind(e.url,l.default.values(e.davProperties)||[],e.depth,i).then((function(t){if(H(t.status)){if(l.default.isFunction(e.success)){var n=l.default.invert(e.davProperties),i=R(t.body,n);e.depth>0&&i.shift(),e.success(i)}}else l.default.isFunction(e.error)&&e.error(t)}))}(n,t,0,i):"PROPPATCH"===t.type?z(n,t,e,i):"MKCOL"===t.type?function(t,e,n,i){return t.request(e.type,e.url,i,null).then((function(o){H(o.status)?z(t,e,n,i):l.default.isFunction(e.error)&&e.error(o)}))}(n,t,e,i):function(t,e,n,i){return i["Content-Type"]="application/json",t.request(e.type,e.url,i,e.data).then((function(t){if(H(t.status)){if(l.default.isFunction(e.success)){if("PUT"===e.type||"POST"===e.type||"MKCOL"===e.type){var i=t.body||n.toJSON(),o=t.xhr.getResponseHeader("Content-Location");return"POST"===e.type&&o&&(i.id=N(o)),void e.success(i)}if(207===t.status){var r=l.default.invert(e.davProperties);e.success(R(t.body,r))}else e.success(t.body)}}else l.default.isFunction(e.error)&&e.error(t)}))}(n,t,e,i)},davSync:(t=>(e,n,i)=>{var o={type:P[e]||e},r=n instanceof t.Collection;if("update"===e&&(n.hasInnerCollection?o.type="MKCOL":(n.usePUT||n.collection&&n.collection.usePUT)&&(o.type="PUT")),i.url||(o.url=l.default.result(n,"url")||function(){throw new Error('A "url" property or function must be specified')}()),null!=i.data||!n||"create"!==e&&"update"!==e&&"patch"!==e||(o.data=JSON.stringify(i.attrs||n.toJSON(i))),"PROPFIND"!==o.type&&(o.processData=!1),"PROPFIND"===o.type||"PROPPATCH"===o.type){var s=n.davProperties;!s&&n.model&&(s=n.model.prototype.davProperties),s&&(l.default.isFunction(s)?o.davProperties=s.call(n):o.davProperties=s),o.davProperties=l.default.extend(o.davProperties||{},i.davProperties),l.default.isUndefined(i.depth)&&(i.depth=r?1:0)}var a=i.error;i.error=function(t,e,n){i.textStatus=e,i.errorThrown=n,a&&a.call(i.context,t,e,n)};var c=i.xhr=t.davCall(l.default.extend(o,i),n);return n.trigger("request",n,c,i),c})(L)});const F=L;var j=o(71225);const U=window._oc_config||{},W=document.getElementsByTagName("head")[0].getAttribute("data-user"),Y=document.getElementsByTagName("head")[0].getAttribute("data-user-displayname"),q=void 0!==W&&W;var Q=o(39285),G=o(36882),X=o(53334),V=o(43627),K=o(85471),J=o(96763);const Z={YES_NO_BUTTONS:70,OK_BUTTONS:71,FILEPICKER_TYPE_CHOOSE:1,FILEPICKER_TYPE_MOVE:2,FILEPICKER_TYPE_COPY:3,FILEPICKER_TYPE_COPY_MOVE:4,FILEPICKER_TYPE_CUSTOM:5,alert:function(t,e,n,i){this.message(t,e,"alert",Z.OK_BUTTON,n,i)},info:function(t,e,n,i){this.message(t,e,"info",Z.OK_BUTTON,n,i)},confirm:function(t,e,n,i){return this.message(t,e,"notice",Z.YES_NO_BUTTONS,n,i)},confirmDestructive:function(t,e){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:Z.OK_BUTTONS,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:()=>{};return(new d.ik).setName(e).setText(t).setButtons(n===Z.OK_BUTTONS?[{label:(0,X.Tl)("core","Yes"),type:"error",callback:()=>{i.clicked=!0,i(!0)}}]:Z._getLegacyButtons(n,i)).build().show().then((()=>{i.clicked||i(!1)}))},confirmHtml:function(t,e,n,i){return(new d.ik).setName(e).setText("").setButtons([{label:(0,X.Tl)("core","No"),callback:()=>{}},{label:(0,X.Tl)("core","Yes"),type:"primary",callback:()=>{n.clicked=!0,n(!0)}}]).build().setHTML(t).show().then((()=>{n.clicked||n(!1)}))},prompt:function(t,e,n,i,r,s){return new Promise((i=>{(0,d.Ss)((0,K.$V)((()=>o.e(1642).then(o.bind(o,71642)))),{text:t,name:e,callback:n,inputName:r,isPassword:!!s},(function(){n(...arguments),i()}))}))},filepicker(t,e){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:void 0,o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:d.bh.Choose,r=arguments.length>6&&void 0!==arguments[6]?arguments[6]:void 0,s=arguments.length>7&&void 0!==arguments[7]?arguments[7]:void 0;const a=(t,e)=>{const i=t=>{const e=t?.root||"";let n=t?.path||"";return n.startsWith(e)&&(n=n.slice(e.length)||"/"),n};return n?n=>t(n.map(i),e):n=>t(i(n[0]),e)},c=(0,d.a1)(t);o===this.FILEPICKER_TYPE_CUSTOM?(s.buttons||[]).forEach((t=>{c.addButton({callback:a(e,t.type),label:t.text,type:t.defaultButton?"primary":"secondary"})})):c.setButtonFactory(((t,n)=>{const i=[],r=t?.[0]?.attributes?.displayName||t?.[0]?.basename,s=r||(0,V.basename)(n);return o===d.bh.Choose&&i.push({callback:a(e,d.bh.Choose),label:r&&!this.multiSelect?(0,X.Tl)("core","Choose {file}",{file:r}):(0,X.Tl)("core","Choose"),type:"primary"}),o!==d.bh.CopyMove&&o!==d.bh.Copy||i.push({callback:a(e,d.bh.Copy),label:s?(0,X.Tl)("core","Copy to {target}",{target:s}):(0,X.Tl)("core","Copy"),type:"primary",icon:G}),o!==d.bh.Move&&o!==d.bh.CopyMove||i.push({callback:a(e,d.bh.Move),label:s?(0,X.Tl)("core","Move to {target}",{target:s}):(0,X.Tl)("core","Move"),type:o===d.bh.Move?"primary":"secondary",icon:Q}),i})),i&&c.setMimeTypeFilter("string"==typeof i?[i]:i||[]),"function"==typeof s?.filter&&c.setFilter((t=>s.filter((t=>({id:t.fileid||null,path:t.path,mimetype:t.mime||null,mtime:t.mtime?.getTime()||null,permissions:t.permissions,name:t.attributes?.displayName||t.basename,etag:t.attributes?.etag||null,hasPreview:t.attributes?.hasPreview||null,mountType:t.attributes?.mountType||null,quotaAvailableBytes:t.attributes?.quotaAvailableBytes||null,icon:null,sharePermissions:null}))(t)))),c.allowDirectories(!0===s?.allowDirectoryChooser||i?.includes("httpd/unix-directory")||!1).setMultiSelect(n).startAt(r).build().pick()},message:function(t,e,n,i){let o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:()=>{},r=arguments.length>6?arguments[6]:void 0;const s=(new d.ik).setName(e).setText(r?"":t).setButtons(Z._getLegacyButtons(i,o));switch(n){case"alert":s.setSeverity("warning");break;case"notice":s.setSeverity("info")}const a=s.build();return r&&a.setHTML(t),a.show().then((()=>{o._clicked||o(!1)}))},_getLegacyButtons(t,e){const n=[];switch("object"==typeof t?t.type:t){case Z.YES_NO_BUTTONS:n.push({label:t?.cancel??(0,X.Tl)("core","No"),callback:()=>{e._clicked=!0,e(!1)}}),n.push({label:t?.confirm??(0,X.Tl)("core","Yes"),type:"primary",callback:()=>{e._clicked=!0,e(!0)}});break;case Z.OK_BUTTONS:n.push({label:t?.confirm??(0,X.Tl)("core","OK"),type:"primary",callback:()=>{e._clicked=!0,e(!0)}});break;default:J.error("Invalid call to OC.dialogs")}return n},_fileexistsshown:!1,fileexists:function(t,e,i,o){var r=this,s=new(h().Deferred),a=function(t,e,n,i,o){i=Math.round(i),o=Math.round(o);for(var r=t.getContext("2d").getImageData(0,0,e,n),s=t.getContext("2d").getImageData(0,0,i,o),a=r.data,c=s.data,l=e/i,u=n/o,h=Math.ceil(l/2),d=Math.ceil(u/2),p=0;p=-1&&S<=1&&(g=2*S*S*S-3*S*S+1)>0&&(w+=g*a[3+(D=4*(I+k*e))],b+=g,a[D+3]<255&&(g=g*a[D+3]/250),v+=g*a[D],C+=g*a[D+1],x+=g*a[D+2],m+=g)}c[f]=v/m,c[f+1]=C/m,c[f+2]=x/m,c[f+3]=w/b}t.getContext("2d").clearRect(0,0,Math.max(e,i),Math.max(n,o)),t.width=i,t.height=o,t.getContext("2d").putImageData(s,0,0)},c=function(e,n,i){var o=e.find(".template").clone().removeClass("template").addClass("conflict"),r=o.find(".original"),s=o.find(".replacement");o.data("data",t),o.find(".filename").text(n.name),r.find(".size").text(St.Util.humanFileSize(n.size)),r.find(".mtime").text(St.Util.formatDate(n.mtime)),i.size&&i.lastModified&&(s.find(".size").text(St.Util.humanFileSize(i.size)),s.find(".mtime").text(St.Util.formatDate(i.lastModified)));var c=n.directory+"/"+n.name,l={file:c,x:96,y:96,c:n.etag,forceIcon:0},u=Files.generatePreviewUrl(l);u=u.replace(/'/g,"%27"),r.find(".icon").css({"background-image":"url('"+u+"')"}),function(t){var e=new(h().Deferred),n=t.type&&t.type.split("/").shift();if(window.FileReader&&"image"===n){var i=new FileReader;i.onload=function(t){var n=new Blob([t.target.result]);window.URL=window.URL||window.webkitURL;var i=window.URL.createObjectURL(n),o=new Image;o.src=i,o.onload=function(){var t,n,i,r,s,c,l,u=(t=o,s=document.createElement("canvas"),c=t.width,l=t.height,c>l?(i=0,n=(c-l)/2):(i=(l-c)/2,n=0),r=Math.min(c,l),s.width=r,s.height=r,s.getContext("2d").drawImage(t,n,i,r,r,0,0,r,r),a(s,r,r,96,96),s.toDataURL("image/png",.7));e.resolve(u)}},i.readAsArrayBuffer(t)}else e.reject();return e}(i).then((function(t){s.find(".icon").css("background-image","url("+t+")")}),(function(){c=St.MimeType.getIconUrl(i.type),s.find(".icon").css("background-image","url("+c+")")}));var d=e.find(".conflict").length;r.find("input:checkbox").attr("id","checkbox_original_"+d),s.find("input:checkbox").attr("id","checkbox_replacement_"+d),e.append(o),i.lastModified>n.mtime?s.find(".mtime").css("font-weight","bold"):i.lastModifiedn.size?s.find(".size").css("font-weight","bold"):i.size&&i.size0?(h()(u).find(".allnewfiles").prop("checked",!1),h()(u).find(".allnewfiles + .count").text((0,X.Tl)("core","({count} selected)",{count:t}))):(h()(u).find(".allnewfiles").prop("checked",!1),h()(u).find(".allnewfiles + .count").text("")),g()})),h()(u).on("click",".original,.allexistingfiles",(function(){var t=h()(u).find('.conflict .original input[type="checkbox"]:checked').length;t===h()(u+" .conflict").length?(h()(u).find(".allexistingfiles").prop("checked",!0),h()(u).find(".allexistingfiles + .count").text((0,X.Tl)("core","(all selected)"))):t>0?(h()(u).find(".allexistingfiles").prop("checked",!1),h()(u).find(".allexistingfiles + .count").text((0,X.Tl)("core","({count} selected)",{count:t}))):(h()(u).find(".allexistingfiles").prop("checked",!1),h()(u).find(".allexistingfiles + .count").text("")),g()})),s.resolve()})).fail((function(){s.reject(),alert((0,X.Tl)("core","Error loading file exists template"))}));return s.promise()},_getFileExistsTemplate:function(){var t=h().Deferred();if(this.$fileexistsTemplate)t.resolve(this.$fileexistsTemplate);else{var e=this;h().get(St.filePath("core","templates/legacy","fileexists.html"),(function(n){e.$fileexistsTemplate=h()(n),t.resolve(e.$fileexistsTemplate)})).fail((function(){t.reject()}))}return t.promise()}},$=Z,tt=((t,e)=>{let n=t.getElementsByTagName("head")[0].getAttribute("data-requesttoken");return{getToken:()=>n,setToken:t=>{n=t,e("csrf-token-update",{token:n})}}})(document,c.Ic),et=tt.getToken,nt=tt.setToken,it=function(t,e){var n,i,o="";if(this.typelessListeners=[],this.closed=!1,this.listeners={},e)for(n in e)o+=n+"="+encodeURIComponent(e[n])+"&";if(o+="requesttoken="+encodeURIComponent(et()),this.useFallBack||"undefined"==typeof EventSource){var r="oc_eventsource_iframe_"+it.iframeCount;it.fallBackSources[it.iframeCount]=this,this.iframe=h()(""),this.iframe.attr("id",r),this.iframe.hide(),i="&",-1===t.indexOf("?")&&(i="?"),this.iframe.attr("src",t+i+"fallback=true&fallback_id="+it.iframeCount+"&"+o),h()("body").append(this.iframe),this.useFallBack=!0,it.iframeCount++}else i="&",-1===t.indexOf("?")&&(i="?"),this.source=new EventSource(t+i+o),this.source.onmessage=function(t){for(var e=0;e(0,ft.o)(),requirePasswordConfirmation(t,e,n){(0,ft.C)().then(t,n)}},mt={_plugins:{},register(t,e){let n=this._plugins[t];n||(n=this._plugins[t]=[]),n.push(e)},getPlugins(t){return this._plugins[t]||[]},attach(t,e,n){const i=this.getPlugins(t);for(let t=0;t-1&&parseInt(navigator.userAgent.split("/").pop())<51){const t=document.querySelectorAll('[fill^="url(#"], [stroke^="url(#"], [filter^="url(#invert"]');for(let e,n=0,i=t.length;n=0?t.substr(e+1):t.length?t.substr(1):""},_decodeQuery:t=>t.replace(/\+/g," "),parseUrlQuery(){const t=this._parseHashQuery();let e;return t&&(e=St.parseQueryString(this._decodeQuery(t))),e=l.default.extend(e||{},St.parseQueryString(this._decodeQuery(location.search))),e||{}},_onPopState(t){if(this._cancelPop)return void(this._cancelPop=!1);let e;if(this._handlers.length){e=t&&t.state,l.default.isString(e)?e=St.parseQueryString(e):e||(e=this.parseUrlQuery()||{});for(let t=0;t="0"&&n<="9";s!==r&&(o++,e[o]="",r=s),e[o]+=n,i++}return e}const Bt={History:xt,humanFileSize:wt.v7,computerFileSize(t){if("string"!=typeof t)return null;const e=t.toLowerCase().trim();let n=null;const i=e.match(/^[\s+]?([0-9]*)(\.([0-9]+))?( +)?([kmgtp]?b?)$/i);return null===i?null:(n=parseFloat(e),isFinite(n)?(i[5]&&(n*={b:1,k:1024,kb:1024,mb:1048576,m:1048576,gb:1073741824,g:1073741824,tb:1099511627776,t:1099511627776,pb:0x4000000000000,p:0x4000000000000}[i[5]]),n=Math.round(n),n):null)},formatDate:(t,e)=>(void 0===window.TESTING&&St.debug&&yt.warn("OC.Util.formatDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment"),e=e||"LLL",Ct()(t).format(e)),relativeModifiedDate(e){void 0===window.TESTING&&St.debug&&yt.warn("OC.Util.relativeModifiedDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment");const n=Ct()().diff(Ct()(e));return n>=0&&n<45e3?t("core","seconds ago"):Ct()(e).fromNow()},getScrollBarWidth(){if(this._scrollBarWidth)return this._scrollBarWidth;const t=document.createElement("p");t.style.width="100%",t.style.height="200px";const e=document.createElement("div");e.style.position="absolute",e.style.top="0px",e.style.left="0px",e.style.visibility="hidden",e.style.width="200px",e.style.height="150px",e.style.overflow="hidden",e.appendChild(t),document.body.appendChild(e);const n=t.offsetWidth;e.style.overflow="scroll";let i=t.offsetWidth;return n===i&&(i=e.clientWidth),document.body.removeChild(e),this._scrollBarWidth=n-i,this._scrollBarWidth},stripTime:t=>new Date(t.getFullYear(),t.getMonth(),t.getDate()),naturalSortCompare(t,e){let n;const i=kt(t),o=kt(e);for(n=0;i[n]&&o[n];n++)if(i[n]!==o[n]){const t=Number(i[n]),e=Number(o[n]);return t==i[n]&&e==o[n]?t-e:i[n].localeCompare(o[n],St.getLanguage())}return i.length-o.length},waitFor(t,e){const n=function(){!0!==t()&&setTimeout(n,e)};n()},isCookieSetToValue(t,e){const n=document.cookie.split(";");for(let i=0;i!$_",fileIsBlacklisted:t=>!!t.match(U.blacklist_files_regex),Apps:b,AppConfig:I,appConfig:E,appswebroots:D,Backbone:F,config:U,currentUser:q,dialogs:$,EventSource:ot,getCurrentUser:()=>({uid:q,displayName:Y}),isUserAdmin:()=>ut,L10N:pt,_ajaxConnectionLostHandler:g,_processAjaxError:t=>{(0!==t.status||"abort"!==t.statusText&&"timeout"!==t.statusText&&!St._reloadCalled)&&([302,303,307,401].includes(t.status)&&(0,f.HW)()?setTimeout((function(){if(!St._userIsNavigatingAway&&!St._reloadCalled){let t=0;const e=5,i=setInterval((function(){A.showUpdate(n("core","Problem loading page, reloading in %n second","Problem loading page, reloading in %n seconds",e-t)),t>=e&&(clearInterval(i),St.reload()),t++}),1e3);St._reloadCalled=!0}}),100):0===t.status&&setTimeout((function(){St._userIsNavigatingAway||St._reloadCalled||St._ajaxConnectionLostHandler()}),100))},registerXHRForErrorProcessing:t=>{t.addEventListener&&(t.addEventListener("load",(()=>{4===t.readyState&&(t.status>=200&&t.status<300||304===t.status||h()(document).trigger(new(h().Event)("ajaxError"),t))})),t.addEventListener("error",(()=>{h()(document).trigger(new(h().Event)("ajaxError"),t)})))},getCapabilities:()=>(OC.debug&&st.warn("OC.getCapabilities is deprecated and will be removed in Nextcloud 21. See @nextcloud/capabilities"),(0,rt.F)()),hideMenus:lt,registerMenu:function(t,e,n,i){e.addClass("menu");const o="A"===t.prop("tagName")||"BUTTON"===t.prop("tagName");t.on(o?"click.menu":"click.menu keyup.menu",(function(o){o.preventDefault(),o.key&&"Enter"!==o.key||(e.is(at)?lt():(at&<(),!0===i&&e.parent().addClass("openedMenu"),t.attr("aria-expanded",!0),e.slideToggle(50,n),at=e,ct=t))}))},showMenu:(t,e,n)=>{e.is(at)||(lt(),at=e,ct=t,e.trigger(new(h().Event)("beforeShow")),e.show(),e.trigger(new(h().Event)("afterShow")),l.default.isFunction(n)&&n())},unregisterMenu:(t,e)=>{e.is(at)&<(),t.off("click.menu").removeClass("menutoggle"),e.removeClass("menu")},basename:j.P8,encodePath:j.O0,dirname:j.pD,isSamePath:j.ys,joinPaths:j.HS,getHost:()=>window.location.host,getHostName:()=>window.location.hostname,getPort:()=>window.location.port,getProtocol:()=>window.location.protocol.split(":")[0],getCanonicalLocale:X.lO,getLocale:X.JK,getLanguage:X.Z0,buildQueryString:t=>t?h().map(t,(function(t,e){let n=encodeURIComponent(e);return null!=t&&(n+="="+encodeURIComponent(t)),n})).join("&"):"",parseQueryString:t=>{let e,n;const i={};let o;if(!t)return null;e=t.indexOf("?"),e>=0&&(t=t.substr(e+1));const r=t.replace(/\+/g,"%20").split("&");for(let t=0;t=0?[s.substr(0,e),s.substr(e+1)]:[s],n.length&&(o=decodeURIComponent(n[0]),o&&(i[o]=n.length>1?decodeURIComponent(n[1]):null))}return i},msg:At,Notification:A,PasswordConfirmation:gt,Plugins:mt,theme:bt,Util:Bt,debug:Et,filePath:v.fg,generateUrl:v.Jv,get:(Tt=window,t=>{const e=t.split("."),n=e.pop();for(let t=0;t(e,n)=>{const i=e.split("."),o=i.pop();for(let e=0;e{window.location=t},reload:()=>{window.location.reload()},requestToken:et(),linkTo:v.uM,linkToOCS:(t,e)=>(0,v.KT)(t,{},{ocsVersion:e||1})+"/",linkToRemote:v.dC,linkToRemoteBase:t=>(0,v.aU)()+"/remote.php/"+t,webroot:It};var Tt;(0,c.B1)("csrf-token-update",(t=>{OC.requestToken=t.token,Dt.info("OC.requestToken changed",t.token)}));var Ot=o(32981),Mt=o(96763);let Pt=null;const Rt=async()=>{try{const t=await(async()=>{const t=(0,v.Jv)("/csrftoken");return(await h().get(t)).token})();nt(t)}catch(t){Mt.error("session heartbeat failed",t)}},Nt=()=>{const t=setInterval(Rt,1e3*(()=>{let t=NaN;return Pt.session_lifetime&&(t=Math.floor(Pt.session_lifetime/2)),Math.min(86400,Math.max(60,isNaN(t)?900:t))})());return Mt.info("session heartbeat polling started"),t};var Ht=o(65043);const zt={name:"ContactsIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}};var Lt=o(14486);const Ft=(0,Lt.A)(zt,(function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon contacts-icon",attrs:{"aria-hidden":!t.title||null,"aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M20,0H4V2H20V0M4,24H20V22H4V24M20,4H4A2,2 0 0,0 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6A2,2 0 0,0 20,4M12,6.75A2.25,2.25 0 0,1 14.25,9A2.25,2.25 0 0,1 12,11.25A2.25,2.25 0 0,1 9.75,9A2.25,2.25 0 0,1 12,6.75M17,17H7V15.5C7,13.83 10.33,13 12,13C13.67,13 17,13.83 17,15.5V17Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,null,null).exports;var jt=o(17334),Ut=o.n(jt),Wt=o(55602),Yt=o(18740),qt=o(34196),Qt=o(2769),Gt=o(84237),Xt=o(73267),Vt=o(32831),Kt=o(24764),Jt=o(41944);const Zt={name:"Contact",components:{NcActionLink:Xt.A,NcActionText:Vt.A,NcActions:Kt.A,NcAvatar:Jt.A},props:{contact:{required:!0,type:Object}},computed:{actions(){return this.contact.topAction?[this.contact.topAction,...this.contact.actions]:this.contact.actions},preloadedUserStatus(){if(this.contact.status)return{status:this.contact.status,message:this.contact.statusMessage,icon:this.contact.statusIcon}}}};var $t=o(85072),te=o.n($t),ee=o(97825),ne=o.n(ee),ie=o(77659),oe=o.n(ie),re=o(55056),se=o.n(re),ae=o(10540),ce=o.n(ae),le=o(41113),ue=o.n(le),he=o(78811),de={};de.styleTagTransform=ue(),de.setAttributes=se(),de.insert=oe().bind(null,"head"),de.domAPI=ne(),de.insertStyleElement=ce(),te()(he.A,de),he.A&&he.A.locals&&he.A.locals;const pe=(0,Lt.A)(Zt,(function(){var t=this,e=t._self._c;return e("li",{staticClass:"contact"},[e("NcAvatar",{staticClass:"contact__avatar",attrs:{size:44,user:t.contact.isUser?t.contact.uid:void 0,"is-no-user":!t.contact.isUser,"disable-menu":!0,"display-name":t.contact.avatarLabel,"preloaded-user-status":t.preloadedUserStatus}}),t._v(" "),e("a",{staticClass:"contact__body",attrs:{href:t.contact.profileUrl||t.contact.topAction?.hyperlink}},[e("div",{staticClass:"contact__body__full-name"},[t._v(t._s(t.contact.fullName))]),t._v(" "),t.contact.lastMessage?e("div",{staticClass:"contact__body__last-message"},[t._v(t._s(t.contact.lastMessage))]):t._e(),t._v(" "),t.contact.statusMessage?e("div",{staticClass:"contact__body__status-message"},[t._v(t._s(t.contact.statusMessage))]):e("div",{staticClass:"contact__body__email-address"},[t._v(t._s(t.contact.emailAddresses[0]))])]),t._v(" "),t.actions.length?e("NcActions",{attrs:{inline:t.contact.topAction?1:0}},[t._l(t.actions,(function(n,i){return["#"!==n.hyperlink?e("NcActionLink",{key:i,staticClass:"other-actions",attrs:{href:n.hyperlink},scopedSlots:t._u([{key:"icon",fn:function(){return[e("img",{staticClass:"contact__action__icon",attrs:{"aria-hidden":"true",src:n.icon}})]},proxy:!0}],null,!0)},[t._v("\n\t\t\t\t"+t._s(n.title)+"\n\t\t\t")]):e("NcActionText",{key:i,staticClass:"other-actions",scopedSlots:t._u([{key:"icon",fn:function(){return[e("img",{staticClass:"contact__action__icon",attrs:{"aria-hidden":"true",src:n.icon}})]},proxy:!0}],null,!0)},[t._v("\n\t\t\t\t"+t._s(n.title)+"\n\t\t\t")])]}))],2):t._e()],1)}),[],!1,null,"97ebdcaa",null).exports;var Ae=o(35947);const fe=null===(ge=(0,f.HW)())?(0,Ae.YK)().setApp("core").build():(0,Ae.YK)().setApp("core").setUid(ge.uid).build();var ge;(0,Ae.YK)().setApp("unified-search").detectUser().build();const me={data:()=>({OC:St}),methods:{t:pt.translate.bind(pt),n:pt.translatePlural.bind(pt)}};var be=o(82182);const ve={name:"ContactsMenu",components:{Contact:pe,Contacts:Ft,Magnify:Wt.A,NcButton:Yt.A,NcEmptyContent:qt.A,NcHeaderMenu:Qt.A,NcLoadingIcon:Gt.A,NcTextField:be.A},mixins:[me],data(){const t=(0,f.HW)();return{contactsAppEnabled:!1,contactsAppURL:(0,v.Jv)("/apps/contacts"),contactsAppMgmtURL:(0,v.Jv)("/settings/apps/social/contacts"),canInstallApp:t.isAdmin,contacts:[],loadingText:void 0,error:!1,searchTerm:""}},methods:{async handleOpen(){await this.getContacts("")},async getContacts(t){this.loadingText=""===t?(0,X.Tl)("core","Loading your contacts …"):(0,X.Tl)("core","Looking for {term} …",{term:t}),this.error=!1;try{const{data:{contacts:e,contactsAppEnabled:n}}=await Ht.Ay.post((0,v.Jv)("/contactsmenu/contacts"),{filter:t});this.contacts=e,this.contactsAppEnabled=n,this.loadingText=void 0}catch(e){fe.error("could not load contacts",{error:e,searchTerm:t}),this.error=!0}},onInputDebounced:Ut()((function(){this.getContacts(this.searchTerm)}),500),onReset(){this.searchTerm="",this.contacts=[],this.focusInput()},focusInput(){this.$nextTick((()=>{this.$refs.contactsMenuInput.focus(),this.$refs.contactsMenuInput.select()}))}}},Ce=ve;var xe=o(38933),we={};we.styleTagTransform=ue(),we.setAttributes=se(),we.insert=oe().bind(null,"head"),we.domAPI=ne(),we.insertStyleElement=ce(),te()(xe.A,we),xe.A&&xe.A.locals&&xe.A.locals;const ye=(0,Lt.A)(Ce,(function(){var t=this,e=t._self._c;return e("NcHeaderMenu",{staticClass:"contactsmenu",attrs:{id:"contactsmenu","aria-label":t.t("core","Search contacts")},on:{open:t.handleOpen},scopedSlots:t._u([{key:"trigger",fn:function(){return[e("Contacts",{staticClass:"contactsmenu__trigger-icon",attrs:{size:20}})]},proxy:!0}])},[t._v(" "),e("div",{staticClass:"contactsmenu__menu"},[e("div",{staticClass:"contactsmenu__menu__input-wrapper"},[e("NcTextField",{ref:"contactsMenuInput",staticClass:"contactsmenu__menu__search",attrs:{id:"contactsmenu__menu__search",value:t.searchTerm,"trailing-button-icon":"close",label:t.t("core","Search contacts"),"trailing-button-label":t.t("core","Reset search"),"show-trailing-button":""!==t.searchTerm,placeholder:t.t("core","Search contacts …")},on:{"update:value":function(e){t.searchTerm=e},input:t.onInputDebounced,"trailing-button-click":t.onReset}})],1),t._v(" "),t.error?e("NcEmptyContent",{attrs:{name:t.t("core","Could not load your contacts")},scopedSlots:t._u([{key:"icon",fn:function(){return[e("Magnify")]},proxy:!0}],null,!1,931131664)}):t.loadingText?e("NcEmptyContent",{attrs:{name:t.loadingText},scopedSlots:t._u([{key:"icon",fn:function(){return[e("NcLoadingIcon")]},proxy:!0}])}):0===t.contacts.length?e("NcEmptyContent",{attrs:{name:t.t("core","No contacts found")},scopedSlots:t._u([{key:"icon",fn:function(){return[e("Magnify")]},proxy:!0}])}):e("div",{staticClass:"contactsmenu__menu__content"},[e("div",{attrs:{id:"contactsmenu-contacts"}},[e("ul",t._l(t.contacts,(function(t){return e("Contact",{key:t.id,attrs:{contact:t}})})),1)]),t._v(" "),t.contactsAppEnabled?e("div",{staticClass:"contactsmenu__menu__content__footer"},[e("NcButton",{attrs:{type:"tertiary",href:t.contactsAppURL}},[t._v("\n\t\t\t\t\t"+t._s(t.t("core","Show all contacts"))+"\n\t\t\t\t")])],1):t.canInstallApp?e("div",{staticClass:"contactsmenu__menu__content__footer"},[e("NcButton",{attrs:{type:"tertiary",href:t.contactsAppMgmtURL}},[t._v("\n\t\t\t\t\t"+t._s(t.t("core","Install the Contacts app"))+"\n\t\t\t\t")])],1):t._e()])],1)])}),[],!1,null,"5cad18ba",null).exports;var ke=o(13073);const Be={name:"CircleIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Ee=(0,Lt.A)(Be,(function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon circle-icon",attrs:{"aria-hidden":!t.title||null,"aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,null,null).exports,_e=(0,K.pM)({__name:"AppMenuIcon",props:{app:null},setup(t){const e=t,n=(0,K.EW)((()=>String(e.app.unread>0))),i=(0,K.EW)((()=>"true"===n.value?"":e.app.name+(e.app.unread>0?` (${(0,X.n)("core","{count} notification","{count} notifications",e.app.unread,{count:e.app.unread})})`:"")));return{__sfc:!0,props:e,ariaHidden:n,ariaLabel:i,IconDot:Ee}}});var Ie=o(23759),De={};De.styleTagTransform=ue(),De.setAttributes=se(),De.insert=oe().bind(null,"head"),De.domAPI=ne(),De.insertStyleElement=ce(),te()(Ie.A,De),Ie.A&&Ie.A.locals&&Ie.A.locals;const Se=(0,Lt.A)(_e,(function(){var t=this,e=t._self._c,n=t._self._setupProxy;return e("span",{staticClass:"app-menu-icon",attrs:{role:"img","aria-hidden":n.ariaHidden,"aria-label":n.ariaLabel}},[e("img",{staticClass:"app-menu-icon__icon",attrs:{src:t.app.icon,alt:""}}),t._v(" "),t.app.unread?e(n.IconDot,{staticClass:"app-menu-icon__unread",attrs:{size:10}}):t._e()],1)}),[],!1,null,"e7078f90",null).exports,Te=(0,K.pM)({__name:"AppMenuEntry",props:{app:null},setup(t){const e=t,n=(0,K.KR)(),i=(0,K.KR)(),o=(0,K.KR)(!1);function r(){const t=n.value.clientWidth;o.value=t-.5*e.app.name.lengthe.app.name),r),{__sfc:!0,props:e,containerElement:n,labelElement:i,needsSpace:o,calculateSize:r,AppMenuIcon:Se}}});var Oe=o(29518),Me={};Me.styleTagTransform=ue(),Me.setAttributes=se(),Me.insert=oe().bind(null,"head"),Me.domAPI=ne(),Me.insertStyleElement=ce(),te()(Oe.A,Me),Oe.A&&Oe.A.locals&&Oe.A.locals;var Pe=o(73402),Re={};Re.styleTagTransform=ue(),Re.setAttributes=se(),Re.insert=oe().bind(null,"head"),Re.domAPI=ne(),Re.insertStyleElement=ce(),te()(Pe.A,Re),Pe.A&&Pe.A.locals&&Pe.A.locals;const Ne=(0,Lt.A)(Te,(function(){var t=this,e=t._self._c,n=t._self._setupProxy;return e("li",{ref:"containerElement",staticClass:"app-menu-entry",class:{"app-menu-entry--active":t.app.active,"app-menu-entry--truncated":n.needsSpace}},[e("a",{staticClass:"app-menu-entry__link",attrs:{href:t.app.href,title:t.app.name,"aria-current":!!t.app.active&&"page",target:t.app.target?"_blank":void 0,rel:t.app.target?"noopener noreferrer":void 0}},[e(n.AppMenuIcon,{staticClass:"app-menu-entry__icon",attrs:{app:t.app}}),t._v(" "),e("span",{ref:"labelElement",staticClass:"app-menu-entry__label"},[t._v("\n\t\t\t"+t._s(t.app.name)+"\n\t\t")])],1)])}),[],!1,null,"1c485052",null).exports,He=(0,K.pM)({name:"AppMenu",components:{AppMenuEntry:Ne,NcActions:Kt.A,NcActionLink:Xt.A},setup(){const t=(0,K.KR)(),{width:e}=(0,ke.Lhy)(t);return{t:X.t,n:X.n,appMenu:t,appMenuWidth:e}},data:()=>({appList:(0,Ot.C)("core","apps",[])}),computed:{appLimit(){const t=Math.floor(this.appMenuWidth/50);return t{let{app:n}=e;return n===t}));n?this.$set(n,"unread",e):fe.warn(`Could not find app "${t}" for setting navigation count`)},setApps(t){let{apps:e}=t;this.appList=e}}}),ze=He;var Le=o(26652),Fe={};Fe.styleTagTransform=ue(),Fe.setAttributes=se(),Fe.insert=oe().bind(null,"head"),Fe.domAPI=ne(),Fe.insertStyleElement=ce(),te()(Le.A,Fe),Le.A&&Le.A.locals&&Le.A.locals;const je=(0,Lt.A)(ze,(function(){var t=this,e=t._self._c;return t._self._setupProxy,e("nav",{ref:"appMenu",staticClass:"app-menu",attrs:{"aria-label":t.t("core","Applications menu")}},[e("ul",{staticClass:"app-menu__list",attrs:{"aria-label":t.t("core","Apps")}},t._l(t.mainAppList,(function(t){return e("AppMenuEntry",{key:t.id,attrs:{app:t}})})),1),t._v(" "),e("NcActions",{staticClass:"app-menu__overflow",attrs:{"aria-label":t.t("core","More apps")}},t._l(t.popoverAppList,(function(n){return e("NcActionLink",{key:n.id,staticClass:"app-menu__overflow-entry",attrs:{"aria-current":!!n.active&&"page",href:n.href,icon:n.icon}},[t._v("\n\t\t\t"+t._s(n.name)+"\n\t\t")])})),1)],1)}),[],!1,null,"7661a89b",null).exports;var Ue=o(1522);const{profileEnabled:We}=(0,Ot.C)("user_status","profileEnabled",{profileEnabled:!1}),Ye=(0,K.pM)({name:"AccountMenuProfileEntry",components:{NcListItem:Ue.A,NcLoadingIcon:Gt.A},props:{id:{type:String,required:!0},name:{type:String,required:!0},href:{type:String,required:!0},active:{type:Boolean,required:!0}},setup:()=>({profileEnabled:We,displayName:(0,f.HW)().displayName}),data:()=>({loading:!1}),mounted(){(0,c.B1)("settings:profile-enabled:updated",this.handleProfileEnabledUpdate),(0,c.B1)("settings:display-name:updated",this.handleDisplayNameUpdate)},beforeDestroy(){(0,c.al)("settings:profile-enabled:updated",this.handleProfileEnabledUpdate),(0,c.al)("settings:display-name:updated",this.handleDisplayNameUpdate)},methods:{handleClick(){this.profileEnabled&&(this.loading=!0)},handleProfileEnabledUpdate(t){this.profileEnabled=t},handleDisplayNameUpdate(t){this.displayName=t}}}),qe=Ye,Qe=(0,Lt.A)(qe,(function(){var t=this,e=t._self._c;return t._self._setupProxy,e("NcListItem",{attrs:{id:t.profileEnabled?void 0:t.id,"anchor-id":t.id,active:t.active,compact:"",href:t.profileEnabled?t.href:void 0,name:t.displayName,target:"_self"},scopedSlots:t._u([t.profileEnabled?{key:"subname",fn:function(){return[t._v("\n\t\t"+t._s(t.name)+"\n\t")]},proxy:!0}:null,t.loading?{key:"indicator",fn:function(){return[e("NcLoadingIcon")]},proxy:!0}:null],null,!0)})}),[],!1,null,null,null).exports,Ge=(0,Ot.C)("core","versionHash",""),Xe={name:"AccountMenuEntry",components:{NcListItem:Ue.A,NcLoadingIcon:Gt.A},props:{id:{type:String,required:!0},name:{type:String,required:!0},href:{type:String,required:!0},active:{type:Boolean,required:!0},icon:{type:String,required:!0}},data:()=>({loading:!1}),computed:{iconSource(){return`${this.icon}?v=${Ge}`}},methods:{handleClick(){this.loading=!0}}};var Ve=o(49481),Ke={};Ke.styleTagTransform=ue(),Ke.setAttributes=se(),Ke.insert=oe().bind(null,"head"),Ke.domAPI=ne(),Ke.insertStyleElement=ce(),te()(Ve.A,Ke),Ve.A&&Ve.A.locals&&Ve.A.locals;const Je=(0,Lt.A)(Xe,(function(){var t=this,e=t._self._c;return e("NcListItem",{staticClass:"account-menu-entry",attrs:{id:t.href?void 0:t.id,"anchor-id":t.id,active:t.active,compact:"",href:t.href,name:t.name,target:"_self"},scopedSlots:t._u([{key:"icon",fn:function(){return[e("img",{staticClass:"account-menu-entry__icon",class:{"account-menu-entry__icon--active":t.active},attrs:{src:t.iconSource,alt:""}})]},proxy:!0},t.loading?{key:"indicator",fn:function(){return[e("NcLoadingIcon")]},proxy:!0}:null],null,!0)})}),[],!1,null,"2e0a74a6",null).exports,Ze=[{type:"online",label:(0,X.Tl)("user_status","Online")},{type:"away",label:(0,X.Tl)("user_status","Away")},{type:"dnd",label:(0,X.Tl)("user_status","Do not disturb"),subline:(0,X.Tl)("user_status","Mute all notifications")},{type:"invisible",label:(0,X.Tl)("user_status","Invisible"),subline:(0,X.Tl)("user_status","Appear offline")}],$e=(0,K.pM)({name:"AccountMenu",components:{AccountMenuEntry:Je,AccountMenuProfileEntry:Qe,NcAvatar:Jt.A,NcHeaderMenu:Qt.A},setup(){const t=(0,Ot.C)("core","settingsNavEntries",{}),{profile:e,...n}=t;return{currentDisplayName:(0,f.HW)()?.displayName??(0,f.HW)().uid,currentUserId:(0,f.HW)().uid,profileEntry:e,otherEntries:n,t:X.t}},data:()=>({showUserStatus:!1,userStatus:{status:null,icon:null,message:null}}),computed:{translatedUserStatus(){return{...this.userStatus,status:this.translateStatus(this.userStatus.status)}},avatarDescription(){return[(0,X.t)("core","Avatar of {displayName}",{displayName:this.currentDisplayName}),...Object.values(this.translatedUserStatus).filter(Boolean)].join(" — ")}},async created(){if(!(0,rt.F)()?.user_status?.enabled)return;const t=(0,v.KT)("/apps/user_status/api/v1/user_status");try{const e=await Ht.Ay.get(t),{status:n,icon:i,message:o}=e.data.ocs.data;this.userStatus={status:n,icon:i,message:o}}catch(t){fe.error("Failed to load user status")}this.showUserStatus=!0},mounted(){(0,c.B1)("user_status:status.updated",this.handleUserStatusUpdated),(0,c.Ic)("core:user-menu:mounted")},methods:{handleUserStatusUpdated(t){this.currentUserId===t.userId&&(this.userStatus={status:t.status,icon:t.icon,message:t.message})},translateStatus(t){const e=Object.fromEntries(Ze.map((t=>{let{type:e,label:n}=t;return[e,n]})));return e[t]?e[t]:t}}});var tn=o(24454),en={};en.styleTagTransform=ue(),en.setAttributes=se(),en.insert=oe().bind(null,"head"),en.domAPI=ne(),en.insertStyleElement=ce(),te()(tn.A,en),tn.A&&tn.A.locals&&tn.A.locals;const nn=(0,Lt.A)($e,(function(){var t=this,e=t._self._c;return t._self._setupProxy,e("NcHeaderMenu",{staticClass:"account-menu",attrs:{id:"user-menu","is-nav":"","aria-label":t.t("core","Settings menu"),description:t.avatarDescription},scopedSlots:t._u([{key:"trigger",fn:function(){return[e("NcAvatar",{key:String(t.showUserStatus),staticClass:"account-menu__avatar",attrs:{"disable-menu":"","disable-tooltip":"","show-user-status":t.showUserStatus,user:t.currentUserId,"preloaded-user-status":t.userStatus}})]},proxy:!0}])},[t._v(" "),e("ul",{staticClass:"account-menu__list"},[e("AccountMenuProfileEntry",{attrs:{id:t.profileEntry.id,name:t.profileEntry.name,href:t.profileEntry.href,active:t.profileEntry.active}}),t._v(" "),t._l(t.otherEntries,(function(t){return e("AccountMenuEntry",{key:t.id,attrs:{id:t.id,name:t.name,href:t.href,active:t.active,icon:t.icon}})}))],2)])}),[],!1,null,"a886d77a",null).exports,on=t=>{const e=window.location.protocol+"//"+window.location.host+(0,v.aU)();return t.startsWith(e)||(t=>!t.startsWith("https://")&&!t.startsWith("http://"))(t)&&t.startsWith((0,v.aU)())},rn=()=>{var t;XMLHttpRequest.prototype.open=(t=XMLHttpRequest.prototype.open,function(e,n,i){t.apply(this,arguments),on(n)&&!this.getResponseHeader("X-Requested-With")&&this.setRequestHeader("X-Requested-With","XMLHttpRequest")}),window.fetch=function(t){return(e,n)=>on(e.url??e.toString())?(n||(n={}),n.headers||(n.headers=new Headers),n.headers instanceof Headers&&!n.headers.has("X-Requested-With")?n.headers.append("X-Requested-With","XMLHttpRequest"):n.headers instanceof Object&&!n.headers["X-Requested-With"]&&(n.headers["X-Requested-With"]="XMLHttpRequest"),t(e,n)):t(e,n)}(window.fetch)},sn=()=>{setInterval((()=>{h()(".live-relative-timestamp").each((function(){const t=parseInt(h()(this).attr("data-timestamp"),10);h()(this).text(Ct()(t).fromNow())}))}),3e4)},an={zh:"zh-cn",zh_Hans:"zh-cn",zh_Hans_CN:"zh-cn",zh_Hans_HK:"zh-cn",zh_Hans_MO:"zh-cn",zh_Hans_SG:"zh-cn",zh_Hant:"zh-hk",zh_Hant_HK:"zh-hk",zh_Hant_MO:"zh-mo",zh_Hant_TW:"zh-tw"};let cn=St.getLocale();Object.prototype.hasOwnProperty.call(an,cn)&&(cn=an[cn]),Ct().locale(cn);const ln=()=>{if(rn(),h()(window).on("unload.main",(()=>{St._unloadCalled=!0})),h()(window).on("beforeunload.main",(()=>{setTimeout((()=>{St._userIsNavigatingAway=!0,setTimeout((()=>{St._unloadCalled||(St._userIsNavigatingAway=!1)}),1e4)}),1)})),h()(document).on("ajaxError.main",(function(t,e,n){n&&n.allowAuthErrors||St._processAjaxError(e)})),(()=>{if((()=>{try{Pt=(0,Ot.C)("core","config")}catch(t){Pt=St.config}})(),(()=>{if(!Pt.auto_logout||!(0,f.HW)())return;let t=Date.now();window.addEventListener("mousemove",(e=>{t=Date.now(),localStorage.setItem("lastActive",t)})),window.addEventListener("touchstart",(e=>{t=Date.now(),localStorage.setItem("lastActive",t)})),window.addEventListener("storage",(e=>{"lastActive"===e.key&&(t=e.newValue)}));let e=0;e=setInterval((()=>{const n=Date.now()-1e3*Pt.session_lifetime;if(t{Mt.info("browser is online again, resuming heartbeat"),t=Nt();try{await Rt(),Mt.info("session token successfully updated after resuming network"),(0,c.Ic)("networkOnline",{success:!0})}catch(t){Mt.error("could not update session token after resuming network",t),(0,c.Ic)("networkOnline",{success:!1})}})),window.addEventListener("offline",(()=>{Mt.info("browser is offline, stopping heartbeat"),(0,c.Ic)("networkOffline",{}),clearInterval(t),Mt.info("session heartbeat polling stopped")}))})(),St.registerMenu(h()("#expand"),h()("#expanddiv"),!1,!0),h()(document).on("mouseup.closemenus",(t=>{const e=h()(t.target);if(e.closest(".menu").length||e.closest(".menutoggle").length)return!1;St.hideMenus()})),(()=>{K.Ay.mixin({methods:{t:X.Tl,n:X.zw}});const t=document.getElementById("header-start__appmenu");if(!t)return;const e=new(K.Ay.extend(je))({}).$mount(t);Object.assign(OC,{setNavigationCounter(t,n){e.setNavigationCounter(t,n)}})})(),(()=>{const t=document.getElementById("user-menu");t&&new K.Ay({el:t,render:t=>t(nn)})})(),(()=>{const t=document.getElementById("contactsmenu");t&&new K.Ay({el:t,render:t=>t(ye)})})(),h()("#app-navigation").length&&!h()("html").hasClass("lte9")&&!h()("#app-content").hasClass("no-snapper")){const t=new Snap({element:document.getElementById("app-content"),disable:"right",maxPosition:300,minDragDistance:100});h()("#app-content").prepend('');let e=!1;t.on("animating",(()=>{e=!0})),t.on("animated",(()=>{e=!1})),t.on("start",(()=>{e=!0})),t.on("end",(()=>{e=!1})),t.on("open",(()=>{s.attr("aria-hidden","false")})),t.on("close",(()=>{s.attr("aria-hidden","true")}));const n=t.open,i=t.close,o=()=>{e||"closed"!==t.state().state||n("left")},r=()=>{e||"closed"===t.state().state||i()};window.TESTING||(t.open=()=>{l.default.defer(o)},t.close=()=>{l.default.defer(r)}),h()("#app-navigation-toggle").click((e=>{"left"!==t.state().state&&t.open()})),h()("#app-navigation-toggle").keypress((e=>{"left"===t.state().state?t.close():t.open()}));const s=h()("#app-navigation");s.attr("aria-hidden","true"),s.delegate("a, :button","click",(e=>{const n=h()(e.target);n.is(".app-navigation-noclose")||n.closest(".app-navigation-noclose").length||n.is(".app-navigation-entry-utils-menu-button")||n.closest(".app-navigation-entry-utils-menu-button").length||n.is(".add-new")||n.closest(".add-new").length||n.is("#app-settings")||n.closest("#app-settings").length||t.close()}));let a=!1,c=!0,u=!1;St.allowNavigationBarSlideGesture=()=>{c=!0,u&&(t.enable(),a=!0,u=!1)},St.disallowNavigationBarSlideGesture=()=>{if(c=!1,a){const e=!0;t.disable(e),a=!1,u=!0}};const d=()=>{h()(window).width()>1024?(s.attr("aria-hidden","false"),t.close(),t.disable(),a=!1,u=!1):c?(t.enable(),a=!0,u=!1):u=!0};h()(window).resize(l.default.debounce(d,250)),d()}sn()};o(99660);var un=o(3131),hn={};hn.styleTagTransform=ue(),hn.setAttributes=se(),hn.insert=oe().bind(null,"head"),hn.domAPI=ne(),hn.insertStyleElement=ce(),te()(un.A,hn),un.A&&un.A.locals&&un.A.locals;var dn=o(13169),pn={};pn.styleTagTransform=ue(),pn.setAttributes=se(),pn.insert=oe().bind(null,"head"),pn.domAPI=ne(),pn.insertStyleElement=ce(),te()(dn.A,pn),dn.A&&dn.A.locals&&dn.A.locals;var An=o(57576),fn=o.n(An),gn=o(18922),mn=o.n(gn),bn=(o(44275),o(35156)),vn={};vn.styleTagTransform=ue(),vn.setAttributes=se(),vn.insert=oe().bind(null,"head"),vn.domAPI=ne(),vn.insertStyleElement=ce(),te()(bn.A,vn),bn.A&&bn.A.locals&&bn.A.locals,o(57223),o(53425);var Cn=o(86140),xn={};xn.styleTagTransform=ue(),xn.setAttributes=se(),xn.insert=oe().bind(null,"head"),xn.domAPI=ne(),xn.insertStyleElement=ce(),te()(Cn.A,xn),Cn.A&&Cn.A.locals&&Cn.A.locals;const wn=/(\s|^)(https?:\/\/)([-A-Z0-9+_.]+(?::[0-9]+)?(?:\/[-A-Z0-9+&@#%?=~_|!:,.;()]*)*)(\s|$)/gi;function yn(t){return this.formatLinksRich(t)}function kn(t){return this.formatLinksPlain(t)}function Bn(t){return t.replace(wn,(function(t,e,n,i,o){let r=i;return n?"http://"===n&&(r=n+i):n="https://",e+''+r+""+o}))}function En(t){const e=h()("
        ").html(t);return e.find("a").each((function(){const t=h()(this);t.html(t.attr("href"))})),e.html()}var _n=o(96763);function In(e){const n=(e=e||{}).dismiss||{};h().ajax({type:"GET",url:e.url||(0,v.KT)("core/whatsnew?format=json"),success:e.success||function(e,i,o){!function(e,n,i,o){if(_n.debug("querying Whats New data was successful: "+n),_n.debug(e),200!==i.status)return;let r,s,a,c;const u=document.createElement("div");u.classList.add("popovermenu","open","whatsNewPopover","menu-left");const h=document.createElement("ul");r=document.createElement("li"),s=document.createElement("span"),s.className="menuitem",a=document.createElement("span"),a.innerText=t("core","New in")+" "+e.ocs.data.product,a.className="caption",s.appendChild(a),c=document.createElement("span"),c.className="icon-close",c.onclick=function(){Dn(e.ocs.data.version,o)},s.appendChild(c),r.appendChild(s),h.appendChild(r);for(const t in e.ocs.data.whatsNew.regular){const n=e.ocs.data.whatsNew.regular[t];r=document.createElement("li"),s=document.createElement("span"),s.className="menuitem",c=document.createElement("span"),c.className="icon-checkmark",s.appendChild(c),a=document.createElement("p"),a.innerHTML=l.default.escape(n),s.appendChild(a),r.appendChild(s),h.appendChild(r)}l.default.isUndefined(e.ocs.data.changelogURL)||(r=document.createElement("li"),s=document.createElement("a"),s.href=e.ocs.data.changelogURL,s.rel="noreferrer noopener",s.target="_blank",c=document.createElement("span"),c.className="icon-link",s.appendChild(c),a=document.createElement("span"),a.innerText=t("core","View changelog"),s.appendChild(a),r.appendChild(s),h.appendChild(r)),u.appendChild(h),document.body.appendChild(u)}(e,i,o,n)},error:e.error||Sn})}function Dn(t,e){e=e||{},h().ajax({type:"POST",url:e.url||(0,v.KT)("core/whatsnew"),data:{version:encodeURIComponent(t)},success:e.success||Tn,error:e.error||On}),h()(".whatsNewPopover").remove()}function Sn(t,e,n){_n.debug("querying Whats New Data resulted in an error: "+e+n),_n.debug(t)}function Tn(t){}function On(t){_n.debug("dismissing Whats New data resulted in an error: "+t)}const Mn={disableKeyboardShortcuts:()=>(0,Ot.C)("theming","shortcutsDisabled",!1),setPageHeading:function(t){const e=document.getElementById("page-heading-level-1");e&&(e.textContent=t)}};var Pn=o(70580),Rn=o.n(Pn);const Nn={},Hn={registerType(t,e){Nn[t]=e},trigger:t=>Nn[t].action(),getTypes:()=>Object.keys(Nn),getIcon:t=>Nn[t].typeIconClass||"",getLabel:t=>Rn()(Nn[t].typeString||t),getLink:(t,e)=>void 0!==Nn[t]?Nn[t].link(e):""},zn={},Ln={},Fn={loadScript(t,e){const n=t+e;return Object.prototype.hasOwnProperty.call(zn,n)?Promise.resolve():(zn[n]=!0,new Promise((function(n,i){const o=OC.filePath(t,"js",e),r=document.createElement("script");r.src=o,r.setAttribute("nonce",btoa(OC.requestToken)),r.onload=()=>n(),r.onerror=()=>i(new Error(`Failed to load script from ${o}`)),document.head.appendChild(r)})))},loadStylesheet(t,e){const n=t+e;return Object.prototype.hasOwnProperty.call(Ln,n)?Promise.resolve():(Ln[n]=!0,new Promise((function(n,i){const o=OC.filePath(t,"css",e),r=document.createElement("link");r.href=o,r.type="text/css",r.rel="stylesheet",r.onload=()=>n(),r.onerror=()=>i(new Error(`Failed to load stylesheet from ${o}`)),document.head.appendChild(r)})))}},jn={success:(t,e)=>(0,d.Te)(t,e),warning:(t,e)=>(0,d.I9)(t,e),error:(t,e)=>(0,d.Qg)(t,e),info:(t,e)=>(0,d.cf)(t,e),message:(t,e)=>(0,d.rG)(t,e)},Un={Accessibility:Mn,AppConfig:r,Collaboration:Hn,Comments:s,InitialState:{loadState:Ot.C},Loader:Fn,Toast:jn,WhatsNew:a};var Wn=o(96763);const Yn=function(){void 0===window.TESTING&&St.debug&&Wn.warn.apply(Wn,arguments)},qn=(t,e,n)=>{(Array.isArray(t)?t:[t]).forEach((t=>{void 0!==window[t]&&delete window[t],Object.defineProperty(window,t,{get:()=>(Yn(n?`${t} is deprecated: ${n}`:`${t} is deprecated`),e())})}))};window._=l.default,qn(["$","jQuery"],(()=>h()),"The global jQuery is deprecated. It will be removed in a later versions without another warning. Please ship your own."),qn("Backbone",(()=>T()),"please ship your own, this will be removed in Nextcloud 20"),qn(["Clipboard","ClipboardJS"],(()=>fn()),"please ship your own, this will be removed in Nextcloud 20"),window.dav=O.dav,qn("Handlebars",(()=>dt()),"please ship your own, this will be removed in Nextcloud 20"),qn("md5",(()=>mn()),"please ship your own, this will be removed in Nextcloud 20"),qn("moment",(()=>Ct()),"please ship your own, this will be removed in Nextcloud 20"),window.OC=St,qn("initCore",(()=>ln),"this is an internal function"),qn("oc_appswebroots",(()=>St.appswebroots),"use OC.appswebroots instead, this will be removed in Nextcloud 20"),qn("oc_config",(()=>St.config),"use OC.config instead, this will be removed in Nextcloud 20"),qn("oc_current_user",(()=>St.getCurrentUser().uid),"use OC.getCurrentUser().uid instead, this will be removed in Nextcloud 20"),qn("oc_debug",(()=>St.debug),"use OC.debug instead, this will be removed in Nextcloud 20"),qn("oc_defaults",(()=>St.theme),"use OC.theme instead, this will be removed in Nextcloud 20"),qn("oc_isadmin",St.isUserAdmin,"use OC.isUserAdmin() instead, this will be removed in Nextcloud 20"),qn("oc_requesttoken",(()=>et()),"use OC.requestToken instead, this will be removed in Nextcloud 20"),qn("oc_webroot",(()=>St.webroot),"use OC.getRootPath() instead, this will be removed in Nextcloud 20"),qn("OCDialogs",(()=>St.dialogs),"use OC.dialogs instead, this will be removed in Nextcloud 20"),window.OCP=Un,window.OCA={},h().fn.select2=(t=>{const e=t,n=function(){return Yn("The select2 library is deprecated! It will be removed in nextcloud 19."),e.apply(this,arguments)};return Object.assign(n,e),n})(h().fn.select2),window.t=l.default.bind(St.L10N.translate,St.L10N),window.n=l.default.bind(St.L10N.translatePlural,St.L10N),h().fn.avatar=function(t,e,n,i,o,r){const s=function(t){t.imageplaceholder("?"),t.css("background-color","#b9b9b9")};if(void 0!==t&&(t=String(t)),void 0!==r&&(r=String(r)),void 0===e&&(e=this.height()>0?this.height():this.data("size")>0?this.data("size"):64),this.height(e),this.width(e),void 0===t){if(void 0===this.data("user"))return void s(this);t=this.data("user")}t=String(t).replace(/\//g,"");const a=this;let c;c=t===St.getCurrentUser().uid?St.generateUrl("/avatar/{user}/{size}?v={version}",{user:t,size:Math.ceil(e*window.devicePixelRatio),version:oc_userconfig.avatar.version}):St.generateUrl("/avatar/{user}/{size}",{user:t,size:Math.ceil(e*window.devicePixelRatio)});const l=new Image;l.onload=function(){a.clearimageplaceholder(),a.append(l),"function"==typeof o&&o()},l.onerror=function(){a.clearimageplaceholder(),void 0!==r?a.imageplaceholder(t,r):s(a),"function"==typeof o&&o()},e<32?a.addClass("icon-loading-small"):a.addClass("icon-loading"),l.width=e,l.height=e,l.src=c,l.alt=""};const Qn=t=>"click"===t.type||"keydown"===t.type&&"Enter"===t.key,Gn=o(66235);h().fn.contactsMenu=function(e,n,i){if(-1===[0,4,6].indexOf(n))return;const o=this;i.append('');const r=i.find("div.contactsmenu-popover");o.on("click keydown",(function(i){if(Qn(i)){if(!r.hasClass("hidden"))return r.addClass("hidden"),void r.hide();r.removeClass("hidden"),r.show(),r.hasClass("loaded")||(r.addClass("loaded"),h().ajax((0,v.Jv)("/contactsmenu/findOne"),{method:"POST",data:{shareType:n,shareWith:e}}).then((function(e){let n;r.find("ul").find("li").addClass("hidden"),n=e.topAction?[e.topAction].concat(e.actions):[{hyperlink:"#",title:t("core","No action available")}],n.forEach((function(t){r.find("ul").append(Gn(t))})),o.trigger("load")}),(function(e){let n;r.find("ul").find("li").addClass("hidden"),n=404===e.status?t("core","No action available"):t("core","Error fetching contact actions"),r.find("ul").append(Gn({hyperlink:"#",title:n})),o.trigger("loaderror",e)})))}})),h()(document).click((function(t){const e=r.has(t.target).length>0;let n=o.has(t.target).length>0;o.each((function(){h()(this).is(t.target)&&(n=!0)})),e||n||(r.addClass("hidden"),r.hide())}))},h().fn.exists=function(){return this.length>0},h().fn.filterAttr=function(t,e){return this.filter((function(){return h()(this).attr(t)===e}))};var Xn=o(52697);h().widget("oc.ocdialog",{options:{width:"auto",height:"auto",closeButton:!0,closeOnEscape:!0,closeCallback:null,modal:!1},_create(){const t=this;this.originalCss={display:this.element[0].style.display,width:this.element[0].style.width,height:this.element[0].style.height},this.originalTitle=this.element.attr("title"),this.options.title=this.options.title||this.originalTitle,this.$dialog=h()('
        ').attr({tabIndex:-1,role:"dialog","aria-modal":!0}).insertBefore(this.element),this.$dialog.append(this.element.detach()),this.element.removeAttr("title").addClass("oc-dialog-content").appendTo(this.$dialog),1===t.element.find("input").length&&t.element.find("input").on("keydown",(function(e){if(Qn(e)&&t.$buttonrow){const e=t.$buttonrow.find("button.primary");e&&!e.prop("disabled")&&e.click()}})),this.$dialog.css({display:"inline-block",position:"fixed"}),this.enterCallback=null,h()(document).on("keydown keyup",(function(e){if(e.target===t.$dialog.get(0)||0!==t.$dialog.find(h()(e.target)).length)return 27===e.keyCode&&"keydown"===e.type&&t.options.closeOnEscape?(e.stopImmediatePropagation(),t.close(),!1):13===e.keyCode?(e.stopImmediatePropagation(),null!==t.enterCallback?(t.enterCallback(),e.preventDefault(),!1):"keyup"===e.type&&(e.preventDefault(),!1)):void 0})),this._setOptions(this.options),this._createOverlay(),this._useFocusTrap()},_init(){this._trigger("open")},_setOption(e,n){const i=this;switch(e){case"title":if(this.$title)this.$title.text(n);else{const t=h()('

        '+n+"

        ");this.$title=t.prependTo(this.$dialog)}this._setSizes();break;case"buttons":if(this.$buttonrow)this.$buttonrow.empty();else{const t=h()('
        ');this.$buttonrow=t.appendTo(this.$dialog)}1===n.length?this.$buttonrow.addClass("onebutton"):2===n.length?this.$buttonrow.addClass("twobuttons"):3===n.length&&this.$buttonrow.addClass("threebuttons"),h().each(n,(function(t,e){const n=h()("');e.attr("aria-label",t("core",'Close "{dialogTitle}" dialog',{dialogTitle:this.$title||this.options.title})),this.$dialog.prepend(e),e.on("click keydown",(function(t){Qn(t)&&(i.options.closeCallback&&i.options.closeCallback(),i.close())}))}else this.$dialog.find(".oc-dialog-close").remove();break;case"width":this.$dialog.css("width",n);break;case"height":this.$dialog.css("height",n);break;case"close":this.closeCB=n}h().Widget.prototype._setOption.apply(this,arguments)},_setOptions(t){h().Widget.prototype._setOptions.apply(this,arguments)},_setSizes(){let t=0;this.$title&&(t+=this.$title.outerHeight(!0)),this.$buttonrow&&(t+=this.$buttonrow.outerHeight(!0)),this.element.css({height:"calc(100% - "+t+"px)"})},_createOverlay(){if(!this.options.modal)return;const t=this;let e=h()("#content");0===e.length&&(e=h()(".content")),this.overlay=h()("
        ").addClass("oc-dialog-dim").insertBefore(this.$dialog),this.overlay.on("click keydown keyup",(function(e){e.target!==t.$dialog.get(0)&&0===t.$dialog.find(h()(e.target)).length&&(e.preventDefault(),e.stopPropagation())}))},_destroyOverlay(){this.options.modal&&this.overlay&&(this.overlay.off("click keydown keyup"),this.overlay.remove(),this.overlay=null)},_useFocusTrap(){Object.assign(window,{_nc_focus_trap:window._nc_focus_trap||[]});const t=this.$dialog[0];this.focusTrap=(0,Xn.K)(t,{allowOutsideClick:!0,trapStack:window._nc_focus_trap,fallbackFocus:t}),this.focusTrap.activate()},_clearFocusTrap(){this.focusTrap?.deactivate(),this.focusTrap=null},widget(){return this.$dialog},setEnterCallback(t){this.enterCallback=t},unsetEnterCallback(){this.enterCallback=null},close(){this._clearFocusTrap(),this._destroyOverlay();const t=this;setTimeout((function(){t._trigger("close",t)}),200),t.$dialog.remove(),this.destroy()},destroy(){this.$title&&this.$title.remove(),this.$buttonrow&&this.$buttonrow.remove(),this.originalTitle&&this.element.attr("title",this.originalTitle),this.element.removeClass("oc-dialog-content").css(this.originalCss).detach().insertBefore(this.$dialog),this.$dialog.remove()}});var Vn=o(96763);const Kn={init(t,e,n){this.vars=t,this.options=h().extend({},this.options,e),this.elem=n;const i=this;if("function"==typeof this.options.escapeFunction){const t=Object.keys(this.vars);for(let e=0;e{var e=t.toLowerCase();function n(t,e,n){this.r=t,this.g=e,this.b=n}function i(t,e,i){var o=[];o.push(e);for(var r=function(t,e){var n=new Array(3);return n[0]=(e[1].r-e[0].r)/t,n[1]=(e[1].g-e[0].g)/t,n[2]=(e[1].b-e[0].b)/t,n}(t,[e,i]),s=1;st[0].toUpperCase())).join("");this.html(r)}},h().fn.clearimageplaceholder=function(){this.css("background-color",""),this.css("color",""),this.css("font-weight",""),this.css("text-align",""),this.css("line-height",""),this.css("font-size",""),this.html(""),this.removeClass("icon-loading"),this.removeClass("icon-loading-small")},h()(document).on("ajaxSend",(function(t,e,n){!1===n.crossDomain&&(e.setRequestHeader("requesttoken",et()),e.setRequestHeader("OCS-APIREQUEST","true"))})),h().fn.selectRange=function(t,e){return this.each((function(){if(this.setSelectionRange)this.focus(),this.setSelectionRange(t,e);else if(this.createTextRange){const n=this.createTextRange();n.collapse(!0),n.moveEnd("character",e),n.moveStart("character",t),n.select()}}))},h().fn.extend({showPassword(t){const e={fn:null,args:{}};e.fn=t;const n=function(t,e){e.val(t.val())},i=function(t,e,i){t.is(":checked")?(n(e,i),i.show(),e.hide()):(n(i,e),i.hide(),e.show())};return this.each((function(){const t=h()(this),o=h()(t.data("typetoggle")),r=function(t){const e=h()(t),n=h()("");return n.attr({type:"text",class:e.attr("class"),style:e.attr("style"),size:e.attr("size"),name:e.attr("name")+"-clone",tabindex:e.attr("tabindex"),autocomplete:"off"}),void 0!==e.attr("placeholder")&&n.attr("placeholder",e.attr("placeholder")),n}(t);r.insertAfter(t),e.fn&&(e.args.input=t,e.args.checkbox=o,e.args.clone=r),o.bind("click",(function(){i(o,t,r)})),t.bind("keyup",(function(){n(t,r)})),r.bind("keyup",(function(){n(r,t),t.trigger("keyup")})),r.bind("blur",(function(){t.trigger("focusout")})),i(o,t,r),r.closest("form").submit((function(t){r.prop("type","password")})),e.fn&&e.fn(e.args)}))}}),h().ui.autocomplete.prototype._resizeMenu=function(){this.menu.element.outerWidth(this.element.outerWidth())};var $n=o(90628),ti={};ti.styleTagTransform=ue(),ti.setAttributes=se(),ti.insert=oe().bind(null,"head"),ti.domAPI=ne(),ti.insertStyleElement=ce(),te()($n.A,ti),$n.A&&$n.A.locals&&$n.A.locals;var ei=o(2791),ni={};ni.styleTagTransform=ue(),ni.setAttributes=se(),ni.insert=oe().bind(null,"head"),ni.domAPI=ne(),ni.insertStyleElement=ce(),te()(ei.A,ni),ei.A&&ei.A.locals&&ei.A.locals,h().ajaxSetup({contents:{script:!1}}),h().globalEval=function(){},o.nc=(0,f.aV)(),window.addEventListener("DOMContentLoaded",(function(){ln(),(()=>{let t=h()("[data-apps-slide-toggle]");0===t.length&&h()("#app-navigation").addClass("without-app-settings"),h()(document).click((function(e){m&&(t=h()("[data-apps-slide-toggle]")),t.each((function(t,n){const i=h()(n).data("apps-slide-toggle"),o=h()(i);function r(){o.slideUp(4*OC.menuSpeed,(function(){o.trigger(new(h().Event)("hide"))})),o.removeClass("opened"),h()(n).removeClass("opened"),h()(n).attr("aria-expanded","false")}if(!o.is(":animated"))if(h()(n).is(h()(e.target).closest("[data-apps-slide-toggle]")))o.is(":visible")?r():function(){o.slideDown(4*OC.menuSpeed,(function(){o.trigger(new(h().Event)("show"))})),o.addClass("opened"),h()(n).addClass("opened"),h()(n).attr("aria-expanded","true");const t=h()(i+" [autofocus]");1===t.length&&t.focus()}();else{const t=h()(e.target).closest(i);o.is(":visible")&&t[0]!==o[0]&&r()}}))}))})(),window.history.pushState?window.onpopstate=_.bind(St.Util.History._onPopState,St.Util.History):window.onhashchange=_.bind(St.Util.History._onPopState,St.Util.History)})),document.addEventListener("DOMContentLoaded",(function(){const t=document.getElementById("password-input-form");t&&t.addEventListener("submit",(async function(e){e.preventDefault();const n=document.getElementById("requesttoken");if(n){const t=(0,v.Jv)("/csrftoken"),e=await Ht.Ay.get(t);n.value=e.data.token}t.submit()}))}))},21391:(t,e,n)=>{var i,o,r;r="object"==typeof self&&self.self===self&&self||"object"==typeof n.g&&n.g.global===n.g&&n.g,i=[n(4523),n(74692),e],o=function(t,e,n){r.Backbone=function(t,e,n,i){var o=t.Backbone,r=Array.prototype.slice;e.VERSION="1.6.0",e.$=i,e.noConflict=function(){return t.Backbone=o,this},e.emulateHTTP=!1,e.emulateJSON=!1;var s,a=e.Events={},c=/\s+/,l=function(t,e,i,o,r){var s,a=0;if(i&&"object"==typeof i){void 0!==o&&"context"in r&&void 0===r.context&&(r.context=o);for(s=n.keys(i);athis.length&&(o=this.length),o<0&&(o+=this.length+1);var r,s,a=[],c=[],l=[],u=[],h={},d=e.add,p=e.merge,A=e.remove,f=!1,g=this.comparator&&null==o&&!1!==e.sort,m=n.isString(this.comparator)?this.comparator:null;for(s=0;s0&&!e.silent&&delete e.index,n},_isModel:function(t){return t instanceof m},_addReference:function(t,e){this._byId[t.cid]=t;var n=this.modelId(t.attributes,t.idAttribute);null!=n&&(this._byId[n]=t),t.on("all",this._onModelEvent,this)},_removeReference:function(t,e){delete this._byId[t.cid];var n=this.modelId(t.attributes,t.idAttribute);null!=n&&delete this._byId[n],this===t.collection&&delete t.collection,t.off("all",this._onModelEvent,this)},_onModelEvent:function(t,e,n,i){if(e){if(("add"===t||"remove"===t)&&n!==this)return;if("destroy"===t&&this.remove(e,i),"changeId"===t){var o=this.modelId(e.previousAttributes(),e.idAttribute),r=this.modelId(e.attributes,e.idAttribute);null!=o&&delete this._byId[o],null!=r&&(this._byId[r]=e)}}this.trigger.apply(this,arguments)},_forwardPristineError:function(t,e,n){this.has(t)||this._onModelEvent("error",t,e,n)}});var w="function"==typeof Symbol&&Symbol.iterator;w&&(b.prototype[w]=b.prototype.values);var y=function(t,e){this._collection=t,this._kind=e,this._index=0},k=1,B=2,E=3;w&&(y.prototype[w]=function(){return this}),y.prototype.next=function(){if(this._collection){if(this._index7),this._useHashChange=this._wantsHashChange&&this._hasHashChange,this._wantsPushState=!!this.options.pushState,this._hasPushState=!(!this.history||!this.history.pushState),this._usePushState=this._wantsPushState&&this._hasPushState,this.fragment=this.getFragment(),this.root=("/"+this.root+"/").replace(j,"/"),this._wantsHashChange&&this._wantsPushState){if(!this._hasPushState&&!this.atRoot()){var e=this.root.slice(0,-1)||"/";return this.location.replace(e+"#"+this.getPath()),!0}this._hasPushState&&this.atRoot()&&this.navigate(this.getHash(),{replace:!0})}if(!this._hasHashChange&&this._wantsHashChange&&!this._usePushState){this.iframe=document.createElement("iframe"),this.iframe.src="javascript:0",this.iframe.style.display="none",this.iframe.tabIndex=-1;var i=document.body,o=i.insertBefore(this.iframe,i.firstChild).contentWindow;o.document.open(),o.document.close(),o.location.hash="#"+this.fragment}var r=window.addEventListener||function(t,e){return attachEvent("on"+t,e)};if(this._usePushState?r("popstate",this.checkUrl,!1):this._useHashChange&&!this.iframe?r("hashchange",this.checkUrl,!1):this._wantsHashChange&&(this._checkUrlInterval=setInterval(this.checkUrl,this.interval)),!this.options.silent)return this.loadUrl()},stop:function(){var t=window.removeEventListener||function(t,e){return detachEvent("on"+t,e)};this._usePushState?t("popstate",this.checkUrl,!1):this._useHashChange&&!this.iframe&&t("hashchange",this.checkUrl,!1),this.iframe&&(document.body.removeChild(this.iframe),this.iframe=null),this._checkUrlInterval&&clearInterval(this._checkUrlInterval),L.started=!1},route:function(t,e){this.handlers.unshift({route:t,callback:e})},checkUrl:function(t){var e=this.getFragment();if(e===this.fragment&&this.iframe&&(e=this.getHash(this.iframe.contentWindow)),e===this.fragment)return!this.matchRoot()&&this.notfound();this.iframe&&this.navigate(e),this.loadUrl()},loadUrl:function(t){return this.matchRoot()?(t=this.fragment=this.getFragment(t),n.some(this.handlers,(function(e){if(e.route.test(t))return e.callback(t),!0}))||this.notfound()):this.notfound()},notfound:function(){return this.trigger("notfound"),!1},navigate:function(t,e){if(!L.started)return!1;e&&!0!==e||(e={trigger:!!e}),t=this.getFragment(t||"");var n=this.root;this._trailingSlash||""!==t&&"?"!==t.charAt(0)||(n=n.slice(0,-1)||"/");var i=n+t;t=t.replace(U,"");var o=this.decodeFragment(t);if(this.fragment!==o){if(this.fragment=o,this._usePushState)this.history[e.replace?"replaceState":"pushState"]({},document.title,i);else{if(!this._wantsHashChange)return this.location.assign(i);if(this._updateHash(this.location,t,e.replace),this.iframe&&t!==this.getHash(this.iframe.contentWindow)){var r=this.iframe.contentWindow;e.replace||(r.document.open(),r.document.close()),this._updateHash(r.location,t,e.replace)}}return e.trigger?this.loadUrl(t):void 0}},_updateHash:function(t,e,n){if(n){var i=t.href.replace(/(javascript:|#).*$/,"");t.replace(i+"#"+e)}else t.hash="#"+e}}),e.history=new L;m.extend=b.extend=P.extend=_.extend=L.extend=function(t,e){var i,o=this;return i=t&&n.has(t,"constructor")?t.constructor:function(){return o.apply(this,arguments)},n.extend(i,o,e),i.prototype=n.create(o.prototype,t),i.prototype.constructor=i,i.__super__=o.prototype,i};var W=function(){throw new Error('A "url" property or function must be specified')},Y=function(t,e){var n=e.error;e.error=function(i){n&&n.call(e.context,t,i,e),t.trigger("error",t,i,e)}};return e._debug=function(){return{root:t,_:n}},e}(r,n,t,e)}.apply(e,i),void 0===o||(t.exports=o)},18922:function(t,e,n){var i;!function(){"use strict";function o(t,e){var n=(65535&t)+(65535&e);return(t>>16)+(e>>16)+(n>>16)<<16|65535&n}function r(t,e,n,i,r,s){return o((a=o(o(e,t),o(i,s)))<<(c=r)|a>>>32-c,n);var a,c}function s(t,e,n,i,o,s,a){return r(e&n|~e&i,t,e,o,s,a)}function a(t,e,n,i,o,s,a){return r(e&i|n&~i,t,e,o,s,a)}function c(t,e,n,i,o,s,a){return r(e^n^i,t,e,o,s,a)}function l(t,e,n,i,o,s,a){return r(n^(e|~i),t,e,o,s,a)}function u(t,e){var n,i,r,u,h;t[e>>5]|=128<>>9<<4)]=e;var d=1732584193,p=-271733879,A=-1732584194,f=271733878;for(n=0;n>5]>>>e%32&255);return n}function d(t){var e,n=[];for(n[(t.length>>2)-1]=void 0,e=0;e>5]|=(255&t.charCodeAt(e/8))<>>4&15)+i.charAt(15&e);return o}function A(t){return unescape(encodeURIComponent(t))}function f(t){return function(t){return h(u(d(t),8*t.length))}(A(t))}function g(t,e){return function(t,e){var n,i,o=d(t),r=[],s=[];for(r[15]=s[15]=void 0,o.length>16&&(o=u(o,8*t.length)),n=0;n<16;n+=1)r[n]=909522486^o[n],s[n]=1549556828^o[n];return i=u(r.concat(d(e)),512+8*e.length),h(u(s.concat(i),640))}(A(t),A(e))}function m(t,e,n){return e?n?g(e,t):p(g(e,t)):n?f(t):p(f(t))}void 0===(i=function(){return m}.call(e,n,e,t))||(t.exports=i)}()},57576:function(t){var e;e=function(){return function(){var t={686:function(t,e,n){"use strict";n.d(e,{default:function(){return C}});var i=n(279),o=n.n(i),r=n(370),s=n.n(r),a=n(817),c=n.n(a);function l(t){try{return document.execCommand(t)}catch(t){return!1}}var u=function(t){var e=c()(t);return l("cut"),e},h=function(t,e){var n=function(t){var e="rtl"===document.documentElement.getAttribute("dir"),n=document.createElement("textarea");n.style.fontSize="12pt",n.style.border="0",n.style.padding="0",n.style.margin="0",n.style.position="absolute",n.style[e?"right":"left"]="-9999px";var i=window.pageYOffset||document.documentElement.scrollTop;return n.style.top="".concat(i,"px"),n.setAttribute("readonly",""),n.value=t,n}(t);e.container.appendChild(n);var i=c()(n);return l("copy"),n.remove(),i},d=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{container:document.body},n="";return"string"==typeof t?n=h(t,e):t instanceof HTMLInputElement&&!["text","search","url","tel","password"].includes(null==t?void 0:t.type)?n=h(t.value,e):(n=c()(t),l("copy")),n};function p(t){return p="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},p(t)}function A(t){return A="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},A(t)}function f(t,e){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:{};this.action="function"==typeof t.action?t.action:this.defaultAction,this.target="function"==typeof t.target?t.target:this.defaultTarget,this.text="function"==typeof t.text?t.text:this.defaultText,this.container="object"===A(t.container)?t.container:document.body}},{key:"listenClick",value:function(t){var e=this;this.listener=s()(t,"click",(function(t){return e.onClick(t)}))}},{key:"onClick",value:function(t){var e=t.delegateTarget||t.currentTarget,n=this.action(e)||"copy",i=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.action,n=void 0===e?"copy":e,i=t.container,o=t.target,r=t.text;if("copy"!==n&&"cut"!==n)throw new Error('Invalid "action" value, use either "copy" or "cut"');if(void 0!==o){if(!o||"object"!==p(o)||1!==o.nodeType)throw new Error('Invalid "target" value, use a valid Element');if("copy"===n&&o.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if("cut"===n&&(o.hasAttribute("readonly")||o.hasAttribute("disabled")))throw new Error('Invalid "target" attribute. You can\'t cut text from elements with "readonly" or "disabled" attributes')}return r?d(r,{container:i}):o?"cut"===n?u(o):d(o,{container:i}):void 0}({action:n,container:this.container,target:this.target(e),text:this.text(e)});this.emit(i?"success":"error",{action:n,text:i,trigger:e,clearSelection:function(){e&&e.focus(),window.getSelection().removeAllRanges()}})}},{key:"defaultAction",value:function(t){return b("action",t)}},{key:"defaultTarget",value:function(t){var e=b("target",t);if(e)return document.querySelector(e)}},{key:"defaultText",value:function(t){return b("text",t)}},{key:"destroy",value:function(){this.listener.destroy()}}],i=[{key:"copy",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{container:document.body};return d(t,e)}},{key:"cut",value:function(t){return u(t)}},{key:"isSupported",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:["copy","cut"],e="string"==typeof t?[t]:t,n=!!document.queryCommandSupported;return e.forEach((function(t){n=n&&!!document.queryCommandSupported(t)})),n}}],n&&f(e.prototype,n),i&&f(e,i),c}(o()),C=v},828:function(t){if("undefined"!=typeof Element&&!Element.prototype.matches){var e=Element.prototype;e.matches=e.matchesSelector||e.mozMatchesSelector||e.msMatchesSelector||e.oMatchesSelector||e.webkitMatchesSelector}t.exports=function(t,e){for(;t&&9!==t.nodeType;){if("function"==typeof t.matches&&t.matches(e))return t;t=t.parentNode}}},438:function(t,e,n){var i=n(828);function o(t,e,n,i,o){var s=r.apply(this,arguments);return t.addEventListener(n,s,o),{destroy:function(){t.removeEventListener(n,s,o)}}}function r(t,e,n,o){return function(n){n.delegateTarget=i(n.target,e),n.delegateTarget&&o.call(t,n)}}t.exports=function(t,e,n,i,r){return"function"==typeof t.addEventListener?o.apply(null,arguments):"function"==typeof n?o.bind(null,document).apply(null,arguments):("string"==typeof t&&(t=document.querySelectorAll(t)),Array.prototype.map.call(t,(function(t){return o(t,e,n,i,r)})))}},879:function(t,e){e.node=function(t){return void 0!==t&&t instanceof HTMLElement&&1===t.nodeType},e.nodeList=function(t){var n=Object.prototype.toString.call(t);return void 0!==t&&("[object NodeList]"===n||"[object HTMLCollection]"===n)&&"length"in t&&(0===t.length||e.node(t[0]))},e.string=function(t){return"string"==typeof t||t instanceof String},e.fn=function(t){return"[object Function]"===Object.prototype.toString.call(t)}},370:function(t,e,n){var i=n(879),o=n(438);t.exports=function(t,e,n){if(!t&&!e&&!n)throw new Error("Missing required arguments");if(!i.string(e))throw new TypeError("Second argument must be a String");if(!i.fn(n))throw new TypeError("Third argument must be a Function");if(i.node(t))return function(t,e,n){return t.addEventListener(e,n),{destroy:function(){t.removeEventListener(e,n)}}}(t,e,n);if(i.nodeList(t))return function(t,e,n){return Array.prototype.forEach.call(t,(function(t){t.addEventListener(e,n)})),{destroy:function(){Array.prototype.forEach.call(t,(function(t){t.removeEventListener(e,n)}))}}}(t,e,n);if(i.string(t))return function(t,e,n){return o(document.body,t,e,n)}(t,e,n);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList")}},817:function(t){t.exports=function(t){var e;if("SELECT"===t.nodeName)t.focus(),e=t.value;else if("INPUT"===t.nodeName||"TEXTAREA"===t.nodeName){var n=t.hasAttribute("readonly");n||t.setAttribute("readonly",""),t.select(),t.setSelectionRange(0,t.value.length),n||t.removeAttribute("readonly"),e=t.value}else{t.hasAttribute("contenteditable")&&t.focus();var i=window.getSelection(),o=document.createRange();o.selectNodeContents(t),i.removeAllRanges(),i.addRange(o),e=i.toString()}return e}},279:function(t){function e(){}e.prototype={on:function(t,e,n){var i=this.e||(this.e={});return(i[t]||(i[t]=[])).push({fn:e,ctx:n}),this},once:function(t,e,n){var i=this;function o(){i.off(t,o),e.apply(n,arguments)}return o._=e,this.on(t,o,n)},emit:function(t){for(var e=[].slice.call(arguments,1),n=((this.e||(this.e={}))[t]||[]).slice(),i=0,o=n.length;i{"use strict";n.d(e,{A:()=>E});var i=n(71354),o=n.n(i),r=n(76314),s=n.n(r),a=n(4417),c=n.n(a),l=new URL(n(59699),n.b),u=new URL(n(34213),n.b),h=new URL(n(3132),n.b),d=new URL(n(19394),n.b),p=new URL(n(81972),n.b),A=new URL(n(6411),n.b),f=new URL(n(14506),n.b),g=new URL(n(64886),n.b),m=s()(o()),b=c()(l),v=c()(u),C=c()(h),x=c()(d),w=c()(p),y=c()(A),k=c()(f),B=c()(g);m.push([t.id,`/*! jQuery UI - v1.13.3 - 2024-04-26\n* https://jqueryui.com\n* Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css\n* To view and modify this theme, visit https://jqueryui.com/themeroller/?bgShadowXPos=&bgOverlayXPos=&bgErrorXPos=&bgHighlightXPos=&bgContentXPos=&bgHeaderXPos=&bgActiveXPos=&bgHoverXPos=&bgDefaultXPos=&bgShadowYPos=&bgOverlayYPos=&bgErrorYPos=&bgHighlightYPos=&bgContentYPos=&bgHeaderYPos=&bgActiveYPos=&bgHoverYPos=&bgDefaultYPos=&bgShadowRepeat=&bgOverlayRepeat=&bgErrorRepeat=&bgHighlightRepeat=&bgContentRepeat=&bgHeaderRepeat=&bgActiveRepeat=&bgHoverRepeat=&bgDefaultRepeat=&iconsHover=url(%22images%2Fui-icons_555555_256x240.png%22)&iconsHighlight=url(%22images%2Fui-icons_777620_256x240.png%22)&iconsHeader=url(%22images%2Fui-icons_444444_256x240.png%22)&iconsError=url(%22images%2Fui-icons_cc0000_256x240.png%22)&iconsDefault=url(%22images%2Fui-icons_777777_256x240.png%22)&iconsContent=url(%22images%2Fui-icons_444444_256x240.png%22)&iconsActive=url(%22images%2Fui-icons_ffffff_256x240.png%22)&bgImgUrlShadow=&bgImgUrlOverlay=&bgImgUrlHover=&bgImgUrlHighlight=&bgImgUrlHeader=&bgImgUrlError=&bgImgUrlDefault=&bgImgUrlContent=&bgImgUrlActive=&opacityFilterShadow=%22alpha(opacity%3D30)%22&opacityFilterOverlay=%22alpha(opacity%3D30)%22&opacityShadowPerc=30&opacityOverlayPerc=30&iconColorHover=%23555555&iconColorHighlight=%23777620&iconColorHeader=%23444444&iconColorError=%23cc0000&iconColorDefault=%23777777&iconColorContent=%23444444&iconColorActive=%23ffffff&bgImgOpacityShadow=0&bgImgOpacityOverlay=0&bgImgOpacityError=95&bgImgOpacityHighlight=55&bgImgOpacityContent=75&bgImgOpacityHeader=75&bgImgOpacityActive=65&bgImgOpacityHover=75&bgImgOpacityDefault=75&bgTextureShadow=flat&bgTextureOverlay=flat&bgTextureError=flat&bgTextureHighlight=flat&bgTextureContent=flat&bgTextureHeader=flat&bgTextureActive=flat&bgTextureHover=flat&bgTextureDefault=flat&cornerRadius=3px&fwDefault=normal&ffDefault=Arial%2CHelvetica%2Csans-serif&fsDefault=1em&cornerRadiusShadow=8px&thicknessShadow=5px&offsetLeftShadow=0px&offsetTopShadow=0px&opacityShadow=.3&bgColorShadow=%23666666&opacityOverlay=.3&bgColorOverlay=%23aaaaaa&fcError=%235f3f3f&borderColorError=%23f1a899&bgColorError=%23fddfdf&fcHighlight=%23777620&borderColorHighlight=%23dad55e&bgColorHighlight=%23fffa90&fcContent=%23333333&borderColorContent=%23dddddd&bgColorContent=%23ffffff&fcHeader=%23333333&borderColorHeader=%23dddddd&bgColorHeader=%23e9e9e9&fcActive=%23ffffff&borderColorActive=%23003eff&bgColorActive=%23007fff&fcHover=%232b2b2b&borderColorHover=%23cccccc&bgColorHover=%23ededed&fcDefault=%23454545&borderColorDefault=%23c5c5c5&bgColorDefault=%23f6f6f6\n* Copyright OpenJS Foundation and other contributors; Licensed MIT */\n\n/* Layout helpers\n----------------------------------*/\n.ui-helper-hidden {\n\tdisplay: none;\n}\n.ui-helper-hidden-accessible {\n\tborder: 0;\n\tclip: rect(0 0 0 0);\n\theight: 1px;\n\tmargin: -1px;\n\toverflow: hidden;\n\tpadding: 0;\n\tposition: absolute;\n\twidth: 1px;\n}\n.ui-helper-reset {\n\tmargin: 0;\n\tpadding: 0;\n\tborder: 0;\n\toutline: 0;\n\tline-height: 1.3;\n\ttext-decoration: none;\n\tfont-size: 100%;\n\tlist-style: none;\n}\n.ui-helper-clearfix:before,\n.ui-helper-clearfix:after {\n\tcontent: "";\n\tdisplay: table;\n\tborder-collapse: collapse;\n}\n.ui-helper-clearfix:after {\n\tclear: both;\n}\n.ui-helper-zfix {\n\twidth: 100%;\n\theight: 100%;\n\ttop: 0;\n\tleft: 0;\n\tposition: absolute;\n\topacity: 0;\n\t-ms-filter: "alpha(opacity=0)"; /* support: IE8 */\n}\n\n.ui-front {\n\tz-index: 100;\n}\n\n\n/* Interaction Cues\n----------------------------------*/\n.ui-state-disabled {\n\tcursor: default !important;\n\tpointer-events: none;\n}\n\n\n/* Icons\n----------------------------------*/\n.ui-icon {\n\tdisplay: inline-block;\n\tvertical-align: middle;\n\tmargin-top: -.25em;\n\tposition: relative;\n\ttext-indent: -99999px;\n\toverflow: hidden;\n\tbackground-repeat: no-repeat;\n}\n\n.ui-widget-icon-block {\n\tleft: 50%;\n\tmargin-left: -8px;\n\tdisplay: block;\n}\n\n/* Misc visuals\n----------------------------------*/\n\n/* Overlays */\n.ui-widget-overlay {\n\tposition: fixed;\n\ttop: 0;\n\tleft: 0;\n\twidth: 100%;\n\theight: 100%;\n}\n.ui-accordion .ui-accordion-header {\n\tdisplay: block;\n\tcursor: pointer;\n\tposition: relative;\n\tmargin: 2px 0 0 0;\n\tpadding: .5em .5em .5em .7em;\n\tfont-size: 100%;\n}\n.ui-accordion .ui-accordion-content {\n\tpadding: 1em 2.2em;\n\tborder-top: 0;\n\toverflow: auto;\n}\n.ui-autocomplete {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tcursor: default;\n}\n.ui-menu {\n\tlist-style: none;\n\tpadding: 0;\n\tmargin: 0;\n\tdisplay: block;\n\toutline: 0;\n}\n.ui-menu .ui-menu {\n\tposition: absolute;\n}\n.ui-menu .ui-menu-item {\n\tmargin: 0;\n\tcursor: pointer;\n\t/* support: IE10, see #8844 */\n\tlist-style-image: url(${b});\n}\n.ui-menu .ui-menu-item-wrapper {\n\tposition: relative;\n\tpadding: 3px 1em 3px .4em;\n}\n.ui-menu .ui-menu-divider {\n\tmargin: 5px 0;\n\theight: 0;\n\tfont-size: 0;\n\tline-height: 0;\n\tborder-width: 1px 0 0 0;\n}\n.ui-menu .ui-state-focus,\n.ui-menu .ui-state-active {\n\tmargin: -1px;\n}\n\n/* icon support */\n.ui-menu-icons {\n\tposition: relative;\n}\n.ui-menu-icons .ui-menu-item-wrapper {\n\tpadding-left: 2em;\n}\n\n/* left-aligned */\n.ui-menu .ui-icon {\n\tposition: absolute;\n\ttop: 0;\n\tbottom: 0;\n\tleft: .2em;\n\tmargin: auto 0;\n}\n\n/* right-aligned */\n.ui-menu .ui-menu-icon {\n\tleft: auto;\n\tright: 0;\n}\n.ui-button {\n\tpadding: .4em 1em;\n\tdisplay: inline-block;\n\tposition: relative;\n\tline-height: normal;\n\tmargin-right: .1em;\n\tcursor: pointer;\n\tvertical-align: middle;\n\ttext-align: center;\n\t-webkit-user-select: none;\n\t-moz-user-select: none;\n\t-ms-user-select: none;\n\tuser-select: none;\n\n\t/* Support: IE <= 11 */\n\toverflow: visible;\n}\n\n.ui-button,\n.ui-button:link,\n.ui-button:visited,\n.ui-button:hover,\n.ui-button:active {\n\ttext-decoration: none;\n}\n\n/* to make room for the icon, a width needs to be set here */\n.ui-button-icon-only {\n\twidth: 2em;\n\tbox-sizing: border-box;\n\ttext-indent: -9999px;\n\twhite-space: nowrap;\n}\n\n/* no icon support for input elements */\ninput.ui-button.ui-button-icon-only {\n\ttext-indent: 0;\n}\n\n/* button icon element(s) */\n.ui-button-icon-only .ui-icon {\n\tposition: absolute;\n\ttop: 50%;\n\tleft: 50%;\n\tmargin-top: -8px;\n\tmargin-left: -8px;\n}\n\n.ui-button.ui-icon-notext .ui-icon {\n\tpadding: 0;\n\twidth: 2.1em;\n\theight: 2.1em;\n\ttext-indent: -9999px;\n\twhite-space: nowrap;\n\n}\n\ninput.ui-button.ui-icon-notext .ui-icon {\n\twidth: auto;\n\theight: auto;\n\ttext-indent: 0;\n\twhite-space: normal;\n\tpadding: .4em 1em;\n}\n\n/* workarounds */\n/* Support: Firefox 5 - 40 */\ninput.ui-button::-moz-focus-inner,\nbutton.ui-button::-moz-focus-inner {\n\tborder: 0;\n\tpadding: 0;\n}\n.ui-controlgroup {\n\tvertical-align: middle;\n\tdisplay: inline-block;\n}\n.ui-controlgroup > .ui-controlgroup-item {\n\tfloat: left;\n\tmargin-left: 0;\n\tmargin-right: 0;\n}\n.ui-controlgroup > .ui-controlgroup-item:focus,\n.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus {\n\tz-index: 9999;\n}\n.ui-controlgroup-vertical > .ui-controlgroup-item {\n\tdisplay: block;\n\tfloat: none;\n\twidth: 100%;\n\tmargin-top: 0;\n\tmargin-bottom: 0;\n\ttext-align: left;\n}\n.ui-controlgroup-vertical .ui-controlgroup-item {\n\tbox-sizing: border-box;\n}\n.ui-controlgroup .ui-controlgroup-label {\n\tpadding: .4em 1em;\n}\n.ui-controlgroup .ui-controlgroup-label span {\n\tfont-size: 80%;\n}\n.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item {\n\tborder-left: none;\n}\n.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item {\n\tborder-top: none;\n}\n.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content {\n\tborder-right: none;\n}\n.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content {\n\tborder-bottom: none;\n}\n\n/* Spinner specific style fixes */\n.ui-controlgroup-vertical .ui-spinner-input {\n\n\t/* Support: IE8 only, Android < 4.4 only */\n\twidth: 75%;\n\twidth: calc( 100% - 2.4em );\n}\n.ui-controlgroup-vertical .ui-spinner .ui-spinner-up {\n\tborder-top-style: solid;\n}\n\n.ui-checkboxradio-label .ui-icon-background {\n\tbox-shadow: inset 1px 1px 1px #ccc;\n\tborder-radius: .12em;\n\tborder: none;\n}\n.ui-checkboxradio-radio-label .ui-icon-background {\n\twidth: 16px;\n\theight: 16px;\n\tborder-radius: 1em;\n\toverflow: visible;\n\tborder: none;\n}\n.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,\n.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon {\n\tbackground-image: none;\n\twidth: 8px;\n\theight: 8px;\n\tborder-width: 4px;\n\tborder-style: solid;\n}\n.ui-checkboxradio-disabled {\n\tpointer-events: none;\n}\n.ui-datepicker {\n\twidth: 17em;\n\tpadding: .2em .2em 0;\n\tdisplay: none;\n}\n.ui-datepicker .ui-datepicker-header {\n\tposition: relative;\n\tpadding: .2em 0;\n}\n.ui-datepicker .ui-datepicker-prev,\n.ui-datepicker .ui-datepicker-next {\n\tposition: absolute;\n\ttop: 2px;\n\twidth: 1.8em;\n\theight: 1.8em;\n}\n.ui-datepicker .ui-datepicker-prev-hover,\n.ui-datepicker .ui-datepicker-next-hover {\n\ttop: 1px;\n}\n.ui-datepicker .ui-datepicker-prev {\n\tleft: 2px;\n}\n.ui-datepicker .ui-datepicker-next {\n\tright: 2px;\n}\n.ui-datepicker .ui-datepicker-prev-hover {\n\tleft: 1px;\n}\n.ui-datepicker .ui-datepicker-next-hover {\n\tright: 1px;\n}\n.ui-datepicker .ui-datepicker-prev span,\n.ui-datepicker .ui-datepicker-next span {\n\tdisplay: block;\n\tposition: absolute;\n\tleft: 50%;\n\tmargin-left: -8px;\n\ttop: 50%;\n\tmargin-top: -8px;\n}\n.ui-datepicker .ui-datepicker-title {\n\tmargin: 0 2.3em;\n\tline-height: 1.8em;\n\ttext-align: center;\n}\n.ui-datepicker .ui-datepicker-title select {\n\tfont-size: 1em;\n\tmargin: 1px 0;\n}\n.ui-datepicker select.ui-datepicker-month,\n.ui-datepicker select.ui-datepicker-year {\n\twidth: 45%;\n}\n.ui-datepicker table {\n\twidth: 100%;\n\tfont-size: .9em;\n\tborder-collapse: collapse;\n\tmargin: 0 0 .4em;\n}\n.ui-datepicker th {\n\tpadding: .7em .3em;\n\ttext-align: center;\n\tfont-weight: bold;\n\tborder: 0;\n}\n.ui-datepicker td {\n\tborder: 0;\n\tpadding: 1px;\n}\n.ui-datepicker td span,\n.ui-datepicker td a {\n\tdisplay: block;\n\tpadding: .2em;\n\ttext-align: right;\n\ttext-decoration: none;\n}\n.ui-datepicker .ui-datepicker-buttonpane {\n\tbackground-image: none;\n\tmargin: .7em 0 0 0;\n\tpadding: 0 .2em;\n\tborder-left: 0;\n\tborder-right: 0;\n\tborder-bottom: 0;\n}\n.ui-datepicker .ui-datepicker-buttonpane button {\n\tfloat: right;\n\tmargin: .5em .2em .4em;\n\tcursor: pointer;\n\tpadding: .2em .6em .3em .6em;\n\twidth: auto;\n\toverflow: visible;\n}\n.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current {\n\tfloat: left;\n}\n\n/* with multiple calendars */\n.ui-datepicker.ui-datepicker-multi {\n\twidth: auto;\n}\n.ui-datepicker-multi .ui-datepicker-group {\n\tfloat: left;\n}\n.ui-datepicker-multi .ui-datepicker-group table {\n\twidth: 95%;\n\tmargin: 0 auto .4em;\n}\n.ui-datepicker-multi-2 .ui-datepicker-group {\n\twidth: 50%;\n}\n.ui-datepicker-multi-3 .ui-datepicker-group {\n\twidth: 33.3%;\n}\n.ui-datepicker-multi-4 .ui-datepicker-group {\n\twidth: 25%;\n}\n.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,\n.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header {\n\tborder-left-width: 0;\n}\n.ui-datepicker-multi .ui-datepicker-buttonpane {\n\tclear: left;\n}\n.ui-datepicker-row-break {\n\tclear: both;\n\twidth: 100%;\n\tfont-size: 0;\n}\n\n/* RTL support */\n.ui-datepicker-rtl {\n\tdirection: rtl;\n}\n.ui-datepicker-rtl .ui-datepicker-prev {\n\tright: 2px;\n\tleft: auto;\n}\n.ui-datepicker-rtl .ui-datepicker-next {\n\tleft: 2px;\n\tright: auto;\n}\n.ui-datepicker-rtl .ui-datepicker-prev:hover {\n\tright: 1px;\n\tleft: auto;\n}\n.ui-datepicker-rtl .ui-datepicker-next:hover {\n\tleft: 1px;\n\tright: auto;\n}\n.ui-datepicker-rtl .ui-datepicker-buttonpane {\n\tclear: right;\n}\n.ui-datepicker-rtl .ui-datepicker-buttonpane button {\n\tfloat: left;\n}\n.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,\n.ui-datepicker-rtl .ui-datepicker-group {\n\tfloat: right;\n}\n.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,\n.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header {\n\tborder-right-width: 0;\n\tborder-left-width: 1px;\n}\n\n/* Icons */\n.ui-datepicker .ui-icon {\n\tdisplay: block;\n\ttext-indent: -99999px;\n\toverflow: hidden;\n\tbackground-repeat: no-repeat;\n\tleft: .5em;\n\ttop: .3em;\n}\n.ui-dialog {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tpadding: .2em;\n\toutline: 0;\n}\n.ui-dialog .ui-dialog-titlebar {\n\tpadding: .4em 1em;\n\tposition: relative;\n}\n.ui-dialog .ui-dialog-title {\n\tfloat: left;\n\tmargin: .1em 0;\n\twhite-space: nowrap;\n\twidth: 90%;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n}\n.ui-dialog .ui-dialog-titlebar-close {\n\tposition: absolute;\n\tright: .3em;\n\ttop: 50%;\n\twidth: 20px;\n\tmargin: -10px 0 0 0;\n\tpadding: 1px;\n\theight: 20px;\n}\n.ui-dialog .ui-dialog-content {\n\tposition: relative;\n\tborder: 0;\n\tpadding: .5em 1em;\n\tbackground: none;\n\toverflow: auto;\n}\n.ui-dialog .ui-dialog-buttonpane {\n\ttext-align: left;\n\tborder-width: 1px 0 0 0;\n\tbackground-image: none;\n\tmargin-top: .5em;\n\tpadding: .3em 1em .5em .4em;\n}\n.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {\n\tfloat: right;\n}\n.ui-dialog .ui-dialog-buttonpane button {\n\tmargin: .5em .4em .5em 0;\n\tcursor: pointer;\n}\n.ui-dialog .ui-resizable-n {\n\theight: 2px;\n\ttop: 0;\n}\n.ui-dialog .ui-resizable-e {\n\twidth: 2px;\n\tright: 0;\n}\n.ui-dialog .ui-resizable-s {\n\theight: 2px;\n\tbottom: 0;\n}\n.ui-dialog .ui-resizable-w {\n\twidth: 2px;\n\tleft: 0;\n}\n.ui-dialog .ui-resizable-se,\n.ui-dialog .ui-resizable-sw,\n.ui-dialog .ui-resizable-ne,\n.ui-dialog .ui-resizable-nw {\n\twidth: 7px;\n\theight: 7px;\n}\n.ui-dialog .ui-resizable-se {\n\tright: 0;\n\tbottom: 0;\n}\n.ui-dialog .ui-resizable-sw {\n\tleft: 0;\n\tbottom: 0;\n}\n.ui-dialog .ui-resizable-ne {\n\tright: 0;\n\ttop: 0;\n}\n.ui-dialog .ui-resizable-nw {\n\tleft: 0;\n\ttop: 0;\n}\n.ui-draggable .ui-dialog-titlebar {\n\tcursor: move;\n}\n.ui-draggable-handle {\n\t-ms-touch-action: none;\n\ttouch-action: none;\n}\n.ui-resizable {\n\tposition: relative;\n}\n.ui-resizable-handle {\n\tposition: absolute;\n\tfont-size: 0.1px;\n\tdisplay: block;\n\t-ms-touch-action: none;\n\ttouch-action: none;\n}\n.ui-resizable-disabled .ui-resizable-handle,\n.ui-resizable-autohide .ui-resizable-handle {\n\tdisplay: none;\n}\n.ui-resizable-n {\n\tcursor: n-resize;\n\theight: 7px;\n\twidth: 100%;\n\ttop: -5px;\n\tleft: 0;\n}\n.ui-resizable-s {\n\tcursor: s-resize;\n\theight: 7px;\n\twidth: 100%;\n\tbottom: -5px;\n\tleft: 0;\n}\n.ui-resizable-e {\n\tcursor: e-resize;\n\twidth: 7px;\n\tright: -5px;\n\ttop: 0;\n\theight: 100%;\n}\n.ui-resizable-w {\n\tcursor: w-resize;\n\twidth: 7px;\n\tleft: -5px;\n\ttop: 0;\n\theight: 100%;\n}\n.ui-resizable-se {\n\tcursor: se-resize;\n\twidth: 12px;\n\theight: 12px;\n\tright: 1px;\n\tbottom: 1px;\n}\n.ui-resizable-sw {\n\tcursor: sw-resize;\n\twidth: 9px;\n\theight: 9px;\n\tleft: -5px;\n\tbottom: -5px;\n}\n.ui-resizable-nw {\n\tcursor: nw-resize;\n\twidth: 9px;\n\theight: 9px;\n\tleft: -5px;\n\ttop: -5px;\n}\n.ui-resizable-ne {\n\tcursor: ne-resize;\n\twidth: 9px;\n\theight: 9px;\n\tright: -5px;\n\ttop: -5px;\n}\n.ui-progressbar {\n\theight: 2em;\n\ttext-align: left;\n\toverflow: hidden;\n}\n.ui-progressbar .ui-progressbar-value {\n\tmargin: -1px;\n\theight: 100%;\n}\n.ui-progressbar .ui-progressbar-overlay {\n\tbackground: url(${v});\n\theight: 100%;\n\t-ms-filter: "alpha(opacity=25)"; /* support: IE8 */\n\topacity: 0.25;\n}\n.ui-progressbar-indeterminate .ui-progressbar-value {\n\tbackground-image: none;\n}\n.ui-selectable {\n\t-ms-touch-action: none;\n\ttouch-action: none;\n}\n.ui-selectable-helper {\n\tposition: absolute;\n\tz-index: 100;\n\tborder: 1px dotted black;\n}\n.ui-selectmenu-menu {\n\tpadding: 0;\n\tmargin: 0;\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tdisplay: none;\n}\n.ui-selectmenu-menu .ui-menu {\n\toverflow: auto;\n\toverflow-x: hidden;\n\tpadding-bottom: 1px;\n}\n.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup {\n\tfont-size: 1em;\n\tfont-weight: bold;\n\tline-height: 1.5;\n\tpadding: 2px 0.4em;\n\tmargin: 0.5em 0 0 0;\n\theight: auto;\n\tborder: 0;\n}\n.ui-selectmenu-open {\n\tdisplay: block;\n}\n.ui-selectmenu-text {\n\tdisplay: block;\n\tmargin-right: 20px;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n}\n.ui-selectmenu-button.ui-button {\n\ttext-align: left;\n\twhite-space: nowrap;\n\twidth: 14em;\n}\n.ui-selectmenu-icon.ui-icon {\n\tfloat: right;\n\tmargin-top: 0;\n}\n.ui-slider {\n\tposition: relative;\n\ttext-align: left;\n}\n.ui-slider .ui-slider-handle {\n\tposition: absolute;\n\tz-index: 2;\n\twidth: 1.2em;\n\theight: 1.2em;\n\tcursor: pointer;\n\t-ms-touch-action: none;\n\ttouch-action: none;\n}\n.ui-slider .ui-slider-range {\n\tposition: absolute;\n\tz-index: 1;\n\tfont-size: .7em;\n\tdisplay: block;\n\tborder: 0;\n\tbackground-position: 0 0;\n}\n\n/* support: IE8 - See #6727 */\n.ui-slider.ui-state-disabled .ui-slider-handle,\n.ui-slider.ui-state-disabled .ui-slider-range {\n\tfilter: inherit;\n}\n\n.ui-slider-horizontal {\n\theight: .8em;\n}\n.ui-slider-horizontal .ui-slider-handle {\n\ttop: -.3em;\n\tmargin-left: -.6em;\n}\n.ui-slider-horizontal .ui-slider-range {\n\ttop: 0;\n\theight: 100%;\n}\n.ui-slider-horizontal .ui-slider-range-min {\n\tleft: 0;\n}\n.ui-slider-horizontal .ui-slider-range-max {\n\tright: 0;\n}\n\n.ui-slider-vertical {\n\twidth: .8em;\n\theight: 100px;\n}\n.ui-slider-vertical .ui-slider-handle {\n\tleft: -.3em;\n\tmargin-left: 0;\n\tmargin-bottom: -.6em;\n}\n.ui-slider-vertical .ui-slider-range {\n\tleft: 0;\n\twidth: 100%;\n}\n.ui-slider-vertical .ui-slider-range-min {\n\tbottom: 0;\n}\n.ui-slider-vertical .ui-slider-range-max {\n\ttop: 0;\n}\n.ui-sortable-handle {\n\t-ms-touch-action: none;\n\ttouch-action: none;\n}\n.ui-spinner {\n\tposition: relative;\n\tdisplay: inline-block;\n\toverflow: hidden;\n\tpadding: 0;\n\tvertical-align: middle;\n}\n.ui-spinner-input {\n\tborder: none;\n\tbackground: none;\n\tcolor: inherit;\n\tpadding: .222em 0;\n\tmargin: .2em 0;\n\tvertical-align: middle;\n\tmargin-left: .4em;\n\tmargin-right: 2em;\n}\n.ui-spinner-button {\n\twidth: 1.6em;\n\theight: 50%;\n\tfont-size: .5em;\n\tpadding: 0;\n\tmargin: 0;\n\ttext-align: center;\n\tposition: absolute;\n\tcursor: default;\n\tdisplay: block;\n\toverflow: hidden;\n\tright: 0;\n}\n/* more specificity required here to override default borders */\n.ui-spinner a.ui-spinner-button {\n\tborder-top-style: none;\n\tborder-bottom-style: none;\n\tborder-right-style: none;\n}\n.ui-spinner-up {\n\ttop: 0;\n}\n.ui-spinner-down {\n\tbottom: 0;\n}\n.ui-tabs {\n\tposition: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */\n\tpadding: .2em;\n}\n.ui-tabs .ui-tabs-nav {\n\tmargin: 0;\n\tpadding: .2em .2em 0;\n}\n.ui-tabs .ui-tabs-nav li {\n\tlist-style: none;\n\tfloat: left;\n\tposition: relative;\n\ttop: 0;\n\tmargin: 1px .2em 0 0;\n\tborder-bottom-width: 0;\n\tpadding: 0;\n\twhite-space: nowrap;\n}\n.ui-tabs .ui-tabs-nav .ui-tabs-anchor {\n\tfloat: left;\n\tpadding: .5em 1em;\n\ttext-decoration: none;\n}\n.ui-tabs .ui-tabs-nav li.ui-tabs-active {\n\tmargin-bottom: -1px;\n\tpadding-bottom: 1px;\n}\n.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,\n.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,\n.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor {\n\tcursor: text;\n}\n.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor {\n\tcursor: pointer;\n}\n.ui-tabs .ui-tabs-panel {\n\tdisplay: block;\n\tborder-width: 0;\n\tpadding: 1em 1.4em;\n\tbackground: none;\n}\n.ui-tooltip {\n\tpadding: 8px;\n\tposition: absolute;\n\tz-index: 9999;\n\tmax-width: 300px;\n}\nbody .ui-tooltip {\n\tborder-width: 2px;\n}\n\n/* Component containers\n----------------------------------*/\n.ui-widget {\n\tfont-family: Arial,Helvetica,sans-serif;\n\tfont-size: 1em;\n}\n.ui-widget .ui-widget {\n\tfont-size: 1em;\n}\n.ui-widget input,\n.ui-widget select,\n.ui-widget textarea,\n.ui-widget button {\n\tfont-family: Arial,Helvetica,sans-serif;\n\tfont-size: 1em;\n}\n.ui-widget.ui-widget-content {\n\tborder: 1px solid #c5c5c5;\n}\n.ui-widget-content {\n\tborder: 1px solid #dddddd;\n\tbackground: #ffffff;\n\tcolor: #333333;\n}\n.ui-widget-content a {\n\tcolor: #333333;\n}\n.ui-widget-header {\n\tborder: 1px solid #dddddd;\n\tbackground: #e9e9e9;\n\tcolor: #333333;\n\tfont-weight: bold;\n}\n.ui-widget-header a {\n\tcolor: #333333;\n}\n\n/* Interaction states\n----------------------------------*/\n.ui-state-default,\n.ui-widget-content .ui-state-default,\n.ui-widget-header .ui-state-default,\n.ui-button,\n\n/* We use html here because we need a greater specificity to make sure disabled\nworks properly when clicked or hovered */\nhtml .ui-button.ui-state-disabled:hover,\nhtml .ui-button.ui-state-disabled:active {\n\tborder: 1px solid #c5c5c5;\n\tbackground: #f6f6f6;\n\tfont-weight: normal;\n\tcolor: #454545;\n}\n.ui-state-default a,\n.ui-state-default a:link,\n.ui-state-default a:visited,\na.ui-button,\na:link.ui-button,\na:visited.ui-button,\n.ui-button {\n\tcolor: #454545;\n\ttext-decoration: none;\n}\n.ui-state-hover,\n.ui-widget-content .ui-state-hover,\n.ui-widget-header .ui-state-hover,\n.ui-state-focus,\n.ui-widget-content .ui-state-focus,\n.ui-widget-header .ui-state-focus,\n.ui-button:hover,\n.ui-button:focus {\n\tborder: 1px solid #cccccc;\n\tbackground: #ededed;\n\tfont-weight: normal;\n\tcolor: #2b2b2b;\n}\n.ui-state-hover a,\n.ui-state-hover a:hover,\n.ui-state-hover a:link,\n.ui-state-hover a:visited,\n.ui-state-focus a,\n.ui-state-focus a:hover,\n.ui-state-focus a:link,\n.ui-state-focus a:visited,\na.ui-button:hover,\na.ui-button:focus {\n\tcolor: #2b2b2b;\n\ttext-decoration: none;\n}\n\n.ui-visual-focus {\n\tbox-shadow: 0 0 3px 1px rgb(94, 158, 214);\n}\n.ui-state-active,\n.ui-widget-content .ui-state-active,\n.ui-widget-header .ui-state-active,\na.ui-button:active,\n.ui-button:active,\n.ui-button.ui-state-active:hover {\n\tborder: 1px solid #003eff;\n\tbackground: #007fff;\n\tfont-weight: normal;\n\tcolor: #ffffff;\n}\n.ui-icon-background,\n.ui-state-active .ui-icon-background {\n\tborder: #003eff;\n\tbackground-color: #ffffff;\n}\n.ui-state-active a,\n.ui-state-active a:link,\n.ui-state-active a:visited {\n\tcolor: #ffffff;\n\ttext-decoration: none;\n}\n\n/* Interaction Cues\n----------------------------------*/\n.ui-state-highlight,\n.ui-widget-content .ui-state-highlight,\n.ui-widget-header .ui-state-highlight {\n\tborder: 1px solid #dad55e;\n\tbackground: #fffa90;\n\tcolor: #777620;\n}\n.ui-state-checked {\n\tborder: 1px solid #dad55e;\n\tbackground: #fffa90;\n}\n.ui-state-highlight a,\n.ui-widget-content .ui-state-highlight a,\n.ui-widget-header .ui-state-highlight a {\n\tcolor: #777620;\n}\n.ui-state-error,\n.ui-widget-content .ui-state-error,\n.ui-widget-header .ui-state-error {\n\tborder: 1px solid #f1a899;\n\tbackground: #fddfdf;\n\tcolor: #5f3f3f;\n}\n.ui-state-error a,\n.ui-widget-content .ui-state-error a,\n.ui-widget-header .ui-state-error a {\n\tcolor: #5f3f3f;\n}\n.ui-state-error-text,\n.ui-widget-content .ui-state-error-text,\n.ui-widget-header .ui-state-error-text {\n\tcolor: #5f3f3f;\n}\n.ui-priority-primary,\n.ui-widget-content .ui-priority-primary,\n.ui-widget-header .ui-priority-primary {\n\tfont-weight: bold;\n}\n.ui-priority-secondary,\n.ui-widget-content .ui-priority-secondary,\n.ui-widget-header .ui-priority-secondary {\n\topacity: .7;\n\t-ms-filter: "alpha(opacity=70)"; /* support: IE8 */\n\tfont-weight: normal;\n}\n.ui-state-disabled,\n.ui-widget-content .ui-state-disabled,\n.ui-widget-header .ui-state-disabled {\n\topacity: .35;\n\t-ms-filter: "alpha(opacity=35)"; /* support: IE8 */\n\tbackground-image: none;\n}\n.ui-state-disabled .ui-icon {\n\t-ms-filter: "alpha(opacity=35)"; /* support: IE8 - See #6059 */\n}\n\n/* Icons\n----------------------------------*/\n\n/* states and images */\n.ui-icon {\n\twidth: 16px;\n\theight: 16px;\n}\n.ui-icon,\n.ui-widget-content .ui-icon {\n\tbackground-image: url(${C});\n}\n.ui-widget-header .ui-icon {\n\tbackground-image: url(${C});\n}\n.ui-state-hover .ui-icon,\n.ui-state-focus .ui-icon,\n.ui-button:hover .ui-icon,\n.ui-button:focus .ui-icon {\n\tbackground-image: url(${x});\n}\n.ui-state-active .ui-icon,\n.ui-button:active .ui-icon {\n\tbackground-image: url(${w});\n}\n.ui-state-highlight .ui-icon,\n.ui-button .ui-state-highlight.ui-icon {\n\tbackground-image: url(${y});\n}\n.ui-state-error .ui-icon,\n.ui-state-error-text .ui-icon {\n\tbackground-image: url(${k});\n}\n.ui-button .ui-icon {\n\tbackground-image: url(${B});\n}\n\n/* positioning */\n/* Three classes needed to override \`.ui-button:hover .ui-icon\` */\n.ui-icon-blank.ui-icon-blank.ui-icon-blank {\n\tbackground-image: none;\n}\n.ui-icon-caret-1-n { background-position: 0 0; }\n.ui-icon-caret-1-ne { background-position: -16px 0; }\n.ui-icon-caret-1-e { background-position: -32px 0; }\n.ui-icon-caret-1-se { background-position: -48px 0; }\n.ui-icon-caret-1-s { background-position: -65px 0; }\n.ui-icon-caret-1-sw { background-position: -80px 0; }\n.ui-icon-caret-1-w { background-position: -96px 0; }\n.ui-icon-caret-1-nw { background-position: -112px 0; }\n.ui-icon-caret-2-n-s { background-position: -128px 0; }\n.ui-icon-caret-2-e-w { background-position: -144px 0; }\n.ui-icon-triangle-1-n { background-position: 0 -16px; }\n.ui-icon-triangle-1-ne { background-position: -16px -16px; }\n.ui-icon-triangle-1-e { background-position: -32px -16px; }\n.ui-icon-triangle-1-se { background-position: -48px -16px; }\n.ui-icon-triangle-1-s { background-position: -65px -16px; }\n.ui-icon-triangle-1-sw { background-position: -80px -16px; }\n.ui-icon-triangle-1-w { background-position: -96px -16px; }\n.ui-icon-triangle-1-nw { background-position: -112px -16px; }\n.ui-icon-triangle-2-n-s { background-position: -128px -16px; }\n.ui-icon-triangle-2-e-w { background-position: -144px -16px; }\n.ui-icon-arrow-1-n { background-position: 0 -32px; }\n.ui-icon-arrow-1-ne { background-position: -16px -32px; }\n.ui-icon-arrow-1-e { background-position: -32px -32px; }\n.ui-icon-arrow-1-se { background-position: -48px -32px; }\n.ui-icon-arrow-1-s { background-position: -65px -32px; }\n.ui-icon-arrow-1-sw { background-position: -80px -32px; }\n.ui-icon-arrow-1-w { background-position: -96px -32px; }\n.ui-icon-arrow-1-nw { background-position: -112px -32px; }\n.ui-icon-arrow-2-n-s { background-position: -128px -32px; }\n.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }\n.ui-icon-arrow-2-e-w { background-position: -160px -32px; }\n.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }\n.ui-icon-arrowstop-1-n { background-position: -192px -32px; }\n.ui-icon-arrowstop-1-e { background-position: -208px -32px; }\n.ui-icon-arrowstop-1-s { background-position: -224px -32px; }\n.ui-icon-arrowstop-1-w { background-position: -240px -32px; }\n.ui-icon-arrowthick-1-n { background-position: 1px -48px; }\n.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }\n.ui-icon-arrowthick-1-e { background-position: -32px -48px; }\n.ui-icon-arrowthick-1-se { background-position: -48px -48px; }\n.ui-icon-arrowthick-1-s { background-position: -64px -48px; }\n.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }\n.ui-icon-arrowthick-1-w { background-position: -96px -48px; }\n.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }\n.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }\n.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }\n.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }\n.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }\n.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }\n.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }\n.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }\n.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }\n.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }\n.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }\n.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }\n.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }\n.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }\n.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }\n.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }\n.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }\n.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }\n.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }\n.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }\n.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }\n.ui-icon-arrow-4 { background-position: 0 -80px; }\n.ui-icon-arrow-4-diag { background-position: -16px -80px; }\n.ui-icon-extlink { background-position: -32px -80px; }\n.ui-icon-newwin { background-position: -48px -80px; }\n.ui-icon-refresh { background-position: -64px -80px; }\n.ui-icon-shuffle { background-position: -80px -80px; }\n.ui-icon-transfer-e-w { background-position: -96px -80px; }\n.ui-icon-transferthick-e-w { background-position: -112px -80px; }\n.ui-icon-folder-collapsed { background-position: 0 -96px; }\n.ui-icon-folder-open { background-position: -16px -96px; }\n.ui-icon-document { background-position: -32px -96px; }\n.ui-icon-document-b { background-position: -48px -96px; }\n.ui-icon-note { background-position: -64px -96px; }\n.ui-icon-mail-closed { background-position: -80px -96px; }\n.ui-icon-mail-open { background-position: -96px -96px; }\n.ui-icon-suitcase { background-position: -112px -96px; }\n.ui-icon-comment { background-position: -128px -96px; }\n.ui-icon-person { background-position: -144px -96px; }\n.ui-icon-print { background-position: -160px -96px; }\n.ui-icon-trash { background-position: -176px -96px; }\n.ui-icon-locked { background-position: -192px -96px; }\n.ui-icon-unlocked { background-position: -208px -96px; }\n.ui-icon-bookmark { background-position: -224px -96px; }\n.ui-icon-tag { background-position: -240px -96px; }\n.ui-icon-home { background-position: 0 -112px; }\n.ui-icon-flag { background-position: -16px -112px; }\n.ui-icon-calendar { background-position: -32px -112px; }\n.ui-icon-cart { background-position: -48px -112px; }\n.ui-icon-pencil { background-position: -64px -112px; }\n.ui-icon-clock { background-position: -80px -112px; }\n.ui-icon-disk { background-position: -96px -112px; }\n.ui-icon-calculator { background-position: -112px -112px; }\n.ui-icon-zoomin { background-position: -128px -112px; }\n.ui-icon-zoomout { background-position: -144px -112px; }\n.ui-icon-search { background-position: -160px -112px; }\n.ui-icon-wrench { background-position: -176px -112px; }\n.ui-icon-gear { background-position: -192px -112px; }\n.ui-icon-heart { background-position: -208px -112px; }\n.ui-icon-star { background-position: -224px -112px; }\n.ui-icon-link { background-position: -240px -112px; }\n.ui-icon-cancel { background-position: 0 -128px; }\n.ui-icon-plus { background-position: -16px -128px; }\n.ui-icon-plusthick { background-position: -32px -128px; }\n.ui-icon-minus { background-position: -48px -128px; }\n.ui-icon-minusthick { background-position: -64px -128px; }\n.ui-icon-close { background-position: -80px -128px; }\n.ui-icon-closethick { background-position: -96px -128px; }\n.ui-icon-key { background-position: -112px -128px; }\n.ui-icon-lightbulb { background-position: -128px -128px; }\n.ui-icon-scissors { background-position: -144px -128px; }\n.ui-icon-clipboard { background-position: -160px -128px; }\n.ui-icon-copy { background-position: -176px -128px; }\n.ui-icon-contact { background-position: -192px -128px; }\n.ui-icon-image { background-position: -208px -128px; }\n.ui-icon-video { background-position: -224px -128px; }\n.ui-icon-script { background-position: -240px -128px; }\n.ui-icon-alert { background-position: 0 -144px; }\n.ui-icon-info { background-position: -16px -144px; }\n.ui-icon-notice { background-position: -32px -144px; }\n.ui-icon-help { background-position: -48px -144px; }\n.ui-icon-check { background-position: -64px -144px; }\n.ui-icon-bullet { background-position: -80px -144px; }\n.ui-icon-radio-on { background-position: -96px -144px; }\n.ui-icon-radio-off { background-position: -112px -144px; }\n.ui-icon-pin-w { background-position: -128px -144px; }\n.ui-icon-pin-s { background-position: -144px -144px; }\n.ui-icon-play { background-position: 0 -160px; }\n.ui-icon-pause { background-position: -16px -160px; }\n.ui-icon-seek-next { background-position: -32px -160px; }\n.ui-icon-seek-prev { background-position: -48px -160px; }\n.ui-icon-seek-end { background-position: -64px -160px; }\n.ui-icon-seek-start { background-position: -80px -160px; }\n/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */\n.ui-icon-seek-first { background-position: -80px -160px; }\n.ui-icon-stop { background-position: -96px -160px; }\n.ui-icon-eject { background-position: -112px -160px; }\n.ui-icon-volume-off { background-position: -128px -160px; }\n.ui-icon-volume-on { background-position: -144px -160px; }\n.ui-icon-power { background-position: 0 -176px; }\n.ui-icon-signal-diag { background-position: -16px -176px; }\n.ui-icon-signal { background-position: -32px -176px; }\n.ui-icon-battery-0 { background-position: -48px -176px; }\n.ui-icon-battery-1 { background-position: -64px -176px; }\n.ui-icon-battery-2 { background-position: -80px -176px; }\n.ui-icon-battery-3 { background-position: -96px -176px; }\n.ui-icon-circle-plus { background-position: 0 -192px; }\n.ui-icon-circle-minus { background-position: -16px -192px; }\n.ui-icon-circle-close { background-position: -32px -192px; }\n.ui-icon-circle-triangle-e { background-position: -48px -192px; }\n.ui-icon-circle-triangle-s { background-position: -64px -192px; }\n.ui-icon-circle-triangle-w { background-position: -80px -192px; }\n.ui-icon-circle-triangle-n { background-position: -96px -192px; }\n.ui-icon-circle-arrow-e { background-position: -112px -192px; }\n.ui-icon-circle-arrow-s { background-position: -128px -192px; }\n.ui-icon-circle-arrow-w { background-position: -144px -192px; }\n.ui-icon-circle-arrow-n { background-position: -160px -192px; }\n.ui-icon-circle-zoomin { background-position: -176px -192px; }\n.ui-icon-circle-zoomout { background-position: -192px -192px; }\n.ui-icon-circle-check { background-position: -208px -192px; }\n.ui-icon-circlesmall-plus { background-position: 0 -208px; }\n.ui-icon-circlesmall-minus { background-position: -16px -208px; }\n.ui-icon-circlesmall-close { background-position: -32px -208px; }\n.ui-icon-squaresmall-plus { background-position: -48px -208px; }\n.ui-icon-squaresmall-minus { background-position: -64px -208px; }\n.ui-icon-squaresmall-close { background-position: -80px -208px; }\n.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }\n.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }\n.ui-icon-grip-solid-vertical { background-position: -32px -224px; }\n.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }\n.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }\n.ui-icon-grip-diagonal-se { background-position: -80px -224px; }\n\n\n/* Misc visuals\n----------------------------------*/\n\n/* Corner radius */\n.ui-corner-all,\n.ui-corner-top,\n.ui-corner-left,\n.ui-corner-tl {\n\tborder-top-left-radius: 3px;\n}\n.ui-corner-all,\n.ui-corner-top,\n.ui-corner-right,\n.ui-corner-tr {\n\tborder-top-right-radius: 3px;\n}\n.ui-corner-all,\n.ui-corner-bottom,\n.ui-corner-left,\n.ui-corner-bl {\n\tborder-bottom-left-radius: 3px;\n}\n.ui-corner-all,\n.ui-corner-bottom,\n.ui-corner-right,\n.ui-corner-br {\n\tborder-bottom-right-radius: 3px;\n}\n\n/* Overlays */\n.ui-widget-overlay {\n\tbackground: #aaaaaa;\n\topacity: .003;\n\t-ms-filter: "alpha(opacity=.3)"; /* support: IE8 */\n}\n.ui-widget-shadow {\n\t-webkit-box-shadow: 0px 0px 5px #666666;\n\tbox-shadow: 0px 0px 5px #666666;\n}\n`,"",{version:3,sources:["webpack://./node_modules/jquery-ui-dist/jquery-ui.css"],names:[],mappings:"AAAA;;;;oEAIoE;;AAEpE;mCACmC;AACnC;CACC,aAAa;AACd;AACA;CACC,SAAS;CACT,mBAAmB;CACnB,WAAW;CACX,YAAY;CACZ,gBAAgB;CAChB,UAAU;CACV,kBAAkB;CAClB,UAAU;AACX;AACA;CACC,SAAS;CACT,UAAU;CACV,SAAS;CACT,UAAU;CACV,gBAAgB;CAChB,qBAAqB;CACrB,eAAe;CACf,gBAAgB;AACjB;AACA;;CAEC,WAAW;CACX,cAAc;CACd,yBAAyB;AAC1B;AACA;CACC,WAAW;AACZ;AACA;CACC,WAAW;CACX,YAAY;CACZ,MAAM;CACN,OAAO;CACP,kBAAkB;CAClB,UAAU;CACV,8BAA8B,EAAE,iBAAiB;AAClD;;AAEA;CACC,YAAY;AACb;;;AAGA;mCACmC;AACnC;CACC,0BAA0B;CAC1B,oBAAoB;AACrB;;;AAGA;mCACmC;AACnC;CACC,qBAAqB;CACrB,sBAAsB;CACtB,kBAAkB;CAClB,kBAAkB;CAClB,qBAAqB;CACrB,gBAAgB;CAChB,4BAA4B;AAC7B;;AAEA;CACC,SAAS;CACT,iBAAiB;CACjB,cAAc;AACf;;AAEA;mCACmC;;AAEnC,aAAa;AACb;CACC,eAAe;CACf,MAAM;CACN,OAAO;CACP,WAAW;CACX,YAAY;AACb;AACA;CACC,cAAc;CACd,eAAe;CACf,kBAAkB;CAClB,iBAAiB;CACjB,4BAA4B;CAC5B,eAAe;AAChB;AACA;CACC,kBAAkB;CAClB,aAAa;CACb,cAAc;AACf;AACA;CACC,kBAAkB;CAClB,MAAM;CACN,OAAO;CACP,eAAe;AAChB;AACA;CACC,gBAAgB;CAChB,UAAU;CACV,SAAS;CACT,cAAc;CACd,UAAU;AACX;AACA;CACC,kBAAkB;AACnB;AACA;CACC,SAAS;CACT,eAAe;CACf,6BAA6B;CAC7B,yDAAuG;AACxG;AACA;CACC,kBAAkB;CAClB,yBAAyB;AAC1B;AACA;CACC,aAAa;CACb,SAAS;CACT,YAAY;CACZ,cAAc;CACd,uBAAuB;AACxB;AACA;;CAEC,YAAY;AACb;;AAEA,iBAAiB;AACjB;CACC,kBAAkB;AACnB;AACA;CACC,iBAAiB;AAClB;;AAEA,iBAAiB;AACjB;CACC,kBAAkB;CAClB,MAAM;CACN,SAAS;CACT,UAAU;CACV,cAAc;AACf;;AAEA,kBAAkB;AAClB;CACC,UAAU;CACV,QAAQ;AACT;AACA;CACC,iBAAiB;CACjB,qBAAqB;CACrB,kBAAkB;CAClB,mBAAmB;CACnB,kBAAkB;CAClB,eAAe;CACf,sBAAsB;CACtB,kBAAkB;CAClB,yBAAyB;CACzB,sBAAsB;CACtB,qBAAqB;CACrB,iBAAiB;;CAEjB,sBAAsB;CACtB,iBAAiB;AAClB;;AAEA;;;;;CAKC,qBAAqB;AACtB;;AAEA,4DAA4D;AAC5D;CACC,UAAU;CACV,sBAAsB;CACtB,oBAAoB;CACpB,mBAAmB;AACpB;;AAEA,uCAAuC;AACvC;CACC,cAAc;AACf;;AAEA,2BAA2B;AAC3B;CACC,kBAAkB;CAClB,QAAQ;CACR,SAAS;CACT,gBAAgB;CAChB,iBAAiB;AAClB;;AAEA;CACC,UAAU;CACV,YAAY;CACZ,aAAa;CACb,oBAAoB;CACpB,mBAAmB;;AAEpB;;AAEA;CACC,WAAW;CACX,YAAY;CACZ,cAAc;CACd,mBAAmB;CACnB,iBAAiB;AAClB;;AAEA,gBAAgB;AAChB,4BAA4B;AAC5B;;CAEC,SAAS;CACT,UAAU;AACX;AACA;CACC,sBAAsB;CACtB,qBAAqB;AACtB;AACA;CACC,WAAW;CACX,cAAc;CACd,eAAe;AAChB;AACA;;CAEC,aAAa;AACd;AACA;CACC,cAAc;CACd,WAAW;CACX,WAAW;CACX,aAAa;CACb,gBAAgB;CAChB,gBAAgB;AACjB;AACA;CACC,sBAAsB;AACvB;AACA;CACC,iBAAiB;AAClB;AACA;CACC,cAAc;AACf;AACA;CACC,iBAAiB;AAClB;AACA;CACC,gBAAgB;AACjB;AACA;CACC,kBAAkB;AACnB;AACA;CACC,mBAAmB;AACpB;;AAEA,iCAAiC;AACjC;;CAEC,0CAA0C;CAC1C,UAAU;CACV,2BAA2B;AAC5B;AACA;CACC,uBAAuB;AACxB;;AAEA;CACC,kCAAkC;CAClC,oBAAoB;CACpB,YAAY;AACb;AACA;CACC,WAAW;CACX,YAAY;CACZ,kBAAkB;CAClB,iBAAiB;CACjB,YAAY;AACb;AACA;;CAEC,sBAAsB;CACtB,UAAU;CACV,WAAW;CACX,iBAAiB;CACjB,mBAAmB;AACpB;AACA;CACC,oBAAoB;AACrB;AACA;CACC,WAAW;CACX,oBAAoB;CACpB,aAAa;AACd;AACA;CACC,kBAAkB;CAClB,eAAe;AAChB;AACA;;CAEC,kBAAkB;CAClB,QAAQ;CACR,YAAY;CACZ,aAAa;AACd;AACA;;CAEC,QAAQ;AACT;AACA;CACC,SAAS;AACV;AACA;CACC,UAAU;AACX;AACA;CACC,SAAS;AACV;AACA;CACC,UAAU;AACX;AACA;;CAEC,cAAc;CACd,kBAAkB;CAClB,SAAS;CACT,iBAAiB;CACjB,QAAQ;CACR,gBAAgB;AACjB;AACA;CACC,eAAe;CACf,kBAAkB;CAClB,kBAAkB;AACnB;AACA;CACC,cAAc;CACd,aAAa;AACd;AACA;;CAEC,UAAU;AACX;AACA;CACC,WAAW;CACX,eAAe;CACf,yBAAyB;CACzB,gBAAgB;AACjB;AACA;CACC,kBAAkB;CAClB,kBAAkB;CAClB,iBAAiB;CACjB,SAAS;AACV;AACA;CACC,SAAS;CACT,YAAY;AACb;AACA;;CAEC,cAAc;CACd,aAAa;CACb,iBAAiB;CACjB,qBAAqB;AACtB;AACA;CACC,sBAAsB;CACtB,kBAAkB;CAClB,eAAe;CACf,cAAc;CACd,eAAe;CACf,gBAAgB;AACjB;AACA;CACC,YAAY;CACZ,sBAAsB;CACtB,eAAe;CACf,4BAA4B;CAC5B,WAAW;CACX,iBAAiB;AAClB;AACA;CACC,WAAW;AACZ;;AAEA,4BAA4B;AAC5B;CACC,WAAW;AACZ;AACA;CACC,WAAW;AACZ;AACA;CACC,UAAU;CACV,mBAAmB;AACpB;AACA;CACC,UAAU;AACX;AACA;CACC,YAAY;AACb;AACA;CACC,UAAU;AACX;AACA;;CAEC,oBAAoB;AACrB;AACA;CACC,WAAW;AACZ;AACA;CACC,WAAW;CACX,WAAW;CACX,YAAY;AACb;;AAEA,gBAAgB;AAChB;CACC,cAAc;AACf;AACA;CACC,UAAU;CACV,UAAU;AACX;AACA;CACC,SAAS;CACT,WAAW;AACZ;AACA;CACC,UAAU;CACV,UAAU;AACX;AACA;CACC,SAAS;CACT,WAAW;AACZ;AACA;CACC,YAAY;AACb;AACA;CACC,WAAW;AACZ;AACA;;CAEC,YAAY;AACb;AACA;;CAEC,qBAAqB;CACrB,sBAAsB;AACvB;;AAEA,UAAU;AACV;CACC,cAAc;CACd,qBAAqB;CACrB,gBAAgB;CAChB,4BAA4B;CAC5B,UAAU;CACV,SAAS;AACV;AACA;CACC,kBAAkB;CAClB,MAAM;CACN,OAAO;CACP,aAAa;CACb,UAAU;AACX;AACA;CACC,iBAAiB;CACjB,kBAAkB;AACnB;AACA;CACC,WAAW;CACX,cAAc;CACd,mBAAmB;CACnB,UAAU;CACV,gBAAgB;CAChB,uBAAuB;AACxB;AACA;CACC,kBAAkB;CAClB,WAAW;CACX,QAAQ;CACR,WAAW;CACX,mBAAmB;CACnB,YAAY;CACZ,YAAY;AACb;AACA;CACC,kBAAkB;CAClB,SAAS;CACT,iBAAiB;CACjB,gBAAgB;CAChB,cAAc;AACf;AACA;CACC,gBAAgB;CAChB,uBAAuB;CACvB,sBAAsB;CACtB,gBAAgB;CAChB,2BAA2B;AAC5B;AACA;CACC,YAAY;AACb;AACA;CACC,wBAAwB;CACxB,eAAe;AAChB;AACA;CACC,WAAW;CACX,MAAM;AACP;AACA;CACC,UAAU;CACV,QAAQ;AACT;AACA;CACC,WAAW;CACX,SAAS;AACV;AACA;CACC,UAAU;CACV,OAAO;AACR;AACA;;;;CAIC,UAAU;CACV,WAAW;AACZ;AACA;CACC,QAAQ;CACR,SAAS;AACV;AACA;CACC,OAAO;CACP,SAAS;AACV;AACA;CACC,QAAQ;CACR,MAAM;AACP;AACA;CACC,OAAO;CACP,MAAM;AACP;AACA;CACC,YAAY;AACb;AACA;CACC,sBAAsB;CACtB,kBAAkB;AACnB;AACA;CACC,kBAAkB;AACnB;AACA;CACC,kBAAkB;CAClB,gBAAgB;CAChB,cAAc;CACd,sBAAsB;CACtB,kBAAkB;AACnB;AACA;;CAEC,aAAa;AACd;AACA;CACC,gBAAgB;CAChB,WAAW;CACX,WAAW;CACX,SAAS;CACT,OAAO;AACR;AACA;CACC,gBAAgB;CAChB,WAAW;CACX,WAAW;CACX,YAAY;CACZ,OAAO;AACR;AACA;CACC,gBAAgB;CAChB,UAAU;CACV,WAAW;CACX,MAAM;CACN,YAAY;AACb;AACA;CACC,gBAAgB;CAChB,UAAU;CACV,UAAU;CACV,MAAM;CACN,YAAY;AACb;AACA;CACC,iBAAiB;CACjB,WAAW;CACX,YAAY;CACZ,UAAU;CACV,WAAW;AACZ;AACA;CACC,iBAAiB;CACjB,UAAU;CACV,WAAW;CACX,UAAU;CACV,YAAY;AACb;AACA;CACC,iBAAiB;CACjB,UAAU;CACV,WAAW;CACX,UAAU;CACV,SAAS;AACV;AACA;CACC,iBAAiB;CACjB,UAAU;CACV,WAAW;CACX,WAAW;CACX,SAAS;AACV;AACA;CACC,WAAW;CACX,gBAAgB;CAChB,gBAAgB;AACjB;AACA;CACC,YAAY;CACZ,YAAY;AACb;AACA;CACC,mDAAyzE;CACzzE,YAAY;CACZ,+BAA+B,EAAE,iBAAiB;CAClD,aAAa;AACd;AACA;CACC,sBAAsB;AACvB;AACA;CACC,sBAAsB;CACtB,kBAAkB;AACnB;AACA;CACC,kBAAkB;CAClB,YAAY;CACZ,wBAAwB;AACzB;AACA;CACC,UAAU;CACV,SAAS;CACT,kBAAkB;CAClB,MAAM;CACN,OAAO;CACP,aAAa;AACd;AACA;CACC,cAAc;CACd,kBAAkB;CAClB,mBAAmB;AACpB;AACA;CACC,cAAc;CACd,iBAAiB;CACjB,gBAAgB;CAChB,kBAAkB;CAClB,mBAAmB;CACnB,YAAY;CACZ,SAAS;AACV;AACA;CACC,cAAc;AACf;AACA;CACC,cAAc;CACd,kBAAkB;CAClB,gBAAgB;CAChB,uBAAuB;AACxB;AACA;CACC,gBAAgB;CAChB,mBAAmB;CACnB,WAAW;AACZ;AACA;CACC,YAAY;CACZ,aAAa;AACd;AACA;CACC,kBAAkB;CAClB,gBAAgB;AACjB;AACA;CACC,kBAAkB;CAClB,UAAU;CACV,YAAY;CACZ,aAAa;CACb,eAAe;CACf,sBAAsB;CACtB,kBAAkB;AACnB;AACA;CACC,kBAAkB;CAClB,UAAU;CACV,eAAe;CACf,cAAc;CACd,SAAS;CACT,wBAAwB;AACzB;;AAEA,6BAA6B;AAC7B;;CAEC,eAAe;AAChB;;AAEA;CACC,YAAY;AACb;AACA;CACC,UAAU;CACV,kBAAkB;AACnB;AACA;CACC,MAAM;CACN,YAAY;AACb;AACA;CACC,OAAO;AACR;AACA;CACC,QAAQ;AACT;;AAEA;CACC,WAAW;CACX,aAAa;AACd;AACA;CACC,WAAW;CACX,cAAc;CACd,oBAAoB;AACrB;AACA;CACC,OAAO;CACP,WAAW;AACZ;AACA;CACC,SAAS;AACV;AACA;CACC,MAAM;AACP;AACA;CACC,sBAAsB;CACtB,kBAAkB;AACnB;AACA;CACC,kBAAkB;CAClB,qBAAqB;CACrB,gBAAgB;CAChB,UAAU;CACV,sBAAsB;AACvB;AACA;CACC,YAAY;CACZ,gBAAgB;CAChB,cAAc;CACd,iBAAiB;CACjB,cAAc;CACd,sBAAsB;CACtB,iBAAiB;CACjB,iBAAiB;AAClB;AACA;CACC,YAAY;CACZ,WAAW;CACX,eAAe;CACf,UAAU;CACV,SAAS;CACT,kBAAkB;CAClB,kBAAkB;CAClB,eAAe;CACf,cAAc;CACd,gBAAgB;CAChB,QAAQ;AACT;AACA,+DAA+D;AAC/D;CACC,sBAAsB;CACtB,yBAAyB;CACzB,wBAAwB;AACzB;AACA;CACC,MAAM;AACP;AACA;CACC,SAAS;AACV;AACA;CACC,kBAAkB,CAAC,uIAAuI;CAC1J,aAAa;AACd;AACA;CACC,SAAS;CACT,oBAAoB;AACrB;AACA;CACC,gBAAgB;CAChB,WAAW;CACX,kBAAkB;CAClB,MAAM;CACN,oBAAoB;CACpB,sBAAsB;CACtB,UAAU;CACV,mBAAmB;AACpB;AACA;CACC,WAAW;CACX,iBAAiB;CACjB,qBAAqB;AACtB;AACA;CACC,mBAAmB;CACnB,mBAAmB;AACpB;AACA;;;CAGC,YAAY;AACb;AACA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",sourcesContent:['/*! jQuery UI - v1.13.3 - 2024-04-26\n* https://jqueryui.com\n* Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css\n* To view and modify this theme, visit https://jqueryui.com/themeroller/?bgShadowXPos=&bgOverlayXPos=&bgErrorXPos=&bgHighlightXPos=&bgContentXPos=&bgHeaderXPos=&bgActiveXPos=&bgHoverXPos=&bgDefaultXPos=&bgShadowYPos=&bgOverlayYPos=&bgErrorYPos=&bgHighlightYPos=&bgContentYPos=&bgHeaderYPos=&bgActiveYPos=&bgHoverYPos=&bgDefaultYPos=&bgShadowRepeat=&bgOverlayRepeat=&bgErrorRepeat=&bgHighlightRepeat=&bgContentRepeat=&bgHeaderRepeat=&bgActiveRepeat=&bgHoverRepeat=&bgDefaultRepeat=&iconsHover=url(%22images%2Fui-icons_555555_256x240.png%22)&iconsHighlight=url(%22images%2Fui-icons_777620_256x240.png%22)&iconsHeader=url(%22images%2Fui-icons_444444_256x240.png%22)&iconsError=url(%22images%2Fui-icons_cc0000_256x240.png%22)&iconsDefault=url(%22images%2Fui-icons_777777_256x240.png%22)&iconsContent=url(%22images%2Fui-icons_444444_256x240.png%22)&iconsActive=url(%22images%2Fui-icons_ffffff_256x240.png%22)&bgImgUrlShadow=&bgImgUrlOverlay=&bgImgUrlHover=&bgImgUrlHighlight=&bgImgUrlHeader=&bgImgUrlError=&bgImgUrlDefault=&bgImgUrlContent=&bgImgUrlActive=&opacityFilterShadow=%22alpha(opacity%3D30)%22&opacityFilterOverlay=%22alpha(opacity%3D30)%22&opacityShadowPerc=30&opacityOverlayPerc=30&iconColorHover=%23555555&iconColorHighlight=%23777620&iconColorHeader=%23444444&iconColorError=%23cc0000&iconColorDefault=%23777777&iconColorContent=%23444444&iconColorActive=%23ffffff&bgImgOpacityShadow=0&bgImgOpacityOverlay=0&bgImgOpacityError=95&bgImgOpacityHighlight=55&bgImgOpacityContent=75&bgImgOpacityHeader=75&bgImgOpacityActive=65&bgImgOpacityHover=75&bgImgOpacityDefault=75&bgTextureShadow=flat&bgTextureOverlay=flat&bgTextureError=flat&bgTextureHighlight=flat&bgTextureContent=flat&bgTextureHeader=flat&bgTextureActive=flat&bgTextureHover=flat&bgTextureDefault=flat&cornerRadius=3px&fwDefault=normal&ffDefault=Arial%2CHelvetica%2Csans-serif&fsDefault=1em&cornerRadiusShadow=8px&thicknessShadow=5px&offsetLeftShadow=0px&offsetTopShadow=0px&opacityShadow=.3&bgColorShadow=%23666666&opacityOverlay=.3&bgColorOverlay=%23aaaaaa&fcError=%235f3f3f&borderColorError=%23f1a899&bgColorError=%23fddfdf&fcHighlight=%23777620&borderColorHighlight=%23dad55e&bgColorHighlight=%23fffa90&fcContent=%23333333&borderColorContent=%23dddddd&bgColorContent=%23ffffff&fcHeader=%23333333&borderColorHeader=%23dddddd&bgColorHeader=%23e9e9e9&fcActive=%23ffffff&borderColorActive=%23003eff&bgColorActive=%23007fff&fcHover=%232b2b2b&borderColorHover=%23cccccc&bgColorHover=%23ededed&fcDefault=%23454545&borderColorDefault=%23c5c5c5&bgColorDefault=%23f6f6f6\n* Copyright OpenJS Foundation and other contributors; Licensed MIT */\n\n/* Layout helpers\n----------------------------------*/\n.ui-helper-hidden {\n\tdisplay: none;\n}\n.ui-helper-hidden-accessible {\n\tborder: 0;\n\tclip: rect(0 0 0 0);\n\theight: 1px;\n\tmargin: -1px;\n\toverflow: hidden;\n\tpadding: 0;\n\tposition: absolute;\n\twidth: 1px;\n}\n.ui-helper-reset {\n\tmargin: 0;\n\tpadding: 0;\n\tborder: 0;\n\toutline: 0;\n\tline-height: 1.3;\n\ttext-decoration: none;\n\tfont-size: 100%;\n\tlist-style: none;\n}\n.ui-helper-clearfix:before,\n.ui-helper-clearfix:after {\n\tcontent: "";\n\tdisplay: table;\n\tborder-collapse: collapse;\n}\n.ui-helper-clearfix:after {\n\tclear: both;\n}\n.ui-helper-zfix {\n\twidth: 100%;\n\theight: 100%;\n\ttop: 0;\n\tleft: 0;\n\tposition: absolute;\n\topacity: 0;\n\t-ms-filter: "alpha(opacity=0)"; /* support: IE8 */\n}\n\n.ui-front {\n\tz-index: 100;\n}\n\n\n/* Interaction Cues\n----------------------------------*/\n.ui-state-disabled {\n\tcursor: default !important;\n\tpointer-events: none;\n}\n\n\n/* Icons\n----------------------------------*/\n.ui-icon {\n\tdisplay: inline-block;\n\tvertical-align: middle;\n\tmargin-top: -.25em;\n\tposition: relative;\n\ttext-indent: -99999px;\n\toverflow: hidden;\n\tbackground-repeat: no-repeat;\n}\n\n.ui-widget-icon-block {\n\tleft: 50%;\n\tmargin-left: -8px;\n\tdisplay: block;\n}\n\n/* Misc visuals\n----------------------------------*/\n\n/* Overlays */\n.ui-widget-overlay {\n\tposition: fixed;\n\ttop: 0;\n\tleft: 0;\n\twidth: 100%;\n\theight: 100%;\n}\n.ui-accordion .ui-accordion-header {\n\tdisplay: block;\n\tcursor: pointer;\n\tposition: relative;\n\tmargin: 2px 0 0 0;\n\tpadding: .5em .5em .5em .7em;\n\tfont-size: 100%;\n}\n.ui-accordion .ui-accordion-content {\n\tpadding: 1em 2.2em;\n\tborder-top: 0;\n\toverflow: auto;\n}\n.ui-autocomplete {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tcursor: default;\n}\n.ui-menu {\n\tlist-style: none;\n\tpadding: 0;\n\tmargin: 0;\n\tdisplay: block;\n\toutline: 0;\n}\n.ui-menu .ui-menu {\n\tposition: absolute;\n}\n.ui-menu .ui-menu-item {\n\tmargin: 0;\n\tcursor: pointer;\n\t/* support: IE10, see #8844 */\n\tlist-style-image: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7");\n}\n.ui-menu .ui-menu-item-wrapper {\n\tposition: relative;\n\tpadding: 3px 1em 3px .4em;\n}\n.ui-menu .ui-menu-divider {\n\tmargin: 5px 0;\n\theight: 0;\n\tfont-size: 0;\n\tline-height: 0;\n\tborder-width: 1px 0 0 0;\n}\n.ui-menu .ui-state-focus,\n.ui-menu .ui-state-active {\n\tmargin: -1px;\n}\n\n/* icon support */\n.ui-menu-icons {\n\tposition: relative;\n}\n.ui-menu-icons .ui-menu-item-wrapper {\n\tpadding-left: 2em;\n}\n\n/* left-aligned */\n.ui-menu .ui-icon {\n\tposition: absolute;\n\ttop: 0;\n\tbottom: 0;\n\tleft: .2em;\n\tmargin: auto 0;\n}\n\n/* right-aligned */\n.ui-menu .ui-menu-icon {\n\tleft: auto;\n\tright: 0;\n}\n.ui-button {\n\tpadding: .4em 1em;\n\tdisplay: inline-block;\n\tposition: relative;\n\tline-height: normal;\n\tmargin-right: .1em;\n\tcursor: pointer;\n\tvertical-align: middle;\n\ttext-align: center;\n\t-webkit-user-select: none;\n\t-moz-user-select: none;\n\t-ms-user-select: none;\n\tuser-select: none;\n\n\t/* Support: IE <= 11 */\n\toverflow: visible;\n}\n\n.ui-button,\n.ui-button:link,\n.ui-button:visited,\n.ui-button:hover,\n.ui-button:active {\n\ttext-decoration: none;\n}\n\n/* to make room for the icon, a width needs to be set here */\n.ui-button-icon-only {\n\twidth: 2em;\n\tbox-sizing: border-box;\n\ttext-indent: -9999px;\n\twhite-space: nowrap;\n}\n\n/* no icon support for input elements */\ninput.ui-button.ui-button-icon-only {\n\ttext-indent: 0;\n}\n\n/* button icon element(s) */\n.ui-button-icon-only .ui-icon {\n\tposition: absolute;\n\ttop: 50%;\n\tleft: 50%;\n\tmargin-top: -8px;\n\tmargin-left: -8px;\n}\n\n.ui-button.ui-icon-notext .ui-icon {\n\tpadding: 0;\n\twidth: 2.1em;\n\theight: 2.1em;\n\ttext-indent: -9999px;\n\twhite-space: nowrap;\n\n}\n\ninput.ui-button.ui-icon-notext .ui-icon {\n\twidth: auto;\n\theight: auto;\n\ttext-indent: 0;\n\twhite-space: normal;\n\tpadding: .4em 1em;\n}\n\n/* workarounds */\n/* Support: Firefox 5 - 40 */\ninput.ui-button::-moz-focus-inner,\nbutton.ui-button::-moz-focus-inner {\n\tborder: 0;\n\tpadding: 0;\n}\n.ui-controlgroup {\n\tvertical-align: middle;\n\tdisplay: inline-block;\n}\n.ui-controlgroup > .ui-controlgroup-item {\n\tfloat: left;\n\tmargin-left: 0;\n\tmargin-right: 0;\n}\n.ui-controlgroup > .ui-controlgroup-item:focus,\n.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus {\n\tz-index: 9999;\n}\n.ui-controlgroup-vertical > .ui-controlgroup-item {\n\tdisplay: block;\n\tfloat: none;\n\twidth: 100%;\n\tmargin-top: 0;\n\tmargin-bottom: 0;\n\ttext-align: left;\n}\n.ui-controlgroup-vertical .ui-controlgroup-item {\n\tbox-sizing: border-box;\n}\n.ui-controlgroup .ui-controlgroup-label {\n\tpadding: .4em 1em;\n}\n.ui-controlgroup .ui-controlgroup-label span {\n\tfont-size: 80%;\n}\n.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item {\n\tborder-left: none;\n}\n.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item {\n\tborder-top: none;\n}\n.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content {\n\tborder-right: none;\n}\n.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content {\n\tborder-bottom: none;\n}\n\n/* Spinner specific style fixes */\n.ui-controlgroup-vertical .ui-spinner-input {\n\n\t/* Support: IE8 only, Android < 4.4 only */\n\twidth: 75%;\n\twidth: calc( 100% - 2.4em );\n}\n.ui-controlgroup-vertical .ui-spinner .ui-spinner-up {\n\tborder-top-style: solid;\n}\n\n.ui-checkboxradio-label .ui-icon-background {\n\tbox-shadow: inset 1px 1px 1px #ccc;\n\tborder-radius: .12em;\n\tborder: none;\n}\n.ui-checkboxradio-radio-label .ui-icon-background {\n\twidth: 16px;\n\theight: 16px;\n\tborder-radius: 1em;\n\toverflow: visible;\n\tborder: none;\n}\n.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,\n.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon {\n\tbackground-image: none;\n\twidth: 8px;\n\theight: 8px;\n\tborder-width: 4px;\n\tborder-style: solid;\n}\n.ui-checkboxradio-disabled {\n\tpointer-events: none;\n}\n.ui-datepicker {\n\twidth: 17em;\n\tpadding: .2em .2em 0;\n\tdisplay: none;\n}\n.ui-datepicker .ui-datepicker-header {\n\tposition: relative;\n\tpadding: .2em 0;\n}\n.ui-datepicker .ui-datepicker-prev,\n.ui-datepicker .ui-datepicker-next {\n\tposition: absolute;\n\ttop: 2px;\n\twidth: 1.8em;\n\theight: 1.8em;\n}\n.ui-datepicker .ui-datepicker-prev-hover,\n.ui-datepicker .ui-datepicker-next-hover {\n\ttop: 1px;\n}\n.ui-datepicker .ui-datepicker-prev {\n\tleft: 2px;\n}\n.ui-datepicker .ui-datepicker-next {\n\tright: 2px;\n}\n.ui-datepicker .ui-datepicker-prev-hover {\n\tleft: 1px;\n}\n.ui-datepicker .ui-datepicker-next-hover {\n\tright: 1px;\n}\n.ui-datepicker .ui-datepicker-prev span,\n.ui-datepicker .ui-datepicker-next span {\n\tdisplay: block;\n\tposition: absolute;\n\tleft: 50%;\n\tmargin-left: -8px;\n\ttop: 50%;\n\tmargin-top: -8px;\n}\n.ui-datepicker .ui-datepicker-title {\n\tmargin: 0 2.3em;\n\tline-height: 1.8em;\n\ttext-align: center;\n}\n.ui-datepicker .ui-datepicker-title select {\n\tfont-size: 1em;\n\tmargin: 1px 0;\n}\n.ui-datepicker select.ui-datepicker-month,\n.ui-datepicker select.ui-datepicker-year {\n\twidth: 45%;\n}\n.ui-datepicker table {\n\twidth: 100%;\n\tfont-size: .9em;\n\tborder-collapse: collapse;\n\tmargin: 0 0 .4em;\n}\n.ui-datepicker th {\n\tpadding: .7em .3em;\n\ttext-align: center;\n\tfont-weight: bold;\n\tborder: 0;\n}\n.ui-datepicker td {\n\tborder: 0;\n\tpadding: 1px;\n}\n.ui-datepicker td span,\n.ui-datepicker td a {\n\tdisplay: block;\n\tpadding: .2em;\n\ttext-align: right;\n\ttext-decoration: none;\n}\n.ui-datepicker .ui-datepicker-buttonpane {\n\tbackground-image: none;\n\tmargin: .7em 0 0 0;\n\tpadding: 0 .2em;\n\tborder-left: 0;\n\tborder-right: 0;\n\tborder-bottom: 0;\n}\n.ui-datepicker .ui-datepicker-buttonpane button {\n\tfloat: right;\n\tmargin: .5em .2em .4em;\n\tcursor: pointer;\n\tpadding: .2em .6em .3em .6em;\n\twidth: auto;\n\toverflow: visible;\n}\n.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current {\n\tfloat: left;\n}\n\n/* with multiple calendars */\n.ui-datepicker.ui-datepicker-multi {\n\twidth: auto;\n}\n.ui-datepicker-multi .ui-datepicker-group {\n\tfloat: left;\n}\n.ui-datepicker-multi .ui-datepicker-group table {\n\twidth: 95%;\n\tmargin: 0 auto .4em;\n}\n.ui-datepicker-multi-2 .ui-datepicker-group {\n\twidth: 50%;\n}\n.ui-datepicker-multi-3 .ui-datepicker-group {\n\twidth: 33.3%;\n}\n.ui-datepicker-multi-4 .ui-datepicker-group {\n\twidth: 25%;\n}\n.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,\n.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header {\n\tborder-left-width: 0;\n}\n.ui-datepicker-multi .ui-datepicker-buttonpane {\n\tclear: left;\n}\n.ui-datepicker-row-break {\n\tclear: both;\n\twidth: 100%;\n\tfont-size: 0;\n}\n\n/* RTL support */\n.ui-datepicker-rtl {\n\tdirection: rtl;\n}\n.ui-datepicker-rtl .ui-datepicker-prev {\n\tright: 2px;\n\tleft: auto;\n}\n.ui-datepicker-rtl .ui-datepicker-next {\n\tleft: 2px;\n\tright: auto;\n}\n.ui-datepicker-rtl .ui-datepicker-prev:hover {\n\tright: 1px;\n\tleft: auto;\n}\n.ui-datepicker-rtl .ui-datepicker-next:hover {\n\tleft: 1px;\n\tright: auto;\n}\n.ui-datepicker-rtl .ui-datepicker-buttonpane {\n\tclear: right;\n}\n.ui-datepicker-rtl .ui-datepicker-buttonpane button {\n\tfloat: left;\n}\n.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,\n.ui-datepicker-rtl .ui-datepicker-group {\n\tfloat: right;\n}\n.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,\n.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header {\n\tborder-right-width: 0;\n\tborder-left-width: 1px;\n}\n\n/* Icons */\n.ui-datepicker .ui-icon {\n\tdisplay: block;\n\ttext-indent: -99999px;\n\toverflow: hidden;\n\tbackground-repeat: no-repeat;\n\tleft: .5em;\n\ttop: .3em;\n}\n.ui-dialog {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tpadding: .2em;\n\toutline: 0;\n}\n.ui-dialog .ui-dialog-titlebar {\n\tpadding: .4em 1em;\n\tposition: relative;\n}\n.ui-dialog .ui-dialog-title {\n\tfloat: left;\n\tmargin: .1em 0;\n\twhite-space: nowrap;\n\twidth: 90%;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n}\n.ui-dialog .ui-dialog-titlebar-close {\n\tposition: absolute;\n\tright: .3em;\n\ttop: 50%;\n\twidth: 20px;\n\tmargin: -10px 0 0 0;\n\tpadding: 1px;\n\theight: 20px;\n}\n.ui-dialog .ui-dialog-content {\n\tposition: relative;\n\tborder: 0;\n\tpadding: .5em 1em;\n\tbackground: none;\n\toverflow: auto;\n}\n.ui-dialog .ui-dialog-buttonpane {\n\ttext-align: left;\n\tborder-width: 1px 0 0 0;\n\tbackground-image: none;\n\tmargin-top: .5em;\n\tpadding: .3em 1em .5em .4em;\n}\n.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {\n\tfloat: right;\n}\n.ui-dialog .ui-dialog-buttonpane button {\n\tmargin: .5em .4em .5em 0;\n\tcursor: pointer;\n}\n.ui-dialog .ui-resizable-n {\n\theight: 2px;\n\ttop: 0;\n}\n.ui-dialog .ui-resizable-e {\n\twidth: 2px;\n\tright: 0;\n}\n.ui-dialog .ui-resizable-s {\n\theight: 2px;\n\tbottom: 0;\n}\n.ui-dialog .ui-resizable-w {\n\twidth: 2px;\n\tleft: 0;\n}\n.ui-dialog .ui-resizable-se,\n.ui-dialog .ui-resizable-sw,\n.ui-dialog .ui-resizable-ne,\n.ui-dialog .ui-resizable-nw {\n\twidth: 7px;\n\theight: 7px;\n}\n.ui-dialog .ui-resizable-se {\n\tright: 0;\n\tbottom: 0;\n}\n.ui-dialog .ui-resizable-sw {\n\tleft: 0;\n\tbottom: 0;\n}\n.ui-dialog .ui-resizable-ne {\n\tright: 0;\n\ttop: 0;\n}\n.ui-dialog .ui-resizable-nw {\n\tleft: 0;\n\ttop: 0;\n}\n.ui-draggable .ui-dialog-titlebar {\n\tcursor: move;\n}\n.ui-draggable-handle {\n\t-ms-touch-action: none;\n\ttouch-action: none;\n}\n.ui-resizable {\n\tposition: relative;\n}\n.ui-resizable-handle {\n\tposition: absolute;\n\tfont-size: 0.1px;\n\tdisplay: block;\n\t-ms-touch-action: none;\n\ttouch-action: none;\n}\n.ui-resizable-disabled .ui-resizable-handle,\n.ui-resizable-autohide .ui-resizable-handle {\n\tdisplay: none;\n}\n.ui-resizable-n {\n\tcursor: n-resize;\n\theight: 7px;\n\twidth: 100%;\n\ttop: -5px;\n\tleft: 0;\n}\n.ui-resizable-s {\n\tcursor: s-resize;\n\theight: 7px;\n\twidth: 100%;\n\tbottom: -5px;\n\tleft: 0;\n}\n.ui-resizable-e {\n\tcursor: e-resize;\n\twidth: 7px;\n\tright: -5px;\n\ttop: 0;\n\theight: 100%;\n}\n.ui-resizable-w {\n\tcursor: w-resize;\n\twidth: 7px;\n\tleft: -5px;\n\ttop: 0;\n\theight: 100%;\n}\n.ui-resizable-se {\n\tcursor: se-resize;\n\twidth: 12px;\n\theight: 12px;\n\tright: 1px;\n\tbottom: 1px;\n}\n.ui-resizable-sw {\n\tcursor: sw-resize;\n\twidth: 9px;\n\theight: 9px;\n\tleft: -5px;\n\tbottom: -5px;\n}\n.ui-resizable-nw {\n\tcursor: nw-resize;\n\twidth: 9px;\n\theight: 9px;\n\tleft: -5px;\n\ttop: -5px;\n}\n.ui-resizable-ne {\n\tcursor: ne-resize;\n\twidth: 9px;\n\theight: 9px;\n\tright: -5px;\n\ttop: -5px;\n}\n.ui-progressbar {\n\theight: 2em;\n\ttext-align: left;\n\toverflow: hidden;\n}\n.ui-progressbar .ui-progressbar-value {\n\tmargin: -1px;\n\theight: 100%;\n}\n.ui-progressbar .ui-progressbar-overlay {\n\tbackground: url("data:image/gif;base64,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");\n\theight: 100%;\n\t-ms-filter: "alpha(opacity=25)"; /* support: IE8 */\n\topacity: 0.25;\n}\n.ui-progressbar-indeterminate .ui-progressbar-value {\n\tbackground-image: none;\n}\n.ui-selectable {\n\t-ms-touch-action: none;\n\ttouch-action: none;\n}\n.ui-selectable-helper {\n\tposition: absolute;\n\tz-index: 100;\n\tborder: 1px dotted black;\n}\n.ui-selectmenu-menu {\n\tpadding: 0;\n\tmargin: 0;\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tdisplay: none;\n}\n.ui-selectmenu-menu .ui-menu {\n\toverflow: auto;\n\toverflow-x: hidden;\n\tpadding-bottom: 1px;\n}\n.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup {\n\tfont-size: 1em;\n\tfont-weight: bold;\n\tline-height: 1.5;\n\tpadding: 2px 0.4em;\n\tmargin: 0.5em 0 0 0;\n\theight: auto;\n\tborder: 0;\n}\n.ui-selectmenu-open {\n\tdisplay: block;\n}\n.ui-selectmenu-text {\n\tdisplay: block;\n\tmargin-right: 20px;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n}\n.ui-selectmenu-button.ui-button {\n\ttext-align: left;\n\twhite-space: nowrap;\n\twidth: 14em;\n}\n.ui-selectmenu-icon.ui-icon {\n\tfloat: right;\n\tmargin-top: 0;\n}\n.ui-slider {\n\tposition: relative;\n\ttext-align: left;\n}\n.ui-slider .ui-slider-handle {\n\tposition: absolute;\n\tz-index: 2;\n\twidth: 1.2em;\n\theight: 1.2em;\n\tcursor: pointer;\n\t-ms-touch-action: none;\n\ttouch-action: none;\n}\n.ui-slider .ui-slider-range {\n\tposition: absolute;\n\tz-index: 1;\n\tfont-size: .7em;\n\tdisplay: block;\n\tborder: 0;\n\tbackground-position: 0 0;\n}\n\n/* support: IE8 - See #6727 */\n.ui-slider.ui-state-disabled .ui-slider-handle,\n.ui-slider.ui-state-disabled .ui-slider-range {\n\tfilter: inherit;\n}\n\n.ui-slider-horizontal {\n\theight: .8em;\n}\n.ui-slider-horizontal .ui-slider-handle {\n\ttop: -.3em;\n\tmargin-left: -.6em;\n}\n.ui-slider-horizontal .ui-slider-range {\n\ttop: 0;\n\theight: 100%;\n}\n.ui-slider-horizontal .ui-slider-range-min {\n\tleft: 0;\n}\n.ui-slider-horizontal .ui-slider-range-max {\n\tright: 0;\n}\n\n.ui-slider-vertical {\n\twidth: .8em;\n\theight: 100px;\n}\n.ui-slider-vertical .ui-slider-handle {\n\tleft: -.3em;\n\tmargin-left: 0;\n\tmargin-bottom: -.6em;\n}\n.ui-slider-vertical .ui-slider-range {\n\tleft: 0;\n\twidth: 100%;\n}\n.ui-slider-vertical .ui-slider-range-min {\n\tbottom: 0;\n}\n.ui-slider-vertical .ui-slider-range-max {\n\ttop: 0;\n}\n.ui-sortable-handle {\n\t-ms-touch-action: none;\n\ttouch-action: none;\n}\n.ui-spinner {\n\tposition: relative;\n\tdisplay: inline-block;\n\toverflow: hidden;\n\tpadding: 0;\n\tvertical-align: middle;\n}\n.ui-spinner-input {\n\tborder: none;\n\tbackground: none;\n\tcolor: inherit;\n\tpadding: .222em 0;\n\tmargin: .2em 0;\n\tvertical-align: middle;\n\tmargin-left: .4em;\n\tmargin-right: 2em;\n}\n.ui-spinner-button {\n\twidth: 1.6em;\n\theight: 50%;\n\tfont-size: .5em;\n\tpadding: 0;\n\tmargin: 0;\n\ttext-align: center;\n\tposition: absolute;\n\tcursor: default;\n\tdisplay: block;\n\toverflow: hidden;\n\tright: 0;\n}\n/* more specificity required here to override default borders */\n.ui-spinner a.ui-spinner-button {\n\tborder-top-style: none;\n\tborder-bottom-style: none;\n\tborder-right-style: none;\n}\n.ui-spinner-up {\n\ttop: 0;\n}\n.ui-spinner-down {\n\tbottom: 0;\n}\n.ui-tabs {\n\tposition: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */\n\tpadding: .2em;\n}\n.ui-tabs .ui-tabs-nav {\n\tmargin: 0;\n\tpadding: .2em .2em 0;\n}\n.ui-tabs .ui-tabs-nav li {\n\tlist-style: none;\n\tfloat: left;\n\tposition: relative;\n\ttop: 0;\n\tmargin: 1px .2em 0 0;\n\tborder-bottom-width: 0;\n\tpadding: 0;\n\twhite-space: nowrap;\n}\n.ui-tabs .ui-tabs-nav .ui-tabs-anchor {\n\tfloat: left;\n\tpadding: .5em 1em;\n\ttext-decoration: none;\n}\n.ui-tabs .ui-tabs-nav li.ui-tabs-active {\n\tmargin-bottom: -1px;\n\tpadding-bottom: 1px;\n}\n.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,\n.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,\n.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor {\n\tcursor: text;\n}\n.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor {\n\tcursor: pointer;\n}\n.ui-tabs .ui-tabs-panel {\n\tdisplay: block;\n\tborder-width: 0;\n\tpadding: 1em 1.4em;\n\tbackground: none;\n}\n.ui-tooltip {\n\tpadding: 8px;\n\tposition: absolute;\n\tz-index: 9999;\n\tmax-width: 300px;\n}\nbody .ui-tooltip {\n\tborder-width: 2px;\n}\n\n/* Component containers\n----------------------------------*/\n.ui-widget {\n\tfont-family: Arial,Helvetica,sans-serif;\n\tfont-size: 1em;\n}\n.ui-widget .ui-widget {\n\tfont-size: 1em;\n}\n.ui-widget input,\n.ui-widget select,\n.ui-widget textarea,\n.ui-widget button {\n\tfont-family: Arial,Helvetica,sans-serif;\n\tfont-size: 1em;\n}\n.ui-widget.ui-widget-content {\n\tborder: 1px solid #c5c5c5;\n}\n.ui-widget-content {\n\tborder: 1px solid #dddddd;\n\tbackground: #ffffff;\n\tcolor: #333333;\n}\n.ui-widget-content a {\n\tcolor: #333333;\n}\n.ui-widget-header {\n\tborder: 1px solid #dddddd;\n\tbackground: #e9e9e9;\n\tcolor: #333333;\n\tfont-weight: bold;\n}\n.ui-widget-header a {\n\tcolor: #333333;\n}\n\n/* Interaction states\n----------------------------------*/\n.ui-state-default,\n.ui-widget-content .ui-state-default,\n.ui-widget-header .ui-state-default,\n.ui-button,\n\n/* We use html here because we need a greater specificity to make sure disabled\nworks properly when clicked or hovered */\nhtml .ui-button.ui-state-disabled:hover,\nhtml .ui-button.ui-state-disabled:active {\n\tborder: 1px solid #c5c5c5;\n\tbackground: #f6f6f6;\n\tfont-weight: normal;\n\tcolor: #454545;\n}\n.ui-state-default a,\n.ui-state-default a:link,\n.ui-state-default a:visited,\na.ui-button,\na:link.ui-button,\na:visited.ui-button,\n.ui-button {\n\tcolor: #454545;\n\ttext-decoration: none;\n}\n.ui-state-hover,\n.ui-widget-content .ui-state-hover,\n.ui-widget-header .ui-state-hover,\n.ui-state-focus,\n.ui-widget-content .ui-state-focus,\n.ui-widget-header .ui-state-focus,\n.ui-button:hover,\n.ui-button:focus {\n\tborder: 1px solid #cccccc;\n\tbackground: #ededed;\n\tfont-weight: normal;\n\tcolor: #2b2b2b;\n}\n.ui-state-hover a,\n.ui-state-hover a:hover,\n.ui-state-hover a:link,\n.ui-state-hover a:visited,\n.ui-state-focus a,\n.ui-state-focus a:hover,\n.ui-state-focus a:link,\n.ui-state-focus a:visited,\na.ui-button:hover,\na.ui-button:focus {\n\tcolor: #2b2b2b;\n\ttext-decoration: none;\n}\n\n.ui-visual-focus {\n\tbox-shadow: 0 0 3px 1px rgb(94, 158, 214);\n}\n.ui-state-active,\n.ui-widget-content .ui-state-active,\n.ui-widget-header .ui-state-active,\na.ui-button:active,\n.ui-button:active,\n.ui-button.ui-state-active:hover {\n\tborder: 1px solid #003eff;\n\tbackground: #007fff;\n\tfont-weight: normal;\n\tcolor: #ffffff;\n}\n.ui-icon-background,\n.ui-state-active .ui-icon-background {\n\tborder: #003eff;\n\tbackground-color: #ffffff;\n}\n.ui-state-active a,\n.ui-state-active a:link,\n.ui-state-active a:visited {\n\tcolor: #ffffff;\n\ttext-decoration: none;\n}\n\n/* Interaction Cues\n----------------------------------*/\n.ui-state-highlight,\n.ui-widget-content .ui-state-highlight,\n.ui-widget-header .ui-state-highlight {\n\tborder: 1px solid #dad55e;\n\tbackground: #fffa90;\n\tcolor: #777620;\n}\n.ui-state-checked {\n\tborder: 1px solid #dad55e;\n\tbackground: #fffa90;\n}\n.ui-state-highlight a,\n.ui-widget-content .ui-state-highlight a,\n.ui-widget-header .ui-state-highlight a {\n\tcolor: #777620;\n}\n.ui-state-error,\n.ui-widget-content .ui-state-error,\n.ui-widget-header .ui-state-error {\n\tborder: 1px solid #f1a899;\n\tbackground: #fddfdf;\n\tcolor: #5f3f3f;\n}\n.ui-state-error a,\n.ui-widget-content .ui-state-error a,\n.ui-widget-header .ui-state-error a {\n\tcolor: #5f3f3f;\n}\n.ui-state-error-text,\n.ui-widget-content .ui-state-error-text,\n.ui-widget-header .ui-state-error-text {\n\tcolor: #5f3f3f;\n}\n.ui-priority-primary,\n.ui-widget-content .ui-priority-primary,\n.ui-widget-header .ui-priority-primary {\n\tfont-weight: bold;\n}\n.ui-priority-secondary,\n.ui-widget-content .ui-priority-secondary,\n.ui-widget-header .ui-priority-secondary {\n\topacity: .7;\n\t-ms-filter: "alpha(opacity=70)"; /* support: IE8 */\n\tfont-weight: normal;\n}\n.ui-state-disabled,\n.ui-widget-content .ui-state-disabled,\n.ui-widget-header .ui-state-disabled {\n\topacity: .35;\n\t-ms-filter: "alpha(opacity=35)"; /* support: IE8 */\n\tbackground-image: none;\n}\n.ui-state-disabled .ui-icon {\n\t-ms-filter: "alpha(opacity=35)"; /* support: IE8 - See #6059 */\n}\n\n/* Icons\n----------------------------------*/\n\n/* states and images */\n.ui-icon {\n\twidth: 16px;\n\theight: 16px;\n}\n.ui-icon,\n.ui-widget-content .ui-icon {\n\tbackground-image: url("images/ui-icons_444444_256x240.png");\n}\n.ui-widget-header .ui-icon {\n\tbackground-image: url("images/ui-icons_444444_256x240.png");\n}\n.ui-state-hover .ui-icon,\n.ui-state-focus .ui-icon,\n.ui-button:hover .ui-icon,\n.ui-button:focus .ui-icon {\n\tbackground-image: url("images/ui-icons_555555_256x240.png");\n}\n.ui-state-active .ui-icon,\n.ui-button:active .ui-icon {\n\tbackground-image: url("images/ui-icons_ffffff_256x240.png");\n}\n.ui-state-highlight .ui-icon,\n.ui-button .ui-state-highlight.ui-icon {\n\tbackground-image: url("images/ui-icons_777620_256x240.png");\n}\n.ui-state-error .ui-icon,\n.ui-state-error-text .ui-icon {\n\tbackground-image: url("images/ui-icons_cc0000_256x240.png");\n}\n.ui-button .ui-icon {\n\tbackground-image: url("images/ui-icons_777777_256x240.png");\n}\n\n/* positioning */\n/* Three classes needed to override `.ui-button:hover .ui-icon` */\n.ui-icon-blank.ui-icon-blank.ui-icon-blank {\n\tbackground-image: none;\n}\n.ui-icon-caret-1-n { background-position: 0 0; }\n.ui-icon-caret-1-ne { background-position: -16px 0; }\n.ui-icon-caret-1-e { background-position: -32px 0; }\n.ui-icon-caret-1-se { background-position: -48px 0; }\n.ui-icon-caret-1-s { background-position: -65px 0; }\n.ui-icon-caret-1-sw { background-position: -80px 0; }\n.ui-icon-caret-1-w { background-position: -96px 0; }\n.ui-icon-caret-1-nw { background-position: -112px 0; }\n.ui-icon-caret-2-n-s { background-position: -128px 0; }\n.ui-icon-caret-2-e-w { background-position: -144px 0; }\n.ui-icon-triangle-1-n { background-position: 0 -16px; }\n.ui-icon-triangle-1-ne { background-position: -16px -16px; }\n.ui-icon-triangle-1-e { background-position: -32px -16px; }\n.ui-icon-triangle-1-se { background-position: -48px -16px; }\n.ui-icon-triangle-1-s { background-position: -65px -16px; }\n.ui-icon-triangle-1-sw { background-position: -80px -16px; }\n.ui-icon-triangle-1-w { background-position: -96px -16px; }\n.ui-icon-triangle-1-nw { background-position: -112px -16px; }\n.ui-icon-triangle-2-n-s { background-position: -128px -16px; }\n.ui-icon-triangle-2-e-w { background-position: -144px -16px; }\n.ui-icon-arrow-1-n { background-position: 0 -32px; }\n.ui-icon-arrow-1-ne { background-position: -16px -32px; }\n.ui-icon-arrow-1-e { background-position: -32px -32px; }\n.ui-icon-arrow-1-se { background-position: -48px -32px; }\n.ui-icon-arrow-1-s { background-position: -65px -32px; }\n.ui-icon-arrow-1-sw { background-position: -80px -32px; }\n.ui-icon-arrow-1-w { background-position: -96px -32px; }\n.ui-icon-arrow-1-nw { background-position: -112px -32px; }\n.ui-icon-arrow-2-n-s { background-position: -128px -32px; }\n.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }\n.ui-icon-arrow-2-e-w { background-position: -160px -32px; }\n.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }\n.ui-icon-arrowstop-1-n { background-position: -192px -32px; }\n.ui-icon-arrowstop-1-e { background-position: -208px -32px; }\n.ui-icon-arrowstop-1-s { background-position: -224px -32px; }\n.ui-icon-arrowstop-1-w { background-position: -240px -32px; }\n.ui-icon-arrowthick-1-n { background-position: 1px -48px; }\n.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }\n.ui-icon-arrowthick-1-e { background-position: -32px -48px; }\n.ui-icon-arrowthick-1-se { background-position: -48px -48px; }\n.ui-icon-arrowthick-1-s { background-position: -64px -48px; }\n.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }\n.ui-icon-arrowthick-1-w { background-position: -96px -48px; }\n.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }\n.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }\n.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }\n.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }\n.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }\n.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }\n.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }\n.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }\n.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }\n.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }\n.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }\n.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }\n.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }\n.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }\n.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }\n.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }\n.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }\n.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }\n.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }\n.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }\n.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }\n.ui-icon-arrow-4 { background-position: 0 -80px; }\n.ui-icon-arrow-4-diag { background-position: -16px -80px; }\n.ui-icon-extlink { background-position: -32px -80px; }\n.ui-icon-newwin { background-position: -48px -80px; }\n.ui-icon-refresh { background-position: -64px -80px; }\n.ui-icon-shuffle { background-position: -80px -80px; }\n.ui-icon-transfer-e-w { background-position: -96px -80px; }\n.ui-icon-transferthick-e-w { background-position: -112px -80px; }\n.ui-icon-folder-collapsed { background-position: 0 -96px; }\n.ui-icon-folder-open { background-position: -16px -96px; }\n.ui-icon-document { background-position: -32px -96px; }\n.ui-icon-document-b { background-position: -48px -96px; }\n.ui-icon-note { background-position: -64px -96px; }\n.ui-icon-mail-closed { background-position: -80px -96px; }\n.ui-icon-mail-open { background-position: -96px -96px; }\n.ui-icon-suitcase { background-position: -112px -96px; }\n.ui-icon-comment { background-position: -128px -96px; }\n.ui-icon-person { background-position: -144px -96px; }\n.ui-icon-print { background-position: -160px -96px; }\n.ui-icon-trash { background-position: -176px -96px; }\n.ui-icon-locked { background-position: -192px -96px; }\n.ui-icon-unlocked { background-position: -208px -96px; }\n.ui-icon-bookmark { background-position: -224px -96px; }\n.ui-icon-tag { background-position: -240px -96px; }\n.ui-icon-home { background-position: 0 -112px; }\n.ui-icon-flag { background-position: -16px -112px; }\n.ui-icon-calendar { background-position: -32px -112px; }\n.ui-icon-cart { background-position: -48px -112px; }\n.ui-icon-pencil { background-position: -64px -112px; }\n.ui-icon-clock { background-position: -80px -112px; }\n.ui-icon-disk { background-position: -96px -112px; }\n.ui-icon-calculator { background-position: -112px -112px; }\n.ui-icon-zoomin { background-position: -128px -112px; }\n.ui-icon-zoomout { background-position: -144px -112px; }\n.ui-icon-search { background-position: -160px -112px; }\n.ui-icon-wrench { background-position: -176px -112px; }\n.ui-icon-gear { background-position: -192px -112px; }\n.ui-icon-heart { background-position: -208px -112px; }\n.ui-icon-star { background-position: -224px -112px; }\n.ui-icon-link { background-position: -240px -112px; }\n.ui-icon-cancel { background-position: 0 -128px; }\n.ui-icon-plus { background-position: -16px -128px; }\n.ui-icon-plusthick { background-position: -32px -128px; }\n.ui-icon-minus { background-position: -48px -128px; }\n.ui-icon-minusthick { background-position: -64px -128px; }\n.ui-icon-close { background-position: -80px -128px; }\n.ui-icon-closethick { background-position: -96px -128px; }\n.ui-icon-key { background-position: -112px -128px; }\n.ui-icon-lightbulb { background-position: -128px -128px; }\n.ui-icon-scissors { background-position: -144px -128px; }\n.ui-icon-clipboard { background-position: -160px -128px; }\n.ui-icon-copy { background-position: -176px -128px; }\n.ui-icon-contact { background-position: -192px -128px; }\n.ui-icon-image { background-position: -208px -128px; }\n.ui-icon-video { background-position: -224px -128px; }\n.ui-icon-script { background-position: -240px -128px; }\n.ui-icon-alert { background-position: 0 -144px; }\n.ui-icon-info { background-position: -16px -144px; }\n.ui-icon-notice { background-position: -32px -144px; }\n.ui-icon-help { background-position: -48px -144px; }\n.ui-icon-check { background-position: -64px -144px; }\n.ui-icon-bullet { background-position: -80px -144px; }\n.ui-icon-radio-on { background-position: -96px -144px; }\n.ui-icon-radio-off { background-position: -112px -144px; }\n.ui-icon-pin-w { background-position: -128px -144px; }\n.ui-icon-pin-s { background-position: -144px -144px; }\n.ui-icon-play { background-position: 0 -160px; }\n.ui-icon-pause { background-position: -16px -160px; }\n.ui-icon-seek-next { background-position: -32px -160px; }\n.ui-icon-seek-prev { background-position: -48px -160px; }\n.ui-icon-seek-end { background-position: -64px -160px; }\n.ui-icon-seek-start { background-position: -80px -160px; }\n/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */\n.ui-icon-seek-first { background-position: -80px -160px; }\n.ui-icon-stop { background-position: -96px -160px; }\n.ui-icon-eject { background-position: -112px -160px; }\n.ui-icon-volume-off { background-position: -128px -160px; }\n.ui-icon-volume-on { background-position: -144px -160px; }\n.ui-icon-power { background-position: 0 -176px; }\n.ui-icon-signal-diag { background-position: -16px -176px; }\n.ui-icon-signal { background-position: -32px -176px; }\n.ui-icon-battery-0 { background-position: -48px -176px; }\n.ui-icon-battery-1 { background-position: -64px -176px; }\n.ui-icon-battery-2 { background-position: -80px -176px; }\n.ui-icon-battery-3 { background-position: -96px -176px; }\n.ui-icon-circle-plus { background-position: 0 -192px; }\n.ui-icon-circle-minus { background-position: -16px -192px; }\n.ui-icon-circle-close { background-position: -32px -192px; }\n.ui-icon-circle-triangle-e { background-position: -48px -192px; }\n.ui-icon-circle-triangle-s { background-position: -64px -192px; }\n.ui-icon-circle-triangle-w { background-position: -80px -192px; }\n.ui-icon-circle-triangle-n { background-position: -96px -192px; }\n.ui-icon-circle-arrow-e { background-position: -112px -192px; }\n.ui-icon-circle-arrow-s { background-position: -128px -192px; }\n.ui-icon-circle-arrow-w { background-position: -144px -192px; }\n.ui-icon-circle-arrow-n { background-position: -160px -192px; }\n.ui-icon-circle-zoomin { background-position: -176px -192px; }\n.ui-icon-circle-zoomout { background-position: -192px -192px; }\n.ui-icon-circle-check { background-position: -208px -192px; }\n.ui-icon-circlesmall-plus { background-position: 0 -208px; }\n.ui-icon-circlesmall-minus { background-position: -16px -208px; }\n.ui-icon-circlesmall-close { background-position: -32px -208px; }\n.ui-icon-squaresmall-plus { background-position: -48px -208px; }\n.ui-icon-squaresmall-minus { background-position: -64px -208px; }\n.ui-icon-squaresmall-close { background-position: -80px -208px; }\n.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }\n.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }\n.ui-icon-grip-solid-vertical { background-position: -32px -224px; }\n.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }\n.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }\n.ui-icon-grip-diagonal-se { background-position: -80px -224px; }\n\n\n/* Misc visuals\n----------------------------------*/\n\n/* Corner radius */\n.ui-corner-all,\n.ui-corner-top,\n.ui-corner-left,\n.ui-corner-tl {\n\tborder-top-left-radius: 3px;\n}\n.ui-corner-all,\n.ui-corner-top,\n.ui-corner-right,\n.ui-corner-tr {\n\tborder-top-right-radius: 3px;\n}\n.ui-corner-all,\n.ui-corner-bottom,\n.ui-corner-left,\n.ui-corner-bl {\n\tborder-bottom-left-radius: 3px;\n}\n.ui-corner-all,\n.ui-corner-bottom,\n.ui-corner-right,\n.ui-corner-br {\n\tborder-bottom-right-radius: 3px;\n}\n\n/* Overlays */\n.ui-widget-overlay {\n\tbackground: #aaaaaa;\n\topacity: .003;\n\t-ms-filter: "alpha(opacity=.3)"; /* support: IE8 */\n}\n.ui-widget-shadow {\n\t-webkit-box-shadow: 0px 0px 5px #666666;\n\tbox-shadow: 0px 0px 5px #666666;\n}\n'],sourceRoot:""}]);const E=m},13169:(t,e,n)=>{"use strict";n.d(e,{A:()=>w});var i=n(71354),o=n.n(i),r=n(76314),s=n.n(r),a=n(4417),c=n.n(a),l=new URL(n(3132),n.b),u=new URL(n(19394),n.b),h=new URL(n(81972),n.b),d=new URL(n(6411),n.b),p=new URL(n(14506),n.b),A=new URL(n(64886),n.b),f=s()(o()),g=c()(l),m=c()(u),b=c()(h),v=c()(d),C=c()(p),x=c()(A);f.push([t.id,`/*!\n * jQuery UI CSS Framework 1.13.3\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n *\n * https://api.jqueryui.com/category/theming/\n *\n * To view and modify this theme, visit https://jqueryui.com/themeroller/?bgShadowXPos=&bgOverlayXPos=&bgErrorXPos=&bgHighlightXPos=&bgContentXPos=&bgHeaderXPos=&bgActiveXPos=&bgHoverXPos=&bgDefaultXPos=&bgShadowYPos=&bgOverlayYPos=&bgErrorYPos=&bgHighlightYPos=&bgContentYPos=&bgHeaderYPos=&bgActiveYPos=&bgHoverYPos=&bgDefaultYPos=&bgShadowRepeat=&bgOverlayRepeat=&bgErrorRepeat=&bgHighlightRepeat=&bgContentRepeat=&bgHeaderRepeat=&bgActiveRepeat=&bgHoverRepeat=&bgDefaultRepeat=&iconsHover=url(%22images%2Fui-icons_555555_256x240.png%22)&iconsHighlight=url(%22images%2Fui-icons_777620_256x240.png%22)&iconsHeader=url(%22images%2Fui-icons_444444_256x240.png%22)&iconsError=url(%22images%2Fui-icons_cc0000_256x240.png%22)&iconsDefault=url(%22images%2Fui-icons_777777_256x240.png%22)&iconsContent=url(%22images%2Fui-icons_444444_256x240.png%22)&iconsActive=url(%22images%2Fui-icons_ffffff_256x240.png%22)&bgImgUrlShadow=&bgImgUrlOverlay=&bgImgUrlHover=&bgImgUrlHighlight=&bgImgUrlHeader=&bgImgUrlError=&bgImgUrlDefault=&bgImgUrlContent=&bgImgUrlActive=&opacityFilterShadow=%22alpha(opacity%3D30)%22&opacityFilterOverlay=%22alpha(opacity%3D30)%22&opacityShadowPerc=30&opacityOverlayPerc=30&iconColorHover=%23555555&iconColorHighlight=%23777620&iconColorHeader=%23444444&iconColorError=%23cc0000&iconColorDefault=%23777777&iconColorContent=%23444444&iconColorActive=%23ffffff&bgImgOpacityShadow=0&bgImgOpacityOverlay=0&bgImgOpacityError=95&bgImgOpacityHighlight=55&bgImgOpacityContent=75&bgImgOpacityHeader=75&bgImgOpacityActive=65&bgImgOpacityHover=75&bgImgOpacityDefault=75&bgTextureShadow=flat&bgTextureOverlay=flat&bgTextureError=flat&bgTextureHighlight=flat&bgTextureContent=flat&bgTextureHeader=flat&bgTextureActive=flat&bgTextureHover=flat&bgTextureDefault=flat&cornerRadius=3px&fwDefault=normal&ffDefault=Arial%2CHelvetica%2Csans-serif&fsDefault=1em&cornerRadiusShadow=8px&thicknessShadow=5px&offsetLeftShadow=0px&offsetTopShadow=0px&opacityShadow=.3&bgColorShadow=%23666666&opacityOverlay=.3&bgColorOverlay=%23aaaaaa&fcError=%235f3f3f&borderColorError=%23f1a899&bgColorError=%23fddfdf&fcHighlight=%23777620&borderColorHighlight=%23dad55e&bgColorHighlight=%23fffa90&fcContent=%23333333&borderColorContent=%23dddddd&bgColorContent=%23ffffff&fcHeader=%23333333&borderColorHeader=%23dddddd&bgColorHeader=%23e9e9e9&fcActive=%23ffffff&borderColorActive=%23003eff&bgColorActive=%23007fff&fcHover=%232b2b2b&borderColorHover=%23cccccc&bgColorHover=%23ededed&fcDefault=%23454545&borderColorDefault=%23c5c5c5&bgColorDefault=%23f6f6f6\n */\n\n\n/* Component containers\n----------------------------------*/\n.ui-widget {\n\tfont-family: Arial,Helvetica,sans-serif;\n\tfont-size: 1em;\n}\n.ui-widget .ui-widget {\n\tfont-size: 1em;\n}\n.ui-widget input,\n.ui-widget select,\n.ui-widget textarea,\n.ui-widget button {\n\tfont-family: Arial,Helvetica,sans-serif;\n\tfont-size: 1em;\n}\n.ui-widget.ui-widget-content {\n\tborder: 1px solid #c5c5c5;\n}\n.ui-widget-content {\n\tborder: 1px solid #dddddd;\n\tbackground: #ffffff;\n\tcolor: #333333;\n}\n.ui-widget-content a {\n\tcolor: #333333;\n}\n.ui-widget-header {\n\tborder: 1px solid #dddddd;\n\tbackground: #e9e9e9;\n\tcolor: #333333;\n\tfont-weight: bold;\n}\n.ui-widget-header a {\n\tcolor: #333333;\n}\n\n/* Interaction states\n----------------------------------*/\n.ui-state-default,\n.ui-widget-content .ui-state-default,\n.ui-widget-header .ui-state-default,\n.ui-button,\n\n/* We use html here because we need a greater specificity to make sure disabled\nworks properly when clicked or hovered */\nhtml .ui-button.ui-state-disabled:hover,\nhtml .ui-button.ui-state-disabled:active {\n\tborder: 1px solid #c5c5c5;\n\tbackground: #f6f6f6;\n\tfont-weight: normal;\n\tcolor: #454545;\n}\n.ui-state-default a,\n.ui-state-default a:link,\n.ui-state-default a:visited,\na.ui-button,\na:link.ui-button,\na:visited.ui-button,\n.ui-button {\n\tcolor: #454545;\n\ttext-decoration: none;\n}\n.ui-state-hover,\n.ui-widget-content .ui-state-hover,\n.ui-widget-header .ui-state-hover,\n.ui-state-focus,\n.ui-widget-content .ui-state-focus,\n.ui-widget-header .ui-state-focus,\n.ui-button:hover,\n.ui-button:focus {\n\tborder: 1px solid #cccccc;\n\tbackground: #ededed;\n\tfont-weight: normal;\n\tcolor: #2b2b2b;\n}\n.ui-state-hover a,\n.ui-state-hover a:hover,\n.ui-state-hover a:link,\n.ui-state-hover a:visited,\n.ui-state-focus a,\n.ui-state-focus a:hover,\n.ui-state-focus a:link,\n.ui-state-focus a:visited,\na.ui-button:hover,\na.ui-button:focus {\n\tcolor: #2b2b2b;\n\ttext-decoration: none;\n}\n\n.ui-visual-focus {\n\tbox-shadow: 0 0 3px 1px rgb(94, 158, 214);\n}\n.ui-state-active,\n.ui-widget-content .ui-state-active,\n.ui-widget-header .ui-state-active,\na.ui-button:active,\n.ui-button:active,\n.ui-button.ui-state-active:hover {\n\tborder: 1px solid #003eff;\n\tbackground: #007fff;\n\tfont-weight: normal;\n\tcolor: #ffffff;\n}\n.ui-icon-background,\n.ui-state-active .ui-icon-background {\n\tborder: #003eff;\n\tbackground-color: #ffffff;\n}\n.ui-state-active a,\n.ui-state-active a:link,\n.ui-state-active a:visited {\n\tcolor: #ffffff;\n\ttext-decoration: none;\n}\n\n/* Interaction Cues\n----------------------------------*/\n.ui-state-highlight,\n.ui-widget-content .ui-state-highlight,\n.ui-widget-header .ui-state-highlight {\n\tborder: 1px solid #dad55e;\n\tbackground: #fffa90;\n\tcolor: #777620;\n}\n.ui-state-checked {\n\tborder: 1px solid #dad55e;\n\tbackground: #fffa90;\n}\n.ui-state-highlight a,\n.ui-widget-content .ui-state-highlight a,\n.ui-widget-header .ui-state-highlight a {\n\tcolor: #777620;\n}\n.ui-state-error,\n.ui-widget-content .ui-state-error,\n.ui-widget-header .ui-state-error {\n\tborder: 1px solid #f1a899;\n\tbackground: #fddfdf;\n\tcolor: #5f3f3f;\n}\n.ui-state-error a,\n.ui-widget-content .ui-state-error a,\n.ui-widget-header .ui-state-error a {\n\tcolor: #5f3f3f;\n}\n.ui-state-error-text,\n.ui-widget-content .ui-state-error-text,\n.ui-widget-header .ui-state-error-text {\n\tcolor: #5f3f3f;\n}\n.ui-priority-primary,\n.ui-widget-content .ui-priority-primary,\n.ui-widget-header .ui-priority-primary {\n\tfont-weight: bold;\n}\n.ui-priority-secondary,\n.ui-widget-content .ui-priority-secondary,\n.ui-widget-header .ui-priority-secondary {\n\topacity: .7;\n\t-ms-filter: "alpha(opacity=70)"; /* support: IE8 */\n\tfont-weight: normal;\n}\n.ui-state-disabled,\n.ui-widget-content .ui-state-disabled,\n.ui-widget-header .ui-state-disabled {\n\topacity: .35;\n\t-ms-filter: "alpha(opacity=35)"; /* support: IE8 */\n\tbackground-image: none;\n}\n.ui-state-disabled .ui-icon {\n\t-ms-filter: "alpha(opacity=35)"; /* support: IE8 - See #6059 */\n}\n\n/* Icons\n----------------------------------*/\n\n/* states and images */\n.ui-icon {\n\twidth: 16px;\n\theight: 16px;\n}\n.ui-icon,\n.ui-widget-content .ui-icon {\n\tbackground-image: url(${g});\n}\n.ui-widget-header .ui-icon {\n\tbackground-image: url(${g});\n}\n.ui-state-hover .ui-icon,\n.ui-state-focus .ui-icon,\n.ui-button:hover .ui-icon,\n.ui-button:focus .ui-icon {\n\tbackground-image: url(${m});\n}\n.ui-state-active .ui-icon,\n.ui-button:active .ui-icon {\n\tbackground-image: url(${b});\n}\n.ui-state-highlight .ui-icon,\n.ui-button .ui-state-highlight.ui-icon {\n\tbackground-image: url(${v});\n}\n.ui-state-error .ui-icon,\n.ui-state-error-text .ui-icon {\n\tbackground-image: url(${C});\n}\n.ui-button .ui-icon {\n\tbackground-image: url(${x});\n}\n\n/* positioning */\n/* Three classes needed to override \`.ui-button:hover .ui-icon\` */\n.ui-icon-blank.ui-icon-blank.ui-icon-blank {\n\tbackground-image: none;\n}\n.ui-icon-caret-1-n { background-position: 0 0; }\n.ui-icon-caret-1-ne { background-position: -16px 0; }\n.ui-icon-caret-1-e { background-position: -32px 0; }\n.ui-icon-caret-1-se { background-position: -48px 0; }\n.ui-icon-caret-1-s { background-position: -65px 0; }\n.ui-icon-caret-1-sw { background-position: -80px 0; }\n.ui-icon-caret-1-w { background-position: -96px 0; }\n.ui-icon-caret-1-nw { background-position: -112px 0; }\n.ui-icon-caret-2-n-s { background-position: -128px 0; }\n.ui-icon-caret-2-e-w { background-position: -144px 0; }\n.ui-icon-triangle-1-n { background-position: 0 -16px; }\n.ui-icon-triangle-1-ne { background-position: -16px -16px; }\n.ui-icon-triangle-1-e { background-position: -32px -16px; }\n.ui-icon-triangle-1-se { background-position: -48px -16px; }\n.ui-icon-triangle-1-s { background-position: -65px -16px; }\n.ui-icon-triangle-1-sw { background-position: -80px -16px; }\n.ui-icon-triangle-1-w { background-position: -96px -16px; }\n.ui-icon-triangle-1-nw { background-position: -112px -16px; }\n.ui-icon-triangle-2-n-s { background-position: -128px -16px; }\n.ui-icon-triangle-2-e-w { background-position: -144px -16px; }\n.ui-icon-arrow-1-n { background-position: 0 -32px; }\n.ui-icon-arrow-1-ne { background-position: -16px -32px; }\n.ui-icon-arrow-1-e { background-position: -32px -32px; }\n.ui-icon-arrow-1-se { background-position: -48px -32px; }\n.ui-icon-arrow-1-s { background-position: -65px -32px; }\n.ui-icon-arrow-1-sw { background-position: -80px -32px; }\n.ui-icon-arrow-1-w { background-position: -96px -32px; }\n.ui-icon-arrow-1-nw { background-position: -112px -32px; }\n.ui-icon-arrow-2-n-s { background-position: -128px -32px; }\n.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }\n.ui-icon-arrow-2-e-w { background-position: -160px -32px; }\n.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }\n.ui-icon-arrowstop-1-n { background-position: -192px -32px; }\n.ui-icon-arrowstop-1-e { background-position: -208px -32px; }\n.ui-icon-arrowstop-1-s { background-position: -224px -32px; }\n.ui-icon-arrowstop-1-w { background-position: -240px -32px; }\n.ui-icon-arrowthick-1-n { background-position: 1px -48px; }\n.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }\n.ui-icon-arrowthick-1-e { background-position: -32px -48px; }\n.ui-icon-arrowthick-1-se { background-position: -48px -48px; }\n.ui-icon-arrowthick-1-s { background-position: -64px -48px; }\n.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }\n.ui-icon-arrowthick-1-w { background-position: -96px -48px; }\n.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }\n.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }\n.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }\n.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }\n.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }\n.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }\n.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }\n.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }\n.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }\n.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }\n.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }\n.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }\n.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }\n.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }\n.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }\n.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }\n.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }\n.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }\n.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }\n.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }\n.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }\n.ui-icon-arrow-4 { background-position: 0 -80px; }\n.ui-icon-arrow-4-diag { background-position: -16px -80px; }\n.ui-icon-extlink { background-position: -32px -80px; }\n.ui-icon-newwin { background-position: -48px -80px; }\n.ui-icon-refresh { background-position: -64px -80px; }\n.ui-icon-shuffle { background-position: -80px -80px; }\n.ui-icon-transfer-e-w { background-position: -96px -80px; }\n.ui-icon-transferthick-e-w { background-position: -112px -80px; }\n.ui-icon-folder-collapsed { background-position: 0 -96px; }\n.ui-icon-folder-open { background-position: -16px -96px; }\n.ui-icon-document { background-position: -32px -96px; }\n.ui-icon-document-b { background-position: -48px -96px; }\n.ui-icon-note { background-position: -64px -96px; }\n.ui-icon-mail-closed { background-position: -80px -96px; }\n.ui-icon-mail-open { background-position: -96px -96px; }\n.ui-icon-suitcase { background-position: -112px -96px; }\n.ui-icon-comment { background-position: -128px -96px; }\n.ui-icon-person { background-position: -144px -96px; }\n.ui-icon-print { background-position: -160px -96px; }\n.ui-icon-trash { background-position: -176px -96px; }\n.ui-icon-locked { background-position: -192px -96px; }\n.ui-icon-unlocked { background-position: -208px -96px; }\n.ui-icon-bookmark { background-position: -224px -96px; }\n.ui-icon-tag { background-position: -240px -96px; }\n.ui-icon-home { background-position: 0 -112px; }\n.ui-icon-flag { background-position: -16px -112px; }\n.ui-icon-calendar { background-position: -32px -112px; }\n.ui-icon-cart { background-position: -48px -112px; }\n.ui-icon-pencil { background-position: -64px -112px; }\n.ui-icon-clock { background-position: -80px -112px; }\n.ui-icon-disk { background-position: -96px -112px; }\n.ui-icon-calculator { background-position: -112px -112px; }\n.ui-icon-zoomin { background-position: -128px -112px; }\n.ui-icon-zoomout { background-position: -144px -112px; }\n.ui-icon-search { background-position: -160px -112px; }\n.ui-icon-wrench { background-position: -176px -112px; }\n.ui-icon-gear { background-position: -192px -112px; }\n.ui-icon-heart { background-position: -208px -112px; }\n.ui-icon-star { background-position: -224px -112px; }\n.ui-icon-link { background-position: -240px -112px; }\n.ui-icon-cancel { background-position: 0 -128px; }\n.ui-icon-plus { background-position: -16px -128px; }\n.ui-icon-plusthick { background-position: -32px -128px; }\n.ui-icon-minus { background-position: -48px -128px; }\n.ui-icon-minusthick { background-position: -64px -128px; }\n.ui-icon-close { background-position: -80px -128px; }\n.ui-icon-closethick { background-position: -96px -128px; }\n.ui-icon-key { background-position: -112px -128px; }\n.ui-icon-lightbulb { background-position: -128px -128px; }\n.ui-icon-scissors { background-position: -144px -128px; }\n.ui-icon-clipboard { background-position: -160px -128px; }\n.ui-icon-copy { background-position: -176px -128px; }\n.ui-icon-contact { background-position: -192px -128px; }\n.ui-icon-image { background-position: -208px -128px; }\n.ui-icon-video { background-position: -224px -128px; }\n.ui-icon-script { background-position: -240px -128px; }\n.ui-icon-alert { background-position: 0 -144px; }\n.ui-icon-info { background-position: -16px -144px; }\n.ui-icon-notice { background-position: -32px -144px; }\n.ui-icon-help { background-position: -48px -144px; }\n.ui-icon-check { background-position: -64px -144px; }\n.ui-icon-bullet { background-position: -80px -144px; }\n.ui-icon-radio-on { background-position: -96px -144px; }\n.ui-icon-radio-off { background-position: -112px -144px; }\n.ui-icon-pin-w { background-position: -128px -144px; }\n.ui-icon-pin-s { background-position: -144px -144px; }\n.ui-icon-play { background-position: 0 -160px; }\n.ui-icon-pause { background-position: -16px -160px; }\n.ui-icon-seek-next { background-position: -32px -160px; }\n.ui-icon-seek-prev { background-position: -48px -160px; }\n.ui-icon-seek-end { background-position: -64px -160px; }\n.ui-icon-seek-start { background-position: -80px -160px; }\n/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */\n.ui-icon-seek-first { background-position: -80px -160px; }\n.ui-icon-stop { background-position: -96px -160px; }\n.ui-icon-eject { background-position: -112px -160px; }\n.ui-icon-volume-off { background-position: -128px -160px; }\n.ui-icon-volume-on { background-position: -144px -160px; }\n.ui-icon-power { background-position: 0 -176px; }\n.ui-icon-signal-diag { background-position: -16px -176px; }\n.ui-icon-signal { background-position: -32px -176px; }\n.ui-icon-battery-0 { background-position: -48px -176px; }\n.ui-icon-battery-1 { background-position: -64px -176px; }\n.ui-icon-battery-2 { background-position: -80px -176px; }\n.ui-icon-battery-3 { background-position: -96px -176px; }\n.ui-icon-circle-plus { background-position: 0 -192px; }\n.ui-icon-circle-minus { background-position: -16px -192px; }\n.ui-icon-circle-close { background-position: -32px -192px; }\n.ui-icon-circle-triangle-e { background-position: -48px -192px; }\n.ui-icon-circle-triangle-s { background-position: -64px -192px; }\n.ui-icon-circle-triangle-w { background-position: -80px -192px; }\n.ui-icon-circle-triangle-n { background-position: -96px -192px; }\n.ui-icon-circle-arrow-e { background-position: -112px -192px; }\n.ui-icon-circle-arrow-s { background-position: -128px -192px; }\n.ui-icon-circle-arrow-w { background-position: -144px -192px; }\n.ui-icon-circle-arrow-n { background-position: -160px -192px; }\n.ui-icon-circle-zoomin { background-position: -176px -192px; }\n.ui-icon-circle-zoomout { background-position: -192px -192px; }\n.ui-icon-circle-check { background-position: -208px -192px; }\n.ui-icon-circlesmall-plus { background-position: 0 -208px; }\n.ui-icon-circlesmall-minus { background-position: -16px -208px; }\n.ui-icon-circlesmall-close { background-position: -32px -208px; }\n.ui-icon-squaresmall-plus { background-position: -48px -208px; }\n.ui-icon-squaresmall-minus { background-position: -64px -208px; }\n.ui-icon-squaresmall-close { background-position: -80px -208px; }\n.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }\n.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }\n.ui-icon-grip-solid-vertical { background-position: -32px -224px; }\n.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }\n.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }\n.ui-icon-grip-diagonal-se { background-position: -80px -224px; }\n\n\n/* Misc visuals\n----------------------------------*/\n\n/* Corner radius */\n.ui-corner-all,\n.ui-corner-top,\n.ui-corner-left,\n.ui-corner-tl {\n\tborder-top-left-radius: 3px;\n}\n.ui-corner-all,\n.ui-corner-top,\n.ui-corner-right,\n.ui-corner-tr {\n\tborder-top-right-radius: 3px;\n}\n.ui-corner-all,\n.ui-corner-bottom,\n.ui-corner-left,\n.ui-corner-bl {\n\tborder-bottom-left-radius: 3px;\n}\n.ui-corner-all,\n.ui-corner-bottom,\n.ui-corner-right,\n.ui-corner-br {\n\tborder-bottom-right-radius: 3px;\n}\n\n/* Overlays */\n.ui-widget-overlay {\n\tbackground: #aaaaaa;\n\topacity: .003;\n\t-ms-filter: "alpha(opacity=.3)"; /* support: IE8 */\n}\n.ui-widget-shadow {\n\t-webkit-box-shadow: 0px 0px 5px #666666;\n\tbox-shadow: 0px 0px 5px #666666;\n}\n`,"",{version:3,sources:["webpack://./node_modules/jquery-ui-dist/jquery-ui.theme.css"],names:[],mappings:"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",sourcesContent:['/*!\n * jQuery UI CSS Framework 1.13.3\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n *\n * https://api.jqueryui.com/category/theming/\n *\n * To view and modify this theme, visit https://jqueryui.com/themeroller/?bgShadowXPos=&bgOverlayXPos=&bgErrorXPos=&bgHighlightXPos=&bgContentXPos=&bgHeaderXPos=&bgActiveXPos=&bgHoverXPos=&bgDefaultXPos=&bgShadowYPos=&bgOverlayYPos=&bgErrorYPos=&bgHighlightYPos=&bgContentYPos=&bgHeaderYPos=&bgActiveYPos=&bgHoverYPos=&bgDefaultYPos=&bgShadowRepeat=&bgOverlayRepeat=&bgErrorRepeat=&bgHighlightRepeat=&bgContentRepeat=&bgHeaderRepeat=&bgActiveRepeat=&bgHoverRepeat=&bgDefaultRepeat=&iconsHover=url(%22images%2Fui-icons_555555_256x240.png%22)&iconsHighlight=url(%22images%2Fui-icons_777620_256x240.png%22)&iconsHeader=url(%22images%2Fui-icons_444444_256x240.png%22)&iconsError=url(%22images%2Fui-icons_cc0000_256x240.png%22)&iconsDefault=url(%22images%2Fui-icons_777777_256x240.png%22)&iconsContent=url(%22images%2Fui-icons_444444_256x240.png%22)&iconsActive=url(%22images%2Fui-icons_ffffff_256x240.png%22)&bgImgUrlShadow=&bgImgUrlOverlay=&bgImgUrlHover=&bgImgUrlHighlight=&bgImgUrlHeader=&bgImgUrlError=&bgImgUrlDefault=&bgImgUrlContent=&bgImgUrlActive=&opacityFilterShadow=%22alpha(opacity%3D30)%22&opacityFilterOverlay=%22alpha(opacity%3D30)%22&opacityShadowPerc=30&opacityOverlayPerc=30&iconColorHover=%23555555&iconColorHighlight=%23777620&iconColorHeader=%23444444&iconColorError=%23cc0000&iconColorDefault=%23777777&iconColorContent=%23444444&iconColorActive=%23ffffff&bgImgOpacityShadow=0&bgImgOpacityOverlay=0&bgImgOpacityError=95&bgImgOpacityHighlight=55&bgImgOpacityContent=75&bgImgOpacityHeader=75&bgImgOpacityActive=65&bgImgOpacityHover=75&bgImgOpacityDefault=75&bgTextureShadow=flat&bgTextureOverlay=flat&bgTextureError=flat&bgTextureHighlight=flat&bgTextureContent=flat&bgTextureHeader=flat&bgTextureActive=flat&bgTextureHover=flat&bgTextureDefault=flat&cornerRadius=3px&fwDefault=normal&ffDefault=Arial%2CHelvetica%2Csans-serif&fsDefault=1em&cornerRadiusShadow=8px&thicknessShadow=5px&offsetLeftShadow=0px&offsetTopShadow=0px&opacityShadow=.3&bgColorShadow=%23666666&opacityOverlay=.3&bgColorOverlay=%23aaaaaa&fcError=%235f3f3f&borderColorError=%23f1a899&bgColorError=%23fddfdf&fcHighlight=%23777620&borderColorHighlight=%23dad55e&bgColorHighlight=%23fffa90&fcContent=%23333333&borderColorContent=%23dddddd&bgColorContent=%23ffffff&fcHeader=%23333333&borderColorHeader=%23dddddd&bgColorHeader=%23e9e9e9&fcActive=%23ffffff&borderColorActive=%23003eff&bgColorActive=%23007fff&fcHover=%232b2b2b&borderColorHover=%23cccccc&bgColorHover=%23ededed&fcDefault=%23454545&borderColorDefault=%23c5c5c5&bgColorDefault=%23f6f6f6\n */\n\n\n/* Component containers\n----------------------------------*/\n.ui-widget {\n\tfont-family: Arial,Helvetica,sans-serif;\n\tfont-size: 1em;\n}\n.ui-widget .ui-widget {\n\tfont-size: 1em;\n}\n.ui-widget input,\n.ui-widget select,\n.ui-widget textarea,\n.ui-widget button {\n\tfont-family: Arial,Helvetica,sans-serif;\n\tfont-size: 1em;\n}\n.ui-widget.ui-widget-content {\n\tborder: 1px solid #c5c5c5;\n}\n.ui-widget-content {\n\tborder: 1px solid #dddddd;\n\tbackground: #ffffff;\n\tcolor: #333333;\n}\n.ui-widget-content a {\n\tcolor: #333333;\n}\n.ui-widget-header {\n\tborder: 1px solid #dddddd;\n\tbackground: #e9e9e9;\n\tcolor: #333333;\n\tfont-weight: bold;\n}\n.ui-widget-header a {\n\tcolor: #333333;\n}\n\n/* Interaction states\n----------------------------------*/\n.ui-state-default,\n.ui-widget-content .ui-state-default,\n.ui-widget-header .ui-state-default,\n.ui-button,\n\n/* We use html here because we need a greater specificity to make sure disabled\nworks properly when clicked or hovered */\nhtml .ui-button.ui-state-disabled:hover,\nhtml .ui-button.ui-state-disabled:active {\n\tborder: 1px solid #c5c5c5;\n\tbackground: #f6f6f6;\n\tfont-weight: normal;\n\tcolor: #454545;\n}\n.ui-state-default a,\n.ui-state-default a:link,\n.ui-state-default a:visited,\na.ui-button,\na:link.ui-button,\na:visited.ui-button,\n.ui-button {\n\tcolor: #454545;\n\ttext-decoration: none;\n}\n.ui-state-hover,\n.ui-widget-content .ui-state-hover,\n.ui-widget-header .ui-state-hover,\n.ui-state-focus,\n.ui-widget-content .ui-state-focus,\n.ui-widget-header .ui-state-focus,\n.ui-button:hover,\n.ui-button:focus {\n\tborder: 1px solid #cccccc;\n\tbackground: #ededed;\n\tfont-weight: normal;\n\tcolor: #2b2b2b;\n}\n.ui-state-hover a,\n.ui-state-hover a:hover,\n.ui-state-hover a:link,\n.ui-state-hover a:visited,\n.ui-state-focus a,\n.ui-state-focus a:hover,\n.ui-state-focus a:link,\n.ui-state-focus a:visited,\na.ui-button:hover,\na.ui-button:focus {\n\tcolor: #2b2b2b;\n\ttext-decoration: none;\n}\n\n.ui-visual-focus {\n\tbox-shadow: 0 0 3px 1px rgb(94, 158, 214);\n}\n.ui-state-active,\n.ui-widget-content .ui-state-active,\n.ui-widget-header .ui-state-active,\na.ui-button:active,\n.ui-button:active,\n.ui-button.ui-state-active:hover {\n\tborder: 1px solid #003eff;\n\tbackground: #007fff;\n\tfont-weight: normal;\n\tcolor: #ffffff;\n}\n.ui-icon-background,\n.ui-state-active .ui-icon-background {\n\tborder: #003eff;\n\tbackground-color: #ffffff;\n}\n.ui-state-active a,\n.ui-state-active a:link,\n.ui-state-active a:visited {\n\tcolor: #ffffff;\n\ttext-decoration: none;\n}\n\n/* Interaction Cues\n----------------------------------*/\n.ui-state-highlight,\n.ui-widget-content .ui-state-highlight,\n.ui-widget-header .ui-state-highlight {\n\tborder: 1px solid #dad55e;\n\tbackground: #fffa90;\n\tcolor: #777620;\n}\n.ui-state-checked {\n\tborder: 1px solid #dad55e;\n\tbackground: #fffa90;\n}\n.ui-state-highlight a,\n.ui-widget-content .ui-state-highlight a,\n.ui-widget-header .ui-state-highlight a {\n\tcolor: #777620;\n}\n.ui-state-error,\n.ui-widget-content .ui-state-error,\n.ui-widget-header .ui-state-error {\n\tborder: 1px solid #f1a899;\n\tbackground: #fddfdf;\n\tcolor: #5f3f3f;\n}\n.ui-state-error a,\n.ui-widget-content .ui-state-error a,\n.ui-widget-header .ui-state-error a {\n\tcolor: #5f3f3f;\n}\n.ui-state-error-text,\n.ui-widget-content .ui-state-error-text,\n.ui-widget-header .ui-state-error-text {\n\tcolor: #5f3f3f;\n}\n.ui-priority-primary,\n.ui-widget-content .ui-priority-primary,\n.ui-widget-header .ui-priority-primary {\n\tfont-weight: bold;\n}\n.ui-priority-secondary,\n.ui-widget-content .ui-priority-secondary,\n.ui-widget-header .ui-priority-secondary {\n\topacity: .7;\n\t-ms-filter: "alpha(opacity=70)"; /* support: IE8 */\n\tfont-weight: normal;\n}\n.ui-state-disabled,\n.ui-widget-content .ui-state-disabled,\n.ui-widget-header .ui-state-disabled {\n\topacity: .35;\n\t-ms-filter: "alpha(opacity=35)"; /* support: IE8 */\n\tbackground-image: none;\n}\n.ui-state-disabled .ui-icon {\n\t-ms-filter: "alpha(opacity=35)"; /* support: IE8 - See #6059 */\n}\n\n/* Icons\n----------------------------------*/\n\n/* states and images */\n.ui-icon {\n\twidth: 16px;\n\theight: 16px;\n}\n.ui-icon,\n.ui-widget-content .ui-icon {\n\tbackground-image: url("images/ui-icons_444444_256x240.png");\n}\n.ui-widget-header .ui-icon {\n\tbackground-image: url("images/ui-icons_444444_256x240.png");\n}\n.ui-state-hover .ui-icon,\n.ui-state-focus .ui-icon,\n.ui-button:hover .ui-icon,\n.ui-button:focus .ui-icon {\n\tbackground-image: url("images/ui-icons_555555_256x240.png");\n}\n.ui-state-active .ui-icon,\n.ui-button:active .ui-icon {\n\tbackground-image: url("images/ui-icons_ffffff_256x240.png");\n}\n.ui-state-highlight .ui-icon,\n.ui-button .ui-state-highlight.ui-icon {\n\tbackground-image: url("images/ui-icons_777620_256x240.png");\n}\n.ui-state-error .ui-icon,\n.ui-state-error-text .ui-icon {\n\tbackground-image: url("images/ui-icons_cc0000_256x240.png");\n}\n.ui-button .ui-icon {\n\tbackground-image: url("images/ui-icons_777777_256x240.png");\n}\n\n/* positioning */\n/* Three classes needed to override `.ui-button:hover .ui-icon` */\n.ui-icon-blank.ui-icon-blank.ui-icon-blank {\n\tbackground-image: none;\n}\n.ui-icon-caret-1-n { background-position: 0 0; }\n.ui-icon-caret-1-ne { background-position: -16px 0; }\n.ui-icon-caret-1-e { background-position: -32px 0; }\n.ui-icon-caret-1-se { background-position: -48px 0; }\n.ui-icon-caret-1-s { background-position: -65px 0; }\n.ui-icon-caret-1-sw { background-position: -80px 0; }\n.ui-icon-caret-1-w { background-position: -96px 0; }\n.ui-icon-caret-1-nw { background-position: -112px 0; }\n.ui-icon-caret-2-n-s { background-position: -128px 0; }\n.ui-icon-caret-2-e-w { background-position: -144px 0; }\n.ui-icon-triangle-1-n { background-position: 0 -16px; }\n.ui-icon-triangle-1-ne { background-position: -16px -16px; }\n.ui-icon-triangle-1-e { background-position: -32px -16px; }\n.ui-icon-triangle-1-se { background-position: -48px -16px; }\n.ui-icon-triangle-1-s { background-position: -65px -16px; }\n.ui-icon-triangle-1-sw { background-position: -80px -16px; }\n.ui-icon-triangle-1-w { background-position: -96px -16px; }\n.ui-icon-triangle-1-nw { background-position: -112px -16px; }\n.ui-icon-triangle-2-n-s { background-position: -128px -16px; }\n.ui-icon-triangle-2-e-w { background-position: -144px -16px; }\n.ui-icon-arrow-1-n { background-position: 0 -32px; }\n.ui-icon-arrow-1-ne { background-position: -16px -32px; }\n.ui-icon-arrow-1-e { background-position: -32px -32px; }\n.ui-icon-arrow-1-se { background-position: -48px -32px; }\n.ui-icon-arrow-1-s { background-position: -65px -32px; }\n.ui-icon-arrow-1-sw { background-position: -80px -32px; }\n.ui-icon-arrow-1-w { background-position: -96px -32px; }\n.ui-icon-arrow-1-nw { background-position: -112px -32px; }\n.ui-icon-arrow-2-n-s { background-position: -128px -32px; }\n.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }\n.ui-icon-arrow-2-e-w { background-position: -160px -32px; }\n.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }\n.ui-icon-arrowstop-1-n { background-position: -192px -32px; }\n.ui-icon-arrowstop-1-e { background-position: -208px -32px; }\n.ui-icon-arrowstop-1-s { background-position: -224px -32px; }\n.ui-icon-arrowstop-1-w { background-position: -240px -32px; }\n.ui-icon-arrowthick-1-n { background-position: 1px -48px; }\n.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }\n.ui-icon-arrowthick-1-e { background-position: -32px -48px; }\n.ui-icon-arrowthick-1-se { background-position: -48px -48px; }\n.ui-icon-arrowthick-1-s { background-position: -64px -48px; }\n.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }\n.ui-icon-arrowthick-1-w { background-position: -96px -48px; }\n.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }\n.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }\n.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }\n.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }\n.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }\n.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }\n.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }\n.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }\n.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }\n.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }\n.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }\n.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }\n.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }\n.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }\n.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }\n.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }\n.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }\n.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }\n.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }\n.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }\n.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }\n.ui-icon-arrow-4 { background-position: 0 -80px; }\n.ui-icon-arrow-4-diag { background-position: -16px -80px; }\n.ui-icon-extlink { background-position: -32px -80px; }\n.ui-icon-newwin { background-position: -48px -80px; }\n.ui-icon-refresh { background-position: -64px -80px; }\n.ui-icon-shuffle { background-position: -80px -80px; }\n.ui-icon-transfer-e-w { background-position: -96px -80px; }\n.ui-icon-transferthick-e-w { background-position: -112px -80px; }\n.ui-icon-folder-collapsed { background-position: 0 -96px; }\n.ui-icon-folder-open { background-position: -16px -96px; }\n.ui-icon-document { background-position: -32px -96px; }\n.ui-icon-document-b { background-position: -48px -96px; }\n.ui-icon-note { background-position: -64px -96px; }\n.ui-icon-mail-closed { background-position: -80px -96px; }\n.ui-icon-mail-open { background-position: -96px -96px; }\n.ui-icon-suitcase { background-position: -112px -96px; }\n.ui-icon-comment { background-position: -128px -96px; }\n.ui-icon-person { background-position: -144px -96px; }\n.ui-icon-print { background-position: -160px -96px; }\n.ui-icon-trash { background-position: -176px -96px; }\n.ui-icon-locked { background-position: -192px -96px; }\n.ui-icon-unlocked { background-position: -208px -96px; }\n.ui-icon-bookmark { background-position: -224px -96px; }\n.ui-icon-tag { background-position: -240px -96px; }\n.ui-icon-home { background-position: 0 -112px; }\n.ui-icon-flag { background-position: -16px -112px; }\n.ui-icon-calendar { background-position: -32px -112px; }\n.ui-icon-cart { background-position: -48px -112px; }\n.ui-icon-pencil { background-position: -64px -112px; }\n.ui-icon-clock { background-position: -80px -112px; }\n.ui-icon-disk { background-position: -96px -112px; }\n.ui-icon-calculator { background-position: -112px -112px; }\n.ui-icon-zoomin { background-position: -128px -112px; }\n.ui-icon-zoomout { background-position: -144px -112px; }\n.ui-icon-search { background-position: -160px -112px; }\n.ui-icon-wrench { background-position: -176px -112px; }\n.ui-icon-gear { background-position: -192px -112px; }\n.ui-icon-heart { background-position: -208px -112px; }\n.ui-icon-star { background-position: -224px -112px; }\n.ui-icon-link { background-position: -240px -112px; }\n.ui-icon-cancel { background-position: 0 -128px; }\n.ui-icon-plus { background-position: -16px -128px; }\n.ui-icon-plusthick { background-position: -32px -128px; }\n.ui-icon-minus { background-position: -48px -128px; }\n.ui-icon-minusthick { background-position: -64px -128px; }\n.ui-icon-close { background-position: -80px -128px; }\n.ui-icon-closethick { background-position: -96px -128px; }\n.ui-icon-key { background-position: -112px -128px; }\n.ui-icon-lightbulb { background-position: -128px -128px; }\n.ui-icon-scissors { background-position: -144px -128px; }\n.ui-icon-clipboard { background-position: -160px -128px; }\n.ui-icon-copy { background-position: -176px -128px; }\n.ui-icon-contact { background-position: -192px -128px; }\n.ui-icon-image { background-position: -208px -128px; }\n.ui-icon-video { background-position: -224px -128px; }\n.ui-icon-script { background-position: -240px -128px; }\n.ui-icon-alert { background-position: 0 -144px; }\n.ui-icon-info { background-position: -16px -144px; }\n.ui-icon-notice { background-position: -32px -144px; }\n.ui-icon-help { background-position: -48px -144px; }\n.ui-icon-check { background-position: -64px -144px; }\n.ui-icon-bullet { background-position: -80px -144px; }\n.ui-icon-radio-on { background-position: -96px -144px; }\n.ui-icon-radio-off { background-position: -112px -144px; }\n.ui-icon-pin-w { background-position: -128px -144px; }\n.ui-icon-pin-s { background-position: -144px -144px; }\n.ui-icon-play { background-position: 0 -160px; }\n.ui-icon-pause { background-position: -16px -160px; }\n.ui-icon-seek-next { background-position: -32px -160px; }\n.ui-icon-seek-prev { background-position: -48px -160px; }\n.ui-icon-seek-end { background-position: -64px -160px; }\n.ui-icon-seek-start { background-position: -80px -160px; }\n/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */\n.ui-icon-seek-first { background-position: -80px -160px; }\n.ui-icon-stop { background-position: -96px -160px; }\n.ui-icon-eject { background-position: -112px -160px; }\n.ui-icon-volume-off { background-position: -128px -160px; }\n.ui-icon-volume-on { background-position: -144px -160px; }\n.ui-icon-power { background-position: 0 -176px; }\n.ui-icon-signal-diag { background-position: -16px -176px; }\n.ui-icon-signal { background-position: -32px -176px; }\n.ui-icon-battery-0 { background-position: -48px -176px; }\n.ui-icon-battery-1 { background-position: -64px -176px; }\n.ui-icon-battery-2 { background-position: -80px -176px; }\n.ui-icon-battery-3 { background-position: -96px -176px; }\n.ui-icon-circle-plus { background-position: 0 -192px; }\n.ui-icon-circle-minus { background-position: -16px -192px; }\n.ui-icon-circle-close { background-position: -32px -192px; }\n.ui-icon-circle-triangle-e { background-position: -48px -192px; }\n.ui-icon-circle-triangle-s { background-position: -64px -192px; }\n.ui-icon-circle-triangle-w { background-position: -80px -192px; }\n.ui-icon-circle-triangle-n { background-position: -96px -192px; }\n.ui-icon-circle-arrow-e { background-position: -112px -192px; }\n.ui-icon-circle-arrow-s { background-position: -128px -192px; }\n.ui-icon-circle-arrow-w { background-position: -144px -192px; }\n.ui-icon-circle-arrow-n { background-position: -160px -192px; }\n.ui-icon-circle-zoomin { background-position: -176px -192px; }\n.ui-icon-circle-zoomout { background-position: -192px -192px; }\n.ui-icon-circle-check { background-position: -208px -192px; }\n.ui-icon-circlesmall-plus { background-position: 0 -208px; }\n.ui-icon-circlesmall-minus { background-position: -16px -208px; }\n.ui-icon-circlesmall-close { background-position: -32px -208px; }\n.ui-icon-squaresmall-plus { background-position: -48px -208px; }\n.ui-icon-squaresmall-minus { background-position: -64px -208px; }\n.ui-icon-squaresmall-close { background-position: -80px -208px; }\n.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }\n.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }\n.ui-icon-grip-solid-vertical { background-position: -32px -224px; }\n.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }\n.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }\n.ui-icon-grip-diagonal-se { background-position: -80px -224px; }\n\n\n/* Misc visuals\n----------------------------------*/\n\n/* Corner radius */\n.ui-corner-all,\n.ui-corner-top,\n.ui-corner-left,\n.ui-corner-tl {\n\tborder-top-left-radius: 3px;\n}\n.ui-corner-all,\n.ui-corner-top,\n.ui-corner-right,\n.ui-corner-tr {\n\tborder-top-right-radius: 3px;\n}\n.ui-corner-all,\n.ui-corner-bottom,\n.ui-corner-left,\n.ui-corner-bl {\n\tborder-bottom-left-radius: 3px;\n}\n.ui-corner-all,\n.ui-corner-bottom,\n.ui-corner-right,\n.ui-corner-br {\n\tborder-bottom-right-radius: 3px;\n}\n\n/* Overlays */\n.ui-widget-overlay {\n\tbackground: #aaaaaa;\n\topacity: .003;\n\t-ms-filter: "alpha(opacity=.3)"; /* support: IE8 */\n}\n.ui-widget-shadow {\n\t-webkit-box-shadow: 0px 0px 5px #666666;\n\tbox-shadow: 0px 0px 5px #666666;\n}\n'],sourceRoot:""}]);const w=f},90628:(t,e,n)=>{"use strict";n.d(e,{A:()=>C});var i=n(71354),o=n.n(i),r=n(76314),s=n.n(r),a=n(4417),c=n.n(a),l=new URL(n(7369),n.b),u=new URL(n(48832),n.b),h=new URL(n(36114),n.b),d=new URL(n(83864),n.b),p=new URL(n(26609),n.b),A=s()(o()),f=c()(l),g=c()(u),m=c()(h),b=c()(d),v=c()(p);A.push([t.id,`.ui-widget-content{border:1px solid var(--color-border);background:var(--color-main-background) none;color:var(--color-main-text)}.ui-widget-content a{color:var(--color-main-text)}.ui-widget-header{border:none;color:var(--color-main-text);background-image:none}.ui-widget-header a{color:var(--color-main-text)}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid var(--color-border);background:var(--color-main-background) none;font-weight:bold;color:#555}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#555}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #ddd;background:var(--color-main-background) none;font-weight:bold;color:var(--color-main-text)}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited{color:var(--color-main-text)}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid var(--color-primary-element);background:var(--color-main-background) none;font-weight:bold;color:var(--color-main-text)}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:var(--color-main-text)}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid var(--color-main-background);background:var(--color-main-background) none;color:var(--color-text-light);font-weight:600}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:var(--color-text-lighter)}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:var(--color-error);background:var(--color-error) none;color:#fff}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#fff}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#fff}.ui-state-default .ui-icon{background-image:url(${f})}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url(${f})}.ui-state-active .ui-icon{background-image:url(${f})}.ui-state-highlight .ui-icon{background-image:url(${g})}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url(${m})}.ui-icon.ui-icon-none{display:none}.ui-widget-overlay{background:#666 url(${b}) 50% 50% repeat;opacity:.5}.ui-widget-shadow{margin:-5px 0 0 -5px;padding:5px;background:#000 url(${v}) 50% 50% repeat-x;opacity:.2;border-radius:5px}.ui-tabs{border:none}.ui-tabs .ui-tabs-nav.ui-corner-all{border-end-start-radius:0;border-end-end-radius:0}.ui-tabs .ui-tabs-nav{background:none;margin-bottom:15px}.ui-tabs .ui-tabs-nav .ui-state-default{border:none;border-bottom:1px solid rgba(0,0,0,0);font-weight:normal;margin:0 !important;padding:0 !important}.ui-tabs .ui-tabs-nav .ui-state-hover,.ui-tabs .ui-tabs-nav .ui-state-active{border:none;border-bottom:1px solid var(--color-main-text);color:var(--color-main-text)}.ui-tabs .ui-tabs-nav .ui-state-hover a,.ui-tabs .ui-tabs-nav .ui-state-hover a:link,.ui-tabs .ui-tabs-nav .ui-state-hover a:hover,.ui-tabs .ui-tabs-nav .ui-state-hover a:visited,.ui-tabs .ui-tabs-nav .ui-state-active a,.ui-tabs .ui-tabs-nav .ui-state-active a:link,.ui-tabs .ui-tabs-nav .ui-state-active a:hover,.ui-tabs .ui-tabs-nav .ui-state-active a:visited{color:var(--color-main-text)}.ui-tabs .ui-tabs-nav .ui-state-active{font-weight:bold}.ui-autocomplete.ui-menu{padding:0}.ui-autocomplete.ui-menu.item-count-1,.ui-autocomplete.ui-menu.item-count-2{overflow-y:hidden}.ui-autocomplete.ui-menu .ui-menu-item a{color:var(--color-text-lighter);display:block;padding:4px;padding-inline-start:14px}.ui-autocomplete.ui-menu .ui-menu-item a.ui-state-focus,.ui-autocomplete.ui-menu .ui-menu-item a.ui-state-active{box-shadow:inset 4px 0 var(--color-primary-element);color:var(--color-main-text)}.ui-autocomplete.ui-widget-content{background:var(--color-main-background);border-top:none}.ui-autocomplete.ui-corner-all{border-radius:0;border-end-start-radius:var(--border-radius);border-end-end-radius:var(--border-radius)}.ui-autocomplete .ui-state-hover,.ui-autocomplete .ui-widget-content .ui-state-hover,.ui-autocomplete .ui-widget-header .ui-state-hover,.ui-autocomplete .ui-state-focus,.ui-autocomplete .ui-widget-content .ui-state-focus,.ui-autocomplete .ui-widget-header .ui-state-focus{border:1px solid rgba(0,0,0,0);background:inherit;color:var(--color-primary-element)}.ui-autocomplete .ui-menu-item a{border-radius:0 !important}.ui-button.primary{background-color:var(--color-primary-element);color:var(--color-primary-element-text);border:1px solid var(--color-primary-element-text)}.ui-button:hover{font-weight:bold !important}.ui-draggable-handle,.ui-selectable{touch-action:pan-y}`,"",{version:3,sources:["webpack://./core/src/jquery/css/jquery-ui-fixes.scss"],names:[],mappings:"AAMA,mBACC,oCAAA,CACA,4CAAA,CACA,4BAAA,CAED,qBACC,4BAAA,CAED,kBACC,WAAA,CACA,4BAAA,CACA,qBAAA,CAED,oBACC,4BAAA,CAKD,2FAGC,oCAAA,CACA,4CAAA,CACA,gBAAA,CACA,UAAA,CAED,yEAGC,UAAA,CAED,0KAMC,qBAAA,CACA,4CAAA,CACA,gBAAA,CACA,4BAAA,CAED,2FAIC,4BAAA,CAED,wFAGC,6CAAA,CACA,4CAAA,CACA,gBAAA,CACA,4BAAA,CAED,sEAGC,4BAAA,CAKD,iGAGC,6CAAA,CACA,4CAAA,CACA,6BAAA,CACA,eAAA,CAED,uGAGC,+BAAA,CAED,qFAGC,yBAAA,CACA,kCAAA,CACA,UAAA,CAED,2FAGC,UAAA,CAED,oGAGC,UAAA,CAKD,2BACC,wDAAA,CAED,kDAEC,wDAAA,CAED,0BACC,wDAAA,CAED,6BACC,wDAAA,CAED,uDAEC,wDAAA,CAED,sBACC,YAAA,CAMD,mBACC,sEAAA,CACA,UAAA,CAED,kBACC,oBAAA,CACA,WAAA,CACA,wEAAA,CACA,UAAA,CACA,iBAAA,CAID,SACC,WAAA,CAEA,oCACC,yBAAA,CACA,uBAAA,CAGD,sBACC,eAAA,CACA,kBAAA,CAEA,wCACC,WAAA,CACA,qCAAA,CACA,kBAAA,CACA,mBAAA,CACA,oBAAA,CAGD,6EAEC,WAAA,CACA,8CAAA,CACA,4BAAA,CACA,0WACC,4BAAA,CAGF,uCACC,gBAAA,CAOF,yBACC,SAAA,CAIA,4EAEC,iBAAA,CAGD,yCACC,+BAAA,CACA,aAAA,CACA,WAAA,CACA,yBAAA,CAEA,iHACC,mDAAA,CACA,4BAAA,CAKH,mCACC,uCAAA,CACA,eAAA,CAGD,+BACC,eAAA,CACA,4CAAA,CACA,0CAAA,CAGD,gRAKC,8BAAA,CACA,kBAAA,CACA,kCAAA,CAIA,iCACC,0BAAA,CAKH,mBACC,6CAAA,CACA,uCAAA,CACA,kDAAA,CAID,iBACI,2BAAA,CAKJ,oCAEC,kBAAA",sourcesContent:["/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n/* Component containers\n----------------------------------*/\n.ui-widget-content {\n\tborder: 1px solid var(--color-border);\n\tbackground: var(--color-main-background) none;\n\tcolor: var(--color-main-text);\n}\n.ui-widget-content a {\n\tcolor: var(--color-main-text);\n}\n.ui-widget-header {\n\tborder: none;\n\tcolor: var(--color-main-text);\n\tbackground-image: none;\n}\n.ui-widget-header a {\n\tcolor: var(--color-main-text);\n}\n\n/* Interaction states\n----------------------------------*/\n.ui-state-default,\n.ui-widget-content .ui-state-default,\n.ui-widget-header .ui-state-default {\n\tborder: 1px solid var(--color-border);\n\tbackground: var(--color-main-background) none;\n\tfont-weight: bold;\n\tcolor: #555;\n}\n.ui-state-default a,\n.ui-state-default a:link,\n.ui-state-default a:visited {\n\tcolor: #555;\n}\n.ui-state-hover,\n.ui-widget-content .ui-state-hover,\n.ui-widget-header .ui-state-hover,\n.ui-state-focus,\n.ui-widget-content .ui-state-focus,\n.ui-widget-header .ui-state-focus {\n\tborder: 1px solid #ddd;\n\tbackground: var(--color-main-background) none;\n\tfont-weight: bold;\n\tcolor: var(--color-main-text);\n}\n.ui-state-hover a,\n.ui-state-hover a:hover,\n.ui-state-hover a:link,\n.ui-state-hover a:visited {\n\tcolor: var(--color-main-text);\n}\n.ui-state-active,\n.ui-widget-content .ui-state-active,\n.ui-widget-header .ui-state-active {\n\tborder: 1px solid var(--color-primary-element);\n\tbackground: var(--color-main-background) none;\n\tfont-weight: bold;\n\tcolor: var(--color-main-text);\n}\n.ui-state-active a,\n.ui-state-active a:link,\n.ui-state-active a:visited {\n\tcolor: var(--color-main-text);\n}\n\n/* Interaction Cues\n----------------------------------*/\n.ui-state-highlight,\n.ui-widget-content .ui-state-highlight,\n.ui-widget-header .ui-state-highlight {\n\tborder: 1px solid var(--color-main-background);\n\tbackground: var(--color-main-background) none;\n\tcolor: var(--color-text-light);\n\tfont-weight: 600;\n}\n.ui-state-highlight a,\n.ui-widget-content .ui-state-highlight a,\n.ui-widget-header .ui-state-highlight a {\n\tcolor: var(--color-text-lighter);\n}\n.ui-state-error,\n.ui-widget-content .ui-state-error,\n.ui-widget-header .ui-state-error {\n\tborder: var(--color-error);\n\tbackground: var(--color-error) none;\n\tcolor: #ffffff;\n}\n.ui-state-error a,\n.ui-widget-content .ui-state-error a,\n.ui-widget-header .ui-state-error a {\n\tcolor: #ffffff;\n}\n.ui-state-error-text,\n.ui-widget-content .ui-state-error-text,\n.ui-widget-header .ui-state-error-text {\n\tcolor: #ffffff;\n}\n\n/* Icons\n----------------------------------*/\n.ui-state-default .ui-icon {\n\tbackground-image: url('images/ui-icons_1d2d44_256x240.png');\n}\n.ui-state-hover .ui-icon,\n.ui-state-focus .ui-icon {\n\tbackground-image: url('images/ui-icons_1d2d44_256x240.png');\n}\n.ui-state-active .ui-icon {\n\tbackground-image: url('images/ui-icons_1d2d44_256x240.png');\n}\n.ui-state-highlight .ui-icon {\n\tbackground-image: url('images/ui-icons_ffffff_256x240.png');\n}\n.ui-state-error .ui-icon,\n.ui-state-error-text .ui-icon {\n\tbackground-image: url('images/ui-icons_ffd27a_256x240.png');\n}\n.ui-icon.ui-icon-none {\n\tdisplay: none;\n}\n\n/* Misc visuals\n----------------------------------*/\n/* Overlays */\n.ui-widget-overlay {\n\tbackground: #666666 url('images/ui-bg_diagonals-thick_20_666666_40x40.png') 50% 50% repeat;\n\topacity: .5;\n}\n.ui-widget-shadow {\n\tmargin: -5px 0 0 -5px;\n\tpadding: 5px;\n\tbackground: #000000 url('images/ui-bg_flat_10_000000_40x100.png') 50% 50% repeat-x;\n\topacity: .2;\n\tborder-radius: 5px;\n}\n\n/* Tabs customizations */\n.ui-tabs {\n\tborder: none;\n\n\t.ui-tabs-nav.ui-corner-all {\n\t\tborder-end-start-radius: 0;\n\t\tborder-end-end-radius: 0;\n\t}\n\n\t.ui-tabs-nav {\n\t\tbackground: none;\n\t\tmargin-bottom: 15px;\n\n\t\t.ui-state-default {\n\t\t\tborder: none;\n\t\t\tborder-bottom: 1px solid transparent;\n\t\t\tfont-weight: normal;\n\t\t\tmargin: 0 !important;\n\t\t\tpadding: 0 !important;\n\t\t}\n\n\t\t.ui-state-hover,\n\t\t.ui-state-active {\n\t\t\tborder: none;\n\t\t\tborder-bottom: 1px solid var(--color-main-text);\n\t\t\tcolor: var(--color-main-text);\n\t\t\ta, a:link, a:hover, a:visited {\n\t\t\t\tcolor: var(--color-main-text);\n\t\t\t}\n\t\t}\n\t\t.ui-state-active {\n\t\t\tfont-weight: bold;\n\t\t}\n\t}\n}\n\n/* Select menus */\n.ui-autocomplete {\n\t&.ui-menu {\n\t\tpadding: 0;\n\n\t\t/* scrolling starts from three items,\n\t\t * so hide overflow and scrollbars for a clean layout */\n\t\t&.item-count-1,\n\t\t&.item-count-2 {\n\t\t\toverflow-y: hidden;\n\t\t}\n\n\t\t.ui-menu-item a {\n\t\t\tcolor: var(--color-text-lighter);\n\t\t\tdisplay: block;\n\t\t\tpadding: 4px;\n\t\t\tpadding-inline-start: 14px;\n\n\t\t\t&.ui-state-focus, &.ui-state-active {\n\t\t\t\tbox-shadow: inset 4px 0 var(--color-primary-element);\n\t\t\t\tcolor: var(--color-main-text);\n\t\t\t}\n\t\t}\n\t}\n\n\t&.ui-widget-content {\n\t\tbackground: var(--color-main-background);\n\t\tborder-top: none;\n\t}\n\n\t&.ui-corner-all {\n\t\tborder-radius: 0;\n\t\tborder-end-start-radius: var(--border-radius);\n\t\tborder-end-end-radius: var(--border-radius);\n\t}\n\n\t.ui-state-hover, .ui-widget-content .ui-state-hover,\n\t.ui-widget-header .ui-state-hover,\n\t.ui-state-focus,\n\t.ui-widget-content .ui-state-focus,\n\t.ui-widget-header .ui-state-focus {\n\t\tborder: 1px solid transparent;\n\t\tbackground: inherit;\n\t\tcolor: var(--color-primary-element);\n\t}\n\n\t.ui-menu-item {\n\t\ta {\n\t\t\tborder-radius: 0 !important;\n\t\t}\n\t}\n}\n\n.ui-button.primary {\n\tbackground-color: var(--color-primary-element);\n\tcolor: var(--color-primary-element-text);\n\tborder: 1px solid var(--color-primary-element-text);\n}\n\n// fix ui-buttons on hover\n.ui-button:hover {\n font-weight:bold !important;\n}\n\n\n/* DRAGGABLE */\n.ui-draggable-handle,\n.ui-selectable {\n\ttouch-action: pan-y;\n}\n"],sourceRoot:""}]);const C=A},2791:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var i=n(71354),o=n.n(i),r=n(76314),s=n.n(r)()(o());s.push([t.id,".oc-dialog{background:var(--color-main-background);color:var(--color-text-light);border-radius:var(--border-radius-large);box-shadow:0 0 30px var(--color-box-shadow);padding:24px;z-index:100001;font-size:100%;box-sizing:border-box;min-width:200px;top:50%;inset-inline-start:50%;transform:translate(-50%, -50%);max-height:calc(100% - 20px);max-width:calc(100% - 20px);overflow:auto}.oc-dialog-title{background:var(--color-main-background)}.oc-dialog-buttonrow{position:relative;display:flex;background:rgba(0,0,0,0);right:0;bottom:0;padding:0;padding-top:10px;box-sizing:border-box;width:100%;background-image:linear-gradient(rgba(255, 255, 255, 0), var(--color-main-background))}.oc-dialog-buttonrow.twobuttons{justify-content:space-between}.oc-dialog-buttonrow.onebutton,.oc-dialog-buttonrow.twobuttons.aside{justify-content:flex-end}.oc-dialog-buttonrow button{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;height:44px;min-width:44px}.oc-dialog-close{position:absolute;width:44px !important;height:44px !important;top:4px;right:4px;padding:25px;background:var(--icon-close-dark) no-repeat center;opacity:.5;border-radius:var(--border-radius-pill)}.oc-dialog-close:hover,.oc-dialog-close:focus,.oc-dialog-close:active{opacity:1}.oc-dialog-dim{background-color:#000;opacity:.2;z-index:100001;position:fixed;top:0;left:0;width:100%;height:100%}body.theme--dark .oc-dialog-dim{opacity:.8}.oc-dialog-content{width:100%;max-width:550px}.oc-dialog.password-confirmation .oc-dialog-content{width:auto}.oc-dialog.password-confirmation .oc-dialog-content input[type=password]{width:100%}.oc-dialog.password-confirmation .oc-dialog-content label{display:none}","",{version:3,sources:["webpack://./core/src/jquery/css/jquery.ocdialog.scss"],names:[],mappings:"AAIA,WACC,uCAAA,CACA,6BAAA,CACA,wCAAA,CACA,2CAAA,CACA,YAAA,CACA,cAAA,CACA,cAAA,CACA,qBAAA,CACA,eAAA,CACA,OAAA,CACA,sBAAA,CACA,+BAAA,CACA,4BAAA,CACA,2BAAA,CACA,aAAA,CAED,iBACC,uCAAA,CAED,qBACC,iBAAA,CACA,YAAA,CACA,wBAAA,CACA,OAAA,CACA,QAAA,CACA,SAAA,CACA,gBAAA,CACA,qBAAA,CACA,UAAA,CACA,sFAAA,CAEA,gCACO,6BAAA,CAGP,qEAEC,wBAAA,CAGD,4BACI,kBAAA,CACA,eAAA,CACH,sBAAA,CACA,WAAA,CACA,cAAA,CAIF,iBACC,iBAAA,CACA,qBAAA,CACA,sBAAA,CACA,OAAA,CACA,SAAA,CACA,YAAA,CACA,kDAAA,CACA,UAAA,CACA,uCAAA,CAEA,sEAGC,SAAA,CAIF,eACC,qBAAA,CACA,UAAA,CACA,cAAA,CACA,cAAA,CACA,KAAA,CACA,MAAA,CACA,UAAA,CACA,WAAA,CAGD,gCACC,UAAA,CAGD,mBACC,UAAA,CACA,eAAA,CAIA,oDACC,UAAA,CAEA,yEACC,UAAA,CAED,0DACC,YAAA",sourcesContent:["/**\n * SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n.oc-dialog {\n\tbackground: var(--color-main-background);\n\tcolor: var(--color-text-light);\n\tborder-radius: var(--border-radius-large);\n\tbox-shadow: 0 0 30px var(--color-box-shadow);\n\tpadding: 24px;\n\tz-index: 100001;\n\tfont-size: 100%;\n\tbox-sizing: border-box;\n\tmin-width: 200px;\n\ttop: 50%;\n\tinset-inline-start: 50%;\n\ttransform: translate(-50%, -50%);\n\tmax-height: calc(100% - 20px);\n\tmax-width: calc(100% - 20px);\n\toverflow: auto;\n}\n.oc-dialog-title {\n\tbackground: var(--color-main-background);\n}\n.oc-dialog-buttonrow {\n\tposition: relative;\n\tdisplay: flex;\n\tbackground: transparent;\n\tright: 0;\n\tbottom: 0;\n\tpadding: 0;\n\tpadding-top: 10px;\n\tbox-sizing: border-box;\n\twidth: 100%;\n\tbackground-image: linear-gradient(rgba(255, 255, 255, 0.0), var(--color-main-background));\n\n\t&.twobuttons {\n justify-content: space-between;\n }\n\n\t&.onebutton,\n\t&.twobuttons.aside {\n\t\tjustify-content: flex-end;\n\t}\n\n\tbutton {\n\t white-space: nowrap;\n\t overflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t\theight: 44px;\n\t\tmin-width: 44px;\n\t}\n}\n\n.oc-dialog-close {\n\tposition: absolute;\n\twidth: 44px !important;\n\theight: 44px !important;\n\ttop: 4px;\n\tright: 4px;\n\tpadding: 25px;\n\tbackground: var(--icon-close-dark) no-repeat center;\n\topacity: .5;\n\tborder-radius: var(--border-radius-pill);\n\n\t&:hover,\n\t&:focus,\n\t&:active {\n\t\topacity: 1;\n\t}\n}\n\n.oc-dialog-dim {\n\tbackground-color: #000;\n\topacity: .2;\n\tz-index: 100001;\n\tposition: fixed;\n\ttop: 0;\n\tleft: 0;\n\twidth: 100%;\n\theight: 100%;\n}\n\nbody.theme--dark .oc-dialog-dim {\n\topacity: .8;\n}\n\n.oc-dialog-content {\n\twidth: 100%;\n\tmax-width: 550px;\n}\n\n.oc-dialog.password-confirmation {\n\t.oc-dialog-content {\n\t\twidth: auto;\n\n\t\tinput[type=password] {\n\t\t\twidth: 100%;\n\t\t}\n\t\tlabel {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n}\n"],sourceRoot:""}]);const a=s},35156:(t,e,n)=>{"use strict";n.d(e,{A:()=>g});var i=n(71354),o=n.n(i),r=n(76314),s=n.n(r),a=n(4417),c=n.n(a),l=new URL(n(65653),n.b),u=new URL(n(22046),n.b),h=new URL(n(32095),n.b),d=s()(o()),p=c()(l),A=c()(u),f=c()(h);d.push([t.id,`/*\nVersion: @@ver@@ Timestamp: @@timestamp@@\n*/\n.select2-container {\n margin: 0;\n position: relative;\n display: inline-block;\n /* inline-block for ie7 */\n zoom: 1;\n *display: inline;\n vertical-align: middle;\n}\n\n.select2-container,\n.select2-drop,\n.select2-search,\n.select2-search input {\n /*\n Force border-box so that % widths fit the parent\n container without overlap because of margin/padding.\n More Info : http://www.quirksmode.org/css/box.html\n */\n -webkit-box-sizing: border-box; /* webkit */\n -moz-box-sizing: border-box; /* firefox */\n box-sizing: border-box; /* css3 */\n}\n\n.select2-container .select2-choice {\n display: block;\n height: 26px;\n padding: 0 0 0 8px;\n overflow: hidden;\n position: relative;\n\n border: 1px solid #aaa;\n white-space: nowrap;\n line-height: 26px;\n color: #444;\n text-decoration: none;\n\n border-radius: 4px;\n\n background-clip: padding-box;\n\n -webkit-touch-callout: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n\n background-color: #fff;\n background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #eee), color-stop(0.5, #fff));\n background-image: -webkit-linear-gradient(center bottom, #eee 0%, #fff 50%);\n background-image: -moz-linear-gradient(center bottom, #eee 0%, #fff 50%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#ffffff', endColorstr = '#eeeeee', GradientType = 0);\n background-image: linear-gradient(to top, #eee 0%, #fff 50%);\n}\n\nhtml[dir="rtl"] .select2-container .select2-choice {\n padding: 0 8px 0 0;\n}\n\n.select2-container.select2-drop-above .select2-choice {\n border-bottom-color: #aaa;\n\n border-radius: 0 0 4px 4px;\n\n background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #eee), color-stop(0.9, #fff));\n background-image: -webkit-linear-gradient(center bottom, #eee 0%, #fff 90%);\n background-image: -moz-linear-gradient(center bottom, #eee 0%, #fff 90%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#eeeeee', GradientType=0);\n background-image: linear-gradient(to bottom, #eee 0%, #fff 90%);\n}\n\n.select2-container.select2-allowclear .select2-choice .select2-chosen {\n margin-right: 42px;\n}\n\n.select2-container .select2-choice > .select2-chosen {\n margin-right: 26px;\n display: block;\n overflow: hidden;\n\n white-space: nowrap;\n\n text-overflow: ellipsis;\n float: none;\n width: auto;\n}\n\nhtml[dir="rtl"] .select2-container .select2-choice > .select2-chosen {\n margin-left: 26px;\n margin-right: 0;\n}\n\n.select2-container .select2-choice abbr {\n display: none;\n width: 12px;\n height: 12px;\n position: absolute;\n right: 24px;\n top: 8px;\n\n font-size: 1px;\n text-decoration: none;\n\n border: 0;\n background: url(${p}) right top no-repeat;\n cursor: pointer;\n outline: 0;\n}\n\n.select2-container.select2-allowclear .select2-choice abbr {\n display: inline-block;\n}\n\n.select2-container .select2-choice abbr:hover {\n background-position: right -11px;\n cursor: pointer;\n}\n\n.select2-drop-mask {\n border: 0;\n margin: 0;\n padding: 0;\n position: fixed;\n left: 0;\n top: 0;\n min-height: 100%;\n min-width: 100%;\n height: auto;\n width: auto;\n opacity: 0;\n z-index: 9998;\n /* styles required for IE to work */\n background-color: #fff;\n filter: alpha(opacity=0);\n}\n\n.select2-drop {\n width: 100%;\n margin-top: -1px;\n position: absolute;\n z-index: 9999;\n top: 100%;\n\n background: #fff;\n color: #000;\n border: 1px solid #aaa;\n border-top: 0;\n\n border-radius: 0 0 4px 4px;\n\n -webkit-box-shadow: 0 4px 5px rgba(0, 0, 0, .15);\n box-shadow: 0 4px 5px rgba(0, 0, 0, .15);\n}\n\n.select2-drop.select2-drop-above {\n margin-top: 1px;\n border-top: 1px solid #aaa;\n border-bottom: 0;\n\n border-radius: 4px 4px 0 0;\n\n -webkit-box-shadow: 0 -4px 5px rgba(0, 0, 0, .15);\n box-shadow: 0 -4px 5px rgba(0, 0, 0, .15);\n}\n\n.select2-drop-active {\n border: 1px solid #5897fb;\n border-top: none;\n}\n\n.select2-drop.select2-drop-above.select2-drop-active {\n border-top: 1px solid #5897fb;\n}\n\n.select2-drop-auto-width {\n border-top: 1px solid #aaa;\n width: auto;\n}\n\n.select2-drop-auto-width .select2-search {\n padding-top: 4px;\n}\n\n.select2-container .select2-choice .select2-arrow {\n display: inline-block;\n width: 18px;\n height: 100%;\n position: absolute;\n right: 0;\n top: 0;\n\n border-left: 1px solid #aaa;\n border-radius: 0 4px 4px 0;\n\n background-clip: padding-box;\n\n background: #ccc;\n background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #ccc), color-stop(0.6, #eee));\n background-image: -webkit-linear-gradient(center bottom, #ccc 0%, #eee 60%);\n background-image: -moz-linear-gradient(center bottom, #ccc 0%, #eee 60%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#eeeeee', endColorstr = '#cccccc', GradientType = 0);\n background-image: linear-gradient(to top, #ccc 0%, #eee 60%);\n}\n\nhtml[dir="rtl"] .select2-container .select2-choice .select2-arrow {\n left: 0;\n right: auto;\n\n border-left: none;\n border-right: 1px solid #aaa;\n border-radius: 4px 0 0 4px;\n}\n\n.select2-container .select2-choice .select2-arrow b {\n display: block;\n width: 100%;\n height: 100%;\n background: url(${p}) no-repeat 0 1px;\n}\n\nhtml[dir="rtl"] .select2-container .select2-choice .select2-arrow b {\n background-position: 2px 1px;\n}\n\n.select2-search {\n display: inline-block;\n width: 100%;\n min-height: 26px;\n margin: 0;\n padding-left: 4px;\n padding-right: 4px;\n\n position: relative;\n z-index: 10000;\n\n white-space: nowrap;\n}\n\n.select2-search input {\n width: 100%;\n height: auto !important;\n min-height: 26px;\n padding: 4px 20px 4px 5px;\n margin: 0;\n\n outline: 0;\n font-family: sans-serif;\n font-size: 1em;\n\n border: 1px solid #aaa;\n border-radius: 0;\n\n -webkit-box-shadow: none;\n box-shadow: none;\n\n background: #fff url(${p}) no-repeat 100% -22px;\n background: url(${p}) no-repeat 100% -22px, -webkit-gradient(linear, left bottom, left top, color-stop(0.85, #fff), color-stop(0.99, #eee));\n background: url(${p}) no-repeat 100% -22px, -webkit-linear-gradient(center bottom, #fff 85%, #eee 99%);\n background: url(${p}) no-repeat 100% -22px, -moz-linear-gradient(center bottom, #fff 85%, #eee 99%);\n background: url(${p}) no-repeat 100% -22px, linear-gradient(to bottom, #fff 85%, #eee 99%) 0 0;\n}\n\nhtml[dir="rtl"] .select2-search input {\n padding: 4px 5px 4px 20px;\n\n background: #fff url(${p}) no-repeat -37px -22px;\n background: url(${p}) no-repeat -37px -22px, -webkit-gradient(linear, left bottom, left top, color-stop(0.85, #fff), color-stop(0.99, #eee));\n background: url(${p}) no-repeat -37px -22px, -webkit-linear-gradient(center bottom, #fff 85%, #eee 99%);\n background: url(${p}) no-repeat -37px -22px, -moz-linear-gradient(center bottom, #fff 85%, #eee 99%);\n background: url(${p}) no-repeat -37px -22px, linear-gradient(to bottom, #fff 85%, #eee 99%) 0 0;\n}\n\n.select2-drop.select2-drop-above .select2-search input {\n margin-top: 4px;\n}\n\n.select2-search input.select2-active {\n background: #fff url(${A}) no-repeat 100%;\n background: url(${A}) no-repeat 100%, -webkit-gradient(linear, left bottom, left top, color-stop(0.85, #fff), color-stop(0.99, #eee));\n background: url(${A}) no-repeat 100%, -webkit-linear-gradient(center bottom, #fff 85%, #eee 99%);\n background: url(${A}) no-repeat 100%, -moz-linear-gradient(center bottom, #fff 85%, #eee 99%);\n background: url(${A}) no-repeat 100%, linear-gradient(to bottom, #fff 85%, #eee 99%) 0 0;\n}\n\n.select2-container-active .select2-choice,\n.select2-container-active .select2-choices {\n border: 1px solid #5897fb;\n outline: none;\n\n -webkit-box-shadow: 0 0 5px rgba(0, 0, 0, .3);\n box-shadow: 0 0 5px rgba(0, 0, 0, .3);\n}\n\n.select2-dropdown-open .select2-choice {\n border-bottom-color: transparent;\n -webkit-box-shadow: 0 1px 0 #fff inset;\n box-shadow: 0 1px 0 #fff inset;\n\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n\n background-color: #eee;\n background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #fff), color-stop(0.5, #eee));\n background-image: -webkit-linear-gradient(center bottom, #fff 0%, #eee 50%);\n background-image: -moz-linear-gradient(center bottom, #fff 0%, #eee 50%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#ffffff', GradientType=0);\n background-image: linear-gradient(to top, #fff 0%, #eee 50%);\n}\n\n.select2-dropdown-open.select2-drop-above .select2-choice,\n.select2-dropdown-open.select2-drop-above .select2-choices {\n border: 1px solid #5897fb;\n border-top-color: transparent;\n\n background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #fff), color-stop(0.5, #eee));\n background-image: -webkit-linear-gradient(center top, #fff 0%, #eee 50%);\n background-image: -moz-linear-gradient(center top, #fff 0%, #eee 50%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#ffffff', GradientType=0);\n background-image: linear-gradient(to bottom, #fff 0%, #eee 50%);\n}\n\n.select2-dropdown-open .select2-choice .select2-arrow {\n background: transparent;\n border-left: none;\n filter: none;\n}\nhtml[dir="rtl"] .select2-dropdown-open .select2-choice .select2-arrow {\n border-right: none;\n}\n\n.select2-dropdown-open .select2-choice .select2-arrow b {\n background-position: -18px 1px;\n}\n\nhtml[dir="rtl"] .select2-dropdown-open .select2-choice .select2-arrow b {\n background-position: -16px 1px;\n}\n\n.select2-hidden-accessible {\n border: 0;\n clip: rect(0 0 0 0);\n height: 1px;\n margin: -1px;\n overflow: hidden;\n padding: 0;\n position: absolute;\n width: 1px;\n}\n\n/* results */\n.select2-results {\n max-height: 200px;\n padding: 0 0 0 4px;\n margin: 4px 4px 4px 0;\n position: relative;\n overflow-x: hidden;\n overflow-y: auto;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\n\nhtml[dir="rtl"] .select2-results {\n padding: 0 4px 0 0;\n margin: 4px 0 4px 4px;\n}\n\n.select2-results ul.select2-result-sub {\n margin: 0;\n padding-left: 0;\n}\n\n.select2-results li {\n list-style: none;\n display: list-item;\n background-image: none;\n}\n\n.select2-results li.select2-result-with-children > .select2-result-label {\n font-weight: bold;\n}\n\n.select2-results .select2-result-label {\n padding: 3px 7px 4px;\n margin: 0;\n cursor: pointer;\n\n min-height: 1em;\n\n -webkit-touch-callout: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n\n.select2-results-dept-1 .select2-result-label { padding-left: 20px }\n.select2-results-dept-2 .select2-result-label { padding-left: 40px }\n.select2-results-dept-3 .select2-result-label { padding-left: 60px }\n.select2-results-dept-4 .select2-result-label { padding-left: 80px }\n.select2-results-dept-5 .select2-result-label { padding-left: 100px }\n.select2-results-dept-6 .select2-result-label { padding-left: 110px }\n.select2-results-dept-7 .select2-result-label { padding-left: 120px }\n\n.select2-results .select2-highlighted {\n background: #3875d7;\n color: #fff;\n}\n\n.select2-results li em {\n background: #feffde;\n font-style: normal;\n}\n\n.select2-results .select2-highlighted em {\n background: transparent;\n}\n\n.select2-results .select2-highlighted ul {\n background: #fff;\n color: #000;\n}\n\n.select2-results .select2-no-results,\n.select2-results .select2-searching,\n.select2-results .select2-ajax-error,\n.select2-results .select2-selection-limit {\n background: #f4f4f4;\n display: list-item;\n padding-left: 5px;\n}\n\n/*\ndisabled look for disabled choices in the results dropdown\n*/\n.select2-results .select2-disabled.select2-highlighted {\n color: #666;\n background: #f4f4f4;\n display: list-item;\n cursor: default;\n}\n.select2-results .select2-disabled {\n background: #f4f4f4;\n display: list-item;\n cursor: default;\n}\n\n.select2-results .select2-selected {\n display: none;\n}\n\n.select2-more-results.select2-active {\n background: #f4f4f4 url(${A}) no-repeat 100%;\n}\n\n.select2-results .select2-ajax-error {\n background: rgba(255, 50, 50, .2);\n}\n\n.select2-more-results {\n background: #f4f4f4;\n display: list-item;\n}\n\n/* disabled styles */\n\n.select2-container.select2-container-disabled .select2-choice {\n background-color: #f4f4f4;\n background-image: none;\n border: 1px solid #ddd;\n cursor: default;\n}\n\n.select2-container.select2-container-disabled .select2-choice .select2-arrow {\n background-color: #f4f4f4;\n background-image: none;\n border-left: 0;\n}\n\n.select2-container.select2-container-disabled .select2-choice abbr {\n display: none;\n}\n\n\n/* multiselect */\n\n.select2-container-multi .select2-choices {\n height: auto !important;\n height: 1%;\n margin: 0;\n padding: 0 5px 0 0;\n position: relative;\n\n border: 1px solid #aaa;\n cursor: text;\n overflow: hidden;\n\n background-color: #fff;\n background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(1%, #eee), color-stop(15%, #fff));\n background-image: -webkit-linear-gradient(top, #eee 1%, #fff 15%);\n background-image: -moz-linear-gradient(top, #eee 1%, #fff 15%);\n background-image: linear-gradient(to bottom, #eee 1%, #fff 15%);\n}\n\nhtml[dir="rtl"] .select2-container-multi .select2-choices {\n padding: 0 0 0 5px;\n}\n\n.select2-locked {\n padding: 3px 5px 3px 5px !important;\n}\n\n.select2-container-multi .select2-choices {\n min-height: 26px;\n}\n\n.select2-container-multi.select2-container-active .select2-choices {\n border: 1px solid #5897fb;\n outline: none;\n\n -webkit-box-shadow: 0 0 5px rgba(0, 0, 0, .3);\n box-shadow: 0 0 5px rgba(0, 0, 0, .3);\n}\n.select2-container-multi .select2-choices li {\n float: left;\n list-style: none;\n}\nhtml[dir="rtl"] .select2-container-multi .select2-choices li\n{\n float: right;\n}\n.select2-container-multi .select2-choices .select2-search-field {\n margin: 0;\n padding: 0;\n white-space: nowrap;\n}\n\n.select2-container-multi .select2-choices .select2-search-field input {\n padding: 5px;\n margin: 1px 0;\n\n font-family: sans-serif;\n font-size: 100%;\n color: #666;\n outline: 0;\n border: 0;\n -webkit-box-shadow: none;\n box-shadow: none;\n background: transparent !important;\n}\n\n.select2-container-multi .select2-choices .select2-search-field input.select2-active {\n background: #fff url(${A}) no-repeat 100% !important;\n}\n\n.select2-default {\n color: #999 !important;\n}\n\n.select2-container-multi .select2-choices .select2-search-choice {\n padding: 3px 5px 3px 18px;\n margin: 3px 0 3px 5px;\n position: relative;\n\n line-height: 13px;\n color: #333;\n cursor: default;\n border: 1px solid #aaaaaa;\n\n border-radius: 3px;\n\n -webkit-box-shadow: 0 0 2px #fff inset, 0 1px 0 rgba(0, 0, 0, 0.05);\n box-shadow: 0 0 2px #fff inset, 0 1px 0 rgba(0, 0, 0, 0.05);\n\n background-clip: padding-box;\n\n -webkit-touch-callout: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n\n background-color: #e4e4e4;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#f4f4f4', GradientType=0);\n background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(20%, #f4f4f4), color-stop(50%, #f0f0f0), color-stop(52%, #e8e8e8), color-stop(100%, #eee));\n background-image: -webkit-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eee 100%);\n background-image: -moz-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eee 100%);\n background-image: linear-gradient(to bottom, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eee 100%);\n}\nhtml[dir="rtl"] .select2-container-multi .select2-choices .select2-search-choice\n{\n margin: 3px 5px 3px 0;\n padding: 3px 18px 3px 5px;\n}\n.select2-container-multi .select2-choices .select2-search-choice .select2-chosen {\n cursor: default;\n}\n.select2-container-multi .select2-choices .select2-search-choice-focus {\n background: #d4d4d4;\n}\n\n.select2-search-choice-close {\n display: block;\n width: 12px;\n height: 13px;\n position: absolute;\n right: 3px;\n top: 4px;\n\n font-size: 1px;\n outline: none;\n background: url(${p}) right top no-repeat;\n}\nhtml[dir="rtl"] .select2-search-choice-close {\n right: auto;\n left: 3px;\n}\n\n.select2-container-multi .select2-search-choice-close {\n left: 3px;\n}\n\nhtml[dir="rtl"] .select2-container-multi .select2-search-choice-close {\n left: auto;\n right: 2px;\n}\n\n.select2-container-multi .select2-choices .select2-search-choice .select2-search-choice-close:hover {\n background-position: right -11px;\n}\n.select2-container-multi .select2-choices .select2-search-choice-focus .select2-search-choice-close {\n background-position: right -11px;\n}\n\n/* disabled styles */\n.select2-container-multi.select2-container-disabled .select2-choices {\n background-color: #f4f4f4;\n background-image: none;\n border: 1px solid #ddd;\n cursor: default;\n}\n\n.select2-container-multi.select2-container-disabled .select2-choices .select2-search-choice {\n padding: 3px 5px 3px 5px;\n border: 1px solid #ddd;\n background-image: none;\n background-color: #f4f4f4;\n}\n\n.select2-container-multi.select2-container-disabled .select2-choices .select2-search-choice .select2-search-choice-close { display: none;\n background: none;\n}\n/* end multiselect */\n\n\n.select2-result-selectable .select2-match,\n.select2-result-unselectable .select2-match {\n text-decoration: underline;\n}\n\n.select2-offscreen, .select2-offscreen:focus {\n clip: rect(0 0 0 0) !important;\n width: 1px !important;\n height: 1px !important;\n border: 0 !important;\n margin: 0 !important;\n padding: 0 !important;\n overflow: hidden !important;\n position: absolute !important;\n outline: 0 !important;\n left: 0px !important;\n top: 0px !important;\n}\n\n.select2-display-none {\n display: none;\n}\n\n.select2-measure-scrollbar {\n position: absolute;\n top: -10000px;\n left: -10000px;\n width: 100px;\n height: 100px;\n overflow: scroll;\n}\n\n/* Retina-ize icons */\n\n@media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (min-resolution: 2dppx) {\n .select2-search input,\n .select2-search-choice-close,\n .select2-container .select2-choice abbr,\n .select2-container .select2-choice .select2-arrow b {\n background-image: url(${f}) !important;\n background-repeat: no-repeat !important;\n background-size: 60px 40px !important;\n }\n\n .select2-search input {\n background-position: 100% -21px !important;\n }\n}\n`,"",{version:3,sources:["webpack://./node_modules/select2/select2.css"],names:[],mappings:"AAAA;;CAEC;AACD;IACI,SAAS;IACT,kBAAkB;IAClB,qBAAqB;IACrB,yBAAyB;IACzB,OAAO;KACP,eAAgB;IAChB,sBAAsB;AAC1B;;AAEA;;;;EAIE;;;;GAIC;EACD,8BAA8B,EAAE,WAAW;KACxC,2BAA2B,EAAE,YAAY;UACpC,sBAAsB,EAAE,SAAS;AAC3C;;AAEA;IACI,cAAc;IACd,YAAY;IACZ,kBAAkB;IAClB,gBAAgB;IAChB,kBAAkB;;IAElB,sBAAsB;IACtB,mBAAmB;IACnB,iBAAiB;IACjB,WAAW;IACX,qBAAqB;;IAErB,kBAAkB;;IAElB,4BAA4B;;IAE5B,2BAA2B;MACzB,yBAAyB;SACtB,sBAAsB;UACrB,qBAAqB;cACjB,iBAAiB;;IAE3B,sBAAsB;IACtB,6GAA6G;IAC7G,2EAA2E;IAC3E,wEAAwE;IACxE,wHAAwH;IACxH,4DAA4D;AAChE;;AAEA;IACI,kBAAkB;AACtB;;AAEA;IACI,yBAAyB;;IAEzB,0BAA0B;;IAE1B,6GAA6G;IAC7G,2EAA2E;IAC3E,wEAAwE;IACxE,kHAAkH;IAClH,+DAA+D;AACnE;;AAEA;IACI,kBAAkB;AACtB;;AAEA;IACI,kBAAkB;IAClB,cAAc;IACd,gBAAgB;;IAEhB,mBAAmB;;IAEnB,uBAAuB;IACvB,WAAW;IACX,WAAW;AACf;;AAEA;IACI,iBAAiB;IACjB,eAAe;AACnB;;AAEA;IACI,aAAa;IACb,WAAW;IACX,YAAY;IACZ,kBAAkB;IAClB,WAAW;IACX,QAAQ;;IAER,cAAc;IACd,qBAAqB;;IAErB,SAAS;IACT,uEAAkD;IAClD,eAAe;IACf,UAAU;AACd;;AAEA;IACI,qBAAqB;AACzB;;AAEA;IACI,gCAAgC;IAChC,eAAe;AACnB;;AAEA;IACI,SAAS;IACT,SAAS;IACT,UAAU;IACV,eAAe;IACf,OAAO;IACP,MAAM;IACN,gBAAgB;IAChB,eAAe;IACf,YAAY;IACZ,WAAW;IACX,UAAU;IACV,aAAa;IACb,mCAAmC;IACnC,sBAAsB;IACtB,wBAAwB;AAC5B;;AAEA;IACI,WAAW;IACX,gBAAgB;IAChB,kBAAkB;IAClB,aAAa;IACb,SAAS;;IAET,gBAAgB;IAChB,WAAW;IACX,sBAAsB;IACtB,aAAa;;IAEb,0BAA0B;;IAE1B,gDAAgD;YACxC,wCAAwC;AACpD;;AAEA;IACI,eAAe;IACf,0BAA0B;IAC1B,gBAAgB;;IAEhB,0BAA0B;;IAE1B,iDAAiD;YACzC,yCAAyC;AACrD;;AAEA;IACI,yBAAyB;IACzB,gBAAgB;AACpB;;AAEA;IACI,6BAA6B;AACjC;;AAEA;IACI,0BAA0B;IAC1B,WAAW;AACf;;AAEA;IACI,gBAAgB;AACpB;;AAEA;IACI,qBAAqB;IACrB,WAAW;IACX,YAAY;IACZ,kBAAkB;IAClB,QAAQ;IACR,MAAM;;IAEN,2BAA2B;IAC3B,0BAA0B;;IAE1B,4BAA4B;;IAE5B,gBAAgB;IAChB,6GAA6G;IAC7G,2EAA2E;IAC3E,wEAAwE;IACxE,wHAAwH;IACxH,4DAA4D;AAChE;;AAEA;IACI,OAAO;IACP,WAAW;;IAEX,iBAAiB;IACjB,4BAA4B;IAC5B,0BAA0B;AAC9B;;AAEA;IACI,cAAc;IACd,WAAW;IACX,YAAY;IACZ,mEAA8C;AAClD;;AAEA;IACI,4BAA4B;AAChC;;AAEA;IACI,qBAAqB;IACrB,WAAW;IACX,gBAAgB;IAChB,SAAS;IACT,iBAAiB;IACjB,kBAAkB;;IAElB,kBAAkB;IAClB,cAAc;;IAEd,mBAAmB;AACvB;;AAEA;IACI,WAAW;IACX,uBAAuB;IACvB,gBAAgB;IAChB,yBAAyB;IACzB,SAAS;;IAET,UAAU;IACV,uBAAuB;IACvB,cAAc;;IAEd,sBAAsB;IACtB,gBAAgB;;IAEhB,wBAAwB;YAChB,gBAAgB;;IAExB,6EAAwD;IACxD,yKAAoJ;IACpJ,oIAA+G;IAC/G,iIAA4G;IAC5G,4HAAuG;AAC3G;;AAEA;IACI,yBAAyB;;IAEzB,8EAAyD;IACzD,0KAAqJ;IACrJ,qIAAgH;IAChH,kIAA6G;IAC7G,6HAAwG;AAC5G;;AAEA;IACI,eAAe;AACnB;;AAEA;IACI,uEAA0D;IAC1D,mKAAsJ;IACtJ,8HAAiH;IACjH,2HAA8G;IAC9G,sHAAyG;AAC7G;;AAEA;;IAEI,yBAAyB;IACzB,aAAa;;IAEb,6CAA6C;YACrC,qCAAqC;AACjD;;AAEA;IACI,gCAAgC;IAChC,sCAAsC;YAC9B,8BAA8B;;IAEtC,4BAA4B;IAC5B,6BAA6B;;IAE7B,sBAAsB;IACtB,6GAA6G;IAC7G,2EAA2E;IAC3E,wEAAwE;IACxE,kHAAkH;IAClH,4DAA4D;AAChE;;AAEA;;IAEI,yBAAyB;IACzB,6BAA6B;;IAE7B,6GAA6G;IAC7G,wEAAwE;IACxE,qEAAqE;IACrE,kHAAkH;IAClH,+DAA+D;AACnE;;AAEA;IACI,uBAAuB;IACvB,iBAAiB;IACjB,YAAY;AAChB;AACA;IACI,kBAAkB;AACtB;;AAEA;IACI,8BAA8B;AAClC;;AAEA;IACI,8BAA8B;AAClC;;AAEA;IACI,SAAS;IACT,mBAAmB;IACnB,WAAW;IACX,YAAY;IACZ,gBAAgB;IAChB,UAAU;IACV,kBAAkB;IAClB,UAAU;AACd;;AAEA,YAAY;AACZ;IACI,iBAAiB;IACjB,kBAAkB;IAClB,qBAAqB;IACrB,kBAAkB;IAClB,kBAAkB;IAClB,gBAAgB;IAChB,6CAA6C;AACjD;;AAEA;IACI,kBAAkB;IAClB,qBAAqB;AACzB;;AAEA;IACI,SAAS;IACT,eAAe;AACnB;;AAEA;IACI,gBAAgB;IAChB,kBAAkB;IAClB,sBAAsB;AAC1B;;AAEA;IACI,iBAAiB;AACrB;;AAEA;IACI,oBAAoB;IACpB,SAAS;IACT,eAAe;;IAEf,eAAe;;IAEf,2BAA2B;MACzB,yBAAyB;SACtB,sBAAsB;UACrB,qBAAqB;cACjB,iBAAiB;AAC/B;;AAEA,gDAAgD,mBAAmB;AACnE,gDAAgD,mBAAmB;AACnE,gDAAgD,mBAAmB;AACnE,gDAAgD,mBAAmB;AACnE,gDAAgD,oBAAoB;AACpE,gDAAgD,oBAAoB;AACpE,gDAAgD,oBAAoB;;AAEpE;IACI,mBAAmB;IACnB,WAAW;AACf;;AAEA;IACI,mBAAmB;IACnB,kBAAkB;AACtB;;AAEA;IACI,uBAAuB;AAC3B;;AAEA;IACI,gBAAgB;IAChB,WAAW;AACf;;AAEA;;;;IAII,mBAAmB;IACnB,kBAAkB;IAClB,iBAAiB;AACrB;;AAEA;;CAEC;AACD;IACI,WAAW;IACX,mBAAmB;IACnB,kBAAkB;IAClB,eAAe;AACnB;AACA;EACE,mBAAmB;EACnB,kBAAkB;EAClB,eAAe;AACjB;;AAEA;IACI,aAAa;AACjB;;AAEA;IACI,0EAA6D;AACjE;;AAEA;IACI,iCAAiC;AACrC;;AAEA;IACI,mBAAmB;IACnB,kBAAkB;AACtB;;AAEA,oBAAoB;;AAEpB;IACI,yBAAyB;IACzB,sBAAsB;IACtB,sBAAsB;IACtB,eAAe;AACnB;;AAEA;IACI,yBAAyB;IACzB,sBAAsB;IACtB,cAAc;AAClB;;AAEA;IACI,aAAa;AACjB;;;AAGA,gBAAgB;;AAEhB;IACI,uBAAuB;IACvB,UAAU;IACV,SAAS;IACT,kBAAkB;IAClB,kBAAkB;;IAElB,sBAAsB;IACtB,YAAY;IACZ,gBAAgB;;IAEhB,sBAAsB;IACtB,uGAAuG;IACvG,iEAAiE;IACjE,8DAA8D;IAC9D,+DAA+D;AACnE;;AAEA;IACI,kBAAkB;AACtB;;AAEA;EACE,mCAAmC;AACrC;;AAEA;IACI,gBAAgB;AACpB;;AAEA;IACI,yBAAyB;IACzB,aAAa;;IAEb,6CAA6C;YACrC,qCAAqC;AACjD;AACA;IACI,WAAW;IACX,gBAAgB;AACpB;AACA;;IAEI,YAAY;AAChB;AACA;IACI,SAAS;IACT,UAAU;IACV,mBAAmB;AACvB;;AAEA;IACI,YAAY;IACZ,aAAa;;IAEb,uBAAuB;IACvB,eAAe;IACf,WAAW;IACX,UAAU;IACV,SAAS;IACT,wBAAwB;YAChB,gBAAgB;IACxB,kCAAkC;AACtC;;AAEA;IACI,kFAAqE;AACzE;;AAEA;IACI,sBAAsB;AAC1B;;AAEA;IACI,yBAAyB;IACzB,qBAAqB;IACrB,kBAAkB;;IAElB,iBAAiB;IACjB,WAAW;IACX,eAAe;IACf,yBAAyB;;IAEzB,kBAAkB;;IAElB,mEAAmE;YAC3D,2DAA2D;;IAEnE,4BAA4B;;IAE5B,2BAA2B;MACzB,yBAAyB;SACtB,sBAAsB;UACrB,qBAAqB;cACjB,iBAAiB;;IAE3B,yBAAyB;IACzB,kHAAkH;IAClH,gKAAgK;IAChK,gGAAgG;IAChG,6FAA6F;IAC7F,8FAA8F;AAClG;AACA;;IAEI,qBAAqB;IACrB,yBAAyB;AAC7B;AACA;IACI,eAAe;AACnB;AACA;IACI,mBAAmB;AACvB;;AAEA;IACI,cAAc;IACd,WAAW;IACX,YAAY;IACZ,kBAAkB;IAClB,UAAU;IACV,QAAQ;;IAER,cAAc;IACd,aAAa;IACb,uEAAkD;AACtD;AACA;IACI,WAAW;IACX,SAAS;AACb;;AAEA;IACI,SAAS;AACb;;AAEA;IACI,UAAU;IACV,UAAU;AACd;;AAEA;EACE,gCAAgC;AAClC;AACA;IACI,gCAAgC;AACpC;;AAEA,oBAAoB;AACpB;IACI,yBAAyB;IACzB,sBAAsB;IACtB,sBAAsB;IACtB,eAAe;AACnB;;AAEA;IACI,wBAAwB;IACxB,sBAAsB;IACtB,sBAAsB;IACtB,yBAAyB;AAC7B;;AAEA,8HAA8H,aAAa;IACvI,gBAAgB;AACpB;AACA,oBAAoB;;;AAGpB;;IAEI,0BAA0B;AAC9B;;AAEA;IACI,8BAA8B;IAC9B,qBAAqB;IACrB,sBAAsB;IACtB,oBAAoB;IACpB,oBAAoB;IACpB,qBAAqB;IACrB,2BAA2B;IAC3B,6BAA6B;IAC7B,qBAAqB;IACrB,oBAAoB;IACpB,mBAAmB;AACvB;;AAEA;IACI,aAAa;AACjB;;AAEA;IACI,kBAAkB;IAClB,aAAa;IACb,cAAc;IACd,YAAY;IACZ,aAAa;IACb,gBAAgB;AACpB;;AAEA,qBAAqB;;AAErB;IACI;;;;QAII,oEAAiD;QACjD,uCAAuC;QACvC,qCAAqC;IACzC;;IAEA;QACI,0CAA0C;IAC9C;AACJ",sourcesContent:["/*\nVersion: @@ver@@ Timestamp: @@timestamp@@\n*/\n.select2-container {\n margin: 0;\n position: relative;\n display: inline-block;\n /* inline-block for ie7 */\n zoom: 1;\n *display: inline;\n vertical-align: middle;\n}\n\n.select2-container,\n.select2-drop,\n.select2-search,\n.select2-search input {\n /*\n Force border-box so that % widths fit the parent\n container without overlap because of margin/padding.\n More Info : http://www.quirksmode.org/css/box.html\n */\n -webkit-box-sizing: border-box; /* webkit */\n -moz-box-sizing: border-box; /* firefox */\n box-sizing: border-box; /* css3 */\n}\n\n.select2-container .select2-choice {\n display: block;\n height: 26px;\n padding: 0 0 0 8px;\n overflow: hidden;\n position: relative;\n\n border: 1px solid #aaa;\n white-space: nowrap;\n line-height: 26px;\n color: #444;\n text-decoration: none;\n\n border-radius: 4px;\n\n background-clip: padding-box;\n\n -webkit-touch-callout: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n\n background-color: #fff;\n background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #eee), color-stop(0.5, #fff));\n background-image: -webkit-linear-gradient(center bottom, #eee 0%, #fff 50%);\n background-image: -moz-linear-gradient(center bottom, #eee 0%, #fff 50%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#ffffff', endColorstr = '#eeeeee', GradientType = 0);\n background-image: linear-gradient(to top, #eee 0%, #fff 50%);\n}\n\nhtml[dir=\"rtl\"] .select2-container .select2-choice {\n padding: 0 8px 0 0;\n}\n\n.select2-container.select2-drop-above .select2-choice {\n border-bottom-color: #aaa;\n\n border-radius: 0 0 4px 4px;\n\n background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #eee), color-stop(0.9, #fff));\n background-image: -webkit-linear-gradient(center bottom, #eee 0%, #fff 90%);\n background-image: -moz-linear-gradient(center bottom, #eee 0%, #fff 90%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#eeeeee', GradientType=0);\n background-image: linear-gradient(to bottom, #eee 0%, #fff 90%);\n}\n\n.select2-container.select2-allowclear .select2-choice .select2-chosen {\n margin-right: 42px;\n}\n\n.select2-container .select2-choice > .select2-chosen {\n margin-right: 26px;\n display: block;\n overflow: hidden;\n\n white-space: nowrap;\n\n text-overflow: ellipsis;\n float: none;\n width: auto;\n}\n\nhtml[dir=\"rtl\"] .select2-container .select2-choice > .select2-chosen {\n margin-left: 26px;\n margin-right: 0;\n}\n\n.select2-container .select2-choice abbr {\n display: none;\n width: 12px;\n height: 12px;\n position: absolute;\n right: 24px;\n top: 8px;\n\n font-size: 1px;\n text-decoration: none;\n\n border: 0;\n background: url('select2.png') right top no-repeat;\n cursor: pointer;\n outline: 0;\n}\n\n.select2-container.select2-allowclear .select2-choice abbr {\n display: inline-block;\n}\n\n.select2-container .select2-choice abbr:hover {\n background-position: right -11px;\n cursor: pointer;\n}\n\n.select2-drop-mask {\n border: 0;\n margin: 0;\n padding: 0;\n position: fixed;\n left: 0;\n top: 0;\n min-height: 100%;\n min-width: 100%;\n height: auto;\n width: auto;\n opacity: 0;\n z-index: 9998;\n /* styles required for IE to work */\n background-color: #fff;\n filter: alpha(opacity=0);\n}\n\n.select2-drop {\n width: 100%;\n margin-top: -1px;\n position: absolute;\n z-index: 9999;\n top: 100%;\n\n background: #fff;\n color: #000;\n border: 1px solid #aaa;\n border-top: 0;\n\n border-radius: 0 0 4px 4px;\n\n -webkit-box-shadow: 0 4px 5px rgba(0, 0, 0, .15);\n box-shadow: 0 4px 5px rgba(0, 0, 0, .15);\n}\n\n.select2-drop.select2-drop-above {\n margin-top: 1px;\n border-top: 1px solid #aaa;\n border-bottom: 0;\n\n border-radius: 4px 4px 0 0;\n\n -webkit-box-shadow: 0 -4px 5px rgba(0, 0, 0, .15);\n box-shadow: 0 -4px 5px rgba(0, 0, 0, .15);\n}\n\n.select2-drop-active {\n border: 1px solid #5897fb;\n border-top: none;\n}\n\n.select2-drop.select2-drop-above.select2-drop-active {\n border-top: 1px solid #5897fb;\n}\n\n.select2-drop-auto-width {\n border-top: 1px solid #aaa;\n width: auto;\n}\n\n.select2-drop-auto-width .select2-search {\n padding-top: 4px;\n}\n\n.select2-container .select2-choice .select2-arrow {\n display: inline-block;\n width: 18px;\n height: 100%;\n position: absolute;\n right: 0;\n top: 0;\n\n border-left: 1px solid #aaa;\n border-radius: 0 4px 4px 0;\n\n background-clip: padding-box;\n\n background: #ccc;\n background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #ccc), color-stop(0.6, #eee));\n background-image: -webkit-linear-gradient(center bottom, #ccc 0%, #eee 60%);\n background-image: -moz-linear-gradient(center bottom, #ccc 0%, #eee 60%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#eeeeee', endColorstr = '#cccccc', GradientType = 0);\n background-image: linear-gradient(to top, #ccc 0%, #eee 60%);\n}\n\nhtml[dir=\"rtl\"] .select2-container .select2-choice .select2-arrow {\n left: 0;\n right: auto;\n\n border-left: none;\n border-right: 1px solid #aaa;\n border-radius: 4px 0 0 4px;\n}\n\n.select2-container .select2-choice .select2-arrow b {\n display: block;\n width: 100%;\n height: 100%;\n background: url('select2.png') no-repeat 0 1px;\n}\n\nhtml[dir=\"rtl\"] .select2-container .select2-choice .select2-arrow b {\n background-position: 2px 1px;\n}\n\n.select2-search {\n display: inline-block;\n width: 100%;\n min-height: 26px;\n margin: 0;\n padding-left: 4px;\n padding-right: 4px;\n\n position: relative;\n z-index: 10000;\n\n white-space: nowrap;\n}\n\n.select2-search input {\n width: 100%;\n height: auto !important;\n min-height: 26px;\n padding: 4px 20px 4px 5px;\n margin: 0;\n\n outline: 0;\n font-family: sans-serif;\n font-size: 1em;\n\n border: 1px solid #aaa;\n border-radius: 0;\n\n -webkit-box-shadow: none;\n box-shadow: none;\n\n background: #fff url('select2.png') no-repeat 100% -22px;\n background: url('select2.png') no-repeat 100% -22px, -webkit-gradient(linear, left bottom, left top, color-stop(0.85, #fff), color-stop(0.99, #eee));\n background: url('select2.png') no-repeat 100% -22px, -webkit-linear-gradient(center bottom, #fff 85%, #eee 99%);\n background: url('select2.png') no-repeat 100% -22px, -moz-linear-gradient(center bottom, #fff 85%, #eee 99%);\n background: url('select2.png') no-repeat 100% -22px, linear-gradient(to bottom, #fff 85%, #eee 99%) 0 0;\n}\n\nhtml[dir=\"rtl\"] .select2-search input {\n padding: 4px 5px 4px 20px;\n\n background: #fff url('select2.png') no-repeat -37px -22px;\n background: url('select2.png') no-repeat -37px -22px, -webkit-gradient(linear, left bottom, left top, color-stop(0.85, #fff), color-stop(0.99, #eee));\n background: url('select2.png') no-repeat -37px -22px, -webkit-linear-gradient(center bottom, #fff 85%, #eee 99%);\n background: url('select2.png') no-repeat -37px -22px, -moz-linear-gradient(center bottom, #fff 85%, #eee 99%);\n background: url('select2.png') no-repeat -37px -22px, linear-gradient(to bottom, #fff 85%, #eee 99%) 0 0;\n}\n\n.select2-drop.select2-drop-above .select2-search input {\n margin-top: 4px;\n}\n\n.select2-search input.select2-active {\n background: #fff url('select2-spinner.gif') no-repeat 100%;\n background: url('select2-spinner.gif') no-repeat 100%, -webkit-gradient(linear, left bottom, left top, color-stop(0.85, #fff), color-stop(0.99, #eee));\n background: url('select2-spinner.gif') no-repeat 100%, -webkit-linear-gradient(center bottom, #fff 85%, #eee 99%);\n background: url('select2-spinner.gif') no-repeat 100%, -moz-linear-gradient(center bottom, #fff 85%, #eee 99%);\n background: url('select2-spinner.gif') no-repeat 100%, linear-gradient(to bottom, #fff 85%, #eee 99%) 0 0;\n}\n\n.select2-container-active .select2-choice,\n.select2-container-active .select2-choices {\n border: 1px solid #5897fb;\n outline: none;\n\n -webkit-box-shadow: 0 0 5px rgba(0, 0, 0, .3);\n box-shadow: 0 0 5px rgba(0, 0, 0, .3);\n}\n\n.select2-dropdown-open .select2-choice {\n border-bottom-color: transparent;\n -webkit-box-shadow: 0 1px 0 #fff inset;\n box-shadow: 0 1px 0 #fff inset;\n\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n\n background-color: #eee;\n background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #fff), color-stop(0.5, #eee));\n background-image: -webkit-linear-gradient(center bottom, #fff 0%, #eee 50%);\n background-image: -moz-linear-gradient(center bottom, #fff 0%, #eee 50%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#ffffff', GradientType=0);\n background-image: linear-gradient(to top, #fff 0%, #eee 50%);\n}\n\n.select2-dropdown-open.select2-drop-above .select2-choice,\n.select2-dropdown-open.select2-drop-above .select2-choices {\n border: 1px solid #5897fb;\n border-top-color: transparent;\n\n background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #fff), color-stop(0.5, #eee));\n background-image: -webkit-linear-gradient(center top, #fff 0%, #eee 50%);\n background-image: -moz-linear-gradient(center top, #fff 0%, #eee 50%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#ffffff', GradientType=0);\n background-image: linear-gradient(to bottom, #fff 0%, #eee 50%);\n}\n\n.select2-dropdown-open .select2-choice .select2-arrow {\n background: transparent;\n border-left: none;\n filter: none;\n}\nhtml[dir=\"rtl\"] .select2-dropdown-open .select2-choice .select2-arrow {\n border-right: none;\n}\n\n.select2-dropdown-open .select2-choice .select2-arrow b {\n background-position: -18px 1px;\n}\n\nhtml[dir=\"rtl\"] .select2-dropdown-open .select2-choice .select2-arrow b {\n background-position: -16px 1px;\n}\n\n.select2-hidden-accessible {\n border: 0;\n clip: rect(0 0 0 0);\n height: 1px;\n margin: -1px;\n overflow: hidden;\n padding: 0;\n position: absolute;\n width: 1px;\n}\n\n/* results */\n.select2-results {\n max-height: 200px;\n padding: 0 0 0 4px;\n margin: 4px 4px 4px 0;\n position: relative;\n overflow-x: hidden;\n overflow-y: auto;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\n\nhtml[dir=\"rtl\"] .select2-results {\n padding: 0 4px 0 0;\n margin: 4px 0 4px 4px;\n}\n\n.select2-results ul.select2-result-sub {\n margin: 0;\n padding-left: 0;\n}\n\n.select2-results li {\n list-style: none;\n display: list-item;\n background-image: none;\n}\n\n.select2-results li.select2-result-with-children > .select2-result-label {\n font-weight: bold;\n}\n\n.select2-results .select2-result-label {\n padding: 3px 7px 4px;\n margin: 0;\n cursor: pointer;\n\n min-height: 1em;\n\n -webkit-touch-callout: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n\n.select2-results-dept-1 .select2-result-label { padding-left: 20px }\n.select2-results-dept-2 .select2-result-label { padding-left: 40px }\n.select2-results-dept-3 .select2-result-label { padding-left: 60px }\n.select2-results-dept-4 .select2-result-label { padding-left: 80px }\n.select2-results-dept-5 .select2-result-label { padding-left: 100px }\n.select2-results-dept-6 .select2-result-label { padding-left: 110px }\n.select2-results-dept-7 .select2-result-label { padding-left: 120px }\n\n.select2-results .select2-highlighted {\n background: #3875d7;\n color: #fff;\n}\n\n.select2-results li em {\n background: #feffde;\n font-style: normal;\n}\n\n.select2-results .select2-highlighted em {\n background: transparent;\n}\n\n.select2-results .select2-highlighted ul {\n background: #fff;\n color: #000;\n}\n\n.select2-results .select2-no-results,\n.select2-results .select2-searching,\n.select2-results .select2-ajax-error,\n.select2-results .select2-selection-limit {\n background: #f4f4f4;\n display: list-item;\n padding-left: 5px;\n}\n\n/*\ndisabled look for disabled choices in the results dropdown\n*/\n.select2-results .select2-disabled.select2-highlighted {\n color: #666;\n background: #f4f4f4;\n display: list-item;\n cursor: default;\n}\n.select2-results .select2-disabled {\n background: #f4f4f4;\n display: list-item;\n cursor: default;\n}\n\n.select2-results .select2-selected {\n display: none;\n}\n\n.select2-more-results.select2-active {\n background: #f4f4f4 url('select2-spinner.gif') no-repeat 100%;\n}\n\n.select2-results .select2-ajax-error {\n background: rgba(255, 50, 50, .2);\n}\n\n.select2-more-results {\n background: #f4f4f4;\n display: list-item;\n}\n\n/* disabled styles */\n\n.select2-container.select2-container-disabled .select2-choice {\n background-color: #f4f4f4;\n background-image: none;\n border: 1px solid #ddd;\n cursor: default;\n}\n\n.select2-container.select2-container-disabled .select2-choice .select2-arrow {\n background-color: #f4f4f4;\n background-image: none;\n border-left: 0;\n}\n\n.select2-container.select2-container-disabled .select2-choice abbr {\n display: none;\n}\n\n\n/* multiselect */\n\n.select2-container-multi .select2-choices {\n height: auto !important;\n height: 1%;\n margin: 0;\n padding: 0 5px 0 0;\n position: relative;\n\n border: 1px solid #aaa;\n cursor: text;\n overflow: hidden;\n\n background-color: #fff;\n background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(1%, #eee), color-stop(15%, #fff));\n background-image: -webkit-linear-gradient(top, #eee 1%, #fff 15%);\n background-image: -moz-linear-gradient(top, #eee 1%, #fff 15%);\n background-image: linear-gradient(to bottom, #eee 1%, #fff 15%);\n}\n\nhtml[dir=\"rtl\"] .select2-container-multi .select2-choices {\n padding: 0 0 0 5px;\n}\n\n.select2-locked {\n padding: 3px 5px 3px 5px !important;\n}\n\n.select2-container-multi .select2-choices {\n min-height: 26px;\n}\n\n.select2-container-multi.select2-container-active .select2-choices {\n border: 1px solid #5897fb;\n outline: none;\n\n -webkit-box-shadow: 0 0 5px rgba(0, 0, 0, .3);\n box-shadow: 0 0 5px rgba(0, 0, 0, .3);\n}\n.select2-container-multi .select2-choices li {\n float: left;\n list-style: none;\n}\nhtml[dir=\"rtl\"] .select2-container-multi .select2-choices li\n{\n float: right;\n}\n.select2-container-multi .select2-choices .select2-search-field {\n margin: 0;\n padding: 0;\n white-space: nowrap;\n}\n\n.select2-container-multi .select2-choices .select2-search-field input {\n padding: 5px;\n margin: 1px 0;\n\n font-family: sans-serif;\n font-size: 100%;\n color: #666;\n outline: 0;\n border: 0;\n -webkit-box-shadow: none;\n box-shadow: none;\n background: transparent !important;\n}\n\n.select2-container-multi .select2-choices .select2-search-field input.select2-active {\n background: #fff url('select2-spinner.gif') no-repeat 100% !important;\n}\n\n.select2-default {\n color: #999 !important;\n}\n\n.select2-container-multi .select2-choices .select2-search-choice {\n padding: 3px 5px 3px 18px;\n margin: 3px 0 3px 5px;\n position: relative;\n\n line-height: 13px;\n color: #333;\n cursor: default;\n border: 1px solid #aaaaaa;\n\n border-radius: 3px;\n\n -webkit-box-shadow: 0 0 2px #fff inset, 0 1px 0 rgba(0, 0, 0, 0.05);\n box-shadow: 0 0 2px #fff inset, 0 1px 0 rgba(0, 0, 0, 0.05);\n\n background-clip: padding-box;\n\n -webkit-touch-callout: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n\n background-color: #e4e4e4;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#f4f4f4', GradientType=0);\n background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(20%, #f4f4f4), color-stop(50%, #f0f0f0), color-stop(52%, #e8e8e8), color-stop(100%, #eee));\n background-image: -webkit-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eee 100%);\n background-image: -moz-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eee 100%);\n background-image: linear-gradient(to bottom, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eee 100%);\n}\nhtml[dir=\"rtl\"] .select2-container-multi .select2-choices .select2-search-choice\n{\n margin: 3px 5px 3px 0;\n padding: 3px 18px 3px 5px;\n}\n.select2-container-multi .select2-choices .select2-search-choice .select2-chosen {\n cursor: default;\n}\n.select2-container-multi .select2-choices .select2-search-choice-focus {\n background: #d4d4d4;\n}\n\n.select2-search-choice-close {\n display: block;\n width: 12px;\n height: 13px;\n position: absolute;\n right: 3px;\n top: 4px;\n\n font-size: 1px;\n outline: none;\n background: url('select2.png') right top no-repeat;\n}\nhtml[dir=\"rtl\"] .select2-search-choice-close {\n right: auto;\n left: 3px;\n}\n\n.select2-container-multi .select2-search-choice-close {\n left: 3px;\n}\n\nhtml[dir=\"rtl\"] .select2-container-multi .select2-search-choice-close {\n left: auto;\n right: 2px;\n}\n\n.select2-container-multi .select2-choices .select2-search-choice .select2-search-choice-close:hover {\n background-position: right -11px;\n}\n.select2-container-multi .select2-choices .select2-search-choice-focus .select2-search-choice-close {\n background-position: right -11px;\n}\n\n/* disabled styles */\n.select2-container-multi.select2-container-disabled .select2-choices {\n background-color: #f4f4f4;\n background-image: none;\n border: 1px solid #ddd;\n cursor: default;\n}\n\n.select2-container-multi.select2-container-disabled .select2-choices .select2-search-choice {\n padding: 3px 5px 3px 5px;\n border: 1px solid #ddd;\n background-image: none;\n background-color: #f4f4f4;\n}\n\n.select2-container-multi.select2-container-disabled .select2-choices .select2-search-choice .select2-search-choice-close { display: none;\n background: none;\n}\n/* end multiselect */\n\n\n.select2-result-selectable .select2-match,\n.select2-result-unselectable .select2-match {\n text-decoration: underline;\n}\n\n.select2-offscreen, .select2-offscreen:focus {\n clip: rect(0 0 0 0) !important;\n width: 1px !important;\n height: 1px !important;\n border: 0 !important;\n margin: 0 !important;\n padding: 0 !important;\n overflow: hidden !important;\n position: absolute !important;\n outline: 0 !important;\n left: 0px !important;\n top: 0px !important;\n}\n\n.select2-display-none {\n display: none;\n}\n\n.select2-measure-scrollbar {\n position: absolute;\n top: -10000px;\n left: -10000px;\n width: 100px;\n height: 100px;\n overflow: scroll;\n}\n\n/* Retina-ize icons */\n\n@media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (min-resolution: 2dppx) {\n .select2-search input,\n .select2-search-choice-close,\n .select2-container .select2-choice abbr,\n .select2-container .select2-choice .select2-arrow b {\n background-image: url('select2x2.png') !important;\n background-repeat: no-repeat !important;\n background-size: 60px 40px !important;\n }\n\n .select2-search input {\n background-position: 100% -21px !important;\n }\n}\n"],sourceRoot:""}]);const g=d},86140:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var i=n(71354),o=n.n(i),r=n(76314),s=n.n(r)()(o());s.push([t.id,'/**\n * Strengthify - show the weakness of a password (uses zxcvbn for this)\n * https://github.com/MorrisJobke/strengthify\n * Version: 0.5.9\n * License: The MIT License (MIT)\n * Copyright (c) 2013-2020 Morris Jobke \n */\n\n.strengthify-wrapper {\n position: relative;\n}\n\n.strengthify-wrapper > * {\n\t-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";\n\tfilter: alpha(opacity=0);\n\topacity: 0;\n\t-webkit-transition:all .5s ease-in-out;\n\t-moz-transition:all .5s ease-in-out;\n\ttransition:all .5s ease-in-out;\n}\n\n.strengthify-bg, .strengthify-container, .strengthify-separator {\n\theight: 3px;\n}\n\n.strengthify-bg, .strengthify-container {\n\tdisplay: block;\n\tposition: absolute;\n\twidth: 100%;\n}\n\n.strengthify-bg {\n\tbackground-color: #BBB;\n}\n\n.strengthify-separator {\n\tdisplay: inline-block;\n\tposition: absolute;\n\tbackground-color: #FFF;\n\twidth: 1px;\n\tz-index: 10;\n}\n\n.password-bad {\n\tbackground-color: #C33;\n}\n.password-medium {\n\tbackground-color: #F80;\n}\n.password-good {\n\tbackground-color: #3C3;\n}\n\ndiv[data-strengthifyMessage] {\n padding: 3px 8px;\n}\n\n.strengthify-tiles{\n\tfloat: right;\n}\n',"",{version:3,sources:["webpack://./node_modules/strengthify/strengthify.css"],names:[],mappings:"AAAA;;;;;;EAME;;AAEF;IACI,kBAAkB;AACtB;;AAEA;CACC,+DAA+D;CAC/D,wBAAwB;CACxB,UAAU;CACV,sCAAsC;CACtC,mCAAmC;CACnC,8BAA8B;AAC/B;;AAEA;CACC,WAAW;AACZ;;AAEA;CACC,cAAc;CACd,kBAAkB;CAClB,WAAW;AACZ;;AAEA;CACC,sBAAsB;AACvB;;AAEA;CACC,qBAAqB;CACrB,kBAAkB;CAClB,sBAAsB;CACtB,UAAU;CACV,WAAW;AACZ;;AAEA;CACC,sBAAsB;AACvB;AACA;CACC,sBAAsB;AACvB;AACA;CACC,sBAAsB;AACvB;;AAEA;IACI,gBAAgB;AACpB;;AAEA;CACC,YAAY;AACb",sourcesContent:['/**\n * Strengthify - show the weakness of a password (uses zxcvbn for this)\n * https://github.com/MorrisJobke/strengthify\n * Version: 0.5.9\n * License: The MIT License (MIT)\n * Copyright (c) 2013-2020 Morris Jobke \n */\n\n.strengthify-wrapper {\n position: relative;\n}\n\n.strengthify-wrapper > * {\n\t-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";\n\tfilter: alpha(opacity=0);\n\topacity: 0;\n\t-webkit-transition:all .5s ease-in-out;\n\t-moz-transition:all .5s ease-in-out;\n\ttransition:all .5s ease-in-out;\n}\n\n.strengthify-bg, .strengthify-container, .strengthify-separator {\n\theight: 3px;\n}\n\n.strengthify-bg, .strengthify-container {\n\tdisplay: block;\n\tposition: absolute;\n\twidth: 100%;\n}\n\n.strengthify-bg {\n\tbackground-color: #BBB;\n}\n\n.strengthify-separator {\n\tdisplay: inline-block;\n\tposition: absolute;\n\tbackground-color: #FFF;\n\twidth: 1px;\n\tz-index: 10;\n}\n\n.password-bad {\n\tbackground-color: #C33;\n}\n.password-medium {\n\tbackground-color: #F80;\n}\n.password-good {\n\tbackground-color: #3C3;\n}\n\ndiv[data-strengthifyMessage] {\n padding: 3px 8px;\n}\n\n.strengthify-tiles{\n\tfloat: right;\n}\n'],sourceRoot:""}]);const a=s},49481:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var i=n(71354),o=n.n(i),r=n(76314),s=n.n(r)()(o());s.push([t.id,".account-menu-entry__icon[data-v-2e0a74a6]{height:16px;width:16px;margin:calc((var(--default-clickable-area) - 16px)/2);filter:var(--background-invert-if-dark)}.account-menu-entry__icon--active[data-v-2e0a74a6]{filter:var(--primary-invert-if-dark)}.account-menu-entry[data-v-2e0a74a6] .list-item-content__main{width:fit-content}","",{version:3,sources:["webpack://./core/src/components/AccountMenu/AccountMenuEntry.vue"],names:[],mappings:"AAEC,2CACC,WAAA,CACA,UAAA,CACA,qDAAA,CACA,uCAAA,CAEA,mDACC,oCAAA,CAIF,8DACC,iBAAA",sourcesContent:["\n.account-menu-entry {\n\t&__icon {\n\t\theight: 16px;\n\t\twidth: 16px;\n\t\tmargin: calc((var(--default-clickable-area) - 16px) / 2); // 16px icon size\n\t\tfilter: var(--background-invert-if-dark);\n\n\t\t&--active {\n\t\t\tfilter: var(--primary-invert-if-dark);\n\t\t}\n\t}\n\n\t:deep(.list-item-content__main) {\n\t\twidth: fit-content;\n\t}\n}\n"],sourceRoot:""}]);const a=s},26652:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var i=n(71354),o=n.n(i),r=n(76314),s=n.n(r)()(o());s.push([t.id,".app-menu[data-v-7661a89b]{--app-menu-entry-growth: calc(var(--default-grid-baseline) * 4);display:flex;flex:1 1;width:0}.app-menu__list[data-v-7661a89b]{display:flex;flex-wrap:nowrap;margin-inline:calc(var(--app-menu-entry-growth)/2)}.app-menu__overflow[data-v-7661a89b]{margin-block:auto}.app-menu__overflow[data-v-7661a89b] .button-vue--vue-tertiary{opacity:.7;margin:3px;filter:var(--background-image-invert-if-bright)}.app-menu__overflow[data-v-7661a89b] .button-vue--vue-tertiary:not([aria-expanded=true]){color:var(--color-background-plain-text)}.app-menu__overflow[data-v-7661a89b] .button-vue--vue-tertiary:not([aria-expanded=true]):hover{opacity:1;background-color:rgba(0,0,0,0) !important}.app-menu__overflow[data-v-7661a89b] .button-vue--vue-tertiary:focus-visible{opacity:1;outline:none !important}.app-menu__overflow-entry[data-v-7661a89b] .action-link__icon{filter:var(--background-invert-if-bright) !important}","",{version:3,sources:["webpack://./core/src/components/AppMenu.vue"],names:[],mappings:"AACA,2BAEC,+DAAA,CACA,YAAA,CACA,QAAA,CACA,OAAA,CAEA,iCACC,YAAA,CACA,gBAAA,CACA,kDAAA,CAGD,qCACC,iBAAA,CAGA,+DACC,UAAA,CACA,UAAA,CACA,+CAAA,CAGA,yFACC,wCAAA,CAEA,+FACC,SAAA,CACA,yCAAA,CAIF,6EACC,SAAA,CACA,uBAAA,CAMF,8DAEC,oDAAA",sourcesContent:['\n.app-menu {\n\t// The size the currently focussed entry will grow to show the full name\n\t--app-menu-entry-growth: calc(var(--default-grid-baseline) * 4);\n\tdisplay: flex;\n\tflex: 1 1;\n\twidth: 0;\n\n\t&__list {\n\t\tdisplay: flex;\n\t\tflex-wrap: nowrap;\n\t\tmargin-inline: calc(var(--app-menu-entry-growth) / 2);\n\t}\n\n\t&__overflow {\n\t\tmargin-block: auto;\n\n\t\t// Adjust the overflow NcActions styles as they are directly rendered on the background\n\t\t:deep(.button-vue--vue-tertiary) {\n\t\t\topacity: .7;\n\t\t\tmargin: 3px;\n\t\t\tfilter: var(--background-image-invert-if-bright);\n\n\t\t\t/* Remove all background and align text color if not expanded */\n\t\t\t&:not([aria-expanded="true"]) {\n\t\t\t\tcolor: var(--color-background-plain-text);\n\n\t\t\t\t&:hover {\n\t\t\t\t\topacity: 1;\n\t\t\t\t\tbackground-color: transparent !important;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t&:focus-visible {\n\t\t\t\topacity: 1;\n\t\t\t\toutline: none !important;\n\t\t\t}\n\t\t}\n\t}\n\n\t&__overflow-entry {\n\t\t:deep(.action-link__icon) {\n\t\t\t// Icons are bright so invert them if bright color theme == bright background is used\n\t\t\tfilter: var(--background-invert-if-bright) !important;\n\t\t}\n\t}\n}\n'],sourceRoot:""}]);const a=s},29518:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var i=n(71354),o=n.n(i),r=n(76314),s=n.n(r)()(o());s.push([t.id,'.app-menu-entry[data-v-1c485052]{--app-menu-entry-font-size: 12px;width:var(--header-height);height:var(--header-height);position:relative}.app-menu-entry__link[data-v-1c485052]{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--color-background-plain-text);width:calc(100% - 4px);height:calc(100% - 4px);margin:2px}.app-menu-entry__label[data-v-1c485052]{opacity:0;position:absolute;font-size:var(--app-menu-entry-font-size);color:var(--color-background-plain-text);text-align:center;bottom:0;inset-inline-start:50%;top:50%;display:block;transform:translateX(-50%);max-width:100%;text-overflow:ellipsis;overflow:hidden;letter-spacing:-0.5px}.app-menu-entry__icon[data-v-1c485052]{font-size:var(--app-menu-entry-font-size)}.app-menu-entry--active .app-menu-entry__label[data-v-1c485052]{font-weight:bolder}.app-menu-entry--active[data-v-1c485052]::before{content:" ";position:absolute;pointer-events:none;border-bottom-color:var(--color-main-background);transform:translateX(-50%);width:10px;height:5px;border-radius:3px;background-color:var(--color-background-plain-text);inset-inline-start:50%;bottom:8px;display:block;transition:all var(--animation-quick) ease-in-out;opacity:1}.app-menu-entry__icon[data-v-1c485052],.app-menu-entry__label[data-v-1c485052]{transition:all var(--animation-quick) ease-in-out}.app-menu-entry:hover .app-menu-entry__label[data-v-1c485052],.app-menu-entry:focus-within .app-menu-entry__label[data-v-1c485052]{font-weight:bold}.app-menu-entry--truncated:hover .app-menu-entry__label[data-v-1c485052],.app-menu-entry--truncated:focus-within .app-menu-entry__label[data-v-1c485052]{max-width:calc(var(--header-height) + var(--app-menu-entry-growth))}.app-menu-entry--truncated:hover+.app-menu-entry .app-menu-entry__label[data-v-1c485052],.app-menu-entry--truncated:focus-within+.app-menu-entry .app-menu-entry__label[data-v-1c485052]{font-weight:normal;max-width:calc(var(--header-height) - var(--app-menu-entry-growth))}.app-menu-entry:has(+.app-menu-entry--truncated:hover) .app-menu-entry__label[data-v-1c485052],.app-menu-entry:has(+.app-menu-entry--truncated:focus-within) .app-menu-entry__label[data-v-1c485052]{font-weight:normal;max-width:calc(var(--header-height) - var(--app-menu-entry-growth))}',"",{version:3,sources:["webpack://./core/src/components/AppMenuEntry.vue"],names:[],mappings:"AACA,iCACC,gCAAA,CACA,0BAAA,CACA,2BAAA,CACA,iBAAA,CAEA,uCACC,iBAAA,CACA,YAAA,CACA,qBAAA,CACA,kBAAA,CACA,sBAAA,CAEA,wCAAA,CAEA,sBAAA,CACA,uBAAA,CACA,UAAA,CAGD,wCACC,SAAA,CACA,iBAAA,CACA,yCAAA,CAEA,wCAAA,CACA,iBAAA,CACA,QAAA,CACA,sBAAA,CACA,OAAA,CACA,aAAA,CACA,0BAAA,CACA,cAAA,CACA,sBAAA,CACA,eAAA,CACA,qBAAA,CAGD,uCACC,yCAAA,CAKA,gEACC,kBAAA,CAID,iDACC,WAAA,CACA,iBAAA,CACA,mBAAA,CACA,gDAAA,CACA,0BAAA,CACA,UAAA,CACA,UAAA,CACA,iBAAA,CACA,mDAAA,CACA,sBAAA,CACA,UAAA,CACA,aAAA,CACA,iDAAA,CACA,SAAA,CAIF,+EAEC,iDAAA,CAID,mIAEC,gBAAA,CAOA,yJACC,mEAAA,CAKA,yLACC,kBAAA,CACA,mEAAA,CAQF,qMACC,kBAAA,CACA,mEAAA",sourcesContent:['\n.app-menu-entry {\n\t--app-menu-entry-font-size: 12px;\n\twidth: var(--header-height);\n\theight: var(--header-height);\n\tposition: relative;\n\n\t&__link {\n\t\tposition: relative;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t\t// Set color as this is shown directly on the background\n\t\tcolor: var(--color-background-plain-text);\n\t\t// Make space for focus-visible outline\n\t\twidth: calc(100% - 4px);\n\t\theight: calc(100% - 4px);\n\t\tmargin: 2px;\n\t}\n\n\t&__label {\n\t\topacity: 0;\n\t\tposition: absolute;\n\t\tfont-size: var(--app-menu-entry-font-size);\n\t\t// this is shown directly on the background\n\t\tcolor: var(--color-background-plain-text);\n\t\ttext-align: center;\n\t\tbottom: 0;\n\t\tinset-inline-start: 50%;\n\t\ttop: 50%;\n\t\tdisplay: block;\n\t\ttransform: translateX(-50%);\n\t\tmax-width: 100%;\n\t\ttext-overflow: ellipsis;\n\t\toverflow: hidden;\n\t\tletter-spacing: -0.5px;\n\t}\n\n\t&__icon {\n\t\tfont-size: var(--app-menu-entry-font-size);\n\t}\n\n\t&--active {\n\t\t// When hover or focus, show the label and make it bolder than the other entries\n\t\t.app-menu-entry__label {\n\t\t\tfont-weight: bolder;\n\t\t}\n\n\t\t// When active show a line below the entry as an "active" indicator\n\t\t&::before {\n\t\t\tcontent: " ";\n\t\t\tposition: absolute;\n\t\t\tpointer-events: none;\n\t\t\tborder-bottom-color: var(--color-main-background);\n\t\t\ttransform: translateX(-50%);\n\t\t\twidth: 10px;\n\t\t\theight: 5px;\n\t\t\tborder-radius: 3px;\n\t\t\tbackground-color: var(--color-background-plain-text);\n\t\t\tinset-inline-start: 50%;\n\t\t\tbottom: 8px;\n\t\t\tdisplay: block;\n\t\t\ttransition: all var(--animation-quick) ease-in-out;\n\t\t\topacity: 1;\n\t\t}\n\t}\n\n\t&__icon,\n\t&__label {\n\t\ttransition: all var(--animation-quick) ease-in-out;\n\t}\n\n\t// Make the hovered entry bold to see that it is hovered\n\t&:hover .app-menu-entry__label,\n\t&:focus-within .app-menu-entry__label {\n\t\tfont-weight: bold;\n\t}\n\n\t// Adjust the width when an entry is focussed\n\t// The focussed / hovered entry should grow, while both neighbors need to shrink\n\t&--truncated:hover,\n\t&--truncated:focus-within {\n\t\t.app-menu-entry__label {\n\t\t\tmax-width: calc(var(--header-height) + var(--app-menu-entry-growth));\n\t\t}\n\n\t\t// The next entry needs to shrink half the growth\n\t\t+ .app-menu-entry {\n\t\t\t.app-menu-entry__label {\n\t\t\t\tfont-weight: normal;\n\t\t\t\tmax-width: calc(var(--header-height) - var(--app-menu-entry-growth));\n\t\t\t}\n\t\t}\n\t}\n\n\t// The previous entry needs to shrink half the growth\n\t&:has(+ .app-menu-entry--truncated:hover),\n\t&:has(+ .app-menu-entry--truncated:focus-within) {\n\t\t.app-menu-entry__label {\n\t\t\tfont-weight: normal;\n\t\t\tmax-width: calc(var(--header-height) - var(--app-menu-entry-growth));\n\t\t}\n\t}\n}\n'],sourceRoot:""}]);const a=s},73402:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var i=n(71354),o=n.n(i),r=n(76314),s=n.n(r)()(o());s.push([t.id,".app-menu-entry:hover .app-menu-entry__icon,.app-menu-entry:focus-within .app-menu-entry__icon,.app-menu__list:hover .app-menu-entry__icon,.app-menu__list:focus-within .app-menu-entry__icon{margin-block-end:1lh}.app-menu-entry:hover .app-menu-entry__label,.app-menu-entry:focus-within .app-menu-entry__label,.app-menu__list:hover .app-menu-entry__label,.app-menu__list:focus-within .app-menu-entry__label{opacity:1}.app-menu-entry:hover .app-menu-entry--active::before,.app-menu-entry:focus-within .app-menu-entry--active::before,.app-menu__list:hover .app-menu-entry--active::before,.app-menu__list:focus-within .app-menu-entry--active::before{opacity:0}.app-menu-entry:hover .app-menu-icon__unread,.app-menu-entry:focus-within .app-menu-icon__unread,.app-menu__list:hover .app-menu-icon__unread,.app-menu__list:focus-within .app-menu-icon__unread{opacity:0}","",{version:3,sources:["webpack://./core/src/components/AppMenuEntry.vue"],names:[],mappings:"AAOC,8LACC,oBAAA,CAID,kMACC,SAAA,CAID,sOACC,SAAA,CAGD,kMACC,SAAA",sourcesContent:["\n// Showing the label\n.app-menu-entry:hover,\n.app-menu-entry:focus-within,\n.app-menu__list:hover,\n.app-menu__list:focus-within {\n\t// Move icon up so that the name does not overflow the icon\n\t.app-menu-entry__icon {\n\t\tmargin-block-end: 1lh;\n\t}\n\n\t// Make the label visible\n\t.app-menu-entry__label {\n\t\topacity: 1;\n\t}\n\n\t// Hide indicator when the text is shown\n\t.app-menu-entry--active::before {\n\t\topacity: 0;\n\t}\n\n\t.app-menu-icon__unread {\n\t\topacity: 0;\n\t}\n}\n"],sourceRoot:""}]);const a=s},23759:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var i=n(71354),o=n.n(i),r=n(76314),s=n.n(r)()(o());s.push([t.id,".app-menu-icon[data-v-e7078f90]{box-sizing:border-box;position:relative;height:20px;width:20px}.app-menu-icon__icon[data-v-e7078f90]{transition:margin .1s ease-in-out;height:20px;width:20px;filter:var(--background-image-invert-if-bright)}.app-menu-icon__unread[data-v-e7078f90]{color:var(--color-error);position:absolute;inset-block-end:15px;inset-inline-end:-5px;transition:all .1s ease-in-out}","",{version:3,sources:["webpack://./core/src/components/AppMenuIcon.vue"],names:[],mappings:"AAIA,gCACC,qBAAA,CACA,iBAAA,CAEA,WAPW,CAQX,UARW,CAUX,sCACC,iCAAA,CACA,WAZU,CAaV,UAbU,CAcV,+CAAA,CAGD,wCACC,wBAAA,CACA,iBAAA,CAEA,oBAAA,CACA,qBAAA,CACA,8BAAA",sourcesContent:["\n$icon-size: 20px;\n$unread-indicator-size: 10px;\n\n.app-menu-icon {\n\tbox-sizing: border-box;\n\tposition: relative;\n\n\theight: $icon-size;\n\twidth: $icon-size;\n\n\t&__icon {\n\t\ttransition: margin 0.1s ease-in-out;\n\t\theight: $icon-size;\n\t\twidth: $icon-size;\n\t\tfilter: var(--background-image-invert-if-bright);\n\t}\n\n\t&__unread {\n\t\tcolor: var(--color-error);\n\t\tposition: absolute;\n\t\t// Align the dot to the top right corner of the icon\n\t\tinset-block-end: calc($icon-size + ($unread-indicator-size / -2));\n\t\tinset-inline-end: calc($unread-indicator-size / -2);\n\t\ttransition: all 0.1s ease-in-out;\n\t}\n}\n"],sourceRoot:""}]);const a=s},78811:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var i=n(71354),o=n.n(i),r=n(76314),s=n.n(r)()(o());s.push([t.id,".contact[data-v-97ebdcaa]{display:flex;position:relative;align-items:center;padding:3px;padding-inline-start:10px}.contact__action__icon[data-v-97ebdcaa]{width:20px;height:20px;padding:12px;filter:var(--background-invert-if-dark)}.contact__avatar[data-v-97ebdcaa]{display:inherit}.contact__body[data-v-97ebdcaa]{flex-grow:1;padding-inline-start:10px;margin-inline-start:10px;min-width:0}.contact__body div[data-v-97ebdcaa]{position:relative;width:100%;overflow-x:hidden;text-overflow:ellipsis;margin:-1px 0}.contact__body div[data-v-97ebdcaa]:first-of-type{margin-top:0}.contact__body div[data-v-97ebdcaa]:last-of-type{margin-bottom:0}.contact__body__last-message[data-v-97ebdcaa],.contact__body__status-message[data-v-97ebdcaa],.contact__body__email-address[data-v-97ebdcaa]{color:var(--color-text-maxcontrast)}.contact__body[data-v-97ebdcaa]:focus-visible{box-shadow:0 0 0 4px var(--color-main-background) !important;outline:2px solid var(--color-main-text) !important}.contact .other-actions[data-v-97ebdcaa]{width:16px;height:16px;cursor:pointer}.contact .other-actions img[data-v-97ebdcaa]{filter:var(--background-invert-if-dark)}.contact button.other-actions[data-v-97ebdcaa]{width:44px}.contact button.other-actions[data-v-97ebdcaa]:focus{border-color:rgba(0,0,0,0);box-shadow:0 0 0 2px var(--color-main-text)}.contact button.other-actions[data-v-97ebdcaa]:focus-visible{border-radius:var(--border-radius-pill)}.contact .menu[data-v-97ebdcaa]{top:47px;margin-inline-end:13px}.contact .popovermenu[data-v-97ebdcaa]::after{inset-inline-end:2px}","",{version:3,sources:["webpack://./core/src/components/ContactsMenu/Contact.vue"],names:[],mappings:"AACA,0BACC,YAAA,CACA,iBAAA,CACA,kBAAA,CACA,WAAA,CACA,yBAAA,CAGC,wCACC,UAAA,CACA,WAAA,CACA,YAAA,CACA,uCAAA,CAIF,kCACC,eAAA,CAGD,gCACC,WAAA,CACA,yBAAA,CACA,wBAAA,CACA,WAAA,CAEA,oCACC,iBAAA,CACA,UAAA,CACA,iBAAA,CACA,sBAAA,CACA,aAAA,CAED,kDACC,YAAA,CAED,iDACC,eAAA,CAGD,6IACC,mCAAA,CAGD,8CACC,4DAAA,CACA,mDAAA,CAIF,yCACC,UAAA,CACA,WAAA,CACA,cAAA,CAEA,6CACC,uCAAA,CAIF,+CACC,UAAA,CAEA,qDACC,0BAAA,CACA,2CAAA,CAGD,6DACC,uCAAA,CAKF,gCACC,QAAA,CACA,sBAAA,CAGD,8CACC,oBAAA",sourcesContent:["\n.contact {\n\tdisplay: flex;\n\tposition: relative;\n\talign-items: center;\n\tpadding: 3px;\n\tpadding-inline-start: 10px;\n\n\t&__action {\n\t\t&__icon {\n\t\t\twidth: 20px;\n\t\t\theight: 20px;\n\t\t\tpadding: 12px;\n\t\t\tfilter: var(--background-invert-if-dark);\n\t\t}\n\t}\n\n\t&__avatar {\n\t\tdisplay: inherit;\n\t}\n\n\t&__body {\n\t\tflex-grow: 1;\n\t\tpadding-inline-start: 10px;\n\t\tmargin-inline-start: 10px;\n\t\tmin-width: 0;\n\n\t\tdiv {\n\t\t\tposition: relative;\n\t\t\twidth: 100%;\n\t\t\toverflow-x: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t\tmargin: -1px 0;\n\t\t}\n\t\tdiv:first-of-type {\n\t\t\tmargin-top: 0;\n\t\t}\n\t\tdiv:last-of-type {\n\t\t\tmargin-bottom: 0;\n\t\t}\n\n\t\t&__last-message, &__status-message, &__email-address {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\n\t\t&:focus-visible {\n\t\t\tbox-shadow: 0 0 0 4px var(--color-main-background) !important;\n\t\t\toutline: 2px solid var(--color-main-text) !important;\n\t\t}\n\t}\n\n\t.other-actions {\n\t\twidth: 16px;\n\t\theight: 16px;\n\t\tcursor: pointer;\n\n\t\timg {\n\t\t\tfilter: var(--background-invert-if-dark);\n\t\t}\n\t}\n\n\tbutton.other-actions {\n\t\twidth: 44px;\n\n\t\t&:focus {\n\t\t\tborder-color: transparent;\n\t\t\tbox-shadow: 0 0 0 2px var(--color-main-text);\n\t\t}\n\n\t\t&:focus-visible {\n\t\t\tborder-radius: var(--border-radius-pill);\n\t\t}\n\t}\n\n\t/* actions menu */\n\t.menu {\n\t\ttop: 47px;\n\t\tmargin-inline-end: 13px;\n\t}\n\n\t.popovermenu::after {\n\t\tinset-inline-end: 2px;\n\t}\n}\n"],sourceRoot:""}]);const a=s},24454:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var i=n(71354),o=n.n(i),r=n(76314),s=n.n(r)()(o());s.push([t.id,"[data-v-a886d77a] #header-menu-user-menu{padding:0 !important}.account-menu[data-v-a886d77a] button{opacity:1 !important}.account-menu[data-v-a886d77a] button:focus-visible .account-menu__avatar{border:var(--border-width-input-focused) solid var(--color-background-plain-text)}.account-menu[data-v-a886d77a] .header-menu__content{width:fit-content !important}.account-menu__avatar[data-v-a886d77a]:hover{border:var(--border-width-input-focused) solid var(--color-background-plain-text)}.account-menu__list[data-v-a886d77a]{display:inline-flex;flex-direction:column;padding-block:var(--default-grid-baseline) 0;padding-inline:0 var(--default-grid-baseline)}.account-menu__list[data-v-a886d77a]> li{box-sizing:border-box;flex:0 1}","",{version:3,sources:["webpack://./core/src/views/AccountMenu.vue"],names:[],mappings:"AACA,yCACC,oBAAA,CAIA,sCAGC,oBAAA,CAKC,0EACC,iFAAA,CAMH,qDACC,4BAAA,CAIA,6CAEC,iFAAA,CAIF,qCACC,mBAAA,CACA,qBAAA,CACA,4CAAA,CACA,6CAAA,CAEA,yCACC,qBAAA,CAEA,QAAA",sourcesContent:['\n:deep(#header-menu-user-menu) {\n\tpadding: 0 !important;\n}\n\n.account-menu {\n\t:deep(button) {\n\t\t// Normally header menus are slightly translucent when not active\n\t\t// this is generally ok but for the avatar this is weird so fix the opacity\n\t\topacity: 1 !important;\n\n\t\t// The avatar is just the "icon" of the button\n\t\t// So we add the focus-visible manually\n\t\t&:focus-visible {\n\t\t\t.account-menu__avatar {\n\t\t\t\tborder: var(--border-width-input-focused) solid var(--color-background-plain-text);\n\t\t\t}\n\t\t}\n\t}\n\n\t// Ensure we do not wast space, as the header menu sets a default width of 350px\n\t:deep(.header-menu__content) {\n\t\twidth: fit-content !important;\n\t}\n\n\t&__avatar {\n\t\t&:hover {\n\t\t\t// Add hover styles similar to the focus-visible style\n\t\t\tborder: var(--border-width-input-focused) solid var(--color-background-plain-text);\n\t\t}\n\t}\n\n\t&__list {\n\t\tdisplay: inline-flex;\n\t\tflex-direction: column;\n\t\tpadding-block: var(--default-grid-baseline) 0;\n\t\tpadding-inline: 0 var(--default-grid-baseline);\n\n\t\t> :deep(li) {\n\t\t\tbox-sizing: border-box;\n\t\t\t// basically "fit-content"\n\t\t\tflex: 0 1;\n\t\t}\n\t}\n}\n'],sourceRoot:""}]);const a=s},38933:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var i=n(71354),o=n.n(i),r=n(76314),s=n.n(r)()(o());s.push([t.id,".contactsmenu[data-v-5cad18ba]{overflow-y:hidden}.contactsmenu__trigger-icon[data-v-5cad18ba]{color:var(--color-background-plain-text) !important}.contactsmenu__menu[data-v-5cad18ba]{display:flex;flex-direction:column;overflow:hidden;height:328px;max-height:inherit}.contactsmenu__menu label[for=contactsmenu__menu__search][data-v-5cad18ba]{font-weight:bold;font-size:19px;margin-inline-start:13px}.contactsmenu__menu__input-wrapper[data-v-5cad18ba]{padding:10px;z-index:2;top:0}.contactsmenu__menu__search[data-v-5cad18ba]{width:100%;height:34px;margin-top:0 !important}.contactsmenu__menu__content[data-v-5cad18ba]{overflow-y:auto;margin-top:10px;flex:1 1 auto}.contactsmenu__menu__content__footer[data-v-5cad18ba]{display:flex;flex-direction:column;align-items:center}.contactsmenu__menu a[data-v-5cad18ba]:focus-visible{box-shadow:inset 0 0 0 2px var(--color-main-text) !important}.contactsmenu[data-v-5cad18ba] .empty-content{margin:0 !important}","",{version:3,sources:["webpack://./core/src/views/ContactsMenu.vue"],names:[],mappings:"AACA,+BACC,iBAAA,CAEA,6CACC,mDAAA,CAGD,qCACC,YAAA,CACA,qBAAA,CACA,eAAA,CACA,YAAA,CACA,kBAAA,CAEA,2EACC,gBAAA,CACA,cAAA,CACA,wBAAA,CAGD,oDACC,YAAA,CACA,SAAA,CACA,KAAA,CAGD,6CACC,UAAA,CACA,WAAA,CACA,uBAAA,CAGD,8CACC,eAAA,CACA,eAAA,CACA,aAAA,CAEA,sDACC,YAAA,CACA,qBAAA,CACA,kBAAA,CAKD,qDACC,4DAAA,CAKH,8CACC,mBAAA",sourcesContent:['\n.contactsmenu {\n\toverflow-y: hidden;\n\n\t&__trigger-icon {\n\t\tcolor: var(--color-background-plain-text) !important;\n\t}\n\n\t&__menu {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\toverflow: hidden;\n\t\theight: calc(50px * 6 + 2px + 26px);\n\t\tmax-height: inherit;\n\n\t\tlabel[for="contactsmenu__menu__search"] {\n\t\t\tfont-weight: bold;\n\t\t\tfont-size: 19px;\n\t\t\tmargin-inline-start: 13px;\n\t\t}\n\n\t\t&__input-wrapper {\n\t\t\tpadding: 10px;\n\t\t\tz-index: 2;\n\t\t\ttop: 0;\n\t\t}\n\n\t\t&__search {\n\t\t\twidth: 100%;\n\t\t\theight: 34px;\n\t\t\tmargin-top: 0!important;\n\t\t}\n\n\t\t&__content {\n\t\t\toverflow-y: auto;\n\t\t\tmargin-top: 10px;\n\t\t\tflex: 1 1 auto;\n\n\t\t\t&__footer {\n\t\t\t\tdisplay: flex;\n\t\t\t\tflex-direction: column;\n\t\t\t\talign-items: center;\n\t\t\t}\n\t\t}\n\n\t\ta {\n\t\t\t&:focus-visible {\n\t\t\t\tbox-shadow: inset 0 0 0 2px var(--color-main-text) !important; // override rule in core/css/headers.scss #header a:focus-visible\n\t\t\t}\n\t\t}\n\t}\n\n\t:deep(.empty-content) {\n\t\tmargin: 0 !important;\n\t}\n}\n'],sourceRoot:""}]);const a=s},78112:t=>{var e=e||{};e._XML_CHAR_MAP={"<":"<",">":">","&":"&",'"':""","'":"'"},e._escapeXml=function(t){return t.replace(/[<>&"']/g,(function(t){return e._XML_CHAR_MAP[t]}))},e.Client=function(t){var e;for(e in t)this[e]=t[e]},e.Client.prototype={baseUrl:null,userName:null,password:null,xmlNamespaces:{"DAV:":"d"},propFind:function(t,e,n,i){void 0===n&&(n="0"),n=""+n,(i=i||{}).Depth=n,i["Content-Type"]="application/xml; charset=utf-8";var o,r='\n\n":r+=" \n'}return r+=" \n",r+="",this.request("PROPFIND",t,i,r).then(function(t){return"0"===n?{status:t.status,body:t.body[0],xhr:t.xhr}:{status:t.status,body:t.body,xhr:t.xhr}}.bind(this))},_renderPropSet:function(t){var n=" \n \n";for(var i in t)if(t.hasOwnProperty(i)){var o,r=this.parseClarkNotation(i),s=t[i];"d:resourcetype"!=(o=this.xmlNamespaces[r.namespace]?this.xmlNamespaces[r.namespace]+":"+r.name:"x:"+r.name+' xmlns:x="'+r.namespace+'"')&&(s=e._escapeXml(s)),n+=" <"+o+">"+s+"\n"}return(n+=" \n")+" \n"},propPatch:function(t,e,n){(n=n||{})["Content-Type"]="application/xml; charset=utf-8";var i,o='\n0){for(var n=[],i=0;i{var i=n(93633);t.exports=(i.default||i).template({1:function(t,e,n,i,o){var r,s=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return''},compiler:[8,">= 4.3.0"],main:function(t,e,n,i,o){var r,s,a=null!=e?e:t.nullContext||{},c=t.hooks.helperMissing,l="function",u=t.escapeExpression,h=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'
      • \n\t\n\t\t'+(null!=(r=h(n,"if").call(a,null!=e?h(e,"icon"):e,{name:"if",hash:{},fn:t.program(1,o,0),inverse:t.noop,data:o,loc:{start:{line:3,column:2},end:{line:3,column:41}}}))?r:"")+"\n\t\t"+u(typeof(s=null!=(s=h(n,"title")||(null!=e?h(e,"title"):e))?s:c)===l?s.call(a,{name:"title",hash:{},data:o,loc:{start:{line:4,column:8},end:{line:4,column:17}}}):s)+"\n\t\n
      • \n"},useData:!0})},99660:(t,e,n)=>{var i,o,r;!function(){"use strict";o=[n(74692)],i=function(t){t.ui=t.ui||{},t.ui.version="1.13.3";var e,n=0,i=Array.prototype.hasOwnProperty,o=Array.prototype.slice;t.cleanData=(e=t.cleanData,function(n){var i,o,r;for(r=0;null!=(o=n[r]);r++)(i=t._data(o,"events"))&&i.remove&&t(o).triggerHandler("remove");e(n)}),t.widget=function(e,n,i){var o,r,s,a={},c=e.split(".")[0],l=c+"-"+(e=e.split(".")[1]);return i||(i=n,n=t.Widget),Array.isArray(i)&&(i=t.extend.apply(null,[{}].concat(i))),t.expr.pseudos[l.toLowerCase()]=function(e){return!!t.data(e,l)},t[c]=t[c]||{},o=t[c][e],r=t[c][e]=function(t,e){if(!this||!this._createWidget)return new r(t,e);arguments.length&&this._createWidget(t,e)},t.extend(r,o,{version:i.version,_proto:t.extend({},i),_childConstructors:[]}),(s=new n).options=t.widget.extend({},s.options),t.each(i,(function(t,e){a[t]="function"==typeof e?function(){function i(){return n.prototype[t].apply(this,arguments)}function o(e){return n.prototype[t].apply(this,e)}return function(){var t,n=this._super,r=this._superApply;return this._super=i,this._superApply=o,t=e.apply(this,arguments),this._super=n,this._superApply=r,t}}():e})),r.prototype=t.widget.extend(s,{widgetEventPrefix:o&&s.widgetEventPrefix||e},a,{constructor:r,namespace:c,widgetName:e,widgetFullName:l}),o?(t.each(o._childConstructors,(function(e,n){var i=n.prototype;t.widget(i.namespace+"."+i.widgetName,r,n._proto)})),delete o._childConstructors):n._childConstructors.push(r),t.widget.bridge(e,r),r},t.widget.extend=function(e){for(var n,r,s=o.call(arguments,1),a=0,c=s.length;a",options:{classes:{},disabled:!1,create:null},_createWidget:function(e,i){i=t(i||this.defaultElement||this)[0],this.element=t(i),this.uuid=n++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},i!==this&&(t.data(i,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===i&&this.destroy()}}),this.document=t(i.style?i.ownerDocument:i.document||i),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,(function(t,n){e._removeClass(n,t)})),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,n){var i,o,r,s=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(s={},i=e.split("."),e=i.shift(),i.length){for(o=s[e]=t.widget.extend({},this.options[e]),r=0;r
        "),r=o.children()[0];return t("body").append(o),n=r.offsetWidth,o.css("overflow","scroll"),n===(i=r.offsetWidth)&&(i=o[0].clientWidth),o.remove(),e=n-i},getScrollInfo:function(e){var n=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),i=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),o="scroll"===n||"auto"===n&&e.width0?"right":"center",vertical:u<0?"top":c>0?"bottom":"middle"};pn(i(c),i(u))?h.important="horizontal":h.important="vertical",e.using.call(this,t,h)}),s.offset(t.extend(B,{using:r}))}))},t.ui.position={fit:{left:function(t,e){var i,o=e.within,r=o.isWindow?o.scrollLeft:o.offset.left,s=o.width,a=t.left-e.collisionPosition.marginLeft,c=r-a,l=a+e.collisionWidth-s-r;e.collisionWidth>s?c>0&&l<=0?(i=t.left+c+e.collisionWidth-s-r,t.left+=c-i):t.left=l>0&&c<=0?r:c>l?r+s-e.collisionWidth:r:c>0?t.left+=c:l>0?t.left-=l:t.left=n(t.left-a,t.left)},top:function(t,e){var i,o=e.within,r=o.isWindow?o.scrollTop:o.offset.top,s=e.within.height,a=t.top-e.collisionPosition.marginTop,c=r-a,l=a+e.collisionHeight-s-r;e.collisionHeight>s?c>0&&l<=0?(i=t.top+c+e.collisionHeight-s-r,t.top+=c-i):t.top=l>0&&c<=0?r:c>l?r+s-e.collisionHeight:r:c>0?t.top+=c:l>0?t.top-=l:t.top=n(t.top-a,t.top)}},flip:{left:function(t,e){var n,o,r=e.within,s=r.offset.left+r.scrollLeft,a=r.width,c=r.isWindow?r.scrollLeft:r.offset.left,l=t.left-e.collisionPosition.marginLeft,u=l-c,h=l+e.collisionWidth-a-c,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,A=-2*e.offset[0];u<0?((n=t.left+d+p+A+e.collisionWidth-a-s)<0||n0&&((o=t.left-e.collisionPosition.marginLeft+d+p+A-c)>0||i(o)0&&((n=t.top-e.collisionPosition.marginTop+d+p+A-c)>0||i(n)")[0],m=a.each;function b(t){return null==t?t+"":"object"==typeof t?c[l.call(t)]||"object":typeof t}function v(t,e,n){var i=A[e.type]||{};return null==t?n||!e.def?null:e.def:(t=i.floor?~~t:parseFloat(t),isNaN(t)?e.def:i.mod?(t+i.mod)%i.mod:Math.min(i.max,Math.max(0,t)))}function C(t){var e=d(),n=e._rgba=[];return t=t.toLowerCase(),m(h,(function(i,o){var r,s=o.re.exec(t),a=s&&o.parse(s),c=o.space||"rgba";if(a)return r=e[c](a),e[p[c].cache]=r[p[c].cache],n=e._rgba=r._rgba,!1})),n.length?("0,0,0,0"===n.join()&&a.extend(n,r.transparent),e):r[t]}function x(t,e,n){return 6*(n=(n+1)%1)<1?t+(e-t)*n*6:2*n<1?e:3*n<2?t+(e-t)*(2/3-n)*6:t}g.style.cssText="background-color:rgba(1,1,1,.5)",f.rgba=g.style.backgroundColor.indexOf("rgba")>-1,m(p,(function(t,e){e.cache="_"+t,e.props.alpha={idx:3,type:"percent",def:1}})),a.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),(function(t,e){c["[object "+e+"]"]=e.toLowerCase()})),d.fn=a.extend(d.prototype,{parse:function(t,e,n,i){if(void 0===t)return this._rgba=[null,null,null,null],this;(t.jquery||t.nodeType)&&(t=a(t).css(e),e=void 0);var o=this,s=b(t),c=this._rgba=[];return void 0!==e&&(t=[t,e,n,i],s="array"),"string"===s?this.parse(C(t)||r._default):"array"===s?(m(p.rgba.props,(function(e,n){c[n.idx]=v(t[n.idx],n)})),this):"object"===s?(m(p,t instanceof d?function(e,n){t[n.cache]&&(o[n.cache]=t[n.cache].slice())}:function(e,n){var i=n.cache;m(n.props,(function(e,r){if(!o[i]&&n.to){if("alpha"===e||null==t[e])return;o[i]=n.to(o._rgba)}o[i][r.idx]=v(t[e],r,!0)})),o[i]&&a.inArray(null,o[i].slice(0,3))<0&&(null==o[i][3]&&(o[i][3]=1),n.from&&(o._rgba=n.from(o[i])))}),this):void 0},is:function(t){var e=d(t),n=!0,i=this;return m(p,(function(t,o){var r,s=e[o.cache];return s&&(r=i[o.cache]||o.to&&o.to(i._rgba)||[],m(o.props,(function(t,e){if(null!=s[e.idx])return n=s[e.idx]===r[e.idx]}))),n})),n},_space:function(){var t=[],e=this;return m(p,(function(n,i){e[i.cache]&&t.push(n)})),t.pop()},transition:function(t,e){var n=d(t),i=n._space(),o=p[i],r=0===this.alpha()?d("transparent"):this,s=r[o.cache]||o.to(r._rgba),a=s.slice();return n=n[o.cache],m(o.props,(function(t,i){var o=i.idx,r=s[o],c=n[o],l=A[i.type]||{};null!==c&&(null===r?a[o]=c:(l.mod&&(c-r>l.mod/2?r+=l.mod:r-c>l.mod/2&&(r-=l.mod)),a[o]=v((c-r)*e+r,i)))})),this[i](a)},blend:function(t){if(1===this._rgba[3])return this;var e=this._rgba.slice(),n=e.pop(),i=d(t)._rgba;return d(a.map(e,(function(t,e){return(1-n)*i[e]+n*t})))},toRgbaString:function(){var t="rgba(",e=a.map(this._rgba,(function(t,e){return null!=t?t:e>2?1:0}));return 1===e[3]&&(e.pop(),t="rgb("),t+e.join()+")"},toHslaString:function(){var t="hsla(",e=a.map(this.hsla(),(function(t,e){return null==t&&(t=e>2?1:0),e&&e<3&&(t=Math.round(100*t)+"%"),t}));return 1===e[3]&&(e.pop(),t="hsl("),t+e.join()+")"},toHexString:function(t){var e=this._rgba.slice(),n=e.pop();return t&&e.push(~~(255*n)),"#"+a.map(e,(function(t){return 1===(t=(t||0).toString(16)).length?"0"+t:t})).join("")},toString:function(){return 0===this._rgba[3]?"transparent":this.toRgbaString()}}),d.fn.parse.prototype=d.fn,p.hsla.to=function(t){if(null==t[0]||null==t[1]||null==t[2])return[null,null,null,t[3]];var e,n,i=t[0]/255,o=t[1]/255,r=t[2]/255,s=t[3],a=Math.max(i,o,r),c=Math.min(i,o,r),l=a-c,u=a+c,h=.5*u;return e=c===a?0:i===a?60*(o-r)/l+360:o===a?60*(r-i)/l+120:60*(i-o)/l+240,n=0===l?0:h<=.5?l/u:l/(2-u),[Math.round(e)%360,n,h,null==s?1:s]},p.hsla.from=function(t){if(null==t[0]||null==t[1]||null==t[2])return[null,null,null,t[3]];var e=t[0]/360,n=t[1],i=t[2],o=t[3],r=i<=.5?i*(1+n):i+n-i*n,s=2*i-r;return[Math.round(255*x(s,r,e+1/3)),Math.round(255*x(s,r,e)),Math.round(255*x(s,r,e-1/3)),o]},m(p,(function(t,e){var n=e.props,i=e.cache,o=e.to,r=e.from;d.fn[t]=function(t){if(o&&!this[i]&&(this[i]=o(this._rgba)),void 0===t)return this[i].slice();var e,s=b(t),a="array"===s||"object"===s?t:arguments,c=this[i].slice();return m(n,(function(t,e){var n=a["object"===s?t:e.idx];null==n&&(n=c[e.idx]),c[e.idx]=v(n,e)})),r?((e=d(r(c)))[i]=c,e):d(c)},m(n,(function(e,n){d.fn[e]||(d.fn[e]=function(i){var o,r,s,a,c=b(i);return r=(o=this[a="alpha"===e?this._hsla?"hsla":"rgba":t]())[n.idx],"undefined"===c?r:("function"===c&&(c=b(i=i.call(this,r))),null==i&&n.empty?this:("string"===c&&(s=u.exec(i))&&(i=r+parseFloat(s[2])*("+"===s[1]?1:-1)),o[n.idx]=i,this[a](o)))})}))})),d.hook=function(t){var e=t.split(" ");m(e,(function(t,e){a.cssHooks[e]={set:function(t,n){var i,o,r="";if("transparent"!==n&&("string"!==b(n)||(i=C(n)))){if(n=d(i||n),!f.rgba&&1!==n._rgba[3]){for(o="backgroundColor"===e?t.parentNode:t;(""===r||"transparent"===r)&&o&&o.style;)try{r=a.css(o,"backgroundColor"),o=o.parentNode}catch(t){}n=n.blend(r&&"transparent"!==r?r:"_default")}n=n.toRgbaString()}try{t.style[e]=n}catch(t){}}},a.fx.step[e]=function(t){t.colorInit||(t.start=d(t.elem,e),t.end=d(t.end),t.colorInit=!0),a.cssHooks[e].set(t.elem,t.start.transition(t.end,t.pos))}}))},d.hook("backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor"),a.cssHooks.borderColor={expand:function(t){var e={};return m(["Top","Right","Bottom","Left"],(function(n,i){e["border"+i+"Color"]=t})),e}},r=a.Color.names={aqua:"#00ffff",black:"#000000",blue:"#0000ff",fuchsia:"#ff00ff",gray:"#808080",green:"#008000",lime:"#00ff00",maroon:"#800000",navy:"#000080",olive:"#808000",purple:"#800080",red:"#ff0000",silver:"#c0c0c0",teal:"#008080",white:"#ffffff",yellow:"#ffff00",transparent:[null,null,null,0],_default:"#ffffff"};var w,y,k="ui-effects-",B="ui-effects-style",E="ui-effects-animated";if(t.effects={effect:{}},function(){var e=["add","remove","toggle"],n={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};function i(t){var e,n,i,o=t.ownerDocument.defaultView?t.ownerDocument.defaultView.getComputedStyle(t,null):t.currentStyle,r={};if(o&&o.length&&o[0]&&o[o[0]])for(n=o.length;n--;)"string"==typeof o[e=o[n]]&&(r[(i=e,i.replace(/-([\da-z])/gi,(function(t,e){return e.toUpperCase()})))]=o[e]);else for(e in o)"string"==typeof o[e]&&(r[e]=o[e]);return r}t.each(["borderLeftStyle","borderRightStyle","borderBottomStyle","borderTopStyle"],(function(e,n){t.fx.step[n]=function(t){("none"!==t.end&&!t.setAttr||1===t.pos&&!t.setAttr)&&(a.style(t.elem,n,t.end),t.setAttr=!0)}})),t.fn.addBack||(t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.effects.animateClass=function(o,r,s,a){var c=t.speed(r,s,a);return this.queue((function(){var r,s=t(this),a=s.attr("class")||"",l=c.children?s.find("*").addBack():s;l=l.map((function(){return{el:t(this),start:i(this)}})),(r=function(){t.each(e,(function(t,e){o[e]&&s[e+"Class"](o[e])}))})(),l=l.map((function(){return this.end=i(this.el[0]),this.diff=function(e,i){var o,r,s={};for(o in i)r=i[o],e[o]!==r&&(n[o]||!t.fx.step[o]&&isNaN(parseFloat(r))||(s[o]=r));return s}(this.start,this.end),this})),s.attr("class",a),l=l.map((function(){var e=this,n=t.Deferred(),i=t.extend({},c,{queue:!1,complete:function(){n.resolve(e)}});return this.el.animate(this.diff,i),n.promise()})),t.when.apply(t,l.get()).done((function(){r(),t.each(arguments,(function(){var e=this.el;t.each(this.diff,(function(t){e.css(t,"")}))})),c.complete.call(s[0])}))}))},t.fn.extend({addClass:function(e){return function(n,i,o,r){return i?t.effects.animateClass.call(this,{add:n},i,o,r):e.apply(this,arguments)}}(t.fn.addClass),removeClass:function(e){return function(n,i,o,r){return arguments.length>1?t.effects.animateClass.call(this,{remove:n},i,o,r):e.apply(this,arguments)}}(t.fn.removeClass),toggleClass:function(e){return function(n,i,o,r,s){return"boolean"==typeof i||void 0===i?o?t.effects.animateClass.call(this,i?{add:n}:{remove:n},o,r,s):e.apply(this,arguments):t.effects.animateClass.call(this,{toggle:n},i,o,r)}}(t.fn.toggleClass),switchClass:function(e,n,i,o,r){return t.effects.animateClass.call(this,{add:n,remove:e},i,o,r)}})}(),function(){function e(e,n,i,o){return t.isPlainObject(e)&&(n=e,e=e.effect),e={effect:e},null==n&&(n={}),"function"==typeof n&&(o=n,i=null,n={}),("number"==typeof n||t.fx.speeds[n])&&(o=i,i=n,n={}),"function"==typeof i&&(o=i,i=null),n&&t.extend(e,n),i=i||n.duration,e.duration=t.fx.off?0:"number"==typeof i?i:i in t.fx.speeds?t.fx.speeds[i]:t.fx.speeds._default,e.complete=o||n.complete,e}function n(e){return!(e&&"number"!=typeof e&&!t.fx.speeds[e])||"string"==typeof e&&!t.effects.effect[e]||"function"==typeof e||"object"==typeof e&&!e.effect}function i(t,e){var n=e.outerWidth(),i=e.outerHeight(),o=/^rect\((-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto)\)$/.exec(t)||["",0,n,i,0];return{top:parseFloat(o[1])||0,right:"auto"===o[2]?n:parseFloat(o[2]),bottom:"auto"===o[3]?i:parseFloat(o[3]),left:parseFloat(o[4])||0}}t.expr&&t.expr.pseudos&&t.expr.pseudos.animated&&(t.expr.pseudos.animated=function(e){return function(n){return!!t(n).data(E)||e(n)}}(t.expr.pseudos.animated)),!1!==t.uiBackCompat&&t.extend(t.effects,{save:function(t,e){for(var n=0,i=e.length;n
        ").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),o={width:e.width(),height:e.height()},r=document.activeElement;try{r.id}catch(t){r=document.body}return e.wrap(i),(e[0]===r||t.contains(e[0],r))&&t(r).trigger("focus"),i=e.parent(),"static"===e.css("position")?(i.css({position:"relative"}),e.css({position:"relative"})):(t.extend(n,{position:e.css("position"),zIndex:e.css("z-index")}),t.each(["top","left","bottom","right"],(function(t,i){n[i]=e.css(i),isNaN(parseInt(n[i],10))&&(n[i]="auto")})),e.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),e.css(o),i.css(n).show()},removeWrapper:function(e){var n=document.activeElement;return e.parent().is(".ui-effects-wrapper")&&(e.parent().replaceWith(e),(e[0]===n||t.contains(e[0],n))&&t(n).trigger("focus")),e}}),t.extend(t.effects,{version:"1.13.3",define:function(e,n,i){return i||(i=n,n="effect"),t.effects.effect[e]=i,t.effects.effect[e].mode=n,i},scaledDimensions:function(t,e,n){if(0===e)return{height:0,width:0,outerHeight:0,outerWidth:0};var i="horizontal"!==n?(e||100)/100:1,o="vertical"!==n?(e||100)/100:1;return{height:t.height()*o,width:t.width()*i,outerHeight:t.outerHeight()*o,outerWidth:t.outerWidth()*i}},clipToBox:function(t){return{width:t.clip.right-t.clip.left,height:t.clip.bottom-t.clip.top,left:t.clip.left,top:t.clip.top}},unshift:function(t,e,n){var i=t.queue();e>1&&i.splice.apply(i,[1,0].concat(i.splice(e,n))),t.dequeue()},saveStyle:function(t){t.data(B,t[0].style.cssText)},restoreStyle:function(t){t[0].style.cssText=t.data(B)||"",t.removeData(B)},mode:function(t,e){var n=t.is(":hidden");return"toggle"===e&&(e=n?"show":"hide"),(n?"hide"===e:"show"===e)&&(e="none"),e},getBaseline:function(t,e){var n,i;switch(t[0]){case"top":n=0;break;case"middle":n=.5;break;case"bottom":n=1;break;default:n=t[0]/e.height}switch(t[1]){case"left":i=0;break;case"center":i=.5;break;case"right":i=1;break;default:i=t[1]/e.width}return{x:i,y:n}},createPlaceholder:function(e){var n,i=e.css("position"),o=e.position();return e.css({marginTop:e.css("marginTop"),marginBottom:e.css("marginBottom"),marginLeft:e.css("marginLeft"),marginRight:e.css("marginRight")}).outerWidth(e.outerWidth()).outerHeight(e.outerHeight()),/^(static|relative)/.test(i)&&(i="absolute",n=t("<"+e[0].nodeName+">").insertAfter(e).css({display:/^(inline|ruby)/.test(e.css("display"))?"inline-block":"block",visibility:"hidden",marginTop:e.css("marginTop"),marginBottom:e.css("marginBottom"),marginLeft:e.css("marginLeft"),marginRight:e.css("marginRight"),float:e.css("float")}).outerWidth(e.outerWidth()).outerHeight(e.outerHeight()).addClass("ui-effects-placeholder"),e.data(k+"placeholder",n)),e.css({position:i,left:o.left,top:o.top}),n},removePlaceholder:function(t){var e=k+"placeholder",n=t.data(e);n&&(n.remove(),t.removeData(e))},cleanUp:function(e){t.effects.restoreStyle(e),t.effects.removePlaceholder(e)},setTransition:function(e,n,i,o){return o=o||{},t.each(n,(function(t,n){var r=e.cssUnit(n);r[0]>0&&(o[n]=r[0]*i+r[1])})),o}}),t.fn.extend({effect:function(){var n=e.apply(this,arguments),i=t.effects.effect[n.effect],o=i.mode,r=n.queue,s=r||"fx",a=n.complete,c=n.mode,l=[],u=function(e){var n=t(this),i=t.effects.mode(n,c)||o;n.data(E,!0),l.push(i),o&&("show"===i||i===o&&"hide"===i)&&n.show(),o&&"none"===i||t.effects.saveStyle(n),"function"==typeof e&&e()};if(t.fx.off||!i)return c?this[c](n.duration,a):this.each((function(){a&&a.call(this)}));function h(e){var r=t(this);function s(){"function"==typeof a&&a.call(r[0]),"function"==typeof e&&e()}n.mode=l.shift(),!1===t.uiBackCompat||o?"none"===n.mode?(r[c](),s()):i.call(r[0],n,(function(){r.removeData(E),t.effects.cleanUp(r),"hide"===n.mode&&r.hide(),s()})):(r.is(":hidden")?"hide"===c:"show"===c)?(r[c](),s()):i.call(r[0],n,s)}return!1===r?this.each(u).each(h):this.queue(s,u).queue(s,h)},show:function(t){return function(i){if(n(i))return t.apply(this,arguments);var o=e.apply(this,arguments);return o.mode="show",this.effect.call(this,o)}}(t.fn.show),hide:function(t){return function(i){if(n(i))return t.apply(this,arguments);var o=e.apply(this,arguments);return o.mode="hide",this.effect.call(this,o)}}(t.fn.hide),toggle:function(t){return function(i){if(n(i)||"boolean"==typeof i)return t.apply(this,arguments);var o=e.apply(this,arguments);return o.mode="toggle",this.effect.call(this,o)}}(t.fn.toggle),cssUnit:function(e){var n=this.css(e),i=[];return t.each(["em","px","%","pt"],(function(t,e){n.indexOf(e)>0&&(i=[parseFloat(n),e])})),i},cssClip:function(t){return t?this.css("clip","rect("+t.top+"px "+t.right+"px "+t.bottom+"px "+t.left+"px)"):i(this.css("clip"),this)},transfer:function(e,n){var i=t(this),o=t(e.to),r="fixed"===o.css("position"),s=t("body"),a=r?s.scrollTop():0,c=r?s.scrollLeft():0,l=o.offset(),u={top:l.top-a,left:l.left-c,height:o.innerHeight(),width:o.innerWidth()},h=i.offset(),d=t("
        ");d.appendTo("body").addClass(e.className).css({top:h.top-a,left:h.left-c,height:i.innerHeight(),width:i.innerWidth(),position:r?"fixed":"absolute"}).animate(u,e.duration,e.easing,(function(){d.remove(),"function"==typeof n&&n()}))}}),t.fx.step.clip=function(e){e.clipInit||(e.start=t(e.elem).cssClip(),"string"==typeof e.end&&(e.end=i(e.end,e.elem)),e.clipInit=!0),t(e.elem).cssClip({top:e.pos*(e.end.top-e.start.top)+e.start.top,right:e.pos*(e.end.right-e.start.right)+e.start.right,bottom:e.pos*(e.end.bottom-e.start.bottom)+e.start.bottom,left:e.pos*(e.end.left-e.start.left)+e.start.left})}}(),w={},t.each(["Quad","Cubic","Quart","Quint","Expo"],(function(t,e){w[e]=function(e){return Math.pow(e,t+2)}})),t.extend(w,{Sine:function(t){return 1-Math.cos(t*Math.PI/2)},Circ:function(t){return 1-Math.sqrt(1-t*t)},Elastic:function(t){return 0===t||1===t?t:-Math.pow(2,8*(t-1))*Math.sin((80*(t-1)-7.5)*Math.PI/15)},Back:function(t){return t*t*(3*t-2)},Bounce:function(t){for(var e,n=4;t<((e=Math.pow(2,--n))-1)/11;);return 1/Math.pow(4,3-n)-7.5625*Math.pow((3*e-2)/22-t,2)}}),t.each(w,(function(e,n){t.easing["easeIn"+e]=n,t.easing["easeOut"+e]=function(t){return 1-n(1-t)},t.easing["easeInOut"+e]=function(t){return t<.5?n(2*t)/2:1-n(-2*t+2)/2}})),t.effects,t.effects.define("blind","hide",(function(e,n){var i={up:["bottom","top"],vertical:["bottom","top"],down:["top","bottom"],left:["right","left"],horizontal:["right","left"],right:["left","right"]},o=t(this),r=e.direction||"up",s=o.cssClip(),a={clip:t.extend({},s)},c=t.effects.createPlaceholder(o);a.clip[i[r][0]]=a.clip[i[r][1]],"show"===e.mode&&(o.cssClip(a.clip),c&&c.css(t.effects.clipToBox(a)),a.clip=s),c&&c.animate(t.effects.clipToBox(a),e.duration,e.easing),o.animate(a,{queue:!1,duration:e.duration,easing:e.easing,complete:n})})),t.effects.define("bounce",(function(e,n){var i,o,r,s=t(this),a=e.mode,c="hide"===a,l="show"===a,u=e.direction||"up",h=e.distance,d=e.times||5,p=2*d+(l||c?1:0),A=e.duration/p,f=e.easing,g="up"===u||"down"===u?"top":"left",m="up"===u||"left"===u,b=0,v=s.queue().length;for(t.effects.createPlaceholder(s),r=s.css(g),h||(h=s["top"===g?"outerHeight":"outerWidth"]()/3),l&&((o={opacity:1})[g]=r,s.css("opacity",0).css(g,m?2*-h:2*h).animate(o,A,f)),c&&(h/=Math.pow(2,d-1)),(o={})[g]=r;b
        ").css({position:"absolute",visibility:"visible",left:-o*A,top:-i*f}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:A,height:f,left:r+(d?a*A:0),top:s+(d?c*f:0),opacity:d?0:1}).animate({left:r+(d?0:a*A),top:s+(d?0:c*f),opacity:d?1:0},e.duration||500,e.easing,m)})),t.effects.define("fade","toggle",(function(e,n){var i="show"===e.mode;t(this).css("opacity",i?0:1).animate({opacity:i?1:0},{queue:!1,duration:e.duration,easing:e.easing,complete:n})})),t.effects.define("fold","hide",(function(e,n){var i=t(this),o=e.mode,r="show"===o,s="hide"===o,a=e.size||15,c=/([0-9]+)%/.exec(a),l=e.horizFirst?["right","bottom"]:["bottom","right"],u=e.duration/2,h=t.effects.createPlaceholder(i),d=i.cssClip(),p={clip:t.extend({},d)},A={clip:t.extend({},d)},f=[d[l[0]],d[l[1]]],g=i.queue().length;c&&(a=parseInt(c[1],10)/100*f[s?0:1]),p.clip[l[0]]=a,A.clip[l[0]]=a,A.clip[l[1]]=0,r&&(i.cssClip(A.clip),h&&h.css(t.effects.clipToBox(A)),A.clip=d),i.queue((function(n){h&&h.animate(t.effects.clipToBox(p),u,e.easing).animate(t.effects.clipToBox(A),u,e.easing),n()})).animate(p,u,e.easing).animate(A,u,e.easing).queue(n),t.effects.unshift(i,g,4)})),t.effects.define("highlight","show",(function(e,n){var i=t(this),o={backgroundColor:i.css("backgroundColor")};"hide"===e.mode&&(o.opacity=0),t.effects.saveStyle(i),i.css({backgroundImage:"none",backgroundColor:e.color||"#ffff99"}).animate(o,{queue:!1,duration:e.duration,easing:e.easing,complete:n})})),t.effects.define("size",(function(e,n){var i,o,r,s=t(this),a=["fontSize"],c=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],l=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],u=e.mode,h="effect"!==u,d=e.scale||"both",p=e.origin||["middle","center"],A=s.css("position"),f=s.position(),g=t.effects.scaledDimensions(s),m=e.from||g,b=e.to||t.effects.scaledDimensions(s,0);t.effects.createPlaceholder(s),"show"===u&&(r=m,m=b,b=r),o={from:{y:m.height/g.height,x:m.width/g.width},to:{y:b.height/g.height,x:b.width/g.width}},"box"!==d&&"both"!==d||(o.from.y!==o.to.y&&(m=t.effects.setTransition(s,c,o.from.y,m),b=t.effects.setTransition(s,c,o.to.y,b)),o.from.x!==o.to.x&&(m=t.effects.setTransition(s,l,o.from.x,m),b=t.effects.setTransition(s,l,o.to.x,b))),"content"!==d&&"both"!==d||o.from.y!==o.to.y&&(m=t.effects.setTransition(s,a,o.from.y,m),b=t.effects.setTransition(s,a,o.to.y,b)),p&&(i=t.effects.getBaseline(p,g),m.top=(g.outerHeight-m.outerHeight)*i.y+f.top,m.left=(g.outerWidth-m.outerWidth)*i.x+f.left,b.top=(g.outerHeight-b.outerHeight)*i.y+f.top,b.left=(g.outerWidth-b.outerWidth)*i.x+f.left),delete m.outerHeight,delete m.outerWidth,s.css(m),"content"!==d&&"both"!==d||(c=c.concat(["marginTop","marginBottom"]).concat(a),l=l.concat(["marginLeft","marginRight"]),s.find("*[width]").each((function(){var n=t(this),i=t.effects.scaledDimensions(n),r={height:i.height*o.from.y,width:i.width*o.from.x,outerHeight:i.outerHeight*o.from.y,outerWidth:i.outerWidth*o.from.x},s={height:i.height*o.to.y,width:i.width*o.to.x,outerHeight:i.height*o.to.y,outerWidth:i.width*o.to.x};o.from.y!==o.to.y&&(r=t.effects.setTransition(n,c,o.from.y,r),s=t.effects.setTransition(n,c,o.to.y,s)),o.from.x!==o.to.x&&(r=t.effects.setTransition(n,l,o.from.x,r),s=t.effects.setTransition(n,l,o.to.x,s)),h&&t.effects.saveStyle(n),n.css(r),n.animate(s,e.duration,e.easing,(function(){h&&t.effects.restoreStyle(n)}))}))),s.animate(b,{queue:!1,duration:e.duration,easing:e.easing,complete:function(){var e=s.offset();0===b.opacity&&s.css("opacity",m.opacity),h||(s.css("position","static"===A?"relative":A).offset(e),t.effects.saveStyle(s)),n()}})})),t.effects.define("scale",(function(e,n){var i=t(this),o=e.mode,r=parseInt(e.percent,10)||(0===parseInt(e.percent,10)||"effect"!==o?0:100),s=t.extend(!0,{from:t.effects.scaledDimensions(i),to:t.effects.scaledDimensions(i,r,e.direction||"both"),origin:e.origin||["middle","center"]},e);e.fade&&(s.from.opacity=1,s.to.opacity=0),t.effects.effect.size.call(this,s,n)})),t.effects.define("puff","hide",(function(e,n){var i=t.extend(!0,{},e,{fade:!0,percent:parseInt(e.percent,10)||150});t.effects.effect.scale.call(this,i,n)})),t.effects.define("pulsate","show",(function(e,n){var i=t(this),o=e.mode,r="show"===o,s=r||"hide"===o,a=2*(e.times||5)+(s?1:0),c=e.duration/a,l=0,u=1,h=i.queue().length;for(!r&&i.is(":visible")||(i.css("opacity",0).show(),l=1);u0&&r.is(":visible")):(/^(input|select|textarea|button|object)$/.test(c)?(s=!e.disabled)&&(a=t(e).closest("fieldset")[0])&&(s=!a.disabled):s="a"===c&&e.href||n,s&&t(e).is(":visible")&&function(t){for(var e=t.css("visibility");"inherit"===e;)e=(t=t.parent()).css("visibility");return"visible"===e}(t(e)))},t.extend(t.expr.pseudos,{focusable:function(e){return t.ui.focusable(e,null!=t.attr(e,"tabindex"))}}),t.ui.focusable,t.fn._form=function(){return"string"==typeof this[0].form?this.closest("form"):t(this[0].form)},t.ui.formResetMixin={_formResetHandler:function(){var e=t(this);setTimeout((function(){var n=e.data("ui-form-reset-instances");t.each(n,(function(){this.refresh()}))}))},_bindFormResetHandler:function(){if(this.form=this.element._form(),this.form.length){var t=this.form.data("ui-form-reset-instances")||[];t.length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t)}},_unbindFormResetHandler:function(){if(this.form.length){var e=this.form.data("ui-form-reset-instances");e.splice(t.inArray(this,e),1),e.length?this.form.data("ui-form-reset-instances",e):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset")}}},t.expr.pseudos||(t.expr.pseudos=t.expr[":"]),t.uniqueSort||(t.uniqueSort=t.unique),!t.escapeSelector){var _=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g,I=function(t,e){return e?"\0"===t?"�":t.slice(0,-1)+"\\"+t.charCodeAt(t.length-1).toString(16)+" ":"\\"+t};t.escapeSelector=function(t){return(t+"").replace(_,I)}}t.fn.even&&t.fn.odd||t.fn.extend({even:function(){return this.filter((function(t){return t%2==0}))},odd:function(){return this.filter((function(t){return t%2==1}))}}),t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.fn.labels=function(){var e,n,i,o,r;return this.length?this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(o=this.eq(0).parents("label"),(i=this.attr("id"))&&(r=(e=this.eq(0).parents().last()).add(e.length?e.siblings():this.siblings()),n="label[for='"+t.escapeSelector(i)+"']",o=o.add(r.find(n).addBack(n))),this.pushStack(o)):this.pushStack([])},t.fn.scrollParent=function(e){var n=this.css("position"),i="absolute"===n,o=e?/(auto|scroll|hidden)/:/(auto|scroll)/,r=this.parents().filter((function(){var e=t(this);return(!i||"static"!==e.css("position"))&&o.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))})).eq(0);return"fixed"!==n&&r.length?r:t(this[0].ownerDocument||document)},t.extend(t.expr.pseudos,{tabbable:function(e){var n=t.attr(e,"tabindex"),i=null!=n;return(!i||n>=0)&&t.ui.focusable(e,i)}}),t.fn.extend({uniqueId:(y=0,function(){return this.each((function(){this.id||(this.id="ui-id-"+ ++y)}))}),removeUniqueId:function(){return this.each((function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")}))}}),t.widget("ui.accordion",{version:"1.13.3",options:{active:0,animate:{},classes:{"ui-accordion-header":"ui-corner-top","ui-accordion-header-collapsed":"ui-corner-all","ui-accordion-content":"ui-corner-bottom"},collapsible:!1,event:"click",header:function(t){return t.find("> li > :first-child").add(t.find("> :not(li)").even())},heightStyle:"auto",icons:{activeHeader:"ui-icon-triangle-1-s",header:"ui-icon-triangle-1-e"},activate:null,beforeActivate:null},hideProps:{borderTopWidth:"hide",borderBottomWidth:"hide",paddingTop:"hide",paddingBottom:"hide",height:"hide"},showProps:{borderTopWidth:"show",borderBottomWidth:"show",paddingTop:"show",paddingBottom:"show",height:"show"},_create:function(){var e=this.options;this.prevShow=this.prevHide=t(),this._addClass("ui-accordion","ui-widget ui-helper-reset"),this.element.attr("role","tablist"),e.collapsible||!1!==e.active&&null!=e.active||(e.active=0),this._processPanels(),e.active<0&&(e.active+=this.headers.length),this._refresh()},_getCreateEventData:function(){return{header:this.active,panel:this.active.length?this.active.next():t()}},_createIcons:function(){var e,n,i=this.options.icons;i&&(e=t(""),this._addClass(e,"ui-accordion-header-icon","ui-icon "+i.header),e.prependTo(this.headers),n=this.active.children(".ui-accordion-header-icon"),this._removeClass(n,i.header)._addClass(n,null,i.activeHeader)._addClass(this.headers,"ui-accordion-icons"))},_destroyIcons:function(){this._removeClass(this.headers,"ui-accordion-icons"),this.headers.children(".ui-accordion-header-icon").remove()},_destroy:function(){var t;this.element.removeAttr("role"),this.headers.removeAttr("role aria-expanded aria-selected aria-controls tabIndex").removeUniqueId(),this._destroyIcons(),t=this.headers.next().css("display","").removeAttr("role aria-hidden aria-labelledby").removeUniqueId(),"content"!==this.options.heightStyle&&t.css("height","")},_setOption:function(t,e){"active"!==t?("event"===t&&(this.options.event&&this._off(this.headers,this.options.event),this._setupEvents(e)),this._super(t,e),"collapsible"!==t||e||!1!==this.options.active||this._activate(0),"icons"===t&&(this._destroyIcons(),e&&this._createIcons())):this._activate(e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t),this._toggleClass(null,"ui-state-disabled",!!t),this._toggleClass(this.headers.add(this.headers.next()),null,"ui-state-disabled",!!t)},_keydown:function(e){if(!e.altKey&&!e.ctrlKey){var n=t.ui.keyCode,i=this.headers.length,o=this.headers.index(e.target),r=!1;switch(e.keyCode){case n.RIGHT:case n.DOWN:r=this.headers[(o+1)%i];break;case n.LEFT:case n.UP:r=this.headers[(o-1+i)%i];break;case n.SPACE:case n.ENTER:this._eventHandler(e);break;case n.HOME:r=this.headers[0];break;case n.END:r=this.headers[i-1]}r&&(t(e.target).attr("tabIndex",-1),t(r).attr("tabIndex",0),t(r).trigger("focus"),e.preventDefault())}},_panelKeyDown:function(e){e.keyCode===t.ui.keyCode.UP&&e.ctrlKey&&t(e.currentTarget).prev().trigger("focus")},refresh:function(){var e=this.options;this._processPanels(),!1===e.active&&!0===e.collapsible||!this.headers.length?(e.active=!1,this.active=t()):!1===e.active?this._activate(0):this.active.length&&!t.contains(this.element[0],this.active[0])?this.headers.length===this.headers.find(".ui-state-disabled").length?(e.active=!1,this.active=t()):this._activate(Math.max(0,e.active-1)):e.active=this.headers.index(this.active),this._destroyIcons(),this._refresh()},_processPanels:function(){var t=this.headers,e=this.panels;"function"==typeof this.options.header?this.headers=this.options.header(this.element):this.headers=this.element.find(this.options.header),this._addClass(this.headers,"ui-accordion-header ui-accordion-header-collapsed","ui-state-default"),this.panels=this.headers.next().filter(":not(.ui-accordion-content-active)").hide(),this._addClass(this.panels,"ui-accordion-content","ui-helper-reset ui-widget-content"),e&&(this._off(t.not(this.headers)),this._off(e.not(this.panels)))},_refresh:function(){var e,n=this.options,i=n.heightStyle,o=this.element.parent();this.active=this._findActive(n.active),this._addClass(this.active,"ui-accordion-header-active","ui-state-active")._removeClass(this.active,"ui-accordion-header-collapsed"),this._addClass(this.active.next(),"ui-accordion-content-active"),this.active.next().show(),this.headers.attr("role","tab").each((function(){var e=t(this),n=e.uniqueId().attr("id"),i=e.next(),o=i.uniqueId().attr("id");e.attr("aria-controls",o),i.attr("aria-labelledby",n)})).next().attr("role","tabpanel"),this.headers.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}).next().attr({"aria-hidden":"true"}).hide(),this.active.length?this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}).next().attr({"aria-hidden":"false"}):this.headers.eq(0).attr("tabIndex",0),this._createIcons(),this._setupEvents(n.event),"fill"===i?(e=o.height(),this.element.siblings(":visible").each((function(){var n=t(this),i=n.css("position");"absolute"!==i&&"fixed"!==i&&(e-=n.outerHeight(!0))})),this.headers.each((function(){e-=t(this).outerHeight(!0)})),this.headers.next().each((function(){t(this).height(Math.max(0,e-t(this).innerHeight()+t(this).height()))})).css("overflow","auto")):"auto"===i&&(e=0,this.headers.next().each((function(){var n=t(this).is(":visible");n||t(this).show(),e=Math.max(e,t(this).css("height","").height()),n||t(this).hide()})).height(e))},_activate:function(e){var n=this._findActive(e)[0];n!==this.active[0]&&(n=n||this.active[0],this._eventHandler({target:n,currentTarget:n,preventDefault:t.noop}))},_findActive:function(e){return"number"==typeof e?this.headers.eq(e):t()},_setupEvents:function(e){var n={keydown:"_keydown"};e&&t.each(e.split(" "),(function(t,e){n[e]="_eventHandler"})),this._off(this.headers.add(this.headers.next())),this._on(this.headers,n),this._on(this.headers.next(),{keydown:"_panelKeyDown"}),this._hoverable(this.headers),this._focusable(this.headers)},_eventHandler:function(e){var n,i,o=this.options,r=this.active,s=t(e.currentTarget),a=s[0]===r[0],c=a&&o.collapsible,l=c?t():s.next(),u=r.next(),h={oldHeader:r,oldPanel:u,newHeader:c?t():s,newPanel:l};e.preventDefault(),a&&!o.collapsible||!1===this._trigger("beforeActivate",e,h)||(o.active=!c&&this.headers.index(s),this.active=a?t():s,this._toggle(h),this._removeClass(r,"ui-accordion-header-active","ui-state-active"),o.icons&&(n=r.children(".ui-accordion-header-icon"),this._removeClass(n,null,o.icons.activeHeader)._addClass(n,null,o.icons.header)),a||(this._removeClass(s,"ui-accordion-header-collapsed")._addClass(s,"ui-accordion-header-active","ui-state-active"),o.icons&&(i=s.children(".ui-accordion-header-icon"),this._removeClass(i,null,o.icons.header)._addClass(i,null,o.icons.activeHeader)),this._addClass(s.next(),"ui-accordion-content-active")))},_toggle:function(e){var n=e.newPanel,i=this.prevShow.length?this.prevShow:e.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=n,this.prevHide=i,this.options.animate?this._animate(n,i,e):(i.hide(),n.show(),this._toggleComplete(e)),i.attr({"aria-hidden":"true"}),i.prev().attr({"aria-selected":"false","aria-expanded":"false"}),n.length&&i.length?i.prev().attr({tabIndex:-1,"aria-expanded":"false"}):n.length&&this.headers.filter((function(){return 0===parseInt(t(this).attr("tabIndex"),10)})).attr("tabIndex",-1),n.attr("aria-hidden","false").prev().attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_animate:function(t,e,n){var i,o,r,s=this,a=0,c=t.css("box-sizing"),l=t.length&&(!e.length||t.index()",delay:300,options:{icons:{submenu:"ui-icon-caret-1-e"},items:"> *",menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.lastMousePosition={x:null,y:null},this.element.uniqueId().attr({role:this.options.role,tabIndex:0}),this._addClass("ui-menu","ui-widget ui-widget-content"),this._on({"mousedown .ui-menu-item":function(t){t.preventDefault(),this._activateItem(t)},"click .ui-menu-item":function(e){var n=t(e.target),i=t(t.ui.safeActiveElement(this.document[0]));!this.mouseHandled&&n.not(".ui-state-disabled").length&&(this.select(e),e.isPropagationStopped()||(this.mouseHandled=!0),n.has(".ui-menu").length?this.expand(e):!this.element.is(":focus")&&i.closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":"_activateItem","mousemove .ui-menu-item":"_activateItem",mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var n=this.active||this._menuItems().first();e||this.focus(t,n)},blur:function(e){this._delay((function(){!t.contains(this.element[0],t.ui.safeActiveElement(this.document[0]))&&this.collapseAll(e)}))},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){this._closeOnDocumentClick(t)&&this.collapseAll(t,!0),this.mouseHandled=!1}})},_activateItem:function(e){if(!this.previousFilter&&(e.clientX!==this.lastMousePosition.x||e.clientY!==this.lastMousePosition.y)){this.lastMousePosition={x:e.clientX,y:e.clientY};var n=t(e.target).closest(".ui-menu-item"),i=t(e.currentTarget);n[0]===i[0]&&(i.is(".ui-state-active")||(this._removeClass(i.siblings().children(".ui-state-active"),null,"ui-state-active"),this.focus(e,i)))}},_destroy:function(){var e=this.element.find(".ui-menu-item").removeAttr("role aria-disabled").children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(),e.children().each((function(){var e=t(this);e.data("ui-menu-submenu-caret")&&e.remove()}))},_keydown:function(e){var n,i,o,r,s=!0;switch(e.keyCode){case t.ui.keyCode.PAGE_UP:this.previousPage(e);break;case t.ui.keyCode.PAGE_DOWN:this.nextPage(e);break;case t.ui.keyCode.HOME:this._move("first","first",e);break;case t.ui.keyCode.END:this._move("last","last",e);break;case t.ui.keyCode.UP:this.previous(e);break;case t.ui.keyCode.DOWN:this.next(e);break;case t.ui.keyCode.LEFT:this.collapse(e);break;case t.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(e);break;case t.ui.keyCode.ENTER:case t.ui.keyCode.SPACE:this._activate(e);break;case t.ui.keyCode.ESCAPE:this.collapse(e);break;default:s=!1,i=this.previousFilter||"",r=!1,o=e.keyCode>=96&&e.keyCode<=105?(e.keyCode-96).toString():String.fromCharCode(e.keyCode),clearTimeout(this.filterTimer),o===i?r=!0:o=i+o,n=this._filterMenuItems(o),(n=r&&-1!==n.index(this.active.next())?this.active.nextAll(".ui-menu-item"):n).length||(o=String.fromCharCode(e.keyCode),n=this._filterMenuItems(o)),n.length?(this.focus(e,n),this.previousFilter=o,this.filterTimer=this._delay((function(){delete this.previousFilter}),1e3)):delete this.previousFilter}s&&e.preventDefault()},_activate:function(t){this.active&&!this.active.is(".ui-state-disabled")&&(this.active.children("[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var e,n,i,o,r=this,s=this.options.icons.submenu,a=this.element.find(this.options.menus);this._toggleClass("ui-menu-icons",null,!!this.element.find(".ui-icon").length),n=a.filter(":not(.ui-menu)").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each((function(){var e=t(this),n=e.prev(),i=t("").data("ui-menu-submenu-caret",!0);r._addClass(i,"ui-menu-icon","ui-icon "+s),n.attr("aria-haspopup","true").prepend(i),e.attr("aria-labelledby",n.attr("id"))})),this._addClass(n,"ui-menu","ui-widget ui-widget-content ui-front"),(e=a.add(this.element).find(this.options.items)).not(".ui-menu-item").each((function(){var e=t(this);r._isDivider(e)&&r._addClass(e,"ui-menu-divider","ui-widget-content")})),o=(i=e.not(".ui-menu-item, .ui-menu-divider")).children().not(".ui-menu").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),this._addClass(i,"ui-menu-item")._addClass(o,"ui-menu-item-wrapper"),e.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!t.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){if("icons"===t){var n=this.element.find(".ui-menu-icon");this._removeClass(n,null,this.options.icons.submenu)._addClass(n,null,e.submenu)}this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",String(t)),this._toggleClass(null,"ui-state-disabled",!!t)},focus:function(t,e){var n,i,o;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),i=this.active.children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",i.attr("id")),o=this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper"),this._addClass(o,null,"ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay((function(){this._close()}),this.delay),(n=e.children(".ui-menu")).length&&t&&/^mouse/.test(t.type)&&this._startOpening(n),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(e){var n,i,o,r,s,a;this._hasScroll()&&(n=parseFloat(t.css(this.activeMenu[0],"borderTopWidth"))||0,i=parseFloat(t.css(this.activeMenu[0],"paddingTop"))||0,o=e.offset().top-this.activeMenu.offset().top-n-i,r=this.activeMenu.scrollTop(),s=this.activeMenu.height(),a=e.outerHeight(),o<0?this.activeMenu.scrollTop(r+o):o+a>s&&this.activeMenu.scrollTop(r+o-s+a))},blur:function(t,e){e||clearTimeout(this.timer),this.active&&(this._removeClass(this.active.children(".ui-menu-item-wrapper"),null,"ui-state-active"),this._trigger("blur",t,{item:this.active}),this.active=null)},_startOpening:function(t){clearTimeout(this.timer),"true"===t.attr("aria-hidden")&&(this.timer=this._delay((function(){this._close(),this._open(t)}),this.delay))},_open:function(e){var n=t.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(e.parents(".ui-menu")).hide().attr("aria-hidden","true"),e.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(n)},collapseAll:function(e,n){clearTimeout(this.timer),this.timer=this._delay((function(){var i=n?this.element:t(e&&e.target).closest(this.element.find(".ui-menu"));i.length||(i=this.element),this._close(i),this.blur(e),this._removeClass(i.find(".ui-state-active"),null,"ui-state-active"),this.activeMenu=i}),n?0:this.delay)},_close:function(t){t||(t=this.active?this.active.parent():this.element),t.find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false")},_closeOnDocumentClick:function(e){return!t(e.target).closest(".ui-menu").length},_isDivider:function(t){return!/[^\-\u2014\u2013\s]/.test(t.text())},collapse:function(t){var e=this.active&&this.active.parent().closest(".ui-menu-item",this.element);e&&e.length&&(this._close(),this.focus(t,e))},expand:function(t){var e=this.active&&this._menuItems(this.active.children(".ui-menu")).first();e&&e.length&&(this._open(e.parent()),this._delay((function(){this.focus(t,e)})))},next:function(t){this._move("next","first",t)},previous:function(t){this._move("prev","last",t)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_menuItems:function(t){return(t||this.element).find(this.options.items).filter(".ui-menu-item")},_move:function(t,e,n){var i;this.active&&(i="first"===t||"last"===t?this.active["first"===t?"prevAll":"nextAll"](".ui-menu-item").last():this.active[t+"All"](".ui-menu-item").first()),i&&i.length&&this.active||(i=this._menuItems(this.activeMenu)[e]()),this.focus(n,i)},nextPage:function(e){var n,i,o;this.active?this.isLastItem()||(this._hasScroll()?(i=this.active.offset().top,o=this.element.innerHeight(),0===t.fn.jquery.indexOf("3.2.")&&(o+=this.element[0].offsetHeight-this.element.outerHeight()),this.active.nextAll(".ui-menu-item").each((function(){return(n=t(this)).offset().top-i-o<0})),this.focus(e,n)):this.focus(e,this._menuItems(this.activeMenu)[this.active?"last":"first"]())):this.next(e)},previousPage:function(e){var n,i,o;this.active?this.isFirstItem()||(this._hasScroll()?(i=this.active.offset().top,o=this.element.innerHeight(),0===t.fn.jquery.indexOf("3.2.")&&(o+=this.element[0].offsetHeight-this.element.outerHeight()),this.active.prevAll(".ui-menu-item").each((function(){return(n=t(this)).offset().top-i+o>0})),this.focus(e,n)):this.focus(e,this._menuItems(this.activeMenu).first())):this.next(e)},_hasScroll:function(){return this.element.outerHeight()",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,liveRegionTimer:null,_create:function(){var e,n,i,o=this.element[0].nodeName.toLowerCase(),r="textarea"===o,s="input"===o;this.isMultiLine=r||!s&&this._isContentEditable(this.element),this.valueMethod=this.element[r||s?"val":"text"],this.isNewMenu=!0,this._addClass("ui-autocomplete-input"),this.element.attr("autocomplete","off"),this._on(this.element,{keydown:function(o){if(this.element.prop("readOnly"))return e=!0,i=!0,void(n=!0);e=!1,i=!1,n=!1;var r=t.ui.keyCode;switch(o.keyCode){case r.PAGE_UP:e=!0,this._move("previousPage",o);break;case r.PAGE_DOWN:e=!0,this._move("nextPage",o);break;case r.UP:e=!0,this._keyEvent("previous",o);break;case r.DOWN:e=!0,this._keyEvent("next",o);break;case r.ENTER:this.menu.active&&(e=!0,o.preventDefault(),this.menu.select(o));break;case r.TAB:this.menu.active&&this.menu.select(o);break;case r.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(o),o.preventDefault());break;default:n=!0,this._searchTimeout(o)}},keypress:function(i){if(e)return e=!1,void(this.isMultiLine&&!this.menu.element.is(":visible")||i.preventDefault());if(!n){var o=t.ui.keyCode;switch(i.keyCode){case o.PAGE_UP:this._move("previousPage",i);break;case o.PAGE_DOWN:this._move("nextPage",i);break;case o.UP:this._keyEvent("previous",i);break;case o.DOWN:this._keyEvent("next",i)}}},input:function(t){if(i)return i=!1,void t.preventDefault();this._searchTimeout(t)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(t){clearTimeout(this.searching),this.close(t),this._change(t)}}),this._initSource(),this.menu=t("
          ").appendTo(this._appendTo()).menu({role:null}).hide().attr({unselectable:"on"}).menu("instance"),this._addClass(this.menu.element,"ui-autocomplete","ui-front"),this._on(this.menu.element,{mousedown:function(t){t.preventDefault()},menufocus:function(e,n){var i,o;if(this.isNewMenu&&(this.isNewMenu=!1,e.originalEvent&&/^mouse/.test(e.originalEvent.type)))return this.menu.blur(),void this.document.one("mousemove",(function(){t(e.target).trigger(e.originalEvent)}));o=n.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",e,{item:o})&&e.originalEvent&&/^key/.test(e.originalEvent.type)&&this._value(o.value),(i=n.item.attr("aria-label")||o.value)&&String.prototype.trim.call(i).length&&(clearTimeout(this.liveRegionTimer),this.liveRegionTimer=this._delay((function(){this.liveRegion.html(t("
          ").text(i))}),100))},menuselect:function(e,n){var i=n.item.data("ui-autocomplete-item"),o=this.previous;this.element[0]!==t.ui.safeActiveElement(this.document[0])&&(this.element.trigger("focus"),this.previous=o,this._delay((function(){this.previous=o,this.selectedItem=i}))),!1!==this._trigger("select",e,{item:i})&&this._value(i.value),this.term=this._value(),this.close(e),this.selectedItem=i}}),this.liveRegion=t("
          ",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(t,e){this._super(t,e),"source"===t&&this._initSource(),"appendTo"===t&&this.menu.element.appendTo(this._appendTo()),"disabled"===t&&e&&this.xhr&&this.xhr.abort()},_isEventTargetInWidget:function(e){var n=this.menu.element[0];return e.target===this.element[0]||e.target===n||t.contains(n,e.target)},_closeOnClickOutside:function(t){this._isEventTargetInWidget(t)||this.close()},_appendTo:function(){var e=this.options.appendTo;return e&&(e=e.jquery||e.nodeType?t(e):this.document.find(e).eq(0)),e&&e[0]||(e=this.element.closest(".ui-front, dialog")),e.length||(e=this.document[0].body),e},_initSource:function(){var e,n,i=this;Array.isArray(this.options.source)?(e=this.options.source,this.source=function(n,i){i(t.ui.autocomplete.filter(e,n.term))}):"string"==typeof this.options.source?(n=this.options.source,this.source=function(e,o){i.xhr&&i.xhr.abort(),i.xhr=t.ajax({url:n,data:e,dataType:"json",success:function(t){o(t)},error:function(){o([])}})}):this.source=this.options.source},_searchTimeout:function(t){clearTimeout(this.searching),this.searching=this._delay((function(){var e=this.term===this._value(),n=this.menu.element.is(":visible"),i=t.altKey||t.ctrlKey||t.metaKey||t.shiftKey;e&&(!e||n||i)||(this.selectedItem=null,this.search(null,t))}),this.options.delay)},search:function(t,e){return t=null!=t?t:this._value(),this.term=this._value(),t.length").append(t("
          ").text(n.label)).appendTo(e)},_move:function(t,e){if(this.menu.element.is(":visible"))return this.menu.isFirstItem()&&/^previous/.test(t)||this.menu.isLastItem()&&/^next/.test(t)?(this.isMultiLine||this._value(this.term),void this.menu.blur()):void this.menu[t](e);this.search(null,e)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(t,e){this.isMultiLine&&!this.menu.element.is(":visible")||(this._move(t,e),e.preventDefault())},_isContentEditable:function(t){if(!t.length)return!1;var e=t.prop("contentEditable");return"inherit"===e?this._isContentEditable(t.parent()):"true"===e}}),t.extend(t.ui.autocomplete,{escapeRegex:function(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(e,n){var i=new RegExp(t.ui.autocomplete.escapeRegex(n),"i");return t.grep(e,(function(t){return i.test(t.label||t.value||t)}))}}),t.widget("ui.autocomplete",t.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(t){return t+(t>1?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(e){var n;this._superApply(arguments),this.options.disabled||this.cancelSearch||(n=e&&e.length?this.options.messages.results(e.length):this.options.messages.noResults,clearTimeout(this.liveRegionTimer),this.liveRegionTimer=this._delay((function(){this.liveRegion.html(t("
          ").text(n))}),100))}}),t.ui.autocomplete;var D,S=/ui-corner-([a-z]){2,6}/g;function T(){this._curInst=null,this._keyEvent=!1,this._disabledInputs=[],this._datepickerShowing=!1,this._inDialog=!1,this._mainDivId="ui-datepicker-div",this._inlineClass="ui-datepicker-inline",this._appendClass="ui-datepicker-append",this._triggerClass="ui-datepicker-trigger",this._dialogClass="ui-datepicker-dialog",this._disableClass="ui-datepicker-disabled",this._unselectableClass="ui-datepicker-unselectable",this._currentClass="ui-datepicker-current-day",this._dayOverClass="ui-datepicker-days-cell-over",this.regional=[],this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:"",selectMonthLabel:"Select month",selectYearLabel:"Select year"},this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:!1,hideIfNoPrevNext:!1,navigationAsDateFormat:!1,gotoCurrent:!1,changeMonth:!1,changeYear:!1,yearRange:"c-10:c+10",showOtherMonths:!1,selectOtherMonths:!1,showWeek:!1,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,onUpdateDatepicker:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:!0,showButtonPanel:!1,autoSize:!1,disabled:!1},t.extend(this._defaults,this.regional[""]),this.regional.en=t.extend(!0,{},this.regional[""]),this.regional["en-US"]=t.extend(!0,{},this.regional.en),this.dpDiv=O(t("
          "))}function O(e){var n="button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";return e.on("mouseout",n,(function(){t(this).removeClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&t(this).removeClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&t(this).removeClass("ui-datepicker-next-hover")})).on("mouseover",n,M)}function M(){t.datepicker._isDisabledDatepicker(D.inline?D.dpDiv.parent()[0]:D.input[0])||(t(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"),t(this).addClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&t(this).addClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&t(this).addClass("ui-datepicker-next-hover"))}function P(e,n){for(var i in t.extend(e,n),n)null==n[i]&&(e[i]=n[i]);return e}t.widget("ui.controlgroup",{version:"1.13.3",defaultElement:"
          ",options:{direction:"horizontal",disabled:null,onlyVisible:!0,items:{button:"input[type=button], input[type=submit], input[type=reset], button, a",controlgroupLabel:".ui-controlgroup-label",checkboxradio:"input[type='checkbox'], input[type='radio']",selectmenu:"select",spinner:".ui-spinner-input"}},_create:function(){this._enhance()},_enhance:function(){this.element.attr("role","toolbar"),this.refresh()},_destroy:function(){this._callChildMethod("destroy"),this.childWidgets.removeData("ui-controlgroup-data"),this.element.removeAttr("role"),this.options.items.controlgroupLabel&&this.element.find(this.options.items.controlgroupLabel).find(".ui-controlgroup-label-contents").contents().unwrap()},_initWidgets:function(){var e=this,n=[];t.each(this.options.items,(function(i,o){var r,s={};if(o)return"controlgroupLabel"===i?((r=e.element.find(o)).each((function(){var e=t(this);e.children(".ui-controlgroup-label-contents").length||e.contents().wrapAll("")})),e._addClass(r,null,"ui-widget ui-widget-content ui-state-default"),void(n=n.concat(r.get()))):void(t.fn[i]&&(s=e["_"+i+"Options"]?e["_"+i+"Options"]("middle"):{classes:{}},e.element.find(o).each((function(){var o=t(this),r=o[i]("instance"),a=t.widget.extend({},s);if("button"!==i||!o.parent(".ui-spinner").length){r||(r=o[i]()[i]("instance")),r&&(a.classes=e._resolveClassesValues(a.classes,r)),o[i](a);var c=o[i]("widget");t.data(c[0],"ui-controlgroup-data",r||o[i]("instance")),n.push(c[0])}}))))})),this.childWidgets=t(t.uniqueSort(n)),this._addClass(this.childWidgets,"ui-controlgroup-item")},_callChildMethod:function(e){this.childWidgets.each((function(){var n=t(this).data("ui-controlgroup-data");n&&n[e]&&n[e]()}))},_updateCornerClass:function(t,e){var n=this._buildSimpleOptions(e,"label").classes.label;this._removeClass(t,null,"ui-corner-top ui-corner-bottom ui-corner-left ui-corner-right ui-corner-all"),this._addClass(t,null,n)},_buildSimpleOptions:function(t,e){var n="vertical"===this.options.direction,i={classes:{}};return i.classes[e]={middle:"",first:"ui-corner-"+(n?"top":"left"),last:"ui-corner-"+(n?"bottom":"right"),only:"ui-corner-all"}[t],i},_spinnerOptions:function(t){var e=this._buildSimpleOptions(t,"ui-spinner");return e.classes["ui-spinner-up"]="",e.classes["ui-spinner-down"]="",e},_buttonOptions:function(t){return this._buildSimpleOptions(t,"ui-button")},_checkboxradioOptions:function(t){return this._buildSimpleOptions(t,"ui-checkboxradio-label")},_selectmenuOptions:function(t){var e="vertical"===this.options.direction;return{width:!!e&&"auto",classes:{middle:{"ui-selectmenu-button-open":"","ui-selectmenu-button-closed":""},first:{"ui-selectmenu-button-open":"ui-corner-"+(e?"top":"tl"),"ui-selectmenu-button-closed":"ui-corner-"+(e?"top":"left")},last:{"ui-selectmenu-button-open":e?"":"ui-corner-tr","ui-selectmenu-button-closed":"ui-corner-"+(e?"bottom":"right")},only:{"ui-selectmenu-button-open":"ui-corner-top","ui-selectmenu-button-closed":"ui-corner-all"}}[t]}},_resolveClassesValues:function(e,n){var i={};return t.each(e,(function(t){var o=n.options.classes[t]||"";o=String.prototype.trim.call(o.replace(S,"")),i[t]=(o+" "+e[t]).replace(/\s+/g," ")})),i},_setOption:function(t,e){"direction"===t&&this._removeClass("ui-controlgroup-"+this.options.direction),this._super(t,e),"disabled"!==t?this.refresh():this._callChildMethod(e?"disable":"enable")},refresh:function(){var e,n=this;this._addClass("ui-controlgroup ui-controlgroup-"+this.options.direction),"horizontal"===this.options.direction&&this._addClass(null,"ui-helper-clearfix"),this._initWidgets(),e=this.childWidgets,this.options.onlyVisible&&(e=e.filter(":visible")),e.length&&(t.each(["first","last"],(function(t,i){var o=e[i]().data("ui-controlgroup-data");if(o&&n["_"+o.widgetName+"Options"]){var r=n["_"+o.widgetName+"Options"](1===e.length?"only":i);r.classes=n._resolveClassesValues(r.classes,o),o.element[o.widgetName](r)}else n._updateCornerClass(e[i](),i)})),this._callChildMethod("refresh"))}}),t.widget("ui.checkboxradio",[t.ui.formResetMixin,{version:"1.13.3",options:{disabled:null,label:null,icon:!0,classes:{"ui-checkboxradio-label":"ui-corner-all","ui-checkboxradio-icon":"ui-corner-all"}},_getCreateOptions:function(){var e,n,i,o=this._super()||{};return this._readType(),n=this.element.labels(),this.label=t(n[n.length-1]),this.label.length||t.error("No label found for checkboxradio widget"),this.originalLabel="",(i=this.label.contents().not(this.element[0])).length&&(this.originalLabel+=i.clone().wrapAll("
          ").parent().html()),this.originalLabel&&(o.label=this.originalLabel),null!=(e=this.element[0].disabled)&&(o.disabled=e),o},_create:function(){var t=this.element[0].checked;this._bindFormResetHandler(),null==this.options.disabled&&(this.options.disabled=this.element[0].disabled),this._setOption("disabled",this.options.disabled),this._addClass("ui-checkboxradio","ui-helper-hidden-accessible"),this._addClass(this.label,"ui-checkboxradio-label","ui-button ui-widget"),"radio"===this.type&&this._addClass(this.label,"ui-checkboxradio-radio-label"),this.options.label&&this.options.label!==this.originalLabel?this._updateLabel():this.originalLabel&&(this.options.label=this.originalLabel),this._enhance(),t&&this._addClass(this.label,"ui-checkboxradio-checked","ui-state-active"),this._on({change:"_toggleClasses",focus:function(){this._addClass(this.label,null,"ui-state-focus ui-visual-focus")},blur:function(){this._removeClass(this.label,null,"ui-state-focus ui-visual-focus")}})},_readType:function(){var e=this.element[0].nodeName.toLowerCase();this.type=this.element[0].type,"input"===e&&/radio|checkbox/.test(this.type)||t.error("Can't create checkboxradio on element.nodeName="+e+" and element.type="+this.type)},_enhance:function(){this._updateIcon(this.element[0].checked)},widget:function(){return this.label},_getRadioGroup:function(){var e=this.element[0].name,n="input[name='"+t.escapeSelector(e)+"']";return e?(this.form.length?t(this.form[0].elements).filter(n):t(n).filter((function(){return 0===t(this)._form().length}))).not(this.element):t([])},_toggleClasses:function(){var e=this.element[0].checked;this._toggleClass(this.label,"ui-checkboxradio-checked","ui-state-active",e),this.options.icon&&"checkbox"===this.type&&this._toggleClass(this.icon,null,"ui-icon-check ui-state-checked",e)._toggleClass(this.icon,null,"ui-icon-blank",!e),"radio"===this.type&&this._getRadioGroup().each((function(){var e=t(this).checkboxradio("instance");e&&e._removeClass(e.label,"ui-checkboxradio-checked","ui-state-active")}))},_destroy:function(){this._unbindFormResetHandler(),this.icon&&(this.icon.remove(),this.iconSpace.remove())},_setOption:function(t,e){if("label"!==t||e){if(this._super(t,e),"disabled"===t)return this._toggleClass(this.label,null,"ui-state-disabled",e),void(this.element[0].disabled=e);this.refresh()}},_updateIcon:function(e){var n="ui-icon ui-icon-background ";this.options.icon?(this.icon||(this.icon=t(""),this.iconSpace=t(" "),this._addClass(this.iconSpace,"ui-checkboxradio-icon-space")),"checkbox"===this.type?(n+=e?"ui-icon-check ui-state-checked":"ui-icon-blank",this._removeClass(this.icon,null,e?"ui-icon-blank":"ui-icon-check")):n+="ui-icon-blank",this._addClass(this.icon,"ui-checkboxradio-icon",n),e||this._removeClass(this.icon,null,"ui-icon-check ui-state-checked"),this.icon.prependTo(this.label).after(this.iconSpace)):void 0!==this.icon&&(this.icon.remove(),this.iconSpace.remove(),delete this.icon)},_updateLabel:function(){var t=this.label.contents().not(this.element[0]);this.icon&&(t=t.not(this.icon[0])),this.iconSpace&&(t=t.not(this.iconSpace[0])),t.remove(),this.label.append(this.options.label)},refresh:function(){var t=this.element[0].checked,e=this.element[0].disabled;this._updateIcon(t),this._toggleClass(this.label,"ui-checkboxradio-checked","ui-state-active",t),null!==this.options.label&&this._updateLabel(),e!==this.options.disabled&&this._setOptions({disabled:e})}}]),t.ui.checkboxradio,t.widget("ui.button",{version:"1.13.3",defaultElement:"
          "+(G[0]>0&&B===G[1]-1?"
          ":""):"")}x+=k}return x+=u,e._keyEvent=!1,x},_generateMonthYearHeader:function(t,e,n,i,o,r,s,a){var c,l,u,h,d,p,A,f,g=this._get(t,"changeMonth"),m=this._get(t,"changeYear"),b=this._get(t,"showMonthAfterYear"),v=this._get(t,"selectMonthLabel"),C=this._get(t,"selectYearLabel"),x="
          ",w="";if(r||!g)w+=""+s[e]+"";else{for(c=i&&i.getFullYear()===n,l=o&&o.getFullYear()===n,w+=""}if(b||(x+=w+(!r&&g&&m?"":" ")),!t.yearshtml)if(t.yearshtml="",r||!m)x+=""+n+"";else{for(h=this._get(t,"yearRange").split(":"),d=(new Date).getFullYear(),p=function(t){var e=t.match(/c[+\-].*/)?n+parseInt(t.substring(1),10):t.match(/[+\-].*/)?d+parseInt(t,10):parseInt(t,10);return isNaN(e)?d:e},A=p(h[0]),f=Math.max(A,p(h[1]||"")),A=i?Math.max(A,i.getFullYear()):A,f=o?Math.min(f,o.getFullYear()):f,t.yearshtml+="",x+=t.yearshtml,t.yearshtml=null}return x+=this._get(t,"yearSuffix"),b&&(x+=(!r&&g&&m?"":" ")+w),x+"
          "},_adjustInstDate:function(t,e,n){var i=t.selectedYear+("Y"===n?e:0),o=t.selectedMonth+("M"===n?e:0),r=Math.min(t.selectedDay,this._getDaysInMonth(i,o))+("D"===n?e:0),s=this._restrictMinMax(t,this._daylightSavingAdjust(new Date(i,o,r)));t.selectedDay=s.getDate(),t.drawMonth=t.selectedMonth=s.getMonth(),t.drawYear=t.selectedYear=s.getFullYear(),"M"!==n&&"Y"!==n||this._notifyChange(t)},_restrictMinMax:function(t,e){var n=this._getMinMaxDate(t,"min"),i=this._getMinMaxDate(t,"max"),o=n&&ei?i:o},_notifyChange:function(t){var e=this._get(t,"onChangeMonthYear");e&&e.apply(t.input?t.input[0]:null,[t.selectedYear,t.selectedMonth+1,t])},_getNumberOfMonths:function(t){var e=this._get(t,"numberOfMonths");return null==e?[1,1]:"number"==typeof e?[1,e]:e},_getMinMaxDate:function(t,e){return this._determineDate(t,this._get(t,e+"Date"),null)},_getDaysInMonth:function(t,e){return 32-this._daylightSavingAdjust(new Date(t,e,32)).getDate()},_getFirstDayOfMonth:function(t,e){return new Date(t,e,1).getDay()},_canAdjustMonth:function(t,e,n,i){var o=this._getNumberOfMonths(t),r=this._daylightSavingAdjust(new Date(n,i+(e<0?e:o[0]*o[1]),1));return e<0&&r.setDate(this._getDaysInMonth(r.getFullYear(),r.getMonth())),this._isInRange(t,r)},_isInRange:function(t,e){var n,i,o=this._getMinMaxDate(t,"min"),r=this._getMinMaxDate(t,"max"),s=null,a=null,c=this._get(t,"yearRange");return c&&(n=c.split(":"),i=(new Date).getFullYear(),s=parseInt(n[0],10),a=parseInt(n[1],10),n[0].match(/[+\-].*/)&&(s+=i),n[1].match(/[+\-].*/)&&(a+=i)),(!o||e.getTime()>=o.getTime())&&(!r||e.getTime()<=r.getTime())&&(!s||e.getFullYear()>=s)&&(!a||e.getFullYear()<=a)},_getFormatConfig:function(t){var e=this._get(t,"shortYearCutoff");return{shortYearCutoff:e="string"!=typeof e?e:(new Date).getFullYear()%100+parseInt(e,10),dayNamesShort:this._get(t,"dayNamesShort"),dayNames:this._get(t,"dayNames"),monthNamesShort:this._get(t,"monthNamesShort"),monthNames:this._get(t,"monthNames")}},_formatDate:function(t,e,n,i){e||(t.currentDay=t.selectedDay,t.currentMonth=t.selectedMonth,t.currentYear=t.selectedYear);var o=e?"object"==typeof e?e:this._daylightSavingAdjust(new Date(i,n,e)):this._daylightSavingAdjust(new Date(t.currentYear,t.currentMonth,t.currentDay));return this.formatDate(this._get(t,"dateFormat"),o,this._getFormatConfig(t))}}),t.fn.datepicker=function(e){if(!this.length)return this;t.datepicker.initialized||(t(document).on("mousedown",t.datepicker._checkExternalClick),t.datepicker.initialized=!0),0===t("#"+t.datepicker._mainDivId).length&&t("body").append(t.datepicker.dpDiv);var n=Array.prototype.slice.call(arguments,1);return"string"!=typeof e||"isDisabled"!==e&&"getDate"!==e&&"widget"!==e?"option"===e&&2===arguments.length&&"string"==typeof arguments[1]?t.datepicker["_"+e+"Datepicker"].apply(t.datepicker,[this[0]].concat(n)):this.each((function(){"string"==typeof e?t.datepicker["_"+e+"Datepicker"].apply(t.datepicker,[this].concat(n)):t.datepicker._attachDatepicker(this,e)})):t.datepicker["_"+e+"Datepicker"].apply(t.datepicker,[this[0]].concat(n))},t.datepicker=new T,t.datepicker.initialized=!1,t.datepicker.uuid=(new Date).getTime(),t.datepicker.version="1.13.3",t.datepicker,t.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var R,N=!1;function H(t){return function(){var e=this.element.val();t.apply(this,arguments),this._refresh(),e!==this.element.val()&&this._trigger("change")}}t(document).on("mouseup",(function(){N=!1})),t.widget("ui.mouse",{version:"1.13.3",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,(function(t){return e._mouseDown(t)})).on("click."+this.widgetName,(function(n){if(!0===t.data(n.target,e.widgetName+".preventClickEvent"))return t.removeData(n.target,e.widgetName+".preventClickEvent"),n.stopImmediatePropagation(),!1})),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(e){if(!N){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(e),this._mouseDownEvent=e;var n=this,i=1===e.which,o=!("string"!=typeof this.options.cancel||!e.target.nodeName)&&t(e.target).closest(this.options.cancel).length;return!(i&&!o&&this._mouseCapture(e)&&(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout((function(){n.mouseDelayMet=!0}),this.options.delay)),this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=!1!==this._mouseStart(e),!this._mouseStarted)?(e.preventDefault(),0):(!0===t.data(e.target,this.widgetName+".preventClickEvent")&&t.removeData(e.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return n._mouseMove(t)},this._mouseUpDelegate=function(t){return n._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),e.preventDefault(),N=!0,0)))}},_mouseMove:function(e){if(this._mouseMoved){if(t.ui.ie&&(!document.documentMode||document.documentMode<9)&&!e.button)return this._mouseUp(e);if(!e.which)if(e.originalEvent.altKey||e.originalEvent.ctrlKey||e.originalEvent.metaKey||e.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(e)}return(e.which||e.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=!1!==this._mouseStart(this._mouseDownEvent,e),this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,N=!1,e.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),t.ui.plugin={add:function(e,n,i){var o,r=t.ui[e].prototype;for(o in i)r.plugins[o]=r.plugins[o]||[],r.plugins[o].push([n,i[o]])},call:function(t,e,n,i){var o,r=t.plugins[e];if(r&&(i||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(o=0;o0||(this.handle=this._getHandle(e),!this.handle||(this._blurActiveElement(e),this._blockFrames(!0===n.iframeFix?"iframe":n.iframeFix),0)))},_blockFrames:function(e){this.iframeBlocks=this.document.find(e).map((function(){var e=t(this);return t("
          ").css("position","absolute").appendTo(e.parent()).outerWidth(e.outerWidth()).outerHeight(e.outerHeight()).offset(e.offset())[0]}))},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_blurActiveElement:function(e){var n=t.ui.safeActiveElement(this.document[0]);t(e.target).closest(n).length||t.ui.safeBlur(n)},_mouseStart:function(e){var n=this.options;return this.helper=this._createHelper(e),this._addClass(this.helper,"ui-draggable-dragging"),this._cacheHelperProportions(),t.ui.ddmanager&&(t.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(!0),this.offsetParent=this.helper.offsetParent(),this.hasFixedAncestor=this.helper.parents().filter((function(){return"fixed"===t(this).css("position")})).length>0,this.positionAbs=this.element.offset(),this._refreshOffsets(e),this.originalPosition=this.position=this._generatePosition(e,!1),this.originalPageX=e.pageX,this.originalPageY=e.pageY,n.cursorAt&&this._adjustOffsetFromHelper(n.cursorAt),this._setContainment(),!1===this._trigger("start",e)?(this._clear(),!1):(this._cacheHelperProportions(),t.ui.ddmanager&&!n.dropBehaviour&&t.ui.ddmanager.prepareOffsets(this,e),this._mouseDrag(e,!0),t.ui.ddmanager&&t.ui.ddmanager.dragStart(this,e),!0)},_refreshOffsets:function(t){this.offset={top:this.positionAbs.top-this.margins.top,left:this.positionAbs.left-this.margins.left,scroll:!1,parent:this._getParentOffset(),relative:this._getRelativeOffset()},this.offset.click={left:t.pageX-this.offset.left,top:t.pageY-this.offset.top}},_mouseDrag:function(e,n){if(this.hasFixedAncestor&&(this.offset.parent=this._getParentOffset()),this.position=this._generatePosition(e,!0),this.positionAbs=this._convertPositionTo("absolute"),!n){var i=this._uiHash();if(!1===this._trigger("drag",e,i))return this._mouseUp(new t.Event("mouseup",e)),!1;this.position=i.position}return this.helper[0].style.left=this.position.left+"px",this.helper[0].style.top=this.position.top+"px",t.ui.ddmanager&&t.ui.ddmanager.drag(this,e),!1},_mouseStop:function(e){var n=this,i=!1;return t.ui.ddmanager&&!this.options.dropBehaviour&&(i=t.ui.ddmanager.drop(this,e)),this.dropped&&(i=this.dropped,this.dropped=!1),"invalid"===this.options.revert&&!i||"valid"===this.options.revert&&i||!0===this.options.revert||"function"==typeof this.options.revert&&this.options.revert.call(this.element,i)?t(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),(function(){!1!==n._trigger("stop",e)&&n._clear()})):!1!==this._trigger("stop",e)&&this._clear(),!1},_mouseUp:function(e){return this._unblockFrames(),t.ui.ddmanager&&t.ui.ddmanager.dragStop(this,e),this.handleElement.is(e.target)&&this.element.trigger("focus"),t.ui.mouse.prototype._mouseUp.call(this,e)},cancel:function(){return this.helper.is(".ui-draggable-dragging")?this._mouseUp(new t.Event("mouseup",{target:this.element[0]})):this._clear(),this},_getHandle:function(e){return!this.options.handle||!!t(e.target).closest(this.element.find(this.options.handle)).length},_setHandleClassName:function(){this.handleElement=this.options.handle?this.element.find(this.options.handle):this.element,this._addClass(this.handleElement,"ui-draggable-handle")},_removeHandleClassName:function(){this._removeClass(this.handleElement,"ui-draggable-handle")},_createHelper:function(e){var n=this.options,i="function"==typeof n.helper,o=i?t(n.helper.apply(this.element[0],[e])):"clone"===n.helper?this.element.clone().removeAttr("id"):this.element;return o.parents("body").length||o.appendTo("parent"===n.appendTo?this.element[0].parentNode:n.appendTo),i&&o[0]===this.element[0]&&this._setPositionRelative(),o[0]===this.element[0]||/(fixed|absolute)/.test(o.css("position"))||o.css("position","absolute"),o},_setPositionRelative:function(){/^(?:r|a|f)/.test(this.element.css("position"))||(this.element[0].style.position="relative")},_adjustOffsetFromHelper:function(t){"string"==typeof t&&(t=t.split(" ")),Array.isArray(t)&&(t={left:+t[0],top:+t[1]||0}),"left"in t&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_isRootNode:function(t){return/(html|body)/i.test(t.tagName)||t===this.document[0]},_getParentOffset:function(){var e=this.offsetParent.offset(),n=this.document[0];return"absolute"===this.cssPosition&&this.scrollParent[0]!==n&&t.contains(this.scrollParent[0],this.offsetParent[0])&&(e.left+=this.scrollParent.scrollLeft(),e.top+=this.scrollParent.scrollTop()),this._isRootNode(this.offsetParent[0])&&(e={top:0,left:0}),{top:e.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:e.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"!==this.cssPosition)return{top:0,left:0};var t=this.element.position(),e=this._isRootNode(this.scrollParent[0]);return{top:t.top-(parseInt(this.helper.css("top"),10)||0)+(e?0:this.scrollParent.scrollTop()),left:t.left-(parseInt(this.helper.css("left"),10)||0)+(e?0:this.scrollParent.scrollLeft())}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var e,n,i,o=this.options,r=this.document[0];this.relativeContainer=null,o.containment?"window"!==o.containment?"document"!==o.containment?o.containment.constructor!==Array?("parent"===o.containment&&(o.containment=this.helper[0].parentNode),(i=(n=t(o.containment))[0])&&(e=/(scroll|auto)/.test(n.css("overflow")),this.containment=[(parseInt(n.css("borderLeftWidth"),10)||0)+(parseInt(n.css("paddingLeft"),10)||0),(parseInt(n.css("borderTopWidth"),10)||0)+(parseInt(n.css("paddingTop"),10)||0),(e?Math.max(i.scrollWidth,i.offsetWidth):i.offsetWidth)-(parseInt(n.css("borderRightWidth"),10)||0)-(parseInt(n.css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(e?Math.max(i.scrollHeight,i.offsetHeight):i.offsetHeight)-(parseInt(n.css("borderBottomWidth"),10)||0)-(parseInt(n.css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relativeContainer=n)):this.containment=o.containment:this.containment=[0,0,t(r).width()-this.helperProportions.width-this.margins.left,(t(r).height()||r.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]:this.containment=[t(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,t(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,t(window).scrollLeft()+t(window).width()-this.helperProportions.width-this.margins.left,t(window).scrollTop()+(t(window).height()||r.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]:this.containment=null},_convertPositionTo:function(t,e){e||(e=this.position);var n="absolute"===t?1:-1,i=this._isRootNode(this.scrollParent[0]);return{top:e.top+this.offset.relative.top*n+this.offset.parent.top*n-("fixed"===this.cssPosition?-this.offset.scroll.top:i?0:this.offset.scroll.top)*n,left:e.left+this.offset.relative.left*n+this.offset.parent.left*n-("fixed"===this.cssPosition?-this.offset.scroll.left:i?0:this.offset.scroll.left)*n}},_generatePosition:function(t,e){var n,i,o,r,s=this.options,a=this._isRootNode(this.scrollParent[0]),c=t.pageX,l=t.pageY;return a&&this.offset.scroll||(this.offset.scroll={top:this.scrollParent.scrollTop(),left:this.scrollParent.scrollLeft()}),e&&(this.containment&&(this.relativeContainer?(i=this.relativeContainer.offset(),n=[this.containment[0]+i.left,this.containment[1]+i.top,this.containment[2]+i.left,this.containment[3]+i.top]):n=this.containment,t.pageX-this.offset.click.leftn[2]&&(c=n[2]+this.offset.click.left),t.pageY-this.offset.click.top>n[3]&&(l=n[3]+this.offset.click.top)),s.grid&&(o=s.grid[1]?this.originalPageY+Math.round((l-this.originalPageY)/s.grid[1])*s.grid[1]:this.originalPageY,l=n?o-this.offset.click.top>=n[1]||o-this.offset.click.top>n[3]?o:o-this.offset.click.top>=n[1]?o-s.grid[1]:o+s.grid[1]:o,r=s.grid[0]?this.originalPageX+Math.round((c-this.originalPageX)/s.grid[0])*s.grid[0]:this.originalPageX,c=n?r-this.offset.click.left>=n[0]||r-this.offset.click.left>n[2]?r:r-this.offset.click.left>=n[0]?r-s.grid[0]:r+s.grid[0]:r),"y"===s.axis&&(c=this.originalPageX),"x"===s.axis&&(l=this.originalPageY)),{top:l-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.offset.scroll.top:a?0:this.offset.scroll.top),left:c-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.offset.scroll.left:a?0:this.offset.scroll.left)}},_clear:function(){this._removeClass(this.helper,"ui-draggable-dragging"),this.helper[0]===this.element[0]||this.cancelHelperRemoval||this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1,this.destroyOnClear&&this.destroy()},_trigger:function(e,n,i){return i=i||this._uiHash(),t.ui.plugin.call(this,e,[n,i,this],!0),/^(drag|start|stop)/.test(e)&&(this.positionAbs=this._convertPositionTo("absolute"),i.offset=this.positionAbs),t.Widget.prototype._trigger.call(this,e,n,i)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),t.ui.plugin.add("draggable","connectToSortable",{start:function(e,n,i){var o=t.extend({},n,{item:i.element});i.sortables=[],t(i.options.connectToSortable).each((function(){var n=t(this).sortable("instance");n&&!n.options.disabled&&(i.sortables.push(n),n.refreshPositions(),n._trigger("activate",e,o))}))},stop:function(e,n,i){var o=t.extend({},n,{item:i.element});i.cancelHelperRemoval=!1,t.each(i.sortables,(function(){var t=this;t.isOver?(t.isOver=0,i.cancelHelperRemoval=!0,t.cancelHelperRemoval=!1,t._storedCSS={position:t.placeholder.css("position"),top:t.placeholder.css("top"),left:t.placeholder.css("left")},t._mouseStop(e),t.options.helper=t.options._helper):(t.cancelHelperRemoval=!0,t._trigger("deactivate",e,o))}))},drag:function(e,n,i){t.each(i.sortables,(function(){var o=!1,r=this;r.positionAbs=i.positionAbs,r.helperProportions=i.helperProportions,r.offset.click=i.offset.click,r._intersectsWith(r.containerCache)&&(o=!0,t.each(i.sortables,(function(){return this.positionAbs=i.positionAbs,this.helperProportions=i.helperProportions,this.offset.click=i.offset.click,this!==r&&this._intersectsWith(this.containerCache)&&t.contains(r.element[0],this.element[0])&&(o=!1),o}))),o?(r.isOver||(r.isOver=1,i._parent=n.helper.parent(),r.currentItem=n.helper.appendTo(r.element).data("ui-sortable-item",!0),r.options._helper=r.options.helper,r.options.helper=function(){return n.helper[0]},e.target=r.currentItem[0],r._mouseCapture(e,!0),r._mouseStart(e,!0,!0),r.offset.click.top=i.offset.click.top,r.offset.click.left=i.offset.click.left,r.offset.parent.left-=i.offset.parent.left-r.offset.parent.left,r.offset.parent.top-=i.offset.parent.top-r.offset.parent.top,i._trigger("toSortable",e),i.dropped=r.element,t.each(i.sortables,(function(){this.refreshPositions()})),i.currentItem=i.element,r.fromOutside=i),r.currentItem&&(r._mouseDrag(e),n.position=r.position)):r.isOver&&(r.isOver=0,r.cancelHelperRemoval=!0,r.options._revert=r.options.revert,r.options.revert=!1,r._trigger("out",e,r._uiHash(r)),r._mouseStop(e,!0),r.options.revert=r.options._revert,r.options.helper=r.options._helper,r.placeholder&&r.placeholder.remove(),n.helper.appendTo(i._parent),i._refreshOffsets(e),n.position=i._generatePosition(e,!0),i._trigger("fromSortable",e),i.dropped=!1,t.each(i.sortables,(function(){this.refreshPositions()})))}))}}),t.ui.plugin.add("draggable","cursor",{start:function(e,n,i){var o=t("body"),r=i.options;o.css("cursor")&&(r._cursor=o.css("cursor")),o.css("cursor",r.cursor)},stop:function(e,n,i){var o=i.options;o._cursor&&t("body").css("cursor",o._cursor)}}),t.ui.plugin.add("draggable","opacity",{start:function(e,n,i){var o=t(n.helper),r=i.options;o.css("opacity")&&(r._opacity=o.css("opacity")),o.css("opacity",r.opacity)},stop:function(e,n,i){var o=i.options;o._opacity&&t(n.helper).css("opacity",o._opacity)}}),t.ui.plugin.add("draggable","scroll",{start:function(t,e,n){n.scrollParentNotHidden||(n.scrollParentNotHidden=n.helper.scrollParent(!1)),n.scrollParentNotHidden[0]!==n.document[0]&&"HTML"!==n.scrollParentNotHidden[0].tagName&&(n.overflowOffset=n.scrollParentNotHidden.offset())},drag:function(e,n,i){var o=i.options,r=!1,s=i.scrollParentNotHidden[0],a=i.document[0];s!==a&&"HTML"!==s.tagName?(o.axis&&"x"===o.axis||(i.overflowOffset.top+s.offsetHeight-e.pageY=0;d--)l=(c=i.snapElements[d].left-i.margins.left)+i.snapElements[d].width,h=(u=i.snapElements[d].top-i.margins.top)+i.snapElements[d].height,ml+f||vh+f||!t.contains(i.snapElements[d].item.ownerDocument,i.snapElements[d].item)?(i.snapElements[d].snapping&&i.options.snap.release&&i.options.snap.release.call(i.element,e,t.extend(i._uiHash(),{snapItem:i.snapElements[d].item})),i.snapElements[d].snapping=!1):("inner"!==A.snapMode&&(o=Math.abs(u-v)<=f,r=Math.abs(h-b)<=f,s=Math.abs(c-m)<=f,a=Math.abs(l-g)<=f,o&&(n.position.top=i._convertPositionTo("relative",{top:u-i.helperProportions.height,left:0}).top),r&&(n.position.top=i._convertPositionTo("relative",{top:h,left:0}).top),s&&(n.position.left=i._convertPositionTo("relative",{top:0,left:c-i.helperProportions.width}).left),a&&(n.position.left=i._convertPositionTo("relative",{top:0,left:l}).left)),p=o||r||s||a,"outer"!==A.snapMode&&(o=Math.abs(u-b)<=f,r=Math.abs(h-v)<=f,s=Math.abs(c-g)<=f,a=Math.abs(l-m)<=f,o&&(n.position.top=i._convertPositionTo("relative",{top:u,left:0}).top),r&&(n.position.top=i._convertPositionTo("relative",{top:h-i.helperProportions.height,left:0}).top),s&&(n.position.left=i._convertPositionTo("relative",{top:0,left:c}).left),a&&(n.position.left=i._convertPositionTo("relative",{top:0,left:l-i.helperProportions.width}).left)),!i.snapElements[d].snapping&&(o||r||s||a||p)&&i.options.snap.snap&&i.options.snap.snap.call(i.element,e,t.extend(i._uiHash(),{snapItem:i.snapElements[d].item})),i.snapElements[d].snapping=o||r||s||a||p)}}),t.ui.plugin.add("draggable","stack",{start:function(e,n,i){var o,r=i.options,s=t.makeArray(t(r.stack)).sort((function(e,n){return(parseInt(t(e).css("zIndex"),10)||0)-(parseInt(t(n).css("zIndex"),10)||0)}));s.length&&(o=parseInt(t(s[0]).css("zIndex"),10)||0,t(s).each((function(e){t(this).css("zIndex",o+e)})),this.css("zIndex",o+s.length))}}),t.ui.plugin.add("draggable","zIndex",{start:function(e,n,i){var o=t(n.helper),r=i.options;o.css("zIndex")&&(r._zIndex=o.css("zIndex")),o.css("zIndex",r.zIndex)},stop:function(e,n,i){var o=i.options;o._zIndex&&t(n.helper).css("zIndex",o._zIndex)}}),t.ui.draggable,t.widget("ui.resizable",t.ui.mouse,{version:"1.13.3",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseFloat(t)||0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(e,n){if("hidden"===t(e).css("overflow"))return!1;var i=n&&"left"===n?"scrollLeft":"scrollTop",o=!1;if(e[i]>0)return!0;try{e[i]=1,o=e[i]>0,e[i]=0}catch(t){}return o},_create:function(){var e,n=this.options,i=this;this._addClass("ui-resizable"),t.extend(this,{_aspectRatio:!!n.aspectRatio,aspectRatio:n.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:n.helper||n.ghost||n.animate?n.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(t("
          ").css({overflow:"hidden",position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,e={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(e),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(e),this._proportionallyResize()),this._setupHandles(),n.autoHide&&t(this.element).on("mouseenter",(function(){n.disabled||(i._removeClass("ui-resizable-autohide"),i._handles.show())})).on("mouseleave",(function(){n.disabled||i.resizing||(i._addClass("ui-resizable-autohide"),i._handles.hide())})),this._mouseInit()},_destroy:function(){this._mouseDestroy(),this._addedHandles.remove();var e,n=function(e){t(e).removeData("resizable").removeData("ui-resizable").off(".resizable")};return this.elementIsWrapper&&(n(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),n(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;case"aspectRatio":this._aspectRatio=!!e}},_setupHandles:function(){var e,n,i,o,r,s=this.options,a=this;if(this.handles=s.handles||(t(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=t(),this._addedHandles=t(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),i=this.handles.split(","),this.handles={},n=0;n"),this._addClass(r,"ui-resizable-handle "+o),r.css({zIndex:s.zIndex}),this.handles[e]=".ui-resizable-"+e,this.element.children(this.handles[e]).length||(this.element.append(r),this._addedHandles=this._addedHandles.add(r));this._renderAxis=function(e){var n,i,o,r;for(n in e=e||this.element,this.handles)this.handles[n].constructor===String?this.handles[n]=this.element.children(this.handles[n]).first().show():(this.handles[n].jquery||this.handles[n].nodeType)&&(this.handles[n]=t(this.handles[n]),this._on(this.handles[n],{mousedown:a._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(i=t(this.handles[n],this.element),r=/sw|ne|nw|se|n|s/.test(n)?i.outerHeight():i.outerWidth(),o=["padding",/ne|nw|n/.test(n)?"Top":/se|sw|s/.test(n)?"Bottom":/^e$/.test(n)?"Right":"Left"].join(""),e.css(o,r),this._proportionallyResize()),this._handles=this._handles.add(this.handles[n])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",(function(){a.resizing||(this.className&&(r=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),a.axis=r&&r[1]?r[1]:"se")})),s.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._addedHandles.remove()},_mouseCapture:function(e){var n,i,o=!1;for(n in this.handles)((i=t(this.handles[n])[0])===e.target||t.contains(i,e.target))&&(o=!0);return!this.options.disabled&&o},_mouseStart:function(e){var n,i,o,r=this.options,s=this.element;return this.resizing=!0,this._renderProxy(),n=this._num(this.helper.css("left")),i=this._num(this.helper.css("top")),r.containment&&(n+=t(r.containment).scrollLeft()||0,i+=t(r.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:n,top:i},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:s.width(),height:s.height()},this.originalSize=this._helper?{width:s.outerWidth(),height:s.outerHeight()}:{width:s.width(),height:s.height()},this.sizeDiff={width:s.outerWidth()-s.width(),height:s.outerHeight()-s.height()},this.originalPosition={left:n,top:i},this.originalMousePosition={left:e.pageX,top:e.pageY},this.aspectRatio="number"==typeof r.aspectRatio?r.aspectRatio:this.originalSize.width/this.originalSize.height||1,o=t(".ui-resizable-"+this.axis).css("cursor"),t("body").css("cursor","auto"===o?this.axis+"-resize":o),this._addClass("ui-resizable-resizing"),this._propagate("start",e),!0},_mouseDrag:function(e){var n,i,o=this.originalMousePosition,r=this.axis,s=e.pageX-o.left||0,a=e.pageY-o.top||0,c=this._change[r];return this._updatePrevProperties(),!!c&&(n=c.apply(this,[e,s,a]),this._updateVirtualBoundaries(e.shiftKey),(this._aspectRatio||e.shiftKey)&&(n=this._updateRatio(n,e)),n=this._respectSize(n,e),this._updateCache(n),this._propagate("resize",e),i=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),t.isEmptyObject(i)||(this._updatePrevProperties(),this._trigger("resize",e,this.ui()),this._applyChanges()),!1)},_mouseStop:function(e){this.resizing=!1;var n,i,o,r,s,a,c,l=this.options,u=this;return this._helper&&(o=(i=(n=this._proportionallyResizeElements).length&&/textarea/i.test(n[0].nodeName))&&this._hasScroll(n[0],"left")?0:u.sizeDiff.height,r=i?0:u.sizeDiff.width,s={width:u.helper.width()-r,height:u.helper.height()-o},a=parseFloat(u.element.css("left"))+(u.position.left-u.originalPosition.left)||null,c=parseFloat(u.element.css("top"))+(u.position.top-u.originalPosition.top)||null,l.animate||this.element.css(t.extend(s,{top:c,left:a})),u.helper.height(u.size.height),u.helper.width(u.size.width),this._helper&&!l.animate&&this._proportionallyResize()),t("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",e),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.helper.css(t),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px",this.helper.width(t.width)),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px",this.helper.height(t.height)),t},_updateVirtualBoundaries:function(t){var e,n,i,o,r,s=this.options;r={minWidth:this._isNumber(s.minWidth)?s.minWidth:0,maxWidth:this._isNumber(s.maxWidth)?s.maxWidth:1/0,minHeight:this._isNumber(s.minHeight)?s.minHeight:0,maxHeight:this._isNumber(s.maxHeight)?s.maxHeight:1/0},(this._aspectRatio||t)&&(e=r.minHeight*this.aspectRatio,i=r.minWidth/this.aspectRatio,n=r.maxHeight*this.aspectRatio,o=r.maxWidth/this.aspectRatio,e>r.minWidth&&(r.minWidth=e),i>r.minHeight&&(r.minHeight=i),nt.width,s=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,a=this.originalPosition.left+this.originalSize.width,c=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(n),u=/nw|ne|n/.test(n);return r&&(t.width=e.minWidth),s&&(t.height=e.minHeight),i&&(t.width=e.maxWidth),o&&(t.height=e.maxHeight),r&&l&&(t.left=a-e.minWidth),i&&l&&(t.left=a-e.maxWidth),s&&u&&(t.top=c-e.minHeight),o&&u&&(t.top=c-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,n=[],i=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],o=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];e<4;e++)n[e]=parseFloat(i[e])||0,n[e]+=parseFloat(o[e])||0;return{height:n[0]+n[2],width:n[1]+n[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,n=this.helper||this.element;e
          ").css({overflow:"hidden"}),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++n.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var n=this.originalSize;return{left:this.originalPosition.left+e,width:n.width-e}},n:function(t,e,n){var i=this.originalSize;return{top:this.originalPosition.top+n,height:i.height-n}},s:function(t,e,n){return{height:this.originalSize.height+n}},se:function(e,n,i){return t.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[e,n,i]))},sw:function(e,n,i){return t.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[e,n,i]))},ne:function(e,n,i){return t.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[e,n,i]))},nw:function(e,n,i){return t.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[e,n,i]))}},_propagate:function(e,n){t.ui.plugin.call(this,e,[n,this.ui()]),"resize"!==e&&this._trigger(e,n,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),t.ui.plugin.add("resizable","animate",{stop:function(e){var n=t(this).resizable("instance"),i=n.options,o=n._proportionallyResizeElements,r=o.length&&/textarea/i.test(o[0].nodeName),s=r&&n._hasScroll(o[0],"left")?0:n.sizeDiff.height,a=r?0:n.sizeDiff.width,c={width:n.size.width-a,height:n.size.height-s},l=parseFloat(n.element.css("left"))+(n.position.left-n.originalPosition.left)||null,u=parseFloat(n.element.css("top"))+(n.position.top-n.originalPosition.top)||null;n.element.animate(t.extend(c,u&&l?{top:u,left:l}:{}),{duration:i.animateDuration,easing:i.animateEasing,step:function(){var i={width:parseFloat(n.element.css("width")),height:parseFloat(n.element.css("height")),top:parseFloat(n.element.css("top")),left:parseFloat(n.element.css("left"))};o&&o.length&&t(o[0]).css({width:i.width,height:i.height}),n._updateCache(i),n._propagate("resize",e)}})}}),t.ui.plugin.add("resizable","containment",{start:function(){var e,n,i,o,r,s,a,c=t(this).resizable("instance"),l=c.options,u=c.element,h=l.containment,d=h instanceof t?h.get(0):/parent/.test(h)?u.parent().get(0):h;d&&(c.containerElement=t(d),/document/.test(h)||h===document?(c.containerOffset={left:0,top:0},c.containerPosition={left:0,top:0},c.parentData={element:t(document),left:0,top:0,width:t(document).width(),height:t(document).height()||document.body.parentNode.scrollHeight}):(e=t(d),n=[],t(["Top","Right","Left","Bottom"]).each((function(t,i){n[t]=c._num(e.css("padding"+i))})),c.containerOffset=e.offset(),c.containerPosition=e.position(),c.containerSize={height:e.innerHeight()-n[3],width:e.innerWidth()-n[1]},i=c.containerOffset,o=c.containerSize.height,r=c.containerSize.width,s=c._hasScroll(d,"left")?d.scrollWidth:r,a=c._hasScroll(d)?d.scrollHeight:o,c.parentData={element:d,left:i.left,top:i.top,width:s,height:a}))},resize:function(e){var n,i,o,r,s=t(this).resizable("instance"),a=s.options,c=s.containerOffset,l=s.position,u=s._aspectRatio||e.shiftKey,h={top:0,left:0},d=s.containerElement,p=!0;d[0]!==document&&/static/.test(d.css("position"))&&(h=c),l.left<(s._helper?c.left:0)&&(s.size.width=s.size.width+(s._helper?s.position.left-c.left:s.position.left-h.left),u&&(s.size.height=s.size.width/s.aspectRatio,p=!1),s.position.left=a.helper?c.left:0),l.top<(s._helper?c.top:0)&&(s.size.height=s.size.height+(s._helper?s.position.top-c.top:s.position.top),u&&(s.size.width=s.size.height*s.aspectRatio,p=!1),s.position.top=s._helper?c.top:0),o=s.containerElement.get(0)===s.element.parent().get(0),r=/relative|absolute/.test(s.containerElement.css("position")),o&&r?(s.offset.left=s.parentData.left+s.position.left,s.offset.top=s.parentData.top+s.position.top):(s.offset.left=s.element.offset().left,s.offset.top=s.element.offset().top),n=Math.abs(s.sizeDiff.width+(s._helper?s.offset.left-h.left:s.offset.left-c.left)),i=Math.abs(s.sizeDiff.height+(s._helper?s.offset.top-h.top:s.offset.top-c.top)),n+s.size.width>=s.parentData.width&&(s.size.width=s.parentData.width-n,u&&(s.size.height=s.size.width/s.aspectRatio,p=!1)),i+s.size.height>=s.parentData.height&&(s.size.height=s.parentData.height-i,u&&(s.size.width=s.size.height*s.aspectRatio,p=!1)),p||(s.position.left=s.prevPosition.left,s.position.top=s.prevPosition.top,s.size.width=s.prevSize.width,s.size.height=s.prevSize.height)},stop:function(){var e=t(this).resizable("instance"),n=e.options,i=e.containerOffset,o=e.containerPosition,r=e.containerElement,s=t(e.helper),a=s.offset(),c=s.outerWidth()-e.sizeDiff.width,l=s.outerHeight()-e.sizeDiff.height;e._helper&&!n.animate&&/relative/.test(r.css("position"))&&t(this).css({left:a.left-o.left-i.left,width:c,height:l}),e._helper&&!n.animate&&/static/.test(r.css("position"))&&t(this).css({left:a.left-o.left-i.left,width:c,height:l})}}),t.ui.plugin.add("resizable","alsoResize",{start:function(){var e=t(this).resizable("instance").options;t(e.alsoResize).each((function(){var e=t(this);e.data("ui-resizable-alsoresize",{width:parseFloat(e.css("width")),height:parseFloat(e.css("height")),left:parseFloat(e.css("left")),top:parseFloat(e.css("top"))})}))},resize:function(e,n){var i=t(this).resizable("instance"),o=i.options,r=i.originalSize,s=i.originalPosition,a={height:i.size.height-r.height||0,width:i.size.width-r.width||0,top:i.position.top-s.top||0,left:i.position.left-s.left||0};t(o.alsoResize).each((function(){var e=t(this),i=t(this).data("ui-resizable-alsoresize"),o={},r=e.parents(n.originalElement[0]).length?["width","height"]:["width","height","top","left"];t.each(r,(function(t,e){var n=(i[e]||0)+(a[e]||0);n&&n>=0&&(o[e]=n||null)})),e.css(o)}))},stop:function(){t(this).removeData("ui-resizable-alsoresize")}}),t.ui.plugin.add("resizable","ghost",{start:function(){var e=t(this).resizable("instance"),n=e.size;e.ghost=e.originalElement.clone(),e.ghost.css({opacity:.25,display:"block",position:"relative",height:n.height,width:n.width,margin:0,left:0,top:0}),e._addClass(e.ghost,"ui-resizable-ghost"),!1!==t.uiBackCompat&&"string"==typeof e.options.ghost&&e.ghost.addClass(this.options.ghost),e.ghost.appendTo(e.helper)},resize:function(){var e=t(this).resizable("instance");e.ghost&&e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})},stop:function(){var e=t(this).resizable("instance");e.ghost&&e.helper&&e.helper.get(0).removeChild(e.ghost.get(0))}}),t.ui.plugin.add("resizable","grid",{resize:function(){var e,n=t(this).resizable("instance"),i=n.options,o=n.size,r=n.originalSize,s=n.originalPosition,a=n.axis,c="number"==typeof i.grid?[i.grid,i.grid]:i.grid,l=c[0]||1,u=c[1]||1,h=Math.round((o.width-r.width)/l)*l,d=Math.round((o.height-r.height)/u)*u,p=r.width+h,A=r.height+d,f=i.maxWidth&&i.maxWidthp,b=i.minHeight&&i.minHeight>A;i.grid=c,m&&(p+=l),b&&(A+=u),f&&(p-=l),g&&(A-=u),/^(se|s|e)$/.test(a)?(n.size.width=p,n.size.height=A):/^(ne)$/.test(a)?(n.size.width=p,n.size.height=A,n.position.top=s.top-d):/^(sw)$/.test(a)?(n.size.width=p,n.size.height=A,n.position.left=s.left-h):((A-u<=0||p-l<=0)&&(e=n._getPaddingPlusBorderDimensions(this)),A-u>0?(n.size.height=A,n.position.top=s.top-d):(A=u-e.height,n.size.height=A,n.position.top=s.top+r.height-A),p-l>0?(n.size.width=p,n.position.left=s.left-h):(p=l-e.width,n.size.width=p,n.position.left=s.left+r.width-p))}}),t.ui.resizable,t.widget("ui.dialog",{version:"1.13.3",options:{appendTo:"body",autoOpen:!0,buttons:[],classes:{"ui-dialog":"ui-corner-all","ui-dialog-titlebar":"ui-corner-all"},closeOnEscape:!0,closeText:"Close",draggable:!0,hide:null,height:"auto",maxHeight:null,maxWidth:null,minHeight:150,minWidth:150,modal:!1,position:{my:"center",at:"center",of:window,collision:"fit",using:function(e){var n=t(this).css(e).offset().top;n<0&&t(this).css("top",e.top-n)}},resizable:!0,show:null,title:null,width:300,beforeClose:null,close:null,drag:null,dragStart:null,dragStop:null,focus:null,open:null,resize:null,resizeStart:null,resizeStop:null},sizeRelatedOptions:{buttons:!0,height:!0,maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0,width:!0},resizableRelatedOptions:{maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0},_create:function(){this.originalCss={display:this.element[0].style.display,width:this.element[0].style.width,minHeight:this.element[0].style.minHeight,maxHeight:this.element[0].style.maxHeight,height:this.element[0].style.height},this.originalPosition={parent:this.element.parent(),index:this.element.parent().children().index(this.element)},this.originalTitle=this.element.attr("title"),null==this.options.title&&null!=this.originalTitle&&(this.options.title=this.originalTitle),this.options.disabled&&(this.options.disabled=!1),this._createWrapper(),this.element.show().removeAttr("title").appendTo(this.uiDialog),this._addClass("ui-dialog-content","ui-widget-content"),this._createTitlebar(),this._createButtonPane(),this.options.draggable&&t.fn.draggable&&this._makeDraggable(),this.options.resizable&&t.fn.resizable&&this._makeResizable(),this._isOpen=!1,this._trackFocus()},_init:function(){this.options.autoOpen&&this.open()},_appendTo:function(){var e=this.options.appendTo;return e&&(e.jquery||e.nodeType)?t(e):this.document.find(e||"body").eq(0)},_destroy:function(){var t,e=this.originalPosition;this._untrackInstance(),this._destroyOverlay(),this.element.removeUniqueId().css(this.originalCss).detach(),this.uiDialog.remove(),this.originalTitle&&this.element.attr("title",this.originalTitle),(t=e.parent.children().eq(e.index)).length&&t[0]!==this.element[0]?t.before(this.element):e.parent.append(this.element)},widget:function(){return this.uiDialog},disable:t.noop,enable:t.noop,close:function(e){var n=this;this._isOpen&&!1!==this._trigger("beforeClose",e)&&(this._isOpen=!1,this._focusedElement=null,this._destroyOverlay(),this._untrackInstance(),this.opener.filter(":focusable").trigger("focus").length||t.ui.safeBlur(t.ui.safeActiveElement(this.document[0])),this._hide(this.uiDialog,this.options.hide,(function(){n._trigger("close",e)})))},isOpen:function(){return this._isOpen},moveToTop:function(){this._moveToTop()},_moveToTop:function(e,n){var i=!1,o=this.uiDialog.siblings(".ui-front:visible").map((function(){return+t(this).css("z-index")})).get(),r=Math.max.apply(null,o);return r>=+this.uiDialog.css("z-index")&&(this.uiDialog.css("z-index",r+1),i=!0),i&&!n&&this._trigger("focus",e),i},open:function(){var e=this;this._isOpen?this._moveToTop()&&this._focusTabbable():(this._isOpen=!0,this.opener=t(t.ui.safeActiveElement(this.document[0])),this._size(),this._position(),this._createOverlay(),this._moveToTop(null,!0),this.overlay&&this.overlay.css("z-index",this.uiDialog.css("z-index")-1),this._show(this.uiDialog,this.options.show,(function(){e._focusTabbable(),e._trigger("focus")})),this._makeFocusTarget(),this._trigger("open"))},_focusTabbable:function(){var t=this._focusedElement;t||(t=this.element.find("[autofocus]")),t.length||(t=this.element.find(":tabbable")),t.length||(t=this.uiDialogButtonPane.find(":tabbable")),t.length||(t=this.uiDialogTitlebarClose.filter(":tabbable")),t.length||(t=this.uiDialog),t.eq(0).trigger("focus")},_restoreTabbableFocus:function(){var e=t.ui.safeActiveElement(this.document[0]);this.uiDialog[0]===e||t.contains(this.uiDialog[0],e)||this._focusTabbable()},_keepFocus:function(t){t.preventDefault(),this._restoreTabbableFocus(),this._delay(this._restoreTabbableFocus)},_createWrapper:function(){this.uiDialog=t("
          ").hide().attr({tabIndex:-1,role:"dialog"}).appendTo(this._appendTo()),this._addClass(this.uiDialog,"ui-dialog","ui-widget ui-widget-content ui-front"),this._on(this.uiDialog,{keydown:function(e){if(this.options.closeOnEscape&&!e.isDefaultPrevented()&&e.keyCode&&e.keyCode===t.ui.keyCode.ESCAPE)return e.preventDefault(),void this.close(e);if(e.keyCode===t.ui.keyCode.TAB&&!e.isDefaultPrevented()){var n=this.uiDialog.find(":tabbable"),i=n.first(),o=n.last();e.target!==o[0]&&e.target!==this.uiDialog[0]||e.shiftKey?e.target!==i[0]&&e.target!==this.uiDialog[0]||!e.shiftKey||(this._delay((function(){o.trigger("focus")})),e.preventDefault()):(this._delay((function(){i.trigger("focus")})),e.preventDefault())}},mousedown:function(t){this._moveToTop(t)&&this._focusTabbable()}}),this.element.find("[aria-describedby]").length||this.uiDialog.attr({"aria-describedby":this.element.uniqueId().attr("id")})},_createTitlebar:function(){var e;this.uiDialogTitlebar=t("
          "),this._addClass(this.uiDialogTitlebar,"ui-dialog-titlebar","ui-widget-header ui-helper-clearfix"),this._on(this.uiDialogTitlebar,{mousedown:function(e){t(e.target).closest(".ui-dialog-titlebar-close")||this.uiDialog.trigger("focus")}}),this.uiDialogTitlebarClose=t("").button({label:t("").text(this.options.closeText).html(),icon:"ui-icon-closethick",showLabel:!1}).appendTo(this.uiDialogTitlebar),this._addClass(this.uiDialogTitlebarClose,"ui-dialog-titlebar-close"),this._on(this.uiDialogTitlebarClose,{click:function(t){t.preventDefault(),this.close(t)}}),e=t("").uniqueId().prependTo(this.uiDialogTitlebar),this._addClass(e,"ui-dialog-title"),this._title(e),this.uiDialogTitlebar.prependTo(this.uiDialog),this.uiDialog.attr({"aria-labelledby":e.attr("id")})},_title:function(t){this.options.title?t.text(this.options.title):t.html(" ")},_createButtonPane:function(){this.uiDialogButtonPane=t("
          "),this._addClass(this.uiDialogButtonPane,"ui-dialog-buttonpane","ui-widget-content ui-helper-clearfix"),this.uiButtonSet=t("
          ").appendTo(this.uiDialogButtonPane),this._addClass(this.uiButtonSet,"ui-dialog-buttonset"),this._createButtons()},_createButtons:function(){var e=this,n=this.options.buttons;this.uiDialogButtonPane.remove(),this.uiButtonSet.empty(),t.isEmptyObject(n)||Array.isArray(n)&&!n.length?this._removeClass(this.uiDialog,"ui-dialog-buttons"):(t.each(n,(function(n,i){var o,r;i="function"==typeof i?{click:i,text:n}:i,i=t.extend({type:"button"},i),o=i.click,r={icon:i.icon,iconPosition:i.iconPosition,showLabel:i.showLabel,icons:i.icons,text:i.text},delete i.click,delete i.icon,delete i.iconPosition,delete i.showLabel,delete i.icons,"boolean"==typeof i.text&&delete i.text,t("",i).button(r).appendTo(e.uiButtonSet).on("click",(function(){o.apply(e.element[0],arguments)}))})),this._addClass(this.uiDialog,"ui-dialog-buttons"),this.uiDialogButtonPane.appendTo(this.uiDialog))},_makeDraggable:function(){var e=this,n=this.options;function i(t){return{position:t.position,offset:t.offset}}this.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(n,o){e._addClass(t(this),"ui-dialog-dragging"),e._blockFrames(),e._trigger("dragStart",n,i(o))},drag:function(t,n){e._trigger("drag",t,i(n))},stop:function(o,r){var s=r.offset.left-e.document.scrollLeft(),a=r.offset.top-e.document.scrollTop();n.position={my:"left top",at:"left"+(s>=0?"+":"")+s+" top"+(a>=0?"+":"")+a,of:e.window},e._removeClass(t(this),"ui-dialog-dragging"),e._unblockFrames(),e._trigger("dragStop",o,i(r))}})},_makeResizable:function(){var e=this,n=this.options,i=n.resizable,o=this.uiDialog.css("position"),r="string"==typeof i?i:"n,e,s,w,se,sw,ne,nw";function s(t){return{originalPosition:t.originalPosition,originalSize:t.originalSize,position:t.position,size:t.size}}this.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:this.element,maxWidth:n.maxWidth,maxHeight:n.maxHeight,minWidth:n.minWidth,minHeight:this._minHeight(),handles:r,start:function(n,i){e._addClass(t(this),"ui-dialog-resizing"),e._blockFrames(),e._trigger("resizeStart",n,s(i))},resize:function(t,n){e._trigger("resize",t,s(n))},stop:function(i,o){var r=e.uiDialog.offset(),a=r.left-e.document.scrollLeft(),c=r.top-e.document.scrollTop();n.height=e.uiDialog.height(),n.width=e.uiDialog.width(),n.position={my:"left top",at:"left"+(a>=0?"+":"")+a+" top"+(c>=0?"+":"")+c,of:e.window},e._removeClass(t(this),"ui-dialog-resizing"),e._unblockFrames(),e._trigger("resizeStop",i,s(o))}}).css("position",o)},_trackFocus:function(){this._on(this.widget(),{focusin:function(e){this._makeFocusTarget(),this._focusedElement=t(e.target)}})},_makeFocusTarget:function(){this._untrackInstance(),this._trackingInstances().unshift(this)},_untrackInstance:function(){var e=this._trackingInstances(),n=t.inArray(this,e);-1!==n&&e.splice(n,1)},_trackingInstances:function(){var t=this.document.data("ui-dialog-instances");return t||(t=[],this.document.data("ui-dialog-instances",t)),t},_minHeight:function(){var t=this.options;return"auto"===t.height?t.minHeight:Math.min(t.minHeight,t.height)},_position:function(){var t=this.uiDialog.is(":visible");t||this.uiDialog.show(),this.uiDialog.position(this.options.position),t||this.uiDialog.hide()},_setOptions:function(e){var n=this,i=!1,o={};t.each(e,(function(t,e){n._setOption(t,e),t in n.sizeRelatedOptions&&(i=!0),t in n.resizableRelatedOptions&&(o[t]=e)})),i&&(this._size(),this._position()),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option",o)},_setOption:function(e,n){var i,o,r=this.uiDialog;"disabled"!==e&&(this._super(e,n),"appendTo"===e&&this.uiDialog.appendTo(this._appendTo()),"buttons"===e&&this._createButtons(),"closeText"===e&&this.uiDialogTitlebarClose.button({label:t("").text(""+this.options.closeText).html()}),"draggable"===e&&((i=r.is(":data(ui-draggable)"))&&!n&&r.draggable("destroy"),!i&&n&&this._makeDraggable()),"position"===e&&this._position(),"resizable"===e&&((o=r.is(":data(ui-resizable)"))&&!n&&r.resizable("destroy"),o&&"string"==typeof n&&r.resizable("option","handles",n),o||!1===n||this._makeResizable()),"title"===e&&this._title(this.uiDialogTitlebar.find(".ui-dialog-title")))},_size:function(){var t,e,n,i=this.options;this.element.show().css({width:"auto",minHeight:0,maxHeight:"none",height:0}),i.minWidth>i.width&&(i.width=i.minWidth),t=this.uiDialog.css({height:"auto",width:i.width}).outerHeight(),e=Math.max(0,i.minHeight-t),n="number"==typeof i.maxHeight?Math.max(0,i.maxHeight-t):"none","auto"===i.height?this.element.css({minHeight:e,maxHeight:n,height:"auto"}):this.element.height(Math.max(0,i.height-t)),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())},_blockFrames:function(){this.iframeBlocks=this.document.find("iframe").map((function(){var e=t(this);return t("
          ").css({position:"absolute",width:e.outerWidth(),height:e.outerHeight()}).appendTo(e.parent()).offset(e.offset())[0]}))},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_allowInteraction:function(e){return!!t(e.target).closest(".ui-dialog").length||!!t(e.target).closest(".ui-datepicker").length},_createOverlay:function(){if(this.options.modal){var e=t.fn.jquery.substring(0,4),n=!0;this._delay((function(){n=!1})),this.document.data("ui-dialog-overlays")||this.document.on("focusin.ui-dialog",function(t){if(!n){var i=this._trackingInstances()[0];i._allowInteraction(t)||(t.preventDefault(),i._focusTabbable(),"3.4."!==e&&"3.5."!==e&&"3.6."!==e||i._delay(i._restoreTabbableFocus))}}.bind(this)),this.overlay=t("
          ").appendTo(this._appendTo()),this._addClass(this.overlay,null,"ui-widget-overlay ui-front"),this._on(this.overlay,{mousedown:"_keepFocus"}),this.document.data("ui-dialog-overlays",(this.document.data("ui-dialog-overlays")||0)+1)}},_destroyOverlay:function(){if(this.options.modal&&this.overlay){var t=this.document.data("ui-dialog-overlays")-1;t?this.document.data("ui-dialog-overlays",t):(this.document.off("focusin.ui-dialog"),this.document.removeData("ui-dialog-overlays")),this.overlay.remove(),this.overlay=null}}}),!1!==t.uiBackCompat&&t.widget("ui.dialog",t.ui.dialog,{options:{dialogClass:""},_createWrapper:function(){this._super(),this.uiDialog.addClass(this.options.dialogClass)},_setOption:function(t,e){"dialogClass"===t&&this.uiDialog.removeClass(this.options.dialogClass).addClass(e),this._superApply(arguments)}}),t.ui.dialog,t.widget("ui.droppable",{version:"1.13.3",widgetEventPrefix:"drop",options:{accept:"*",addClasses:!0,greedy:!1,scope:"default",tolerance:"intersect",activate:null,deactivate:null,drop:null,out:null,over:null},_create:function(){var t,e=this.options,n=e.accept;this.isover=!1,this.isout=!0,this.accept="function"==typeof n?n:function(t){return t.is(n)},this.proportions=function(){if(!arguments.length)return t||(t={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight});t=arguments[0]},this._addToManager(e.scope),e.addClasses&&this._addClass("ui-droppable")},_addToManager:function(e){t.ui.ddmanager.droppables[e]=t.ui.ddmanager.droppables[e]||[],t.ui.ddmanager.droppables[e].push(this)},_splice:function(t){for(var e=0;e=e&&t=u&&s<=d||c>=u&&c<=d||sd)&&(r>=l&&r<=h||a>=l&&a<=h||rh);default:return!1}}}(),t.ui.ddmanager={current:null,droppables:{default:[]},prepareOffsets:function(e,n){var i,o,r=t.ui.ddmanager.droppables[e.options.scope]||[],s=n?n.type:null,a=(e.currentItem||e.element).find(":data(ui-droppable)").addBack();t:for(i=0;i").appendTo(this.element),this._addClass(this.valueDiv,"ui-progressbar-value","ui-widget-header"),this._refreshValue()},_destroy:function(){this.element.removeAttr("role aria-valuemin aria-valuemax aria-valuenow"),this.valueDiv.remove()},value:function(t){if(void 0===t)return this.options.value;this.options.value=this._constrainedValue(t),this._refreshValue()},_constrainedValue:function(t){return void 0===t&&(t=this.options.value),this.indeterminate=!1===t,"number"!=typeof t&&(t=0),!this.indeterminate&&Math.min(this.options.max,Math.max(this.min,t))},_setOptions:function(t){var e=t.value;delete t.value,this._super(t),this.options.value=this._constrainedValue(e),this._refreshValue()},_setOption:function(t,e){"max"===t&&(e=Math.max(this.min,e)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t),this._toggleClass(null,"ui-state-disabled",!!t)},_percentage:function(){return this.indeterminate?100:100*(this.options.value-this.min)/(this.options.max-this.min)},_refreshValue:function(){var e=this.options.value,n=this._percentage();this.valueDiv.toggle(this.indeterminate||e>this.min).width(n.toFixed(0)+"%"),this._toggleClass(this.valueDiv,"ui-progressbar-complete",null,e===this.options.max)._toggleClass("ui-progressbar-indeterminate",null,this.indeterminate),this.indeterminate?(this.element.removeAttr("aria-valuenow"),this.overlayDiv||(this.overlayDiv=t("
          ").appendTo(this.valueDiv),this._addClass(this.overlayDiv,"ui-progressbar-overlay"))):(this.element.attr({"aria-valuemax":this.options.max,"aria-valuenow":e}),this.overlayDiv&&(this.overlayDiv.remove(),this.overlayDiv=null)),this.oldValue!==e&&(this.oldValue=e,this._trigger("change")),e===this.options.max&&this._trigger("complete")}}),t.widget("ui.selectable",t.ui.mouse,{version:"1.13.3",options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch",selected:null,selecting:null,start:null,stop:null,unselected:null,unselecting:null},_create:function(){var e=this;this._addClass("ui-selectable"),this.dragged=!1,this.refresh=function(){e.elementPos=t(e.element[0]).offset(),e.selectees=t(e.options.filter,e.element[0]),e._addClass(e.selectees,"ui-selectee"),e.selectees.each((function(){var n=t(this),i=n.offset(),o={left:i.left-e.elementPos.left,top:i.top-e.elementPos.top};t.data(this,"selectable-item",{element:this,$element:n,left:o.left,top:o.top,right:o.left+n.outerWidth(),bottom:o.top+n.outerHeight(),startselected:!1,selected:n.hasClass("ui-selected"),selecting:n.hasClass("ui-selecting"),unselecting:n.hasClass("ui-unselecting")})}))},this.refresh(),this._mouseInit(),this.helper=t("
          "),this._addClass(this.helper,"ui-selectable-helper")},_destroy:function(){this.selectees.removeData("selectable-item"),this._mouseDestroy()},_mouseStart:function(e){var n=this,i=this.options;this.opos=[e.pageX,e.pageY],this.elementPos=t(this.element[0]).offset(),this.options.disabled||(this.selectees=t(i.filter,this.element[0]),this._trigger("start",e),t(i.appendTo).append(this.helper),this.helper.css({left:e.pageX,top:e.pageY,width:0,height:0}),i.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each((function(){var i=t.data(this,"selectable-item");i.startselected=!0,e.metaKey||e.ctrlKey||(n._removeClass(i.$element,"ui-selected"),i.selected=!1,n._addClass(i.$element,"ui-unselecting"),i.unselecting=!0,n._trigger("unselecting",e,{unselecting:i.element}))})),t(e.target).parents().addBack().each((function(){var i,o=t.data(this,"selectable-item");if(o)return i=!e.metaKey&&!e.ctrlKey||!o.$element.hasClass("ui-selected"),n._removeClass(o.$element,i?"ui-unselecting":"ui-selected")._addClass(o.$element,i?"ui-selecting":"ui-unselecting"),o.unselecting=!i,o.selecting=i,o.selected=i,i?n._trigger("selecting",e,{selecting:o.element}):n._trigger("unselecting",e,{unselecting:o.element}),!1})))},_mouseDrag:function(e){if(this.dragged=!0,!this.options.disabled){var n,i=this,o=this.options,r=this.opos[0],s=this.opos[1],a=e.pageX,c=e.pageY;return r>a&&(n=a,a=r,r=n),s>c&&(n=c,c=s,s=n),this.helper.css({left:r,top:s,width:a-r,height:c-s}),this.selectees.each((function(){var n=t.data(this,"selectable-item"),l=!1,u={};n&&n.element!==i.element[0]&&(u.left=n.left+i.elementPos.left,u.right=n.right+i.elementPos.left,u.top=n.top+i.elementPos.top,u.bottom=n.bottom+i.elementPos.top,"touch"===o.tolerance?l=!(u.left>a||u.rightc||u.bottomr&&u.rights&&u.bottom",options:{appendTo:null,classes:{"ui-selectmenu-button-open":"ui-corner-top","ui-selectmenu-button-closed":"ui-corner-all"},disabled:null,icons:{button:"ui-icon-triangle-1-s"},position:{my:"left top",at:"left bottom",collision:"none"},width:!1,change:null,close:null,focus:null,open:null,select:null},_create:function(){var e=this.element.uniqueId().attr("id");this.ids={element:e,button:e+"-button",menu:e+"-menu"},this._drawButton(),this._drawMenu(),this._bindFormResetHandler(),this._rendered=!1,this.menuItems=t()},_drawButton:function(){var e,n=this,i=this._parseOption(this.element.find("option:selected"),this.element[0].selectedIndex);this.labels=this.element.labels().attr("for",this.ids.button),this._on(this.labels,{click:function(t){this.button.trigger("focus"),t.preventDefault()}}),this.element.hide(),this.button=t("",{tabindex:this.options.disabled?-1:0,id:this.ids.button,role:"combobox","aria-expanded":"false","aria-autocomplete":"list","aria-owns":this.ids.menu,"aria-haspopup":"true",title:this.element.attr("title")}).insertAfter(this.element),this._addClass(this.button,"ui-selectmenu-button ui-selectmenu-button-closed","ui-button ui-widget"),e=t("").appendTo(this.button),this._addClass(e,"ui-selectmenu-icon","ui-icon "+this.options.icons.button),this.buttonItem=this._renderButtonItem(i).appendTo(this.button),!1!==this.options.width&&this._resizeButton(),this._on(this.button,this._buttonEvents),this.button.one("focusin",(function(){n._rendered||n._refreshMenu()}))},_drawMenu:function(){var e=this;this.menu=t("
            ",{"aria-hidden":"true","aria-labelledby":this.ids.button,id:this.ids.menu}),this.menuWrap=t("
            ").append(this.menu),this._addClass(this.menuWrap,"ui-selectmenu-menu","ui-front"),this.menuWrap.appendTo(this._appendTo()),this.menuInstance=this.menu.menu({classes:{"ui-menu":"ui-corner-bottom"},role:"listbox",select:function(t,n){t.preventDefault(),e._setSelection(),e._select(n.item.data("ui-selectmenu-item"),t)},focus:function(t,n){var i=n.item.data("ui-selectmenu-item");null!=e.focusIndex&&i.index!==e.focusIndex&&(e._trigger("focus",t,{item:i}),e.isOpen||e._select(i,t)),e.focusIndex=i.index,e.button.attr("aria-activedescendant",e.menuItems.eq(i.index).attr("id"))}}).menu("instance"),this.menuInstance._off(this.menu,"mouseleave"),this.menuInstance._closeOnDocumentClick=function(){return!1},this.menuInstance._isDivider=function(){return!1}},refresh:function(){this._refreshMenu(),this.buttonItem.replaceWith(this.buttonItem=this._renderButtonItem(this._getSelectedItem().data("ui-selectmenu-item")||{})),null===this.options.width&&this._resizeButton()},_refreshMenu:function(){var t,e=this.element.find("option");this.menu.empty(),this._parseOptions(e),this._renderMenu(this.menu,this.items),this.menuInstance.refresh(),this.menuItems=this.menu.find("li").not(".ui-selectmenu-optgroup").find(".ui-menu-item-wrapper"),this._rendered=!0,e.length&&(t=this._getSelectedItem(),this.menuInstance.focus(null,t),this._setAria(t.data("ui-selectmenu-item")),this._setOption("disabled",this.element.prop("disabled")))},open:function(t){this.options.disabled||(this._rendered?(this._removeClass(this.menu.find(".ui-state-active"),null,"ui-state-active"),this.menuInstance.focus(null,this._getSelectedItem())):this._refreshMenu(),this.menuItems.length&&(this.isOpen=!0,this._toggleAttr(),this._resizeMenu(),this._position(),this._on(this.document,this._documentClick),this._trigger("open",t)))},_position:function(){this.menuWrap.position(t.extend({of:this.button},this.options.position))},close:function(t){this.isOpen&&(this.isOpen=!1,this._toggleAttr(),this.range=null,this._off(this.document),this._trigger("close",t))},widget:function(){return this.button},menuWidget:function(){return this.menu},_renderButtonItem:function(e){var n=t("");return this._setText(n,e.label),this._addClass(n,"ui-selectmenu-text"),n},_renderMenu:function(e,n){var i=this,o="";t.each(n,(function(n,r){var s;r.optgroup!==o&&(s=t("
          • ",{text:r.optgroup}),i._addClass(s,"ui-selectmenu-optgroup","ui-menu-divider"+(r.element.parent("optgroup").prop("disabled")?" ui-state-disabled":"")),s.appendTo(e),o=r.optgroup),i._renderItemData(e,r)}))},_renderItemData:function(t,e){return this._renderItem(t,e).data("ui-selectmenu-item",e)},_renderItem:function(e,n){var i=t("
          • "),o=t("
            ",{title:n.element.attr("title")});return n.disabled&&this._addClass(i,null,"ui-state-disabled"),n.hidden?i.prop("hidden",!0):this._setText(o,n.label),i.append(o).appendTo(e)},_setText:function(t,e){e?t.text(e):t.html(" ")},_move:function(t,e){var n,i,o=".ui-menu-item";this.isOpen?n=this.menuItems.eq(this.focusIndex).parent("li"):(n=this.menuItems.eq(this.element[0].selectedIndex).parent("li"),o+=":not(.ui-state-disabled)"),(i="first"===t||"last"===t?n["first"===t?"prevAll":"nextAll"](o).eq(-1):n[t+"All"](o).eq(0)).length&&this.menuInstance.focus(e,i)},_getSelectedItem:function(){return this.menuItems.eq(this.element[0].selectedIndex).parent("li")},_toggle:function(t){this[this.isOpen?"close":"open"](t)},_setSelection:function(){var t;this.range&&(window.getSelection?((t=window.getSelection()).removeAllRanges(),t.addRange(this.range)):this.range.select(),this.button.trigger("focus"))},_documentClick:{mousedown:function(e){this.isOpen&&(t(e.target).closest(".ui-selectmenu-menu, #"+t.escapeSelector(this.ids.button)).length||this.close(e))}},_buttonEvents:{mousedown:function(){var t;window.getSelection?(t=window.getSelection()).rangeCount&&(this.range=t.getRangeAt(0)):this.range=document.selection.createRange()},click:function(t){this._setSelection(),this._toggle(t)},keydown:function(e){var n=!0;switch(e.keyCode){case t.ui.keyCode.TAB:case t.ui.keyCode.ESCAPE:this.close(e),n=!1;break;case t.ui.keyCode.ENTER:this.isOpen&&this._selectFocusedItem(e);break;case t.ui.keyCode.UP:e.altKey?this._toggle(e):this._move("prev",e);break;case t.ui.keyCode.DOWN:e.altKey?this._toggle(e):this._move("next",e);break;case t.ui.keyCode.SPACE:this.isOpen?this._selectFocusedItem(e):this._toggle(e);break;case t.ui.keyCode.LEFT:this._move("prev",e);break;case t.ui.keyCode.RIGHT:this._move("next",e);break;case t.ui.keyCode.HOME:case t.ui.keyCode.PAGE_UP:this._move("first",e);break;case t.ui.keyCode.END:case t.ui.keyCode.PAGE_DOWN:this._move("last",e);break;default:this.menu.trigger(e),n=!1}n&&e.preventDefault()}},_selectFocusedItem:function(t){var e=this.menuItems.eq(this.focusIndex).parent("li");e.hasClass("ui-state-disabled")||this._select(e.data("ui-selectmenu-item"),t)},_select:function(t,e){var n=this.element[0].selectedIndex;this.element[0].selectedIndex=t.index,this.buttonItem.replaceWith(this.buttonItem=this._renderButtonItem(t)),this._setAria(t),this._trigger("select",e,{item:t}),t.index!==n&&this._trigger("change",e,{item:t}),this.close(e)},_setAria:function(t){var e=this.menuItems.eq(t.index).attr("id");this.button.attr({"aria-labelledby":e,"aria-activedescendant":e}),this.menu.attr("aria-activedescendant",e)},_setOption:function(t,e){if("icons"===t){var n=this.button.find("span.ui-icon");this._removeClass(n,null,this.options.icons.button)._addClass(n,null,e.button)}this._super(t,e),"appendTo"===t&&this.menuWrap.appendTo(this._appendTo()),"width"===t&&this._resizeButton()},_setOptionDisabled:function(t){this._super(t),this.menuInstance.option("disabled",t),this.button.attr("aria-disabled",t),this._toggleClass(this.button,null,"ui-state-disabled",t),this.element.prop("disabled",t),t?(this.button.attr("tabindex",-1),this.close()):this.button.attr("tabindex",0)},_appendTo:function(){var e=this.options.appendTo;return e&&(e=e.jquery||e.nodeType?t(e):this.document.find(e).eq(0)),e&&e[0]||(e=this.element.closest(".ui-front, dialog")),e.length||(e=this.document[0].body),e},_toggleAttr:function(){this.button.attr("aria-expanded",this.isOpen),this._removeClass(this.button,"ui-selectmenu-button-"+(this.isOpen?"closed":"open"))._addClass(this.button,"ui-selectmenu-button-"+(this.isOpen?"open":"closed"))._toggleClass(this.menuWrap,"ui-selectmenu-open",null,this.isOpen),this.menu.attr("aria-hidden",!this.isOpen)},_resizeButton:function(){var t=this.options.width;!1!==t?(null===t&&(t=this.element.show().outerWidth(),this.element.hide()),this.button.outerWidth(t)):this.button.css("width","")},_resizeMenu:function(){this.menu.outerWidth(Math.max(this.button.outerWidth(),this.menu.width("").outerWidth()+1))},_getCreateOptions:function(){var t=this._super();return t.disabled=this.element.prop("disabled"),t},_parseOptions:function(e){var n=this,i=[];e.each((function(e,o){i.push(n._parseOption(t(o),e))})),this.items=i},_parseOption:function(t,e){var n=t.parent("optgroup");return{element:t,index:e,value:t.val(),label:t.text(),hidden:n.prop("hidden")||t.prop("hidden"),optgroup:n.attr("label")||"",disabled:n.prop("disabled")||t.prop("disabled")}},_destroy:function(){this._unbindFormResetHandler(),this.menuWrap.remove(),this.button.remove(),this.element.show(),this.element.removeUniqueId(),this.labels.attr("for",this.ids.element)}}]),t.widget("ui.slider",t.ui.mouse,{version:"1.13.3",widgetEventPrefix:"slide",options:{animate:!1,classes:{"ui-slider":"ui-corner-all","ui-slider-handle":"ui-corner-all","ui-slider-range":"ui-corner-all ui-widget-header"},distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null,change:null,slide:null,start:null,stop:null},numPages:5,_create:function(){this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this._calculateNewMax(),this._addClass("ui-slider ui-slider-"+this.orientation,"ui-widget ui-widget-content"),this._refresh(),this._animateOff=!1},_refresh:function(){this._createRange(),this._createHandles(),this._setupEvents(),this._refreshValue()},_createHandles:function(){var e,n,i=this.options,o=this.element.find(".ui-slider-handle"),r=[];for(n=i.values&&i.values.length||1,o.length>n&&(o.slice(n).remove(),o=o.slice(0,n)),e=o.length;e");this.handles=o.add(t(r.join("")).appendTo(this.element)),this._addClass(this.handles,"ui-slider-handle","ui-state-default"),this.handle=this.handles.eq(0),this.handles.each((function(e){t(this).data("ui-slider-handle-index",e).attr("tabIndex",0)}))},_createRange:function(){var e=this.options;e.range?(!0===e.range&&(e.values?e.values.length&&2!==e.values.length?e.values=[e.values[0],e.values[0]]:Array.isArray(e.values)&&(e.values=e.values.slice(0)):e.values=[this._valueMin(),this._valueMin()]),this.range&&this.range.length?(this._removeClass(this.range,"ui-slider-range-min ui-slider-range-max"),this.range.css({left:"",bottom:""})):(this.range=t("
            ").appendTo(this.element),this._addClass(this.range,"ui-slider-range")),"min"!==e.range&&"max"!==e.range||this._addClass(this.range,"ui-slider-range-"+e.range)):(this.range&&this.range.remove(),this.range=null)},_setupEvents:function(){this._off(this.handles),this._on(this.handles,this._handleEvents),this._hoverable(this.handles),this._focusable(this.handles)},_destroy:function(){this.handles.remove(),this.range&&this.range.remove(),this._mouseDestroy()},_mouseCapture:function(e){var n,i,o,r,s,a,c,l=this,u=this.options;return!u.disabled&&(this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),n={x:e.pageX,y:e.pageY},i=this._normValueFromMouse(n),o=this._valueMax()-this._valueMin()+1,this.handles.each((function(e){var n=Math.abs(i-l.values(e));(o>n||o===n&&(e===l._lastChangedValue||l.values(e)===u.min))&&(o=n,r=t(this),s=e)})),!1!==this._start(e,s)&&(this._mouseSliding=!0,this._handleIndex=s,this._addClass(r,null,"ui-state-active"),r.trigger("focus"),a=r.offset(),c=!t(e.target).parents().addBack().is(".ui-slider-handle"),this._clickOffset=c?{left:0,top:0}:{left:e.pageX-a.left-r.width()/2,top:e.pageY-a.top-r.height()/2-(parseInt(r.css("borderTopWidth"),10)||0)-(parseInt(r.css("borderBottomWidth"),10)||0)+(parseInt(r.css("marginTop"),10)||0)},this.handles.hasClass("ui-state-hover")||this._slide(e,s,i),this._animateOff=!0,!0))},_mouseStart:function(){return!0},_mouseDrag:function(t){var e={x:t.pageX,y:t.pageY},n=this._normValueFromMouse(e);return this._slide(t,this._handleIndex,n),!1},_mouseStop:function(t){return this._removeClass(this.handles,null,"ui-state-active"),this._mouseSliding=!1,this._stop(t,this._handleIndex),this._change(t,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!1,!1},_detectOrientation:function(){this.orientation="vertical"===this.options.orientation?"vertical":"horizontal"},_normValueFromMouse:function(t){var e,n,i,o,r;return"horizontal"===this.orientation?(e=this.elementSize.width,n=t.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(e=this.elementSize.height,n=t.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)),(i=n/e)>1&&(i=1),i<0&&(i=0),"vertical"===this.orientation&&(i=1-i),o=this._valueMax()-this._valueMin(),r=this._valueMin()+i*o,this._trimAlignValue(r)},_uiHash:function(t,e,n){var i={handle:this.handles[t],handleIndex:t,value:void 0!==e?e:this.value()};return this._hasMultipleValues()&&(i.value=void 0!==e?e:this.values(t),i.values=n||this.values()),i},_hasMultipleValues:function(){return this.options.values&&this.options.values.length},_start:function(t,e){return this._trigger("start",t,this._uiHash(e))},_slide:function(t,e,n){var i,o=this.value(),r=this.values();this._hasMultipleValues()&&(i=this.values(e?0:1),o=this.values(e),2===this.options.values.length&&!0===this.options.range&&(n=0===e?Math.min(i,n):Math.max(i,n)),r[e]=n),n!==o&&!1!==this._trigger("slide",t,this._uiHash(e,n,r))&&(this._hasMultipleValues()?this.values(e,n):this.value(n))},_stop:function(t,e){this._trigger("stop",t,this._uiHash(e))},_change:function(t,e){this._keySliding||this._mouseSliding||(this._lastChangedValue=e,this._trigger("change",t,this._uiHash(e)))},value:function(t){return arguments.length?(this.options.value=this._trimAlignValue(t),this._refreshValue(),void this._change(null,0)):this._value()},values:function(t,e){var n,i,o;if(arguments.length>1)return this.options.values[t]=this._trimAlignValue(e),this._refreshValue(),void this._change(null,t);if(!arguments.length)return this._values();if(!Array.isArray(arguments[0]))return this._hasMultipleValues()?this._values(t):this.value();for(n=this.options.values,i=arguments[0],o=0;o=0;n--)this._change(null,n);this._animateOff=!1;break;case"step":case"min":case"max":this._animateOff=!0,this._calculateNewMax(),this._refreshValue(),this._animateOff=!1;break;case"range":this._animateOff=!0,this._refresh(),this._animateOff=!1}},_setOptionDisabled:function(t){this._super(t),this._toggleClass(null,"ui-state-disabled",!!t)},_value:function(){var t=this.options.value;return this._trimAlignValue(t)},_values:function(t){var e,n,i;if(arguments.length)return e=this.options.values[t],this._trimAlignValue(e);if(this._hasMultipleValues()){for(n=this.options.values.slice(),i=0;i=this._valueMax())return this._valueMax();var e=this.options.step>0?this.options.step:1,n=(t-this._valueMin())%e,i=t-n;return 2*Math.abs(n)>=e&&(i+=n>0?e:-e),parseFloat(i.toFixed(5))},_calculateNewMax:function(){var t=this.options.max,e=this._valueMin(),n=this.options.step;(t=Math.round((t-e)/n)*n+e)>this.options.max&&(t-=n),this.max=parseFloat(t.toFixed(this._precision()))},_precision:function(){var t=this._precisionOf(this.options.step);return null!==this.options.min&&(t=Math.max(t,this._precisionOf(this.options.min))),t},_precisionOf:function(t){var e=t.toString(),n=e.indexOf(".");return-1===n?0:e.length-n-1},_valueMin:function(){return this.options.min},_valueMax:function(){return this.max},_refreshRange:function(t){"vertical"===t&&this.range.css({width:"",left:""}),"horizontal"===t&&this.range.css({height:"",bottom:""})},_refreshValue:function(){var e,n,i,o,r,s=this.options.range,a=this.options,c=this,l=!this._animateOff&&a.animate,u={};this._hasMultipleValues()?this.handles.each((function(i){n=(c.values(i)-c._valueMin())/(c._valueMax()-c._valueMin())*100,u["horizontal"===c.orientation?"left":"bottom"]=n+"%",t(this).stop(1,1)[l?"animate":"css"](u,a.animate),!0===c.options.range&&("horizontal"===c.orientation?(0===i&&c.range.stop(1,1)[l?"animate":"css"]({left:n+"%"},a.animate),1===i&&c.range[l?"animate":"css"]({width:n-e+"%"},{queue:!1,duration:a.animate})):(0===i&&c.range.stop(1,1)[l?"animate":"css"]({bottom:n+"%"},a.animate),1===i&&c.range[l?"animate":"css"]({height:n-e+"%"},{queue:!1,duration:a.animate}))),e=n})):(i=this.value(),o=this._valueMin(),r=this._valueMax(),n=r!==o?(i-o)/(r-o)*100:0,u["horizontal"===this.orientation?"left":"bottom"]=n+"%",this.handle.stop(1,1)[l?"animate":"css"](u,a.animate),"min"===s&&"horizontal"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({width:n+"%"},a.animate),"max"===s&&"horizontal"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({width:100-n+"%"},a.animate),"min"===s&&"vertical"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({height:n+"%"},a.animate),"max"===s&&"vertical"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({height:100-n+"%"},a.animate))},_handleEvents:{keydown:function(e){var n,i,o,r=t(e.target).data("ui-slider-handle-index");switch(e.keyCode){case t.ui.keyCode.HOME:case t.ui.keyCode.END:case t.ui.keyCode.PAGE_UP:case t.ui.keyCode.PAGE_DOWN:case t.ui.keyCode.UP:case t.ui.keyCode.RIGHT:case t.ui.keyCode.DOWN:case t.ui.keyCode.LEFT:if(e.preventDefault(),!this._keySliding&&(this._keySliding=!0,this._addClass(t(e.target),null,"ui-state-active"),!1===this._start(e,r)))return}switch(o=this.options.step,n=i=this._hasMultipleValues()?this.values(r):this.value(),e.keyCode){case t.ui.keyCode.HOME:i=this._valueMin();break;case t.ui.keyCode.END:i=this._valueMax();break;case t.ui.keyCode.PAGE_UP:i=this._trimAlignValue(n+(this._valueMax()-this._valueMin())/this.numPages);break;case t.ui.keyCode.PAGE_DOWN:i=this._trimAlignValue(n-(this._valueMax()-this._valueMin())/this.numPages);break;case t.ui.keyCode.UP:case t.ui.keyCode.RIGHT:if(n===this._valueMax())return;i=this._trimAlignValue(n+o);break;case t.ui.keyCode.DOWN:case t.ui.keyCode.LEFT:if(n===this._valueMin())return;i=this._trimAlignValue(n-o)}this._slide(e,r,i)},keyup:function(e){var n=t(e.target).data("ui-slider-handle-index");this._keySliding&&(this._keySliding=!1,this._stop(e,n),this._change(e,n),this._removeClass(t(e.target),null,"ui-state-active"))}}}),t.widget("ui.sortable",t.ui.mouse,{version:"1.13.3",widgetEventPrefix:"sort",ready:!1,options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3,activate:null,beforeStop:null,change:null,deactivate:null,out:null,over:null,receive:null,remove:null,sort:null,start:null,stop:null,update:null},_isOverAxis:function(t,e,n){return t>=e&&t=0;t--)this.items[t].item.removeData(this.widgetName+"-item");return this},_mouseCapture:function(e,n){var i=null,o=!1,r=this;return!(this.reverting||this.options.disabled||"static"===this.options.type||(this._refreshItems(e),t(e.target).parents().each((function(){if(t.data(this,r.widgetName+"-item")===r)return i=t(this),!1})),t.data(e.target,r.widgetName+"-item")===r&&(i=t(e.target)),!i||this.options.handle&&!n&&(t(this.options.handle,i).find("*").addBack().each((function(){this===e.target&&(o=!0)})),!o)||(this.currentItem=i,this._removeCurrentsFromItems(),0)))},_mouseStart:function(e,n,i){var o,r,s=this.options;if(this.currentContainer=this,this.refreshPositions(),this.appendTo=t("parent"!==s.appendTo?s.appendTo:this.currentItem.parent()),this.helper=this._createHelper(e),this._cacheHelperProportions(),this._cacheMargins(),this.offset=this.currentItem.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},t.extend(this.offset,{click:{left:e.pageX-this.offset.left,top:e.pageY-this.offset.top},relative:this._getRelativeOffset()}),this.helper.css("position","absolute"),this.cssPosition=this.helper.css("position"),s.cursorAt&&this._adjustOffsetFromHelper(s.cursorAt),this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]},this.helper[0]!==this.currentItem[0]&&this.currentItem.hide(),this._createPlaceholder(),this.scrollParent=this.placeholder.scrollParent(),t.extend(this.offset,{parent:this._getParentOffset()}),s.containment&&this._setContainment(),s.cursor&&"auto"!==s.cursor&&(r=this.document.find("body"),this.storedCursor=r.css("cursor"),r.css("cursor",s.cursor),this.storedStylesheet=t("").appendTo(r)),s.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",s.zIndex)),s.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",s.opacity)),this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",e,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions(),!i)for(o=this.containers.length-1;o>=0;o--)this.containers[o]._trigger("activate",e,this._uiHash(this));return t.ui.ddmanager&&(t.ui.ddmanager.current=this),t.ui.ddmanager&&!s.dropBehaviour&&t.ui.ddmanager.prepareOffsets(this,e),this.dragging=!0,this._addClass(this.helper,"ui-sortable-helper"),this.helper.parent().is(this.appendTo)||(this.helper.detach().appendTo(this.appendTo),this.offset.parent=this._getParentOffset()),this.position=this.originalPosition=this._generatePosition(e),this.originalPageX=e.pageX,this.originalPageY=e.pageY,this.lastPositionAbs=this.positionAbs=this._convertPositionTo("absolute"),this._mouseDrag(e),!0},_scroll:function(t){var e=this.options,n=!1;return this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-t.pageY=0;n--)if(o=(i=this.items[n]).item[0],(r=this._intersectsWithPointer(i))&&i.instance===this.currentContainer&&!(o===this.currentItem[0]||this.placeholder[1===r?"next":"prev"]()[0]===o||t.contains(this.placeholder[0],o)||"semi-dynamic"===this.options.type&&t.contains(this.element[0],o))){if(this.direction=1===r?"down":"up","pointer"!==this.options.tolerance&&!this._intersectsWithSides(i))break;this._rearrange(e,i),this._trigger("change",e,this._uiHash());break}return this._contactContainers(e),t.ui.ddmanager&&t.ui.ddmanager.drag(this,e),this._trigger("sort",e,this._uiHash()),this.lastPositionAbs=this.positionAbs,!1},_mouseStop:function(e,n){if(e){if(t.ui.ddmanager&&!this.options.dropBehaviour&&t.ui.ddmanager.drop(this,e),this.options.revert){var i=this,o=this.placeholder.offset(),r=this.options.axis,s={};r&&"x"!==r||(s.left=o.left-this.offset.parent.left-this.margins.left+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollLeft)),r&&"y"!==r||(s.top=o.top-this.offset.parent.top-this.margins.top+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollTop)),this.reverting=!0,t(this.helper).animate(s,parseInt(this.options.revert,10)||500,(function(){i._clear(e)}))}else this._clear(e,n);return!1}},cancel:function(){if(this.dragging){this._mouseUp(new t.Event("mouseup",{target:null})),"original"===this.options.helper?(this.currentItem.css(this._storedCSS),this._removeClass(this.currentItem,"ui-sortable-helper")):this.currentItem.show();for(var e=this.containers.length-1;e>=0;e--)this.containers[e]._trigger("deactivate",null,this._uiHash(this)),this.containers[e].containerCache.over&&(this.containers[e]._trigger("out",null,this._uiHash(this)),this.containers[e].containerCache.over=0)}return this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),"original"!==this.options.helper&&this.helper&&this.helper[0].parentNode&&this.helper.remove(),t.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?t(this.domPosition.prev).after(this.currentItem):t(this.domPosition.parent).prepend(this.currentItem)),this},serialize:function(e){var n=this._getItemsAsjQuery(e&&e.connected),i=[];return e=e||{},t(n).each((function(){var n=(t(e.item||this).attr(e.attribute||"id")||"").match(e.expression||/(.+)[\-=_](.+)/);n&&i.push((e.key||n[1]+"[]")+"="+(e.key&&e.expression?n[1]:n[2]))})),!i.length&&e.key&&i.push(e.key+"="),i.join("&")},toArray:function(e){var n=this._getItemsAsjQuery(e&&e.connected),i=[];return e=e||{},n.each((function(){i.push(t(e.item||this).attr(e.attribute||"id")||"")})),i},_intersectsWith:function(t){var e=this.positionAbs.left,n=e+this.helperProportions.width,i=this.positionAbs.top,o=i+this.helperProportions.height,r=t.left,s=r+t.width,a=t.top,c=a+t.height,l=this.offset.click.top,u=this.offset.click.left,h="x"===this.options.axis||i+l>a&&i+lr&&e+ut[this.floating?"width":"height"]?p:r0?"down":"up")},_getDragHorizontalDirection:function(){var t=this.positionAbs.left-this.lastPositionAbs.left;return 0!==t&&(t>0?"right":"left")},refresh:function(t){return this._refreshItems(t),this._setHandleClassName(),this.refreshPositions(),this},_connectWith:function(){var t=this.options;return t.connectWith.constructor===String?[t.connectWith]:t.connectWith},_getItemsAsjQuery:function(e){var n,i,o,r,s=[],a=[],c=this._connectWith();if(c&&e)for(n=c.length-1;n>=0;n--)for(i=(o=t(c[n],this.document[0])).length-1;i>=0;i--)(r=t.data(o[i],this.widgetFullName))&&r!==this&&!r.options.disabled&&a.push(["function"==typeof r.options.items?r.options.items.call(r.element):t(r.options.items,r.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),r]);function l(){s.push(this)}for(a.push(["function"==typeof this.options.items?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):t(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]),n=a.length-1;n>=0;n--)a[n][0].each(l);return t(s)},_removeCurrentsFromItems:function(){var e=this.currentItem.find(":data("+this.widgetName+"-item)");this.items=t.grep(this.items,(function(t){for(var n=0;n=0;n--)for(i=(o=t(d[n],this.document[0])).length-1;i>=0;i--)(r=t.data(o[i],this.widgetFullName))&&r!==this&&!r.options.disabled&&(h.push(["function"==typeof r.options.items?r.options.items.call(r.element[0],e,{item:this.currentItem}):t(r.options.items,r.element),r]),this.containers.push(r));for(n=h.length-1;n>=0;n--)for(s=h[n][1],i=0,l=(a=h[n][0]).length;i=0;n--)i=this.items[n],this.currentContainer&&i.instance!==this.currentContainer&&i.item[0]!==this.currentItem[0]||(o=this.options.toleranceElement?t(this.options.toleranceElement,i.item):i.item,e||(i.width=o.outerWidth(),i.height=o.outerHeight()),r=o.offset(),i.left=r.left,i.top=r.top)},refreshPositions:function(t){var e,n;if(this.floating=!!this.items.length&&("x"===this.options.axis||this._isFloating(this.items[0].item)),this.offsetParent&&this.helper&&(this.offset.parent=this._getParentOffset()),this._refreshItemPositions(t),this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(e=this.containers.length-1;e>=0;e--)n=this.containers[e].element.offset(),this.containers[e].containerCache.left=n.left,this.containers[e].containerCache.top=n.top,this.containers[e].containerCache.width=this.containers[e].element.outerWidth(),this.containers[e].containerCache.height=this.containers[e].element.outerHeight();return this},_createPlaceholder:function(e){var n,i,o=(e=e||this).options;o.placeholder&&o.placeholder.constructor!==String||(n=o.placeholder,i=e.currentItem[0].nodeName.toLowerCase(),o.placeholder={element:function(){var o=t("<"+i+">",e.document[0]);return e._addClass(o,"ui-sortable-placeholder",n||e.currentItem[0].className)._removeClass(o,"ui-sortable-helper"),"tbody"===i?e._createTrPlaceholder(e.currentItem.find("tr").eq(0),t("",e.document[0]).appendTo(o)):"tr"===i?e._createTrPlaceholder(e.currentItem,o):"img"===i&&o.attr("src",e.currentItem.attr("src")),n||o.css("visibility","hidden"),o},update:function(t,r){n&&!o.forcePlaceholderSize||(r.height()&&(!o.forcePlaceholderSize||"tbody"!==i&&"tr"!==i)||r.height(e.currentItem.innerHeight()-parseInt(e.currentItem.css("paddingTop")||0,10)-parseInt(e.currentItem.css("paddingBottom")||0,10)),r.width()||r.width(e.currentItem.innerWidth()-parseInt(e.currentItem.css("paddingLeft")||0,10)-parseInt(e.currentItem.css("paddingRight")||0,10)))}}),e.placeholder=t(o.placeholder.element.call(e.element,e.currentItem)),e.currentItem.after(e.placeholder),o.placeholder.update(e,e.placeholder)},_createTrPlaceholder:function(e,n){var i=this;e.children().each((function(){t(" ",i.document[0]).attr("colspan",t(this).attr("colspan")||1).appendTo(n)}))},_contactContainers:function(e){var n,i,o,r,s,a,c,l,u,h,d=null,p=null;for(n=this.containers.length-1;n>=0;n--)if(!t.contains(this.currentItem[0],this.containers[n].element[0]))if(this._intersectsWith(this.containers[n].containerCache)){if(d&&t.contains(this.containers[n].element[0],d.element[0]))continue;d=this.containers[n],p=n}else this.containers[n].containerCache.over&&(this.containers[n]._trigger("out",e,this._uiHash(this)),this.containers[n].containerCache.over=0);if(d)if(1===this.containers.length)this.containers[p].containerCache.over||(this.containers[p]._trigger("over",e,this._uiHash(this)),this.containers[p].containerCache.over=1);else{for(o=1e4,r=null,s=(u=d.floating||this._isFloating(this.currentItem))?"left":"top",a=u?"width":"height",h=u?"pageX":"pageY",i=this.items.length-1;i>=0;i--)t.contains(this.containers[p].element[0],this.items[i].item[0])&&this.items[i].item[0]!==this.currentItem[0]&&(c=this.items[i].item.offset()[s],l=!1,e[h]-c>this.items[i][a]/2&&(l=!0),Math.abs(e[h]-c)this.containment[2]&&(r=this.containment[2]+this.offset.click.left),e.pageY-this.offset.click.top>this.containment[3]&&(s=this.containment[3]+this.offset.click.top)),o.grid&&(n=this.originalPageY+Math.round((s-this.originalPageY)/o.grid[1])*o.grid[1],s=this.containment?n-this.offset.click.top>=this.containment[1]&&n-this.offset.click.top<=this.containment[3]?n:n-this.offset.click.top>=this.containment[1]?n-o.grid[1]:n+o.grid[1]:n,i=this.originalPageX+Math.round((r-this.originalPageX)/o.grid[0])*o.grid[0],r=this.containment?i-this.offset.click.left>=this.containment[0]&&i-this.offset.click.left<=this.containment[2]?i:i-this.offset.click.left>=this.containment[0]?i-o.grid[0]:i+o.grid[0]:i)),{top:s-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.scrollParent.scrollTop():c?0:a.scrollTop()),left:r-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():c?0:a.scrollLeft())}},_rearrange:function(t,e,n,i){n?n[0].appendChild(this.placeholder[0]):e.item[0].parentNode.insertBefore(this.placeholder[0],"down"===this.direction?e.item[0]:e.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var o=this.counter;this._delay((function(){o===this.counter&&this.refreshPositions(!i)}))},_clear:function(t,e){this.reverting=!1;var n,i=[];if(!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null,this.helper[0]===this.currentItem[0]){for(n in this._storedCSS)"auto"!==this._storedCSS[n]&&"static"!==this._storedCSS[n]||(this._storedCSS[n]="");this.currentItem.css(this._storedCSS),this._removeClass(this.currentItem,"ui-sortable-helper")}else this.currentItem.show();function o(t,e,n){return function(i){n._trigger(t,i,e._uiHash(e))}}for(this.fromOutside&&!e&&i.push((function(t){this._trigger("receive",t,this._uiHash(this.fromOutside))})),!this.fromOutside&&this.domPosition.prev===this.currentItem.prev().not(".ui-sortable-helper")[0]&&this.domPosition.parent===this.currentItem.parent()[0]||e||i.push((function(t){this._trigger("update",t,this._uiHash())})),this!==this.currentContainer&&(e||(i.push((function(t){this._trigger("remove",t,this._uiHash())})),i.push(function(t){return function(e){t._trigger("receive",e,this._uiHash(this))}}.call(this,this.currentContainer)),i.push(function(t){return function(e){t._trigger("update",e,this._uiHash(this))}}.call(this,this.currentContainer)))),n=this.containers.length-1;n>=0;n--)e||i.push(o("deactivate",this,this.containers[n])),this.containers[n].containerCache.over&&(i.push(o("out",this,this.containers[n])),this.containers[n].containerCache.over=0);if(this.storedCursor&&(this.document.find("body").css("cursor",this.storedCursor),this.storedStylesheet.remove()),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex","auto"===this._storedZIndex?"":this._storedZIndex),this.dragging=!1,e||this._trigger("beforeStop",t,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.cancelHelperRemoval||(this.helper[0]!==this.currentItem[0]&&this.helper.remove(),this.helper=null),!e){for(n=0;n",widgetEventPrefix:"spin",options:{classes:{"ui-spinner":"ui-corner-all","ui-spinner-down":"ui-corner-br","ui-spinner-up":"ui-corner-tr"},culture:null,icons:{down:"ui-icon-triangle-1-s",up:"ui-icon-triangle-1-n"},incremental:!0,max:null,min:null,numberFormat:null,page:10,step:1,change:null,spin:null,start:null,stop:null},_create:function(){this._setOption("max",this.options.max),this._setOption("min",this.options.min),this._setOption("step",this.options.step),""!==this.value()&&this._value(this.element.val(),!0),this._draw(),this._on(this._events),this._refresh(),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_getCreateOptions:function(){var e=this._super(),n=this.element;return t.each(["min","max","step"],(function(t,i){var o=n.attr(i);null!=o&&o.length&&(e[i]=o)})),e},_events:{keydown:function(t){this._start(t)&&this._keydown(t)&&t.preventDefault()},keyup:"_stop",focus:function(){this.previous=this.element.val()},blur:function(t){this.cancelBlur?delete this.cancelBlur:(this._stop(),this._refresh(),this.previous!==this.element.val()&&this._trigger("change",t))},mousewheel:function(e,n){var i=t.ui.safeActiveElement(this.document[0]);if(this.element[0]===i&&n){if(!this.spinning&&!this._start(e))return!1;this._spin((n>0?1:-1)*this.options.step,e),clearTimeout(this.mousewheelTimer),this.mousewheelTimer=this._delay((function(){this.spinning&&this._stop(e)}),100),e.preventDefault()}},"mousedown .ui-spinner-button":function(e){var n;function i(){this.element[0]===t.ui.safeActiveElement(this.document[0])||(this.element.trigger("focus"),this.previous=n,this._delay((function(){this.previous=n})))}n=this.element[0]===t.ui.safeActiveElement(this.document[0])?this.previous:this.element.val(),e.preventDefault(),i.call(this),this.cancelBlur=!0,this._delay((function(){delete this.cancelBlur,i.call(this)})),!1!==this._start(e)&&this._repeat(null,t(e.currentTarget).hasClass("ui-spinner-up")?1:-1,e)},"mouseup .ui-spinner-button":"_stop","mouseenter .ui-spinner-button":function(e){if(t(e.currentTarget).hasClass("ui-state-active"))return!1!==this._start(e)&&void this._repeat(null,t(e.currentTarget).hasClass("ui-spinner-up")?1:-1,e)},"mouseleave .ui-spinner-button":"_stop"},_enhance:function(){this.uiSpinner=this.element.attr("autocomplete","off").wrap("").parent().append("")},_draw:function(){this._enhance(),this._addClass(this.uiSpinner,"ui-spinner","ui-widget ui-widget-content"),this._addClass("ui-spinner-input"),this.element.attr("role","spinbutton"),this.buttons=this.uiSpinner.children("a").attr("tabIndex",-1).attr("aria-hidden",!0).button({classes:{"ui-button":""}}),this._removeClass(this.buttons,"ui-corner-all"),this._addClass(this.buttons.first(),"ui-spinner-button ui-spinner-up"),this._addClass(this.buttons.last(),"ui-spinner-button ui-spinner-down"),this.buttons.first().button({icon:this.options.icons.up,showLabel:!1}),this.buttons.last().button({icon:this.options.icons.down,showLabel:!1}),this.buttons.height()>Math.ceil(.5*this.uiSpinner.height())&&this.uiSpinner.height()>0&&this.uiSpinner.height(this.uiSpinner.height())},_keydown:function(e){var n=this.options,i=t.ui.keyCode;switch(e.keyCode){case i.UP:return this._repeat(null,1,e),!0;case i.DOWN:return this._repeat(null,-1,e),!0;case i.PAGE_UP:return this._repeat(null,n.page,e),!0;case i.PAGE_DOWN:return this._repeat(null,-n.page,e),!0}return!1},_start:function(t){return!(!this.spinning&&!1===this._trigger("start",t)||(this.counter||(this.counter=1),this.spinning=!0,0))},_repeat:function(t,e,n){t=t||500,clearTimeout(this.timer),this.timer=this._delay((function(){this._repeat(40,e,n)}),t),this._spin(e*this.options.step,n)},_spin:function(t,e){var n=this.value()||0;this.counter||(this.counter=1),n=this._adjustValue(n+t*this._increment(this.counter)),this.spinning&&!1===this._trigger("spin",e,{value:n})||(this._value(n),this.counter++)},_increment:function(t){var e=this.options.incremental;return e?"function"==typeof e?e(t):Math.floor(t*t*t/5e4-t*t/500+17*t/200+1):1},_precision:function(){var t=this._precisionOf(this.options.step);return null!==this.options.min&&(t=Math.max(t,this._precisionOf(this.options.min))),t},_precisionOf:function(t){var e=t.toString(),n=e.indexOf(".");return-1===n?0:e.length-n-1},_adjustValue:function(t){var e,n,i=this.options;return n=t-(e=null!==i.min?i.min:0),t=e+(n=Math.round(n/i.step)*i.step),t=parseFloat(t.toFixed(this._precision())),null!==i.max&&t>i.max?i.max:null!==i.min&&t"},_buttonHtml:function(){return""}}),t.ui.spinner,t.widget("ui.tabs",{version:"1.13.3",delay:300,options:{active:null,classes:{"ui-tabs":"ui-corner-all","ui-tabs-nav":"ui-corner-all","ui-tabs-panel":"ui-corner-bottom","ui-tabs-tab":"ui-corner-top"},collapsible:!1,event:"click",heightStyle:"content",hide:null,show:null,activate:null,beforeActivate:null,beforeLoad:null,load:null},_isLocal:(R=/#.*$/,function(t){var e,n;e=t.href.replace(R,""),n=location.href.replace(R,"");try{e=decodeURIComponent(e)}catch(t){}try{n=decodeURIComponent(n)}catch(t){}return t.hash.length>1&&e===n}),_create:function(){var e=this,n=this.options;this.running=!1,this._addClass("ui-tabs","ui-widget ui-widget-content"),this._toggleClass("ui-tabs-collapsible",null,n.collapsible),this._processTabs(),n.active=this._initialActive(),Array.isArray(n.disabled)&&(n.disabled=t.uniqueSort(n.disabled.concat(t.map(this.tabs.filter(".ui-state-disabled"),(function(t){return e.tabs.index(t)})))).sort()),!1!==this.options.active&&this.anchors.length?this.active=this._findActive(n.active):this.active=t(),this._refresh(),this.active.length&&this.load(n.active)},_initialActive:function(){var e=this.options.active,n=this.options.collapsible,i=location.hash.substring(1);return null===e&&(i&&this.tabs.each((function(n,o){if(t(o).attr("aria-controls")===i)return e=n,!1})),null===e&&(e=this.tabs.index(this.tabs.filter(".ui-tabs-active"))),null!==e&&-1!==e||(e=!!this.tabs.length&&0)),!1!==e&&-1===(e=this.tabs.index(this.tabs.eq(e)))&&(e=!n&&0),!n&&!1===e&&this.anchors.length&&(e=0),e},_getCreateEventData:function(){return{tab:this.active,panel:this.active.length?this._getPanelForTab(this.active):t()}},_tabKeydown:function(e){var n=t(t.ui.safeActiveElement(this.document[0])).closest("li"),i=this.tabs.index(n),o=!0;if(!this._handlePageNav(e)){switch(e.keyCode){case t.ui.keyCode.RIGHT:case t.ui.keyCode.DOWN:i++;break;case t.ui.keyCode.UP:case t.ui.keyCode.LEFT:o=!1,i--;break;case t.ui.keyCode.END:i=this.anchors.length-1;break;case t.ui.keyCode.HOME:i=0;break;case t.ui.keyCode.SPACE:return e.preventDefault(),clearTimeout(this.activating),void this._activate(i);case t.ui.keyCode.ENTER:return e.preventDefault(),clearTimeout(this.activating),void this._activate(i!==this.options.active&&i);default:return}e.preventDefault(),clearTimeout(this.activating),i=this._focusNextTab(i,o),e.ctrlKey||e.metaKey||(n.attr("aria-selected","false"),this.tabs.eq(i).attr("aria-selected","true"),this.activating=this._delay((function(){this.option("active",i)}),this.delay))}},_panelKeydown:function(e){this._handlePageNav(e)||e.ctrlKey&&e.keyCode===t.ui.keyCode.UP&&(e.preventDefault(),this.active.trigger("focus"))},_handlePageNav:function(e){return e.altKey&&e.keyCode===t.ui.keyCode.PAGE_UP?(this._activate(this._focusNextTab(this.options.active-1,!1)),!0):e.altKey&&e.keyCode===t.ui.keyCode.PAGE_DOWN?(this._activate(this._focusNextTab(this.options.active+1,!0)),!0):void 0},_findNextTab:function(e,n){var i=this.tabs.length-1;for(;-1!==t.inArray((e>i&&(e=0),e<0&&(e=i),e),this.options.disabled);)e=n?e+1:e-1;return e},_focusNextTab:function(t,e){return t=this._findNextTab(t,e),this.tabs.eq(t).trigger("focus"),t},_setOption:function(t,e){"active"!==t?(this._super(t,e),"collapsible"===t&&(this._toggleClass("ui-tabs-collapsible",null,e),e||!1!==this.options.active||this._activate(0)),"event"===t&&this._setupEvents(e),"heightStyle"===t&&this._setupHeightStyle(e)):this._activate(e)},_sanitizeSelector:function(t){return t?t.replace(/[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g,"\\$&"):""},refresh:function(){var e=this.options,n=this.tablist.children(":has(a[href])");e.disabled=t.map(n.filter(".ui-state-disabled"),(function(t){return n.index(t)})),this._processTabs(),!1!==e.active&&this.anchors.length?this.active.length&&!t.contains(this.tablist[0],this.active[0])?this.tabs.length===e.disabled.length?(e.active=!1,this.active=t()):this._activate(this._findNextTab(Math.max(0,e.active-1),!1)):e.active=this.tabs.index(this.active):(e.active=!1,this.active=t()),this._refresh()},_refresh:function(){this._setOptionDisabled(this.options.disabled),this._setupEvents(this.options.event),this._setupHeightStyle(this.options.heightStyle),this.tabs.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}),this.panels.not(this._getPanelForTab(this.active)).hide().attr({"aria-hidden":"true"}),this.active.length?(this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}),this._addClass(this.active,"ui-tabs-active","ui-state-active"),this._getPanelForTab(this.active).show().attr({"aria-hidden":"false"})):this.tabs.eq(0).attr("tabIndex",0)},_processTabs:function(){var e=this,n=this.tabs,i=this.anchors,o=this.panels;this.tablist=this._getList().attr("role","tablist"),this._addClass(this.tablist,"ui-tabs-nav","ui-helper-reset ui-helper-clearfix ui-widget-header"),this.tablist.on("mousedown"+this.eventNamespace,"> li",(function(e){t(this).is(".ui-state-disabled")&&e.preventDefault()})).on("focus"+this.eventNamespace,".ui-tabs-anchor",(function(){t(this).closest("li").is(".ui-state-disabled")&&this.blur()})),this.tabs=this.tablist.find("> li:has(a[href])").attr({role:"tab",tabIndex:-1}),this._addClass(this.tabs,"ui-tabs-tab","ui-state-default"),this.anchors=this.tabs.map((function(){return t("a",this)[0]})).attr({tabIndex:-1}),this._addClass(this.anchors,"ui-tabs-anchor"),this.panels=t(),this.anchors.each((function(n,i){var o,r,s,a=t(i).uniqueId().attr("id"),c=t(i).closest("li"),l=c.attr("aria-controls");e._isLocal(i)?(s=(o=i.hash).substring(1),r=e.element.find(e._sanitizeSelector(o))):(o="#"+(s=c.attr("aria-controls")||t({}).uniqueId()[0].id),(r=e.element.find(o)).length||(r=e._createPanel(s)).insertAfter(e.panels[n-1]||e.tablist),r.attr("aria-live","polite")),r.length&&(e.panels=e.panels.add(r)),l&&c.data("ui-tabs-aria-controls",l),c.attr({"aria-controls":s,"aria-labelledby":a}),r.attr("aria-labelledby",a)})),this.panels.attr("role","tabpanel"),this._addClass(this.panels,"ui-tabs-panel","ui-widget-content"),n&&(this._off(n.not(this.tabs)),this._off(i.not(this.anchors)),this._off(o.not(this.panels)))},_getList:function(){return this.tablist||this.element.find("ol, ul").eq(0)},_createPanel:function(e){return t("
            ").attr("id",e).data("ui-tabs-destroy",!0)},_setOptionDisabled:function(e){var n,i,o;for(Array.isArray(e)&&(e.length?e.length===this.anchors.length&&(e=!0):e=!1),o=0;i=this.tabs[o];o++)n=t(i),!0===e||-1!==t.inArray(o,e)?(n.attr("aria-disabled","true"),this._addClass(n,null,"ui-state-disabled")):(n.removeAttr("aria-disabled"),this._removeClass(n,null,"ui-state-disabled"));this.options.disabled=e,this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!0===e)},_setupEvents:function(e){var n={};e&&t.each(e.split(" "),(function(t,e){n[e]="_eventHandler"})),this._off(this.anchors.add(this.tabs).add(this.panels)),this._on(!0,this.anchors,{click:function(t){t.preventDefault()}}),this._on(this.anchors,n),this._on(this.tabs,{keydown:"_tabKeydown"}),this._on(this.panels,{keydown:"_panelKeydown"}),this._focusable(this.tabs),this._hoverable(this.tabs)},_setupHeightStyle:function(e){var n,i=this.element.parent();"fill"===e?(n=i.height(),n-=this.element.outerHeight()-this.element.height(),this.element.siblings(":visible").each((function(){var e=t(this),i=e.css("position");"absolute"!==i&&"fixed"!==i&&(n-=e.outerHeight(!0))})),this.element.children().not(this.panels).each((function(){n-=t(this).outerHeight(!0)})),this.panels.each((function(){t(this).height(Math.max(0,n-t(this).innerHeight()+t(this).height()))})).css("overflow","auto")):"auto"===e&&(n=0,this.panels.each((function(){n=Math.max(n,t(this).height("").height())})).height(n))},_eventHandler:function(e){var n=this.options,i=this.active,o=t(e.currentTarget).closest("li"),r=o[0]===i[0],s=r&&n.collapsible,a=s?t():this._getPanelForTab(o),c=i.length?this._getPanelForTab(i):t(),l={oldTab:i,oldPanel:c,newTab:s?t():o,newPanel:a};e.preventDefault(),o.hasClass("ui-state-disabled")||o.hasClass("ui-tabs-loading")||this.running||r&&!n.collapsible||!1===this._trigger("beforeActivate",e,l)||(n.active=!s&&this.tabs.index(o),this.active=r?t():o,this.xhr&&this.xhr.abort(),c.length||a.length||t.error("jQuery UI Tabs: Mismatching fragment identifier."),a.length&&this.load(this.tabs.index(o),e),this._toggle(e,l))},_toggle:function(e,n){var i=this,o=n.newPanel,r=n.oldPanel;function s(){i.running=!1,i._trigger("activate",e,n)}function a(){i._addClass(n.newTab.closest("li"),"ui-tabs-active","ui-state-active"),o.length&&i.options.show?i._show(o,i.options.show,s):(o.show(),s())}this.running=!0,r.length&&this.options.hide?this._hide(r,this.options.hide,(function(){i._removeClass(n.oldTab.closest("li"),"ui-tabs-active","ui-state-active"),a()})):(this._removeClass(n.oldTab.closest("li"),"ui-tabs-active","ui-state-active"),r.hide(),a()),r.attr("aria-hidden","true"),n.oldTab.attr({"aria-selected":"false","aria-expanded":"false"}),o.length&&r.length?n.oldTab.attr("tabIndex",-1):o.length&&this.tabs.filter((function(){return 0===t(this).attr("tabIndex")})).attr("tabIndex",-1),o.attr("aria-hidden","false"),n.newTab.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_activate:function(e){var n,i=this._findActive(e);i[0]!==this.active[0]&&(i.length||(i=this.active),n=i.find(".ui-tabs-anchor")[0],this._eventHandler({target:n,currentTarget:n,preventDefault:t.noop}))},_findActive:function(e){return!1===e?t():this.tabs.eq(e)},_getIndex:function(e){return"string"==typeof e&&(e=this.anchors.index(this.anchors.filter("[href$='"+t.escapeSelector(e)+"']"))),e},_destroy:function(){this.xhr&&this.xhr.abort(),this.tablist.removeAttr("role").off(this.eventNamespace),this.anchors.removeAttr("role tabIndex").removeUniqueId(),this.tabs.add(this.panels).each((function(){t.data(this,"ui-tabs-destroy")?t(this).remove():t(this).removeAttr("role tabIndex aria-live aria-busy aria-selected aria-labelledby aria-hidden aria-expanded")})),this.tabs.each((function(){var e=t(this),n=e.data("ui-tabs-aria-controls");n?e.attr("aria-controls",n).removeData("ui-tabs-aria-controls"):e.removeAttr("aria-controls")})),this.panels.show(),"content"!==this.options.heightStyle&&this.panels.css("height","")},enable:function(e){var n=this.options.disabled;!1!==n&&(void 0===e?n=!1:(e=this._getIndex(e),n=Array.isArray(n)?t.map(n,(function(t){return t!==e?t:null})):t.map(this.tabs,(function(t,n){return n!==e?n:null}))),this._setOptionDisabled(n))},disable:function(e){var n=this.options.disabled;if(!0!==n){if(void 0===e)n=!0;else{if(e=this._getIndex(e),-1!==t.inArray(e,n))return;n=Array.isArray(n)?t.merge([e],n).sort():[e]}this._setOptionDisabled(n)}},load:function(e,n){e=this._getIndex(e);var i=this,o=this.tabs.eq(e),r=o.find(".ui-tabs-anchor"),s=this._getPanelForTab(o),a={tab:o,panel:s},c=function(t,e){"abort"===e&&i.panels.stop(!1,!0),i._removeClass(o,"ui-tabs-loading"),s.removeAttr("aria-busy"),t===i.xhr&&delete i.xhr};this._isLocal(r[0])||(this.xhr=t.ajax(this._ajaxSettings(r,n,a)),this.xhr&&"canceled"!==this.xhr.statusText&&(this._addClass(o,"ui-tabs-loading"),s.attr("aria-busy","true"),this.xhr.done((function(t,e,o){setTimeout((function(){s.html(t),i._trigger("load",n,a),c(o,e)}),1)})).fail((function(t,e){setTimeout((function(){c(t,e)}),1)}))))},_ajaxSettings:function(e,n,i){var o=this;return{url:e.attr("href").replace(/#.*$/,""),beforeSend:function(e,r){return o._trigger("beforeLoad",n,t.extend({jqXHR:e,ajaxSettings:r},i))}}},_getPanelForTab:function(e){var n=t(e).attr("aria-controls");return this.element.find(this._sanitizeSelector("#"+n))}}),!1!==t.uiBackCompat&&t.widget("ui.tabs",t.ui.tabs,{_processTabs:function(){this._superApply(arguments),this._addClass(this.tabs,"ui-tab")}}),t.ui.tabs,t.widget("ui.tooltip",{version:"1.13.3",options:{classes:{"ui-tooltip":"ui-corner-all ui-widget-shadow"},content:function(){var e=t(this).attr("title");return t("").text(e).html()},hide:!0,items:"[title]:not([disabled])",position:{my:"left top+15",at:"left bottom",collision:"flipfit flip"},show:!0,track:!1,close:null,open:null},_addDescribedBy:function(t,e){var n=(t.attr("aria-describedby")||"").split(/\s+/);n.push(e),t.data("ui-tooltip-id",e).attr("aria-describedby",String.prototype.trim.call(n.join(" ")))},_removeDescribedBy:function(e){var n=e.data("ui-tooltip-id"),i=(e.attr("aria-describedby")||"").split(/\s+/),o=t.inArray(n,i);-1!==o&&i.splice(o,1),e.removeData("ui-tooltip-id"),(i=String.prototype.trim.call(i.join(" ")))?e.attr("aria-describedby",i):e.removeAttr("aria-describedby")},_create:function(){this._on({mouseover:"open",focusin:"open"}),this.tooltips={},this.parents={},this.liveRegion=t("
            ").attr({role:"log","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this.disabledTitles=t([])},_setOption:function(e,n){var i=this;this._super(e,n),"content"===e&&t.each(this.tooltips,(function(t,e){i._updateContent(e.element)}))},_setOptionDisabled:function(t){this[t?"_disable":"_enable"]()},_disable:function(){var e=this;t.each(this.tooltips,(function(n,i){var o=t.Event("blur");o.target=o.currentTarget=i.element[0],e.close(o,!0)})),this.disabledTitles=this.disabledTitles.add(this.element.find(this.options.items).addBack().filter((function(){var e=t(this);if(e.is("[title]"))return e.data("ui-tooltip-title",e.attr("title")).removeAttr("title")})))},_enable:function(){this.disabledTitles.each((function(){var e=t(this);e.data("ui-tooltip-title")&&e.attr("title",e.data("ui-tooltip-title"))})),this.disabledTitles=t([])},open:function(e){var n=this,i=t(e?e.target:this.element).closest(this.options.items);i.length&&!i.data("ui-tooltip-id")&&(i.attr("title")&&i.data("ui-tooltip-title",i.attr("title")),i.data("ui-tooltip-open",!0),e&&"mouseover"===e.type&&i.parents().each((function(){var e,i=t(this);i.data("ui-tooltip-open")&&((e=t.Event("blur")).target=e.currentTarget=this,n.close(e,!0)),i.attr("title")&&(i.uniqueId(),n.parents[this.id]={element:this,title:i.attr("title")},i.attr("title",""))})),this._registerCloseHandlers(e,i),this._updateContent(i,e))},_updateContent:function(t,e){var n,i=this.options.content,o=this,r=e?e.type:null;if("string"==typeof i||i.nodeType||i.jquery)return this._open(e,t,i);(n=i.call(t[0],(function(n){o._delay((function(){t.data("ui-tooltip-open")&&(e&&(e.type=r),this._open(e,t,n))}))})))&&this._open(e,t,n)},_open:function(e,n,i){var o,r,s,a,c=t.extend({},this.options.position);function l(t){c.of=t,r.is(":hidden")||r.position(c)}i&&((o=this._find(n))?o.tooltip.find(".ui-tooltip-content").html(i):(n.is("[title]")&&(e&&"mouseover"===e.type?n.attr("title",""):n.removeAttr("title")),o=this._tooltip(n),r=o.tooltip,this._addDescribedBy(n,r.attr("id")),r.find(".ui-tooltip-content").html(i),this.liveRegion.children().hide(),(a=t("
            ").html(r.find(".ui-tooltip-content").html())).removeAttr("name").find("[name]").removeAttr("name"),a.removeAttr("id").find("[id]").removeAttr("id"),a.appendTo(this.liveRegion),this.options.track&&e&&/^mouse/.test(e.type)?(this._on(this.document,{mousemove:l}),l(e)):r.position(t.extend({of:n},this.options.position)),r.hide(),this._show(r,this.options.show),this.options.track&&this.options.show&&this.options.show.delay&&(s=this.delayedShow=setInterval((function(){r.is(":visible")&&(l(c.of),clearInterval(s))}),13)),this._trigger("open",e,{tooltip:r})))},_registerCloseHandlers:function(e,n){var i={keyup:function(e){if(e.keyCode===t.ui.keyCode.ESCAPE){var i=t.Event(e);i.currentTarget=n[0],this.close(i,!0)}}};n[0]!==this.element[0]&&(i.remove=function(){var t=this._find(n);t&&this._removeTooltip(t.tooltip)}),e&&"mouseover"!==e.type||(i.mouseleave="close"),e&&"focusin"!==e.type||(i.focusout="close"),this._on(!0,n,i)},close:function(e){var n,i=this,o=t(e?e.currentTarget:this.element),r=this._find(o);r?(n=r.tooltip,r.closing||(clearInterval(this.delayedShow),o.data("ui-tooltip-title")&&!o.attr("title")&&o.attr("title",o.data("ui-tooltip-title")),this._removeDescribedBy(o),r.hiding=!0,n.stop(!0),this._hide(n,this.options.hide,(function(){i._removeTooltip(t(this))})),o.removeData("ui-tooltip-open"),this._off(o,"mouseleave focusout keyup"),o[0]!==this.element[0]&&this._off(o,"remove"),this._off(this.document,"mousemove"),e&&"mouseleave"===e.type&&t.each(this.parents,(function(e,n){t(n.element).attr("title",n.title),delete i.parents[e]})),r.closing=!0,this._trigger("close",e,{tooltip:n}),r.hiding||(r.closing=!1))):o.removeData("ui-tooltip-open")},_tooltip:function(e){var n=t("
            ").attr("role","tooltip"),i=t("
            ").appendTo(n),o=n.uniqueId().attr("id");return this._addClass(i,"ui-tooltip-content"),this._addClass(n,"ui-tooltip","ui-widget ui-widget-content"),n.appendTo(this._appendTo(e)),this.tooltips[o]={element:e,tooltip:n}},_find:function(t){var e=t.data("ui-tooltip-id");return e?this.tooltips[e]:null},_removeTooltip:function(t){clearInterval(this.delayedShow),t.remove(),delete this.tooltips[t.attr("id")]},_appendTo:function(t){var e=t.closest(".ui-front, dialog");return e.length||(e=this.document[0].body),e},_destroy:function(){var e=this;t.each(this.tooltips,(function(n,i){var o=t.Event("blur"),r=i.element;o.target=o.currentTarget=r[0],e.close(o,!0),t("#"+n).remove(),r.data("ui-tooltip-title")&&(r.attr("title")||r.attr("title",r.data("ui-tooltip-title")),r.removeData("ui-tooltip-title"))})),this.liveRegion.remove()}}),!1!==t.uiBackCompat&&t.widget("ui.tooltip",t.ui.tooltip,{options:{tooltipClass:null},_tooltip:function(){var t=this._superApply(arguments);return this.options.tooltipClass&&t.tooltip.addClass(this.options.tooltipClass),t}}),t.ui.tooltip},void 0===(r=i.apply(e,o))||(t.exports=r)}()},35358:(t,e,n)=>{var i={"./af":25177,"./af.js":25177,"./ar":61509,"./ar-dz":41488,"./ar-dz.js":41488,"./ar-kw":58676,"./ar-kw.js":58676,"./ar-ly":42353,"./ar-ly.js":42353,"./ar-ma":24496,"./ar-ma.js":24496,"./ar-ps":6947,"./ar-ps.js":6947,"./ar-sa":60301,"./ar-sa.js":60301,"./ar-tn":89756,"./ar-tn.js":89756,"./ar.js":61509,"./az":95533,"./az.js":95533,"./be":28959,"./be.js":28959,"./bg":47777,"./bg.js":47777,"./bm":54903,"./bm.js":54903,"./bn":61290,"./bn-bd":17357,"./bn-bd.js":17357,"./bn.js":61290,"./bo":31545,"./bo.js":31545,"./br":11470,"./br.js":11470,"./bs":44429,"./bs.js":44429,"./ca":7306,"./ca.js":7306,"./cs":56464,"./cs.js":56464,"./cv":73635,"./cv.js":73635,"./cy":64226,"./cy.js":64226,"./da":93601,"./da.js":93601,"./de":77853,"./de-at":26111,"./de-at.js":26111,"./de-ch":54697,"./de-ch.js":54697,"./de.js":77853,"./dv":60708,"./dv.js":60708,"./el":54691,"./el.js":54691,"./en-au":53872,"./en-au.js":53872,"./en-ca":28298,"./en-ca.js":28298,"./en-gb":56195,"./en-gb.js":56195,"./en-ie":66584,"./en-ie.js":66584,"./en-il":65543,"./en-il.js":65543,"./en-in":9033,"./en-in.js":9033,"./en-nz":79402,"./en-nz.js":79402,"./en-sg":43004,"./en-sg.js":43004,"./eo":32934,"./eo.js":32934,"./es":97650,"./es-do":20838,"./es-do.js":20838,"./es-mx":17730,"./es-mx.js":17730,"./es-us":56575,"./es-us.js":56575,"./es.js":97650,"./et":3035,"./et.js":3035,"./eu":3508,"./eu.js":3508,"./fa":119,"./fa.js":119,"./fi":90527,"./fi.js":90527,"./fil":95995,"./fil.js":95995,"./fo":52477,"./fo.js":52477,"./fr":85498,"./fr-ca":26435,"./fr-ca.js":26435,"./fr-ch":37892,"./fr-ch.js":37892,"./fr.js":85498,"./fy":37071,"./fy.js":37071,"./ga":41734,"./ga.js":41734,"./gd":70217,"./gd.js":70217,"./gl":77329,"./gl.js":77329,"./gom-deva":32124,"./gom-deva.js":32124,"./gom-latn":93383,"./gom-latn.js":93383,"./gu":95050,"./gu.js":95050,"./he":11713,"./he.js":11713,"./hi":43861,"./hi.js":43861,"./hr":26308,"./hr.js":26308,"./hu":90609,"./hu.js":90609,"./hy-am":17160,"./hy-am.js":17160,"./id":74063,"./id.js":74063,"./is":89374,"./is.js":89374,"./it":88383,"./it-ch":21827,"./it-ch.js":21827,"./it.js":88383,"./ja":23827,"./ja.js":23827,"./jv":89722,"./jv.js":89722,"./ka":41794,"./ka.js":41794,"./kk":27088,"./kk.js":27088,"./km":96870,"./km.js":96870,"./kn":84451,"./kn.js":84451,"./ko":63164,"./ko.js":63164,"./ku":98174,"./ku-kmr":6181,"./ku-kmr.js":6181,"./ku.js":98174,"./ky":78474,"./ky.js":78474,"./lb":79680,"./lb.js":79680,"./lo":15867,"./lo.js":15867,"./lt":45766,"./lt.js":45766,"./lv":69532,"./lv.js":69532,"./me":58076,"./me.js":58076,"./mi":41848,"./mi.js":41848,"./mk":30306,"./mk.js":30306,"./ml":73739,"./ml.js":73739,"./mn":99053,"./mn.js":99053,"./mr":86169,"./mr.js":86169,"./ms":73386,"./ms-my":92297,"./ms-my.js":92297,"./ms.js":73386,"./mt":77075,"./mt.js":77075,"./my":72264,"./my.js":72264,"./nb":22274,"./nb.js":22274,"./ne":8235,"./ne.js":8235,"./nl":92572,"./nl-be":43784,"./nl-be.js":43784,"./nl.js":92572,"./nn":54566,"./nn.js":54566,"./oc-lnc":69330,"./oc-lnc.js":69330,"./pa-in":29849,"./pa-in.js":29849,"./pl":94418,"./pl.js":94418,"./pt":79834,"./pt-br":48303,"./pt-br.js":48303,"./pt.js":79834,"./ro":24457,"./ro.js":24457,"./ru":82271,"./ru.js":82271,"./sd":1221,"./sd.js":1221,"./se":33478,"./se.js":33478,"./si":17538,"./si.js":17538,"./sk":5784,"./sk.js":5784,"./sl":46637,"./sl.js":46637,"./sq":86794,"./sq.js":86794,"./sr":45719,"./sr-cyrl":3322,"./sr-cyrl.js":3322,"./sr.js":45719,"./ss":56e3,"./ss.js":56e3,"./sv":41011,"./sv.js":41011,"./sw":40748,"./sw.js":40748,"./ta":11025,"./ta.js":11025,"./te":11885,"./te.js":11885,"./tet":28861,"./tet.js":28861,"./tg":86571,"./tg.js":86571,"./th":55802,"./th.js":55802,"./tk":59527,"./tk.js":59527,"./tl-ph":29231,"./tl-ph.js":29231,"./tlh":31052,"./tlh.js":31052,"./tr":85096,"./tr.js":85096,"./tzl":79846,"./tzl.js":79846,"./tzm":81765,"./tzm-latn":97711,"./tzm-latn.js":97711,"./tzm.js":81765,"./ug-cn":48414,"./ug-cn.js":48414,"./uk":16618,"./uk.js":16618,"./ur":57777,"./ur.js":57777,"./uz":57609,"./uz-latn":72475,"./uz-latn.js":72475,"./uz.js":57609,"./vi":21135,"./vi.js":21135,"./x-pseudo":64051,"./x-pseudo.js":64051,"./yo":82218,"./yo.js":82218,"./zh-cn":52648,"./zh-cn.js":52648,"./zh-hk":1632,"./zh-hk.js":1632,"./zh-mo":31541,"./zh-mo.js":31541,"./zh-tw":50304,"./zh-tw.js":50304};function o(t){var e=r(t);return n(e)}function r(t){if(!n.o(i,t)){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}return i[t]}o.keys=function(){return Object.keys(i)},o.resolve=r,t.exports=o,o.id=35358},7452:t=>{var e=function(t){"use strict";var e,n=Object.prototype,i=n.hasOwnProperty,o=Object.defineProperty||function(t,e,n){t[e]=n.value},r="function"==typeof Symbol?Symbol:{},s=r.iterator||"@@iterator",a=r.asyncIterator||"@@asyncIterator",c=r.toStringTag||"@@toStringTag";function l(t,e,n){return Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{l({},"")}catch(t){l=function(t,e,n){return t[e]=n}}function u(t,e,n,i){var r=e&&e.prototype instanceof m?e:m,s=Object.create(r.prototype),a=new S(i||[]);return o(s,"_invoke",{value:E(t,n,a)}),s}function h(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}t.wrap=u;var d="suspendedStart",p="suspendedYield",A="executing",f="completed",g={};function m(){}function b(){}function v(){}var C={};l(C,s,(function(){return this}));var x=Object.getPrototypeOf,w=x&&x(x(T([])));w&&w!==n&&i.call(w,s)&&(C=w);var y=v.prototype=m.prototype=Object.create(C);function k(t){["next","throw","return"].forEach((function(e){l(t,e,(function(t){return this._invoke(e,t)}))}))}function B(t,e){function n(o,r,s,a){var c=h(t[o],t,r);if("throw"!==c.type){var l=c.arg,u=l.value;return u&&"object"==typeof u&&i.call(u,"__await")?e.resolve(u.__await).then((function(t){n("next",t,s,a)}),(function(t){n("throw",t,s,a)})):e.resolve(u).then((function(t){l.value=t,s(l)}),(function(t){return n("throw",t,s,a)}))}a(c.arg)}var r;o(this,"_invoke",{value:function(t,i){function o(){return new e((function(e,o){n(t,i,e,o)}))}return r=r?r.then(o,o):o()}})}function E(t,n,i){var o=d;return function(r,s){if(o===A)throw new Error("Generator is already running");if(o===f){if("throw"===r)throw s;return{value:e,done:!0}}for(i.method=r,i.arg=s;;){var a=i.delegate;if(a){var c=_(a,i);if(c){if(c===g)continue;return c}}if("next"===i.method)i.sent=i._sent=i.arg;else if("throw"===i.method){if(o===d)throw o=f,i.arg;i.dispatchException(i.arg)}else"return"===i.method&&i.abrupt("return",i.arg);o=A;var l=h(t,n,i);if("normal"===l.type){if(o=i.done?f:p,l.arg===g)continue;return{value:l.arg,done:i.done}}"throw"===l.type&&(o=f,i.method="throw",i.arg=l.arg)}}}function _(t,n){var i=n.method,o=t.iterator[i];if(o===e)return n.delegate=null,"throw"===i&&t.iterator.return&&(n.method="return",n.arg=e,_(t,n),"throw"===n.method)||"return"!==i&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+i+"' method")),g;var r=h(o,t.iterator,n.arg);if("throw"===r.type)return n.method="throw",n.arg=r.arg,n.delegate=null,g;var s=r.arg;return s?s.done?(n[t.resultName]=s.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=e),n.delegate=null,g):s:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,g)}function I(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function D(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function S(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(I,this),this.reset(!0)}function T(t){if(null!=t){var n=t[s];if(n)return n.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var o=-1,r=function n(){for(;++o=0;--r){var s=this.tryEntries[r],a=s.completion;if("root"===s.tryLoc)return o("end");if(s.tryLoc<=this.prev){var c=i.call(s,"catchLoc"),l=i.call(s,"finallyLoc");if(c&&l){if(this.prev=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&i.call(o,"finallyLoc")&&this.prev=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),D(n),g}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var i=n.completion;if("throw"===i.type){var o=i.arg;D(n)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,n,i){return this.delegate={iterator:T(t),resultName:n,nextLoc:i},"next"===this.method&&(this.arg=e),g}},t}(t.exports);try{regeneratorRuntime=e}catch(t){"object"==typeof globalThis?globalThis.regeneratorRuntime=e:Function("r","regeneratorRuntime = r")(e)}},44275:(t,e,n)=>{var i,o=n(74692);void 0===(i=o).fn.each2&&i.extend(i.fn,{each2:function(t){for(var e=i([0]),n=-1,o=this.length;++n=112&&t<=123}},d={"Ⓐ":"A",A:"A",À:"A",Á:"A",Â:"A",Ầ:"A",Ấ:"A",Ẫ:"A",Ẩ:"A",Ã:"A",Ā:"A",Ă:"A",Ằ:"A",Ắ:"A",Ẵ:"A",Ẳ:"A",Ȧ:"A",Ǡ:"A",Ä:"A",Ǟ:"A",Ả:"A",Å:"A",Ǻ:"A",Ǎ:"A",Ȁ:"A",Ȃ:"A",Ạ:"A",Ậ:"A",Ặ:"A",Ḁ:"A",Ą:"A",Ⱥ:"A",Ɐ:"A",Ꜳ:"AA",Æ:"AE",Ǽ:"AE",Ǣ:"AE",Ꜵ:"AO",Ꜷ:"AU",Ꜹ:"AV",Ꜻ:"AV",Ꜽ:"AY","Ⓑ":"B",B:"B",Ḃ:"B",Ḅ:"B",Ḇ:"B",Ƀ:"B",Ƃ:"B",Ɓ:"B","Ⓒ":"C",C:"C",Ć:"C",Ĉ:"C",Ċ:"C",Č:"C",Ç:"C",Ḉ:"C",Ƈ:"C",Ȼ:"C",Ꜿ:"C","Ⓓ":"D",D:"D",Ḋ:"D",Ď:"D",Ḍ:"D",Ḑ:"D",Ḓ:"D",Ḏ:"D",Đ:"D",Ƌ:"D",Ɗ:"D",Ɖ:"D",Ꝺ:"D",DZ:"DZ",DŽ:"DZ",Dz:"Dz",Dž:"Dz","Ⓔ":"E",E:"E",È:"E",É:"E",Ê:"E",Ề:"E",Ế:"E",Ễ:"E",Ể:"E",Ẽ:"E",Ē:"E",Ḕ:"E",Ḗ:"E",Ĕ:"E",Ė:"E",Ë:"E",Ẻ:"E",Ě:"E",Ȅ:"E",Ȇ:"E",Ẹ:"E",Ệ:"E",Ȩ:"E",Ḝ:"E",Ę:"E",Ḙ:"E",Ḛ:"E",Ɛ:"E",Ǝ:"E","Ⓕ":"F",F:"F",Ḟ:"F",Ƒ:"F",Ꝼ:"F","Ⓖ":"G",G:"G",Ǵ:"G",Ĝ:"G",Ḡ:"G",Ğ:"G",Ġ:"G",Ǧ:"G",Ģ:"G",Ǥ:"G",Ɠ:"G",Ꞡ:"G",Ᵹ:"G",Ꝿ:"G","Ⓗ":"H",H:"H",Ĥ:"H",Ḣ:"H",Ḧ:"H",Ȟ:"H",Ḥ:"H",Ḩ:"H",Ḫ:"H",Ħ:"H",Ⱨ:"H",Ⱶ:"H",Ɥ:"H","Ⓘ":"I",I:"I",Ì:"I",Í:"I",Î:"I",Ĩ:"I",Ī:"I",Ĭ:"I",İ:"I",Ï:"I",Ḯ:"I",Ỉ:"I",Ǐ:"I",Ȉ:"I",Ȋ:"I",Ị:"I",Į:"I",Ḭ:"I",Ɨ:"I","Ⓙ":"J",J:"J",Ĵ:"J",Ɉ:"J","Ⓚ":"K",K:"K",Ḱ:"K",Ǩ:"K",Ḳ:"K",Ķ:"K",Ḵ:"K",Ƙ:"K",Ⱪ:"K",Ꝁ:"K",Ꝃ:"K",Ꝅ:"K",Ꞣ:"K","Ⓛ":"L",L:"L",Ŀ:"L",Ĺ:"L",Ľ:"L",Ḷ:"L",Ḹ:"L",Ļ:"L",Ḽ:"L",Ḻ:"L",Ł:"L",Ƚ:"L",Ɫ:"L",Ⱡ:"L",Ꝉ:"L",Ꝇ:"L",Ꞁ:"L",LJ:"LJ",Lj:"Lj","Ⓜ":"M",M:"M",Ḿ:"M",Ṁ:"M",Ṃ:"M",Ɱ:"M",Ɯ:"M","Ⓝ":"N",N:"N",Ǹ:"N",Ń:"N",Ñ:"N",Ṅ:"N",Ň:"N",Ṇ:"N",Ņ:"N",Ṋ:"N",Ṉ:"N",Ƞ:"N",Ɲ:"N",Ꞑ:"N",Ꞥ:"N",NJ:"NJ",Nj:"Nj","Ⓞ":"O",O:"O",Ò:"O",Ó:"O",Ô:"O",Ồ:"O",Ố:"O",Ỗ:"O",Ổ:"O",Õ:"O",Ṍ:"O",Ȭ:"O",Ṏ:"O",Ō:"O",Ṑ:"O",Ṓ:"O",Ŏ:"O",Ȯ:"O",Ȱ:"O",Ö:"O",Ȫ:"O",Ỏ:"O",Ő:"O",Ǒ:"O",Ȍ:"O",Ȏ:"O",Ơ:"O",Ờ:"O",Ớ:"O",Ỡ:"O",Ở:"O",Ợ:"O",Ọ:"O",Ộ:"O",Ǫ:"O",Ǭ:"O",Ø:"O",Ǿ:"O",Ɔ:"O",Ɵ:"O",Ꝋ:"O",Ꝍ:"O",Ƣ:"OI",Ꝏ:"OO",Ȣ:"OU","Ⓟ":"P",P:"P",Ṕ:"P",Ṗ:"P",Ƥ:"P",Ᵽ:"P",Ꝑ:"P",Ꝓ:"P",Ꝕ:"P","Ⓠ":"Q",Q:"Q",Ꝗ:"Q",Ꝙ:"Q",Ɋ:"Q","Ⓡ":"R",R:"R",Ŕ:"R",Ṙ:"R",Ř:"R",Ȑ:"R",Ȓ:"R",Ṛ:"R",Ṝ:"R",Ŗ:"R",Ṟ:"R",Ɍ:"R",Ɽ:"R",Ꝛ:"R",Ꞧ:"R",Ꞃ:"R","Ⓢ":"S",S:"S",ẞ:"S",Ś:"S",Ṥ:"S",Ŝ:"S",Ṡ:"S",Š:"S",Ṧ:"S",Ṣ:"S",Ṩ:"S",Ș:"S",Ş:"S",Ȿ:"S",Ꞩ:"S",Ꞅ:"S","Ⓣ":"T",T:"T",Ṫ:"T",Ť:"T",Ṭ:"T",Ț:"T",Ţ:"T",Ṱ:"T",Ṯ:"T",Ŧ:"T",Ƭ:"T",Ʈ:"T",Ⱦ:"T",Ꞇ:"T",Ꜩ:"TZ","Ⓤ":"U",U:"U",Ù:"U",Ú:"U",Û:"U",Ũ:"U",Ṹ:"U",Ū:"U",Ṻ:"U",Ŭ:"U",Ü:"U",Ǜ:"U",Ǘ:"U",Ǖ:"U",Ǚ:"U",Ủ:"U",Ů:"U",Ű:"U",Ǔ:"U",Ȕ:"U",Ȗ:"U",Ư:"U",Ừ:"U",Ứ:"U",Ữ:"U",Ử:"U",Ự:"U",Ụ:"U",Ṳ:"U",Ų:"U",Ṷ:"U",Ṵ:"U",Ʉ:"U","Ⓥ":"V",V:"V",Ṽ:"V",Ṿ:"V",Ʋ:"V",Ꝟ:"V",Ʌ:"V",Ꝡ:"VY","Ⓦ":"W",W:"W",Ẁ:"W",Ẃ:"W",Ŵ:"W",Ẇ:"W",Ẅ:"W",Ẉ:"W",Ⱳ:"W","Ⓧ":"X",X:"X",Ẋ:"X",Ẍ:"X","Ⓨ":"Y",Y:"Y",Ỳ:"Y",Ý:"Y",Ŷ:"Y",Ỹ:"Y",Ȳ:"Y",Ẏ:"Y",Ÿ:"Y",Ỷ:"Y",Ỵ:"Y",Ƴ:"Y",Ɏ:"Y",Ỿ:"Y","Ⓩ":"Z",Z:"Z",Ź:"Z",Ẑ:"Z",Ż:"Z",Ž:"Z",Ẓ:"Z",Ẕ:"Z",Ƶ:"Z",Ȥ:"Z",Ɀ:"Z",Ⱬ:"Z",Ꝣ:"Z","ⓐ":"a",a:"a",ẚ:"a",à:"a",á:"a",â:"a",ầ:"a",ấ:"a",ẫ:"a",ẩ:"a",ã:"a",ā:"a",ă:"a",ằ:"a",ắ:"a",ẵ:"a",ẳ:"a",ȧ:"a",ǡ:"a",ä:"a",ǟ:"a",ả:"a",å:"a",ǻ:"a",ǎ:"a",ȁ:"a",ȃ:"a",ạ:"a",ậ:"a",ặ:"a",ḁ:"a",ą:"a",ⱥ:"a",ɐ:"a",ꜳ:"aa",æ:"ae",ǽ:"ae",ǣ:"ae",ꜵ:"ao",ꜷ:"au",ꜹ:"av",ꜻ:"av",ꜽ:"ay","ⓑ":"b",b:"b",ḃ:"b",ḅ:"b",ḇ:"b",ƀ:"b",ƃ:"b",ɓ:"b","ⓒ":"c",c:"c",ć:"c",ĉ:"c",ċ:"c",č:"c",ç:"c",ḉ:"c",ƈ:"c",ȼ:"c",ꜿ:"c",ↄ:"c","ⓓ":"d",d:"d",ḋ:"d",ď:"d",ḍ:"d",ḑ:"d",ḓ:"d",ḏ:"d",đ:"d",ƌ:"d",ɖ:"d",ɗ:"d",ꝺ:"d",dz:"dz",dž:"dz","ⓔ":"e",e:"e",è:"e",é:"e",ê:"e",ề:"e",ế:"e",ễ:"e",ể:"e",ẽ:"e",ē:"e",ḕ:"e",ḗ:"e",ĕ:"e",ė:"e",ë:"e",ẻ:"e",ě:"e",ȅ:"e",ȇ:"e",ẹ:"e",ệ:"e",ȩ:"e",ḝ:"e",ę:"e",ḙ:"e",ḛ:"e",ɇ:"e",ɛ:"e",ǝ:"e","ⓕ":"f",f:"f",ḟ:"f",ƒ:"f",ꝼ:"f","ⓖ":"g",g:"g",ǵ:"g",ĝ:"g",ḡ:"g",ğ:"g",ġ:"g",ǧ:"g",ģ:"g",ǥ:"g",ɠ:"g",ꞡ:"g",ᵹ:"g",ꝿ:"g","ⓗ":"h",h:"h",ĥ:"h",ḣ:"h",ḧ:"h",ȟ:"h",ḥ:"h",ḩ:"h",ḫ:"h",ẖ:"h",ħ:"h",ⱨ:"h",ⱶ:"h",ɥ:"h",ƕ:"hv","ⓘ":"i",i:"i",ì:"i",í:"i",î:"i",ĩ:"i",ī:"i",ĭ:"i",ï:"i",ḯ:"i",ỉ:"i",ǐ:"i",ȉ:"i",ȋ:"i",ị:"i",į:"i",ḭ:"i",ɨ:"i",ı:"i","ⓙ":"j",j:"j",ĵ:"j",ǰ:"j",ɉ:"j","ⓚ":"k",k:"k",ḱ:"k",ǩ:"k",ḳ:"k",ķ:"k",ḵ:"k",ƙ:"k",ⱪ:"k",ꝁ:"k",ꝃ:"k",ꝅ:"k",ꞣ:"k","ⓛ":"l",l:"l",ŀ:"l",ĺ:"l",ľ:"l",ḷ:"l",ḹ:"l",ļ:"l",ḽ:"l",ḻ:"l",ſ:"l",ł:"l",ƚ:"l",ɫ:"l",ⱡ:"l",ꝉ:"l",ꞁ:"l",ꝇ:"l",lj:"lj","ⓜ":"m",m:"m",ḿ:"m",ṁ:"m",ṃ:"m",ɱ:"m",ɯ:"m","ⓝ":"n",n:"n",ǹ:"n",ń:"n",ñ:"n",ṅ:"n",ň:"n",ṇ:"n",ņ:"n",ṋ:"n",ṉ:"n",ƞ:"n",ɲ:"n",ʼn:"n",ꞑ:"n",ꞥ:"n",nj:"nj","ⓞ":"o",o:"o",ò:"o",ó:"o",ô:"o",ồ:"o",ố:"o",ỗ:"o",ổ:"o",õ:"o",ṍ:"o",ȭ:"o",ṏ:"o",ō:"o",ṑ:"o",ṓ:"o",ŏ:"o",ȯ:"o",ȱ:"o",ö:"o",ȫ:"o",ỏ:"o",ő:"o",ǒ:"o",ȍ:"o",ȏ:"o",ơ:"o",ờ:"o",ớ:"o",ỡ:"o",ở:"o",ợ:"o",ọ:"o",ộ:"o",ǫ:"o",ǭ:"o",ø:"o",ǿ:"o",ɔ:"o",ꝋ:"o",ꝍ:"o",ɵ:"o",ƣ:"oi",ȣ:"ou",ꝏ:"oo","ⓟ":"p",p:"p",ṕ:"p",ṗ:"p",ƥ:"p",ᵽ:"p",ꝑ:"p",ꝓ:"p",ꝕ:"p","ⓠ":"q",q:"q",ɋ:"q",ꝗ:"q",ꝙ:"q","ⓡ":"r",r:"r",ŕ:"r",ṙ:"r",ř:"r",ȑ:"r",ȓ:"r",ṛ:"r",ṝ:"r",ŗ:"r",ṟ:"r",ɍ:"r",ɽ:"r",ꝛ:"r",ꞧ:"r",ꞃ:"r","ⓢ":"s",s:"s",ß:"s",ś:"s",ṥ:"s",ŝ:"s",ṡ:"s",š:"s",ṧ:"s",ṣ:"s",ṩ:"s",ș:"s",ş:"s",ȿ:"s",ꞩ:"s",ꞅ:"s",ẛ:"s","ⓣ":"t",t:"t",ṫ:"t",ẗ:"t",ť:"t",ṭ:"t",ț:"t",ţ:"t",ṱ:"t",ṯ:"t",ŧ:"t",ƭ:"t",ʈ:"t",ⱦ:"t",ꞇ:"t",ꜩ:"tz","ⓤ":"u",u:"u",ù:"u",ú:"u",û:"u",ũ:"u",ṹ:"u",ū:"u",ṻ:"u",ŭ:"u",ü:"u",ǜ:"u",ǘ:"u",ǖ:"u",ǚ:"u",ủ:"u",ů:"u",ű:"u",ǔ:"u",ȕ:"u",ȗ:"u",ư:"u",ừ:"u",ứ:"u",ữ:"u",ử:"u",ự:"u",ụ:"u",ṳ:"u",ų:"u",ṷ:"u",ṵ:"u",ʉ:"u","ⓥ":"v",v:"v",ṽ:"v",ṿ:"v",ʋ:"v",ꝟ:"v",ʌ:"v",ꝡ:"vy","ⓦ":"w",w:"w",ẁ:"w",ẃ:"w",ŵ:"w",ẇ:"w",ẅ:"w",ẘ:"w",ẉ:"w",ⱳ:"w","ⓧ":"x",x:"x",ẋ:"x",ẍ:"x","ⓨ":"y",y:"y",ỳ:"y",ý:"y",ŷ:"y",ỹ:"y",ȳ:"y",ẏ:"y",ÿ:"y",ỷ:"y",ẙ:"y",ỵ:"y",ƴ:"y",ɏ:"y",ỿ:"y","ⓩ":"z",z:"z",ź:"z",ẑ:"z",ż:"z",ž:"z",ẓ:"z",ẕ:"z",ƶ:"z",ȥ:"z",ɀ:"z",ⱬ:"z",ꝣ:"z",Ά:"Α",Έ:"Ε",Ή:"Η",Ί:"Ι",Ϊ:"Ι",Ό:"Ο",Ύ:"Υ",Ϋ:"Υ",Ώ:"Ω",ά:"α",έ:"ε",ή:"η",ί:"ι",ϊ:"ι",ΐ:"ι",ό:"ο",ύ:"υ",ϋ:"υ",ΰ:"υ",ω:"ω",ς:"σ"};a=t(document),l=1,r=function(){return l++},n=O(Object,{bind:function(t){var e=this;return function(){t.apply(e,arguments)}},init:function(n){var i,o,s,a,l=".select2-results";this.opts=n=this.prepareOpts(n),this.id=n.id,n.element.data("select2")!==e&&null!==n.element.data("select2")&&n.element.data("select2").destroy(),this.container=this.createContainer(),this.liveRegion=t("",{role:"status","aria-live":"polite"}).addClass("select2-hidden-accessible").appendTo(document.body),this.containerId="s2id_"+(n.element.attr("id")||"autogen"+r()),this.containerEventName=this.containerId.replace(/([.])/g,"_").replace(/([;&,\-\.\+\*\~':"\!\^#$%@\[\]\(\)=>\|])/g,"\\$1"),this.container.attr("id",this.containerId),this.container.attr("title",n.element.attr("title")),this.body=t("body"),w(this.container,this.opts.element,this.opts.adaptContainerCssClass),this.container.attr("style",n.element.attr("style")),this.container.css(D(n.containerCss,this.opts.element)),this.container.addClass(D(n.containerCssClass,this.opts.element)),this.elementTabIndex=this.opts.element.attr("tabindex"),this.opts.element.data("select2",this).attr("tabindex","-1").before(this.container).on("click.select2",x),this.container.data("select2",this),this.dropdown=this.container.find(".select2-drop"),w(this.dropdown,this.opts.element,this.opts.adaptDropdownCssClass),this.dropdown.addClass(D(n.dropdownCssClass,this.opts.element)),this.dropdown.data("select2",this),this.dropdown.on("click",x),this.results=i=this.container.find(l),this.search=o=this.container.find("input.select2-input"),this.queryCount=0,this.resultsPage=0,this.context=null,this.initContainer(),this.container.on("click",x),this.results.on("mousemove",(function(n){var i=u;i!==e&&i.x===n.pageX&&i.y===n.pageY||t(n.target).trigger("mousemove-filtered",n)})),this.dropdown.on("mousemove-filtered",l,this.bind(this.highlightUnderEvent)),this.dropdown.on("touchstart touchmove touchend",l,this.bind((function(t){this._touchEvent=!0,this.highlightUnderEvent(t)}))),this.dropdown.on("touchmove",l,this.bind(this.touchMoved)),this.dropdown.on("touchstart touchend",l,this.bind(this.clearTouchMoved)),this.dropdown.on("click",this.bind((function(t){this._touchEvent&&(this._touchEvent=!1,this.selectHighlighted())}))),s=this.results,a=C(80,(function(t){s.trigger("scroll-debounced",t)})),s.on("scroll",(function(t){f(t.target,s.get())>=0&&a(t)})),this.dropdown.on("scroll-debounced",l,this.bind(this.loadMoreIfNeeded)),t(this.container).on("change",".select2-input",(function(t){t.stopPropagation()})),t(this.dropdown).on("change",".select2-input",(function(t){t.stopPropagation()})),t.fn.mousewheel&&i.mousewheel((function(t,e,n,o){var r=i.scrollTop();o>0&&r-o<=0?(i.scrollTop(0),x(t)):o<0&&i.get(0).scrollHeight-i.scrollTop()+o<=i.height()&&(i.scrollTop(i.get(0).scrollHeight-i.height()),x(t))})),v(o),o.on("keyup-change input paste",this.bind(this.updateResults)),o.on("focus",(function(){o.addClass("select2-focused")})),o.on("blur",(function(){o.removeClass("select2-focused")})),this.dropdown.on("mouseup",l,this.bind((function(e){t(e.target).closest(".select2-result-selectable").length>0&&(this.highlightUnderEvent(e),this.selectHighlighted(e))}))),this.dropdown.on("click mouseup mousedown touchstart touchend focusin",(function(t){t.stopPropagation()})),this.nextSearchTerm=e,t.isFunction(this.opts.initSelection)&&(this.initSelection(),this.monitorSource()),null!==n.maximumInputLength&&this.search.attr("maxlength",n.maximumInputLength);var h=n.element.prop("disabled");h===e&&(h=!1),this.enable(!h);var d=n.element.prop("readonly");d===e&&(d=!1),this.readonly(d),c=c||function(){var e=t("
            ");e.appendTo("body");var n={width:e.width()-e[0].clientWidth,height:e.height()-e[0].clientHeight};return e.remove(),n}(),this.autofocus=n.element.prop("autofocus"),n.element.prop("autofocus",!1),this.autofocus&&this.focus(),this.search.attr("placeholder",n.searchInputPlaceholder)},destroy:function(){var t=this.opts.element,n=t.data("select2"),i=this;this.close(),t.length&&t[0].detachEvent&&t.each((function(){this.detachEvent("onpropertychange",i._sync)})),this.propertyObserver&&(this.propertyObserver.disconnect(),this.propertyObserver=null),this._sync=null,n!==e&&(n.container.remove(),n.liveRegion.remove(),n.dropdown.remove(),t.removeClass("select2-offscreen").removeData("select2").off(".select2").prop("autofocus",this.autofocus||!1),this.elementTabIndex?t.attr({tabindex:this.elementTabIndex}):t.removeAttr("tabindex"),t.show()),T.call(this,"container","liveRegion","dropdown","results","search")},optionToData:function(t){return t.is("option")?{id:t.prop("value"),text:t.text(),element:t.get(),css:t.attr("class"),disabled:t.prop("disabled"),locked:g(t.attr("locked"),"locked")||g(t.data("locked"),!0)}:t.is("optgroup")?{text:t.attr("label"),children:[],element:t.get(),css:t.attr("class")}:void 0},prepareOpts:function(n){var i,o,s,a,c=this;if("select"===(i=n.element).get(0).tagName.toLowerCase()&&(this.select=o=n.element),o&&t.each(["id","multiple","ajax","query","createSearchChoice","initSelection","data","tags"],(function(){if(this in n)throw new Error("Option '"+this+"' is not allowed for Select2 when attached to a ","
            "," ","
              ","
            ","
            "].join(""))},enableInterface:function(){this.parent.enableInterface.apply(this,arguments)&&this.focusser.prop("disabled",!this.isInterfaceEnabled())},opening:function(){var n,i,o;this.opts.minimumResultsForSearch>=0&&this.showSearch(!0),this.parent.opening.apply(this,arguments),!1!==this.showSearchInput&&this.search.val(this.focusser.val()),this.opts.shouldFocusInput(this)&&(this.search.focus(),(n=this.search.get(0)).createTextRange?((i=n.createTextRange()).collapse(!1),i.select()):n.setSelectionRange&&(o=this.search.val().length,n.setSelectionRange(o,o))),""===this.search.val()&&this.nextSearchTerm!=e&&(this.search.val(this.nextSearchTerm),this.search.select()),this.focusser.prop("disabled",!0).val(""),this.updateResults(!0),this.opts.element.trigger(t.Event("select2-open"))},close:function(){this.opened()&&(this.parent.close.apply(this,arguments),this.focusser.prop("disabled",!1),this.opts.shouldFocusInput(this)&&this.focusser.focus())},focus:function(){this.opened()?this.close():(this.focusser.prop("disabled",!1),this.opts.shouldFocusInput(this)&&this.focusser.focus())},isFocused:function(){return this.container.hasClass("select2-container-active")},cancel:function(){this.parent.cancel.apply(this,arguments),this.focusser.prop("disabled",!1),this.opts.shouldFocusInput(this)&&this.focusser.focus()},destroy:function(){t("label[for='"+this.focusser.attr("id")+"']").attr("for",this.opts.element.attr("id")),this.parent.destroy.apply(this,arguments),T.call(this,"selection","focusser")},initContainer:function(){var e,n,i=this.container,o=this.dropdown,s=r();this.opts.minimumResultsForSearch<0?this.showSearch(!1):this.showSearch(!0),this.selection=e=i.find(".select2-choice"),this.focusser=i.find(".select2-focusser"),e.find(".select2-chosen").attr("id","select2-chosen-"+s),this.focusser.attr("aria-labelledby","select2-chosen-"+s),this.results.attr("id","select2-results-"+s),this.search.attr("aria-owns","select2-results-"+s),this.focusser.attr("id","s2id_autogen"+s),n=t("label[for='"+this.opts.element.attr("id")+"']"),this.focusser.prev().text(n.text()).attr("for",this.focusser.attr("id"));var a=this.opts.element.attr("title");this.opts.element.attr("title",a||n.text()),this.focusser.attr("tabindex",this.elementTabIndex),this.search.attr("id",this.focusser.attr("id")+"_search"),this.search.prev().text(t("label[for='"+this.focusser.attr("id")+"']").text()).attr("for",this.search.attr("id")),this.search.on("keydown",this.bind((function(t){if(this.isInterfaceEnabled()&&229!=t.keyCode)if(t.which!==h.PAGE_UP&&t.which!==h.PAGE_DOWN)switch(t.which){case h.UP:case h.DOWN:return this.moveHighlight(t.which===h.UP?-1:1),void x(t);case h.ENTER:return this.selectHighlighted(),void x(t);case h.TAB:return void this.selectHighlighted({noFocus:!0});case h.ESC:return this.cancel(t),void x(t)}else x(t)}))),this.search.on("blur",this.bind((function(t){document.activeElement===this.body.get(0)&&window.setTimeout(this.bind((function(){this.opened()&&this.search.focus()})),0)}))),this.focusser.on("keydown",this.bind((function(t){if(this.isInterfaceEnabled()&&t.which!==h.TAB&&!h.isControl(t)&&!h.isFunctionKey(t)&&t.which!==h.ESC){if(!1!==this.opts.openOnEnter||t.which!==h.ENTER){if(t.which==h.DOWN||t.which==h.UP||t.which==h.ENTER&&this.opts.openOnEnter){if(t.altKey||t.ctrlKey||t.shiftKey||t.metaKey)return;return this.open(),void x(t)}return t.which==h.DELETE||t.which==h.BACKSPACE?(this.opts.allowClear&&this.clear(),void x(t)):void 0}x(t)}}))),v(this.focusser),this.focusser.on("keyup-change input",this.bind((function(t){if(this.opts.minimumResultsForSearch>=0){if(t.stopPropagation(),this.opened())return;this.open()}}))),e.on("mousedown touchstart","abbr",this.bind((function(t){var e;this.isInterfaceEnabled()&&(this.clear(),(e=t).preventDefault(),e.stopImmediatePropagation(),this.close(),this.selection.focus())}))),e.on("mousedown touchstart",this.bind((function(n){p(e),this.container.hasClass("select2-container-active")||this.opts.element.trigger(t.Event("select2-focus")),this.opened()?this.close():this.isInterfaceEnabled()&&this.open(),x(n)}))),o.on("mousedown touchstart",this.bind((function(){this.opts.shouldFocusInput(this)&&this.search.focus()}))),e.on("focus",this.bind((function(t){x(t)}))),this.focusser.on("focus",this.bind((function(){this.container.hasClass("select2-container-active")||this.opts.element.trigger(t.Event("select2-focus")),this.container.addClass("select2-container-active")}))).on("blur",this.bind((function(){this.opened()||(this.container.removeClass("select2-container-active"),this.opts.element.trigger(t.Event("select2-blur")))}))),this.search.on("focus",this.bind((function(){this.container.hasClass("select2-container-active")||this.opts.element.trigger(t.Event("select2-focus")),this.container.addClass("select2-container-active")}))),this.initContainerWidth(),this.opts.element.addClass("select2-offscreen"),this.setPlaceholder()},clear:function(e){var n=this.selection.data("select2-data");if(n){var i=t.Event("select2-clearing");if(this.opts.element.trigger(i),i.isDefaultPrevented())return;var o=this.getPlaceholderOption();this.opts.element.val(o?o.val():""),this.selection.find(".select2-chosen").empty(),this.selection.removeData("select2-data"),this.setPlaceholder(),!1!==e&&(this.opts.element.trigger({type:"select2-removed",val:this.id(n),choice:n}),this.triggerChange({removed:n}))}},initSelection:function(){if(this.isPlaceholderOptionSelected())this.updateSelection(null),this.close(),this.setPlaceholder();else{var t=this;this.opts.initSelection.call(null,this.opts.element,(function(n){n!==e&&null!==n&&(t.updateSelection(n),t.close(),t.setPlaceholder(),t.nextSearchTerm=t.opts.nextSearchTerm(n,t.search.val()))}))}},isPlaceholderOptionSelected:function(){var t;return this.getPlaceholder()!==e&&((t=this.getPlaceholderOption())!==e&&t.prop("selected")||""===this.opts.element.val()||this.opts.element.val()===e||null===this.opts.element.val())},prepareOpts:function(){var e=this.parent.prepareOpts.apply(this,arguments),n=this;return"select"===e.element.get(0).tagName.toLowerCase()?e.initSelection=function(t,e){var i=t.find("option").filter((function(){return this.selected&&!this.disabled}));e(n.optionToData(i))}:"data"in e&&(e.initSelection=e.initSelection||function(n,i){var o=n.val(),r=null;e.query({matcher:function(t,n,i){var s=g(o,e.id(i));return s&&(r=i),s},callback:t.isFunction(i)?function(){i(r)}:t.noop})}),e},getPlaceholder:function(){return this.select&&this.getPlaceholderOption()===e?e:this.parent.getPlaceholder.apply(this,arguments)},setPlaceholder:function(){var t=this.getPlaceholder();if(this.isPlaceholderOptionSelected()&&t!==e){if(this.select&&this.getPlaceholderOption()===e)return;this.selection.find(".select2-chosen").html(this.opts.escapeMarkup(t)),this.selection.addClass("select2-default"),this.container.removeClass("select2-allowclear")}},postprocessResults:function(t,e,n){var i=0,o=this;if(this.findHighlightableChoices().each2((function(t,e){if(g(o.id(e.data("select2-data")),o.opts.element.val()))return i=t,!1})),!1!==n&&(!0===e&&i>=0?this.highlight(i):this.highlight(0)),!0===e){var r=this.opts.minimumResultsForSearch;r>=0&&this.showSearch(S(t.results)>=r)}},showSearch:function(e){this.showSearchInput!==e&&(this.showSearchInput=e,this.dropdown.find(".select2-search").toggleClass("select2-search-hidden",!e),this.dropdown.find(".select2-search").toggleClass("select2-offscreen",!e),t(this.dropdown,this.container).toggleClass("select2-with-searchbox",e))},onSelect:function(t,e){if(this.triggerSelect(t)){var n=this.opts.element.val(),i=this.data();this.opts.element.val(this.id(t)),this.updateSelection(t),this.opts.element.trigger({type:"select2-selected",val:this.id(t),choice:t}),this.nextSearchTerm=this.opts.nextSearchTerm(t,this.search.val()),this.close(),e&&e.noFocus||!this.opts.shouldFocusInput(this)||this.focusser.focus(),g(n,this.id(t))||this.triggerChange({added:t,removed:i})}},updateSelection:function(t){var n,i,o=this.selection.find(".select2-chosen");this.selection.data("select2-data",t),o.empty(),null!==t&&(n=this.opts.formatSelection(t,o,this.opts.escapeMarkup)),n!==e&&o.append(n),(i=this.opts.formatSelectionCssClass(t,o))!==e&&o.addClass(i),this.selection.removeClass("select2-default"),this.opts.allowClear&&this.getPlaceholder()!==e&&this.container.addClass("select2-allowclear")},val:function(){var t,n=!1,i=null,o=this,r=this.data();if(0===arguments.length)return this.opts.element.val();if(t=arguments[0],arguments.length>1&&(n=arguments[1]),this.select)this.select.val(t).find("option").filter((function(){return this.selected})).each2((function(t,e){return i=o.optionToData(e),!1})),this.updateSelection(i),this.setPlaceholder(),n&&this.triggerChange({added:i,removed:r});else{if(!t&&0!==t)return void this.clear(n);if(this.opts.initSelection===e)throw new Error("cannot call val() if initSelection() is not defined");this.opts.element.val(t),this.opts.initSelection(this.opts.element,(function(t){o.opts.element.val(t?o.id(t):""),o.updateSelection(t),o.setPlaceholder(),n&&o.triggerChange({added:t,removed:r})}))}},clearSearch:function(){this.search.val(""),this.focusser.val("")},data:function(t){var n,i=!1;if(0===arguments.length)return(n=this.selection.data("select2-data"))==e&&(n=null),n;arguments.length>1&&(i=arguments[1]),t?(n=this.data(),this.opts.element.val(t?this.id(t):""),this.updateSelection(t),i&&this.triggerChange({added:t,removed:n})):this.clear(i)}}),o=O(n,{createContainer:function(){return t(document.createElement("div")).attr({class:"select2-container select2-container-multi"}).html(["
              ","
            • "," "," ","
            • ","
            ","
            ","
              ","
            ","
            "].join(""))},prepareOpts:function(){var e=this.parent.prepareOpts.apply(this,arguments),n=this;return"select"===e.element.get(0).tagName.toLowerCase()?e.initSelection=function(t,e){var i=[];t.find("option").filter((function(){return this.selected&&!this.disabled})).each2((function(t,e){i.push(n.optionToData(e))})),e(i)}:"data"in e&&(e.initSelection=e.initSelection||function(n,i){var o=m(n.val(),e.separator),r=[];e.query({matcher:function(n,i,s){var a=t.grep(o,(function(t){return g(t,e.id(s))})).length;return a&&r.push(s),a},callback:t.isFunction(i)?function(){for(var t=[],n=0;n0||(this.selectChoice(null),this.clearPlaceholder(),this.container.hasClass("select2-container-active")||this.opts.element.trigger(t.Event("select2-focus")),this.open(),this.focusSearch(),e.preventDefault()))}))),this.container.on("focus",n,this.bind((function(){this.isInterfaceEnabled()&&(this.container.hasClass("select2-container-active")||this.opts.element.trigger(t.Event("select2-focus")),this.container.addClass("select2-container-active"),this.dropdown.addClass("select2-drop-active"),this.clearPlaceholder())}))),this.initContainerWidth(),this.opts.element.addClass("select2-offscreen"),this.clearSearch()},enableInterface:function(){this.parent.enableInterface.apply(this,arguments)&&this.search.prop("disabled",!this.isInterfaceEnabled())},initSelection:function(){if(""===this.opts.element.val()&&""===this.opts.element.text()&&(this.updateSelection([]),this.close(),this.clearSearch()),this.select||""!==this.opts.element.val()){var t=this;this.opts.initSelection.call(null,this.opts.element,(function(n){n!==e&&null!==n&&(t.updateSelection(n),t.close(),t.clearSearch())}))}},clearSearch:function(){var t=this.getPlaceholder(),n=this.getMaxSearchWidth();t!==e&&0===this.getVal().length&&!1===this.search.hasClass("select2-focused")?(this.search.val(t).addClass("select2-default"),this.search.width(n>0?n:this.container.css("width"))):this.search.val("").width(10)},clearPlaceholder:function(){this.search.hasClass("select2-default")&&this.search.val("").removeClass("select2-default")},opening:function(){this.clearPlaceholder(),this.resizeSearch(),this.parent.opening.apply(this,arguments),this.focusSearch(),""===this.search.val()&&this.nextSearchTerm!=e&&(this.search.val(this.nextSearchTerm),this.search.select()),this.updateResults(!0),this.opts.shouldFocusInput(this)&&this.search.focus(),this.opts.element.trigger(t.Event("select2-open"))},close:function(){this.opened()&&this.parent.close.apply(this,arguments)},focus:function(){this.close(),this.search.focus()},isFocused:function(){return this.search.hasClass("select2-focused")},updateSelection:function(e){var n=[],i=[],o=this;t(e).each((function(){f(o.id(this),n)<0&&(n.push(o.id(this)),i.push(this))})),e=i,this.selection.find(".select2-search-choice").remove(),t(e).each((function(){o.addSelectedChoice(this)})),o.postprocessResults()},tokenize:function(){var t=this.search.val();null!=(t=this.opts.tokenizer.call(this,t,this.data(),this.bind(this.onSelect),this.opts))&&t!=e&&(this.search.val(t),t.length>0&&this.open())},onSelect:function(t,n){this.triggerSelect(t)&&""!==t.text&&(this.addSelectedChoice(t),this.opts.element.trigger({type:"selected",val:this.id(t),choice:t}),this.nextSearchTerm=this.opts.nextSearchTerm(t,this.search.val()),this.clearSearch(),this.updateResults(),!this.select&&this.opts.closeOnSelect||this.postprocessResults(t,!1,!0===this.opts.closeOnSelect),this.opts.closeOnSelect?(this.close(),this.search.width(10)):this.countSelectableResults()>0?(this.search.width(10),this.resizeSearch(),this.getMaximumSelectionSize()>0&&this.val().length>=this.getMaximumSelectionSize()?this.updateResults(!0):this.nextSearchTerm!=e&&(this.search.val(this.nextSearchTerm),this.updateResults(),this.search.select()),this.positionDropdown()):(this.close(),this.search.width(10)),this.triggerChange({added:t}),n&&n.noFocus||this.focusSearch())},cancel:function(){this.close(),this.focusSearch()},addSelectedChoice:function(n){var i,o,r=!n.locked,s=t("
          • "),a=t("
          • "),c=r?s:a,l=this.id(n),u=this.getVal();(i=this.opts.formatSelection(n,c.find("div"),this.opts.escapeMarkup))!=e&&c.find("div").replaceWith("
            "+i+"
            "),(o=this.opts.formatSelectionCssClass(n,c.find("div")))!=e&&c.addClass(o),r&&c.find(".select2-search-choice-close").on("mousedown",x).on("click dblclick",this.bind((function(e){this.isInterfaceEnabled()&&(this.unselect(t(e.target)),this.selection.find(".select2-search-choice-focus").removeClass("select2-search-choice-focus"),x(e),this.close(),this.focusSearch())}))).on("focus",this.bind((function(){this.isInterfaceEnabled()&&(this.container.addClass("select2-container-active"),this.dropdown.addClass("select2-drop-active"))}))),c.data("select2-data",n),c.insertBefore(this.searchContainer),u.push(l),this.setVal(u)},unselect:function(e){var n,i,o=this.getVal();if(0===(e=e.closest(".select2-search-choice")).length)throw"Invalid argument: "+e+". Must be .select2-search-choice";if(n=e.data("select2-data")){var r=t.Event("select2-removing");if(r.val=this.id(n),r.choice=n,this.opts.element.trigger(r),r.isDefaultPrevented())return!1;for(;(i=f(this.id(n),o))>=0;)o.splice(i,1),this.setVal(o),this.select&&this.postprocessResults();return e.remove(),this.opts.element.trigger({type:"select2-removed",val:this.id(n),choice:n}),this.triggerChange({removed:n}),!0}},postprocessResults:function(t,e,n){var i=this.getVal(),o=this.results.find(".select2-result"),r=this.results.find(".select2-result-with-children"),s=this;o.each2((function(t,e){f(s.id(e.data("select2-data")),i)>=0&&(e.addClass("select2-selected"),e.find(".select2-result-selectable").addClass("select2-selected"))})),r.each2((function(t,e){e.is(".select2-result-selectable")||0!==e.find(".select2-result-selectable:not(.select2-selected)").length||e.addClass("select2-selected")})),-1==this.highlight()&&!1!==n&&s.highlight(0),!this.opts.createSearchChoice&&!o.filter(".select2-result:not(.select2-selected)").length>0&&(!t||t&&!t.more&&0===this.results.find(".select2-no-results").length)&&I(s.opts.formatNoMatches,"formatNoMatches")&&this.results.append("
          • "+D(s.opts.formatNoMatches,s.opts.element,s.search.val())+"
          • ")},getMaxSearchWidth:function(){return this.selection.width()-b(this.search)},resizeSearch:function(){var e,n,i,o,r=b(this.search);e=function(e){if(!s){var n=e[0].currentStyle||window.getComputedStyle(e[0],null);(s=t(document.createElement("div")).css({position:"absolute",left:"-10000px",top:"-10000px",display:"none",fontSize:n.fontSize,fontFamily:n.fontFamily,fontStyle:n.fontStyle,fontWeight:n.fontWeight,letterSpacing:n.letterSpacing,textTransform:n.textTransform,whiteSpace:"nowrap"})).attr("class","select2-sizer"),t("body").append(s)}return s.text(e.val()),s.width()}(this.search)+10,n=this.search.offset().left,(o=(i=this.selection.width())-(n-this.selection.offset().left)-r)0&&n--,t.splice(i,1),i--);return{added:e,removed:t}},val:function(n,i){var o,r=this;if(0===arguments.length)return this.getVal();if((o=this.data()).length||(o=[]),!n&&0!==n)return this.opts.element.val(""),this.updateSelection([]),this.clearSearch(),void(i&&this.triggerChange({added:this.data(),removed:o}));if(this.setVal(n),this.select)this.opts.initSelection(this.select,this.bind(this.updateSelection)),i&&this.triggerChange(this.buildChangeDetails(o,this.data()));else{if(this.opts.initSelection===e)throw new Error("val() cannot be called if initSelection() is not defined");this.opts.initSelection(this.opts.element,(function(e){var n=t.map(e,r.id);r.setVal(n),r.updateSelection(e),r.clearSearch(),i&&r.triggerChange(r.buildChangeDetails(o,r.data()))}))}this.clearSearch()},onSortStart:function(){if(this.select)throw new Error("Sorting of elements is not supported when attached to instead.");this.search.width(0),this.searchContainer.hide()},onSortEnd:function(){var e=[],n=this;this.searchContainer.show(),this.searchContainer.appendTo(this.searchContainer.parent()),this.resizeSearch(),this.selection.find(".select2-search-choice").each((function(){e.push(n.opts.id(t(this).data("select2-data")))})),this.setVal(e),this.triggerChange()},data:function(e,n){var i,o,r=this;if(0===arguments.length)return this.selection.children(".select2-search-choice").map((function(){return t(this).data("select2-data")})).get();o=this.data(),e||(e=[]),i=t.map(e,(function(t){return r.opts.id(t)})),this.setVal(i),this.updateSelection(e),this.clearSearch(),n&&this.triggerChange(this.buildChangeDetails(o,this.data()))}}),t.fn.select2=function(){var n,i,o,r,s,a=Array.prototype.slice.call(arguments,0),c=["val","destroy","opened","open","close","focus","isFocused","container","dropdown","onSortStart","onSortEnd","enable","disable","readonly","positionDropdown","data","search"],l=["opened","isFocused","container","dropdown"],u=["val","data"],h={search:"externalSearch"};return this.each((function(){if(0===a.length||"object"==typeof a[0])(n=0===a.length?{}:t.extend({},a[0])).element=t(this),"select"===n.element.get(0).tagName.toLowerCase()?s=n.element.prop("multiple"):(s=n.multiple||!1,"tags"in n&&(n.multiple=s=!0)),(i=s?new window.Select2.class.multi:new window.Select2.class.single).init(n);else{if("string"!=typeof a[0])throw"Invalid arguments to select2 plugin: "+a;if(f(a[0],c)<0)throw"Unknown method: "+a[0];if(r=e,(i=t(this).data("select2"))===e)return;if("container"===(o=a[0])?r=i.container:"dropdown"===o?r=i.dropdown:(h[o]&&(o=h[o]),r=i[o].apply(i,a.slice(1))),f(a[0],l)>=0||f(a[0],u)>=0&&1==a.length)return!1}})),r===e?this:r},t.fn.select2.defaults={width:"copy",loadMorePadding:0,closeOnSelect:!0,openOnEnter:!0,containerCss:{},dropdownCss:{},containerCssClass:"",dropdownCssClass:"",formatResult:function(t,e,n,i){var o=[];return y(t.text,n.term,o,i),o.join("")},formatSelection:function(t,n,i){return t?i(t.text):e},sortResults:function(t,e,n){return t},formatResultCssClass:function(t){return t.css},formatSelectionCssClass:function(t,n){return e},minimumResultsForSearch:0,minimumInputLength:0,maximumInputLength:null,maximumSelectionSize:0,id:function(t){return t==e?null:t.id},matcher:function(t,e){return A(""+e).toUpperCase().indexOf(A(""+t).toUpperCase())>=0},separator:",",tokenSeparators:[],tokenizer:function(t,n,i,o){var r,s,a,c,l,u=t,h=!1;if(!o.createSearchChoice||!o.tokenSeparators||o.tokenSeparators.length<1)return e;for(;;){for(s=-1,a=0,c=o.tokenSeparators.length;a=0));a++);if(s<0)break;if(r=t.substring(0,s),t=t.substring(s+l.length),r.length>0&&(r=o.createSearchChoice.call(this,r,n))!==e&&null!==r&&o.id(r)!==e&&null!==o.id(r)){for(h=!1,a=0,c=n.length;a0)&&t.opts.minimumResultsForSearch<0)}},t.fn.select2.locales=[],t.fn.select2.locales.en={formatMatches:function(t){return 1===t?"One result is available, press enter to select it.":t+" results are available, use up and down arrow keys to navigate."},formatNoMatches:function(){return"No matches found"},formatAjaxError:function(t,e,n){return"Loading failed"},formatInputTooShort:function(t,e){var n=e-t.length;return"Please enter "+n+" or more character"+(1==n?"":"s")},formatInputTooLong:function(t,e){var n=t.length-e;return"Please delete "+n+" character"+(1==n?"":"s")},formatSelectionTooBig:function(t){return"You can only select "+t+" item"+(1==t?"":"s")},formatLoadMore:function(t){return"Loading more results…"},formatSearching:function(){return"Searching…"}},t.extend(t.fn.select2.defaults,t.fn.select2.locales.en),t.fn.select2.ajaxDefaults={transport:t.ajax,params:{type:"GET",cache:!1,dataType:"json"}},window.Select2={query:{ajax:B,local:E,tags:_},util:{debounce:C,markMatch:y,escapeMarkup:k,stripDiacritics:A},class:{abstract:n,single:i,multi:o}}}function p(e){var n=t(document.createTextNode(""));e.before(n),n.before(e),n.remove()}function A(t){return t.replace(/[^\u0000-\u007E]/g,(function(t){return d[t]||t}))}function f(t,e){for(var n=0,i=e.length;n"),n.push(i(t.substring(o,o+r))),n.push(""),n.push(i(t.substring(o+r,t.length))))}function k(t){var e={"\\":"\","&":"&","<":"<",">":">",'"':""","'":"'","/":"/"};return String(t).replace(/[&<>"'\/\\]/g,(function(t){return e[t]}))}function B(n){var i,o=null,r=n.quietMillis||100,s=n.url,a=this;return function(c){window.clearTimeout(i),i=window.setTimeout((function(){var i=n.data,r=s,l=n.transport||t.fn.select2.ajaxDefaults.transport,u={type:n.type||"GET",cache:n.cache||!1,jsonpCallback:n.jsonpCallback||e,dataType:n.dataType||"json"},h=t.extend({},t.fn.select2.ajaxDefaults.params,u);i=i?i.call(a,c.term,c.page,c.context):null,r="function"==typeof r?r.call(a,c.term,c.page,c.context):r,o&&"function"==typeof o.abort&&o.abort(),n.params&&(t.isFunction(n.params)?t.extend(h,n.params.call(a)):t.extend(h,n.params)),t.extend(h,{url:r,dataType:n.dataType,data:i,success:function(t){var e=n.results(t,c.page,c);c.callback(e)},error:function(t,e,n){var i={hasError:!0,jqXHR:t,textStatus:e,errorThrown:n};c.callback(i)}}),o=l.call(a,h)}),r)}}function E(e){var n,i,o=e,r=function(t){return""+t.text};t.isArray(o)&&(o={results:i=o}),!1===t.isFunction(o)&&(i=o,o=function(){return i});var s=o();return s.text&&(r=s.text,t.isFunction(r)||(n=s.text,r=function(t){return t[n]})),function(e){var n,i=e.term,s={results:[]};""!==i?(n=function(o,s){var a,c;if((o=o[0]).children){for(c in a={},o)o.hasOwnProperty(c)&&(a[c]=o[c]);a.children=[],t(o.children).each2((function(t,e){n(e,a.children)})),(a.children.length||e.matcher(i,r(a),o))&&s.push(a)}else e.matcher(i,r(o),o)&&s.push(o)},t(o().results).each2((function(t,e){n(e,s.results)})),e.callback(s)):e.callback(o())}}function _(n){var i=t.isFunction(n);return function(o){var r=o.term,s={results:[]},a=i?n(o):n;t.isArray(a)&&(t(a).each((function(){var t=this.text!==e,n=t?this.text:this;(""===r||o.matcher(r,n))&&s.results.push(t?this:{id:this,text:this})})),o.callback(s))}}function I(e,n){if(t.isFunction(e))return!0;if(!e)return!1;if("string"==typeof e)return!0;throw new Error(n+" must be a string, function, or falsy value")}function D(e,n){if(t.isFunction(e)){var i=Array.prototype.slice.call(arguments,2);return e.apply(n,i)}return e}function S(e){var n=0;return t.each(e,(function(t,e){e.children?n+=S(e.children):n++})),n}function T(){var e=this;t.each(arguments,(function(t,n){e[n].remove(),e[n]=null}))}function O(e,n){var i=function(){};return(i.prototype=new e).constructor=i,i.prototype.parent=e.prototype,i.prototype=t.extend(i.prototype,n),i}}(o)},57223:()=>{"use strict";!function t(e,n,i){function o(s,a){if(!n[s]){if(!e[s]){if(r)return r(s,!0);throw new Error("Cannot find module '"+s+"'")}var c=n[s]={exports:{}};e[s][0].call(c.exports,(function(t){return o(e[s][1][t]||t)}),c,c.exports,t,e,n,i)}return n[s].exports}for(var r=void 0,s=0;s0?e.touches[0]["page"+t]:e.changedTouches[0]["page"+t]:e["page"+t]},klass:{has:function(t,e){return-1!==t.className.indexOf(e)},add:function(t,n){!o.klass.has(t,n)&&e.addBodyClasses&&(t.className+=" "+n)},remove:function(t,n){e.addBodyClasses&&(t.className=t.className.replace(n,"").replace(/^\s+|\s+$/g,""))}},dispatchEvent:function(t){if("function"==typeof i[t])return i[t].call()},vendor:function(){var t,e=document.createElement("div"),n="webkit Moz O ms".split(" ");for(t in n)if(void 0!==e.style[n[t]+"Transition"])return n[t]},transitionCallback:function(){return"Moz"===n.vendor||"ms"===n.vendor?"transitionend":n.vendor+"TransitionEnd"},deepExtend:function(t,e){var n;for(n in e)e[n]&&e[n].constructor&&e[n].constructor===Object?(t[n]=t[n]||{},o.deepExtend(t[n],e[n])):t[n]=e[n];return t},angleOfDrag:function(t,e){var i,o;return(o=Math.atan2(-(n.startDragY-e),n.startDragX-t))<0&&(o+=2*Math.PI),(i=Math.floor(o*(180/Math.PI)-180))<0&&i>-180&&(i=360-Math.abs(i)),Math.abs(i)},events:{addEvent:function(t,e,n){return t.addEventListener?t.addEventListener(e,n,!1):t.attachEvent?t.attachEvent("on"+e,n):void 0},removeEvent:function(t,e,n){return t.addEventListener?t.removeEventListener(e,n,!1):t.attachEvent?t.detachEvent("on"+e,n):void 0},prevent:function(t){t.preventDefault?t.preventDefault():t.returnValue=!1}},parentUntil:function(t,e){for(var n="string"==typeof e;t.parentNode;){if(n&&t.getAttribute&&t.getAttribute(e))return t;if(!n&&t===e)return t;t=t.parentNode}return null}},r={translate:{get:{matrix:function(t){var i=window.getComputedStyle(e.element)[n.vendor+"Transform"].match(/\((.*)\)/);return i?(16===(i=i[1].split(",")).length&&(t+=8),parseInt(i[t],10)):0}},easeCallback:function(){e.element.style[n.vendor+"Transition"]="",n.translation=r.translate.get.matrix(4),n.easing=!1,clearInterval(n.animatingInterval),0===n.easingTo&&(o.klass.remove(document.body,"snapjs-right"),o.klass.remove(document.body,"snapjs-left")),o.dispatchEvent("animated"),o.events.removeEvent(e.element,o.transitionCallback(),r.translate.easeCallback)},easeTo:function(t){n.easing=!0,n.easingTo=t,e.element.style[n.vendor+"Transition"]="all "+e.transitionSpeed+"s "+e.easing,n.animatingInterval=setInterval((function(){o.dispatchEvent("animating")}),1),o.events.addEvent(e.element,o.transitionCallback(),r.translate.easeCallback),r.translate.x(t),0===t&&(e.element.style[n.vendor+"Transform"]="")},x:function(t){if(!("left"===e.disable&&t>0||"right"===e.disable&&t<0)){e.hyperextensible||(t===e.maxPosition||t>e.maxPosition?t=e.maxPosition:(t===e.minPosition||t0,h=l;if(n.intentChecked&&!n.hasIntent)return;if(e.addBodyClasses&&(c>0?(o.klass.add(document.body,"snapjs-left"),o.klass.remove(document.body,"snapjs-right")):c<0&&(o.klass.add(document.body,"snapjs-right"),o.klass.remove(document.body,"snapjs-left"))),!1===n.hasIntent||null===n.hasIntent){var d=o.angleOfDrag(i,s),p=d>=0&&d<=e.slideIntent||d<=360&&d>360-e.slideIntent;d>=180&&d<=180+e.slideIntent||d<=180&&d>=180-e.slideIntent||p?(n.hasIntent=!0,e.stopPropagation&&t.stopPropagation()):n.hasIntent=!1,n.intentChecked=!0}if(e.minDragDistance>=Math.abs(i-n.startDragX)||!1===n.hasIntent)return;o.events.prevent(t),o.dispatchEvent("drag"),n.dragWatchers.current=i,n.dragWatchers.last>i?("left"!==n.dragWatchers.state&&(n.dragWatchers.state="left",n.dragWatchers.hold=i),n.dragWatchers.last=i):n.dragWatchers.laste.maxPosition/2,flick:Math.abs(n.dragWatchers.current-n.dragWatchers.hold)>e.flickThreshold,translation:{absolute:c,relative:l,sinceDirectionChange:n.dragWatchers.current-n.dragWatchers.hold,percentage:c/e.maxPosition*100}}):(e.minPosition>c&&(h=l-(c-e.minPosition)*e.resistance),n.simpleStates={opening:"right",towards:n.dragWatchers.state,hyperExtending:e.minPosition>c,halfway:ce.flickThreshold,translation:{absolute:c,relative:l,sinceDirectionChange:n.dragWatchers.current-n.dragWatchers.hold,percentage:c/e.minPosition*100}}),r.translate.x(h+a)}},endDrag:function(t){if(n.isDragging){o.dispatchEvent("end");var i=r.translate.get.matrix(4);if(0===n.dragWatchers.current&&0!==i&&e.tapToClose)return o.dispatchEvent("close"),o.events.prevent(t),r.translate.easeTo(0),n.isDragging=!1,void(n.startDragX=0);"left"===n.simpleStates.opening?n.simpleStates.halfway||n.simpleStates.hyperExtending||n.simpleStates.flick?n.simpleStates.flick&&"left"===n.simpleStates.towards?r.translate.easeTo(0):(n.simpleStates.flick&&"right"===n.simpleStates.towards||n.simpleStates.halfway||n.simpleStates.hyperExtending)&&r.translate.easeTo(e.maxPosition):r.translate.easeTo(0):"right"===n.simpleStates.opening&&(n.simpleStates.halfway||n.simpleStates.hyperExtending||n.simpleStates.flick?n.simpleStates.flick&&"right"===n.simpleStates.towards?r.translate.easeTo(0):(n.simpleStates.flick&&"left"===n.simpleStates.towards||n.simpleStates.halfway||n.simpleStates.hyperExtending)&&r.translate.easeTo(e.minPosition):r.translate.easeTo(0)),n.isDragging=!1,n.startDragX=o.page("X",t)}}}},s=function(t){if(o.deepExtend(e,t),!e.element)throw"Snap's element argument does not exist.";e.element.setAttribute("touch-action","pan-y")};this.open=function(t){o.dispatchEvent("open"),o.klass.remove(document.body,"snapjs-expand-left"),o.klass.remove(document.body,"snapjs-expand-right"),"left"===t?(n.simpleStates.opening="left",n.simpleStates.towards="right",o.klass.add(document.body,"snapjs-left"),o.klass.remove(document.body,"snapjs-right"),r.translate.easeTo(e.maxPosition)):"right"===t&&(n.simpleStates.opening="right",n.simpleStates.towards="left",o.klass.remove(document.body,"snapjs-left"),o.klass.add(document.body,"snapjs-right"),r.translate.easeTo(e.minPosition))},this.close=function(){o.dispatchEvent("close"),r.translate.easeTo(0)},this.expand=function(t){var e=window.innerWidth||document.documentElement.clientWidth;"left"===t?(o.dispatchEvent("expandLeft"),o.klass.add(document.body,"snapjs-expand-left"),o.klass.remove(document.body,"snapjs-expand-right")):(o.dispatchEvent("expandRight"),o.klass.add(document.body,"snapjs-expand-right"),o.klass.remove(document.body,"snapjs-expand-left"),e*=-1),r.translate.easeTo(e)},this.on=function(t,e){return i[t]=e,this},this.off=function(t){i[t]&&(i[t]=!1)},this.enable=function(){o.dispatchEvent("enable"),r.drag.listen()},this.disable=function(){o.dispatchEvent("disable"),r.drag.stopListening()},this.settings=function(t){s(t)},this.state=function(){var t=r.translate.get.matrix(4);return{state:t===e.maxPosition?"left":t===e.minPosition?"right":"closed",info:n.simpleStates}},s(t),n.vendor=o.vendor(),r.drag.listen()}},{}]},{},[1])},53425:(t,e,n)=>{var i,o=n(96763),r=n(74692);(i=r).fn.strengthify=function(t){"use strict";var e={zxcvbn:"zxcvbn/zxcvbn.js",userInputs:[],titles:["Weakest","Weak","So-so","Good","Perfect"],tilesOptions:{tooltip:!0,element:!1},drawTitles:!1,drawMessage:!1,drawBars:!0,$addAfter:null,nonce:null};return this.each((function(){var n=i.extend(e,t);function r(t){return i('div[data-strengthifyFor="'+t+'"]')}function s(){var t=i(this).val().substring(0,100),e=i(this).attr("id"),o=""===t?0:1,s=zxcvbn(t,n.userInputs),a="",c="",l="",u=r(e),h=u.find(".strengthify-container"),d=u.find("[data-strengthifyMessage]");switch(u.children().css("opacity",o).css("-ms-filter",'"progid:DXImageTransform.Microsoft.Alpha(Opacity='+100*o+')"'),n.onResult&&n.onResult(s),s.score){case 0:case 1:a="password-bad",c="danger",l=s.feedback?s.feedback.suggestions.join("
            "):"";break;case 2:c="warning",l=s.feedback?s.feedback.suggestions.join("
            "):"",a="password-medium";break;case 3:a="password-good",c="info",l="Getting better.";break;case 4:a="password-good",c="success",l="Looks good."}d&&(d.removeAttr("class"),d.addClass("bg-"+c),""===t&&(l=""),d.html(l)),h&&(h.attr("class",a+" strengthify-container").css("width",25*(0===s.score?1:s.score)+"%"),""===t&&h.css("width",0)),n.drawTitles&&(n.tilesOptions.tooltip&&(u.attr("title",n.titles[s.score]).tooltip({placement:"bottom",trigger:"manual"}).tooltip("fixTitle").tooltip("show"),0===o&&u.tooltip("hide")),n.tilesOptions.element&&u.find(".strengthify-tiles").text(n.titles[s.score]))}n.drawTitles||n.drawMessage||n.drawBars||o.warn("expect at least one of 'drawTitles', 'drawMessage', or 'drawBars' to be true"),function(){var t=i(this),e=t.attr("id"),o=s.bind(this),a=n.$addAfter;a||(a=t),a.after('
            '),n.drawBars&&r(e).append('
            ').append('
            ').append('
            ').append('
            ').append('
            '),n.drawMessage&&r(e).append("
            "),n.drawTitles&&n.tilesOptions&&r(e).append('
            ');var c=document.createElement("script");c.src=n.zxcvbn,null!==n.nonce&&c.setAttribute("nonce",n.nonce),c.onload=function(){t.parent().on("scroll",o),t.bind("keyup input change",o)},document.head.appendChild(c)}.call(this)}))}},83864:t=>{"use strict";t.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoAQMAAAC2MCouAAAABlBMVEVmZmZ1dXVT6N0BAAAAUklEQVQIW8XNsQ3AIAwF0bMoKBmBURgNj8YojEBJEcXwu2yQ+p507BTeWDnozPISjPpY4O0W6CqEisUtiG/EF+IT8YG4fznihnhCPCNeEK/89D1Gd22TNOyXVAAAAABJRU5ErkJggg=="},26609:t=>{"use strict";t.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAABkAQMAAADOquA5AAAAA1BMVEUAAACnej3aAAAADklEQVQYGWMYBaOABgAAAlgAARbiVEcAAAAASUVORK5CYII="},7369:t=>{"use strict";t.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAADwCAMAAADYSUr5AAAAaVBMVEUAAAAcLkQcLkQcLkQcLkQcLkQcLkQcLkQcLkQcLkQcLkQcLkQcLkQcLkQcLkQcLkQcLkQcLkQcLkQcLkQcLkQcLkQcLkQcLkQcLkQcLkQcLkQcLkQcLkQcLkQcLkQcLkQcLkQcLkQcLkSVcboQAAAAInRSTlMAGBAyCD9gIS5RZkqgwEQnj81slZ0MMK4WLB2ZcIGF737fFn1o5AAADQJJREFUeNrsml2OwjAMBuOrfPc/5IrsAwqjHVSVdiPhETy0tuOfuGlTGE3T7EClxjdTyeYVSJ1O0fN/fBblGwvCDsyDRQETlLxIK1mkSBEOYL8o39gS7MA8wByxAJxBSmlOB1SGySUwfk0BcqvgWIiPTmV6PI97ZIKokXcIZ1g7QAJAB9yGh4j8ABRkDbAWnMqb3RYuvAvwEprKe+X/B/0g1DRN0zTNF/CBJ8Gtn4Mq5c/ySUlC+QX18vcB8kKoMm4tCQNAAaiwHi0KqFeFBSjdPLLkn4bxe8TIGBWUemk9SZL5vQV28KQs4qI6Ey4p2JTu0wGyal30PmCOttEa0HeBpmmapmma/yPnH+ZPjZ+7E2AGfsKF78kx/2FAOKBcLXT8jFBlNQ9l5gABiFT8ywjwCDmklgHd5UUYCLWDYBAK3b9ul8MCiDgTz8DMNQAmmMmqkBf1CfwfKJG3MOcDx7R3cwZw0IOnx9FcIcEJlw8Q2ntDi8P3awCle90FLrbPg9E0TdM0TUPO/y01OR2A7hddlonH5+5zLABxAC3NwANYf1ZKLSInZRvozCGlgPRC/yyAJrCgM8gaVTLPFGTyb/7SAhTcvW8zrUCi+aMAPEPzrPV52mR4B2WC/TG3w/TvAUCKARAh7CGHPcXBAEMSRAFQoPcFQADQp4KLJ7p/HjTnJSAuhl0C9TTWS0B6nP5lEQsTAJwyiLAI2hzZIjjhImj2A6R8jlw8SPQaHoZ3AMn27wN+2DnX5bZBIIwuoBvquB13xp3ef5z3f8hGKO4KqNZx67bqlKMozrLCsJ8Qguji/voNMY1Go9FoHBjkd+KwT8zUOQB5IMA9CgCPjZ86BZwZf6Yad+8yrOvV1AFD5X8cJFyVksVS+G8FC1gbUAW8SQBDEN38wQIYz3cnV+aHG0Nt0lIFYLYPirxU2X+XAA7qoMj8icprXr42/WqoTeHF3hjhwZ1gKUClwP4exxKgzkFaqvyGALUfkMfi2Mx869kZuKqLtO9AKMC+neCWIIb/QWA/0YIzZ6933gSE5awVOvhs/vDjnEaj0Wg0fi/+Hz+RkRlQz+dqE34l/mO9KqmMTj80RFMAFrxkYJoHe1kWucHzb5XHozsZ8vmdX9wbG24+csChrlax/li363u8UE51UDspQJ6dvcvRjmMJwBVLIJ/ZtQD1hLUyNH4OdgjcbgH19olMoN0WQEK9JA72gLzdB+zuXrXxgq/6APUf9vg3zwJWly+KZ8EQNfe5gwVvjQNeDl5ejDugAL8KXhqNRqPR+CEBIMiL6RLyh4jAKYrBV+yRG5/ACjGU7mDr0ckEk6gCofz6ERilsjNDic9kGTQkPvd9RBMiQKyGujO7g9khkBiyeCHUtn4hZW201t1E1zF1xuXzlbxChaHAXJeosxP6vvcrhSCnTICNAnQLaAvIBABxTwg824FEYEcAuhWuAtB5H9gKcD6f7ScwBDLDFGDMBMQ/QeIqiPMrmwrmgl8W9loAEf14gmsfgFYwr/GFhYsK4MexzwR4//69ULfA2q4TagFG4PVWACATwHkKiRJaAO8XdluAiyzxO/0/QIAgKoAnrfp1K+gh8OrV9hA4y9InnrX8kJa7BdD446vX+wK4IkFwCS2AcRz3+wCcixDdVgCRrQABCJqfjwAfP14T/NoJ+uqYNwRIa52gAgyiJvMQgX5PgLJAxoQWwJs3b6DbbQHBxeiCCrDa+wK8WWE13cQ4Te+YXCZAEM0QlyUToCsF6AoByFrAvMZvC6DlfUgUTa7r9lpAcInAjk0EItkxOU0wrubEM1PVAjIB7joEICsvxV8JEPLyinEAX41xwD2nQZhJqygExqrF89JOb9Di64RaABk1/ocQwpAI8tPA+NgXJ9mM9NJoNBqN/4avX22/B2+4Ia02gbAzf4/Ado49szIX07Pxtq0RFfXpezG4wEVyhmHYxh+CKnDqgC9TRAc6M8yfMO/aDMD2T1QBmBfAmM9P03TbLvbJ8D16PHh63Z2zzNt9eoJTET8wjBo/qAK4on6UtvD2afmMKEEiGjAI7AaMnNOi+ZkEmTJbcvvSXSay+g9DXUE1Z7VnqhYnkcHr0JEAENgVwCfUlvCNvbNRTBOGovA1/CM4WTdcra7bef+HHAblJrklzOmoP/mw1WMieE8vScBgt6vtclsY8aOgiP7WgLpfzAAB5I5+NXVMsVGeQsMZrFEfb+8nIMbyNXYpUtWLtwia6G3MgD7jDI0dfuEnzPgR0V8bQJtuqfiU0pchA1iTrTkDOP502AMAvZXk4+2toVlzk5I5xw5AxEenPgM4A9KsW2T8GsA9HldQSrHe9AvPmBj2cdYRay439t+ObMQABTsj6KNjJ08rj7gwj5ekARGOiPit7TkGGHq7+VH/2AzH/ziSTWqOn0yUE7ASsq5ZH3Iftc8AcgCRUvy8gBt826DINIBI7hKDfCVmWpMTvzyAV2b8tEJJVGI1GLBLoTyvF4GWohGFVY1DFeMAcdpbaDFXaFKnHL/oBtkBZRQX1FEkZGaQh5zuEP9ASI6BAoFAIPCZFEBidGMdX8gDQP+THB35Bdf3+1GoiKgyu+Y9wA6sUBRZxg7kwI4M2iWiCMt2ZL5FgSMFa/kES/m5Qo66KN4tB4BLDEiRU47UeHFFlTsazwaN2Pm4vSqQU+oe3HC581Gt8wBKw3VAiDoHh4roC3J+YU1U4R1XMwBAyq/QsesfOwHYADeQgpCkQEpjBlhDTeiTUQAbQDv0mcdD9bIEDAO2iw5zg1Xn+ogBk/PpIcpz2PtUBVjxK0AakIGMw9ea45cZYr8eMaCrcAYABWVsAGkDDIfzts3znHXRxU8F6x6h4egxA+Rwu3Lij2C2ARtkHVgb41rr9fg+ZgBLBahB7wEUyIYnxNHrdrvYttjTEbyjIqovN8CfAbUdPweYV5ps0E7CQKluQoplgLXrZB3b7gbbn2q0DWjbbgewGsH3oqiR/+82oOYzcIkig9Y+54tqh73hAIjIbPYi2Aa8vh5vToKMtgFF1LYtWohu8P/1AjXVAAaZkE1VlmtWSLqbYgdg3PHDjPBxN4jsxEgbgOIAG8BcxQBJf/6lhuLTBw7osFqMd0XK2MfSaEGwDDDiozhC1N1imhoH3O41K+rlRRGT7g5K0eBYjzzjEggEAtehKIhZVuiolvQ8bIDNIL7iyFd6FpboWJqCaHhK06Ahg988mGESuhYNDjQ0GxsoNaTANzbg2/R3XzEJEnEsZD3h0WiiQ9xi/TOx7ANe9goGrgGMAtz4gWRi4ibrVbwaNG/zswzYAEoBG2Pj7nsoUbrx1xw7xz82dTdVKcB6RUQrq0LziQYkOJIIA2R+8ztWRhnHP2KAslJGTzSPwdUdAyI0TTPfSJcDlgYIOCTTP47/ogyYvRHkBFBqSIEXNuDFzAD/Crj84jaA5RzIRm/FcjXaCJqS8//iXoABzUaDgWZ4d5pU9HHCAFn6CF8wmKzRsT4rqIcyIBAIBAKBeUkg5IygTrxXSFyftzc3fgg5IwBbIA3QZcqskNTq8Au2f+Wgy77S+OFtAiRkawiJhOYCYAscA9geIBneng7PrmAZYJdLA2wJjZSguUBPKQ1ge/T9URLVAJwKlgG1jElG7JfwG3DXGQDNbWXAXG0Ac1NtwMy9ADQ31AvcAAls+XQGBAKBQOATwVNfR6W+En5tlTVQ2T/R9+Qq1J0BCTjkPFkDOTlAfP/BufpGqbDuDCBUliu1cADufXSevtWJjQoN0a+EGk4BoMqo7rQBOJD4e9zdhunb+H6az84ato4PS3yjw9voOG9+z3+hPAUyhd2IAYsjOGkIDaGxuNWvFNcZ0NFA2e1CBTt8uN9+F52nb3UXoFr3gSlq82i4QFbYBjxuI5gDzb4Bcvt0QJLACv+BP7DNNwA2d3nVfCAQCAQuhK8PmNZyEtX5mtc3j/Yjrw/wazmN7nzN65tDT7PEwHJKi4mUZ2qxvhm0H3l9gNYa1ikBlHaap9LiwMug4Wr6sJzX72yPXA1veUNEVrmtNaT1JHJyNE6wJkpT/WCyPpf7NYjGylmylvcgMnVZlqw1RC3wtwZYD6TWe2/qvGGCpz6JgER9j6HT74cA+HSr45/PAHnvC8ivpw2azoCW+vgx2y7g1wzrKQMBTGSIR6OlFlpPIq8PkI0aN4Ivo40UXE0j5SONJLkannKtfBpoWXuZuxsT65tBTzH/QIbXN4/2M/9Qltd3bX1L1zsEAoFAIHA3oOdSfdP/XNsL4gOY0I9tAPwG6IU1QH4DCHRfBgAcoNDSIOhfHg0KGXBnBjx5G/DsvUAgEAgEAoFrc6tzYyXTsyARITo//gXdCwtaXGzAAvcb/0UZwPHeb/x2BmBxWkYMwAk7XpCtH7cNiE5w+eAX67vKgUszoK9/v/H/awY8TPyX9gIy/sduA6b7/7vLAc6AK4BF/3NH8f/ZKBi5AADUzjm/v2XQ+gAAAABJRU5ErkJggg=="},36114:t=>{"use strict";t.exports="data:image/png;base64,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"},48832:t=>{"use strict";t.exports="data:image/png;base64,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"},3132:t=>{"use strict";t.exports="data:image/png;base64,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"},19394:t=>{"use strict";t.exports="data:image/png;base64,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"},6411:t=>{"use strict";t.exports="data:image/png;base64,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"},64886:t=>{"use strict";t.exports="data:image/png;base64,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"},14506:t=>{"use strict";t.exports="data:image/png;base64,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"},81972:t=>{"use strict";t.exports="data:image/png;base64,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"},22046:t=>{"use strict";t.exports="data:image/gif;base64,R0lGODlhEAAQAPQAAP///wAAAPDw8IqKiuDg4EZGRnp6egAAAFhYWCQkJKysrL6+vhQUFJycnAQEBDY2NmhoaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCgAAACwAAAAAEAAQAAAFdyAgAgIJIeWoAkRCCMdBkKtIHIngyMKsErPBYbADpkSCwhDmQCBethRB6Vj4kFCkQPG4IlWDgrNRIwnO4UKBXDufzQvDMaoSDBgFb886MiQadgNABAokfCwzBA8LCg0Egl8jAggGAA1kBIA1BAYzlyILczULC2UhACH5BAkKAAAALAAAAAAQABAAAAV2ICACAmlAZTmOREEIyUEQjLKKxPHADhEvqxlgcGgkGI1DYSVAIAWMx+lwSKkICJ0QsHi9RgKBwnVTiRQQgwF4I4UFDQQEwi6/3YSGWRRmjhEETAJfIgMFCnAKM0KDV4EEEAQLiF18TAYNXDaSe3x6mjidN1s3IQAh+QQJCgAAACwAAAAAEAAQAAAFeCAgAgLZDGU5jgRECEUiCI+yioSDwDJyLKsXoHFQxBSHAoAAFBhqtMJg8DgQBgfrEsJAEAg4YhZIEiwgKtHiMBgtpg3wbUZXGO7kOb1MUKRFMysCChAoggJCIg0GC2aNe4gqQldfL4l/Ag1AXySJgn5LcoE3QXI3IQAh+QQJCgAAACwAAAAAEAAQAAAFdiAgAgLZNGU5joQhCEjxIssqEo8bC9BRjy9Ag7GILQ4QEoE0gBAEBcOpcBA0DoxSK/e8LRIHn+i1cK0IyKdg0VAoljYIg+GgnRrwVS/8IAkICyosBIQpBAMoKy9dImxPhS+GKkFrkX+TigtLlIyKXUF+NjagNiEAIfkECQoAAAAsAAAAABAAEAAABWwgIAICaRhlOY4EIgjH8R7LKhKHGwsMvb4AAy3WODBIBBKCsYA9TjuhDNDKEVSERezQEL0WrhXucRUQGuik7bFlngzqVW9LMl9XWvLdjFaJtDFqZ1cEZUB0dUgvL3dgP4WJZn4jkomWNpSTIyEAIfkECQoAAAAsAAAAABAAEAAABX4gIAICuSxlOY6CIgiD8RrEKgqGOwxwUrMlAoSwIzAGpJpgoSDAGifDY5kopBYDlEpAQBwevxfBtRIUGi8xwWkDNBCIwmC9Vq0aiQQDQuK+VgQPDXV9hCJjBwcFYU5pLwwHXQcMKSmNLQcIAExlbH8JBwttaX0ABAcNbWVbKyEAIfkECQoAAAAsAAAAABAAEAAABXkgIAICSRBlOY7CIghN8zbEKsKoIjdFzZaEgUBHKChMJtRwcWpAWoWnifm6ESAMhO8lQK0EEAV3rFopIBCEcGwDKAqPh4HUrY4ICHH1dSoTFgcHUiZjBhAJB2AHDykpKAwHAwdzf19KkASIPl9cDgcnDkdtNwiMJCshACH5BAkKAAAALAAAAAAQABAAAAV3ICACAkkQZTmOAiosiyAoxCq+KPxCNVsSMRgBsiClWrLTSWFoIQZHl6pleBh6suxKMIhlvzbAwkBWfFWrBQTxNLq2RG2yhSUkDs2b63AYDAoJXAcFRwADeAkJDX0AQCsEfAQMDAIPBz0rCgcxky0JRWE1AmwpKyEAIfkECQoAAAAsAAAAABAAEAAABXkgIAICKZzkqJ4nQZxLqZKv4NqNLKK2/Q4Ek4lFXChsg5ypJjs1II3gEDUSRInEGYAw6B6zM4JhrDAtEosVkLUtHA7RHaHAGJQEjsODcEg0FBAFVgkQJQ1pAwcDDw8KcFtSInwJAowCCA6RIwqZAgkPNgVpWndjdyohACH5BAkKAAAALAAAAAAQABAAAAV5ICACAimc5KieLEuUKvm2xAKLqDCfC2GaO9eL0LABWTiBYmA06W6kHgvCqEJiAIJiu3gcvgUsscHUERm+kaCxyxa+zRPk0SgJEgfIvbAdIAQLCAYlCj4DBw0IBQsMCjIqBAcPAooCBg9pKgsJLwUFOhCZKyQDA3YqIQAh+QQJCgAAACwAAAAAEAAQAAAFdSAgAgIpnOSonmxbqiThCrJKEHFbo8JxDDOZYFFb+A41E4H4OhkOipXwBElYITDAckFEOBgMQ3arkMkUBdxIUGZpEb7kaQBRlASPg0FQQHAbEEMGDSVEAA1QBhAED1E0NgwFAooCDWljaQIQCE5qMHcNhCkjIQAh+QQJCgAAACwAAAAAEAAQAAAFeSAgAgIpnOSoLgxxvqgKLEcCC65KEAByKK8cSpA4DAiHQ/DkKhGKh4ZCtCyZGo6F6iYYPAqFgYy02xkSaLEMV34tELyRYNEsCQyHlvWkGCzsPgMCEAY7Cg04Uk48LAsDhRA8MVQPEF0GAgqYYwSRlycNcWskCkApIyEAOwAAAAAAAAAAAA=="},65653:t=>{"use strict";t.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAAoCAYAAACiu5n/AAACLElEQVR42u3Zz0sUYRzH8bUISoyF1i5iXSooyYgOEXapZNYNojwU/aAfUAT9A4YhUgdxt1To0KFIBCMIvEcUEXntUtivpYuUhYFIdDBMmD69he/hObgsbSnb13ngdZjZhX3eO8/MDrMpSctKErwsg//HUSgU7uNYsB3hHla4CybqEoRPaMJGFCEMewxuxnsIk5iALPqg1yVdj9eQGUdjiuE1eAs+QOYztrsMJqwFk8EyHguW95klD+ZD08gsYvBFCBPYgHXBOT1UNpg3ncQpnAicRbrCCQ3j8SIf5QvYEWxvxnlb0mWDr0MIvcOaCiayC78gRKmlH+WDbaIjkJnDzgq/+VHIvMWqag3ehBkIAxXGdkAIDVRlsE24H9//4ty9hju4Hej710c5m83WYging32HMYjMnwSvx75UlQ+iOiDEaEMLZiA8dPc7TFQDnkGYxQ8Iz9Hs8k4riqIa4l5ApojVbm8tiduPL5CZRs5lMGFH8DNYxo+C5d3tMfgohJeow0qMQujxuqRb0RBsZ3DA2ZIuP5LgJDgJToKr4ZHOWjTOy+fzNa6DiezCFGReod1lMGF3IYzjMm5B5rirYIJyEJ4iHezfjW+YRr2n4EHE2LrAa1cg5DwFj2DWLlKljn67p+B+CIdKPAaOsddTcBOEKbTZvjp0Qvjo8Sp9DjJFfIVMjBsef4f34AHeYAxX0VfqMbDnfw97IXMTta6DLbobcxBa3Qdb9BPE2LZQ8G98530ecQi/2QAAAABJRU5ErkJggg=="},32095:t=>{"use strict";t.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHgAAABQCAYAAADSm7GJAAADFElEQVR42u2dsW4TQRBAI0ERCYpDpAUdJX/hAlxQ3SekovYXIIvKEiBRIUF1lHT+BP+Br0TCCCsFLW5cmCS3jKWNNFrdZu+EOG7sd9Irkl0p8r3s7Mzs5XLinIMD5uhvAIIBwYBgaMnNNZvNyj0nkUvPQbAdtDjnCSU3zkGwEbS4iOToHATbE6wptVwEGyUhcaW/JkTbT7JcCpIse4K7SC4pk4wRXreE5ZUMUwezgh03lT0YyKKBOhjoZHUi1oCf7mkYohd9ACVFrj50HgxzmtQifKwF15L1fxC8UD9/EQxzHtxC8KiD4FHPNWMhuIACwd33h3kLuXOZ2mc4yyLRZS1kCG6H3uc2Mbl+LO9Z8FRwEaYINnpDdWKVIEdwC/QVC4l97nk6sUqwQHA3wbGEa9Sj4CCxSlIguHtZMg8Tq/4Edy/bLNXB4/G4FKJ1sJ7zTwTrhMuTU3f+NVqc84SSG+bEJR99a3BoaHERybE5HDYYFKwptVwEGyUhcRX5PufBRoiH4Tg80WFMcBfJPJNljfC6JSzzVCUrGMHswUAWDdTBQCcLOveiCdEBnCYBb9kBBAOCAcGAYEDw0XP0NwDBgGBAMCAYEAwIHvD7QzJhIlSCE2rF0o9lav4eBBt5JWHR8EfzdYATfgkFgg2g5J4LdSD1WrjyXDeIPkfwsNErV6/Y38J34aXwWHgkvBJWwi74RSgQPGD8nrtRwrbCe+G0YX9+KHzyc2rPRsgQPFzBEyVrJ7xLvNTsjvBBuFQreYLg4Qpeqv32m3BP+YxJPhUulOAKwQMl2HsnymNK8mudeCF44IK9rCcdBD8XrhBsS/BTBBOibwTPCNEGCFqSX4X7LeSeCRdK8BLBwy6TdIPjo3A3kUF/pkyy1+ioPVsv8KxB7gPhi7BVcndCpqYheKCtSt1+vBR+CG+EZ8IL4a3wU69cRYlgC4cN4UFD/LDBNVAi2NZxYa0Ixe5ikhFs58B/2SC48mOZUMYkI/jw/61diWDzgtOSEWxdcFpyhWDTgtOSEWxccCgZwfZJ9akrJXiKYEDwMfAHMSYobVemsdsAAAAASUVORK5CYII="},59699:t=>{"use strict";t.exports="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"},34213:t=>{"use strict";t.exports="data:image/gif;base64,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"},35548:(t,e,n)=>{"use strict";var i=n(33517),o=n(16823),r=TypeError;t.exports=function(t){if(i(t))return t;throw new r(o(t)+" is not a constructor")}},73506:(t,e,n)=>{"use strict";var i=n(13925),o=String,r=TypeError;t.exports=function(t){if(i(t))return t;throw new r("Can't set "+o(t)+" as a prototype")}},97080:(t,e,n)=>{"use strict";var i=n(94402).has;t.exports=function(t){return i(t),t}},6469:(t,e,n)=>{"use strict";var i=n(78227),o=n(2360),r=n(24913).f,s=i("unscopables"),a=Array.prototype;void 0===a[s]&&r(a,s,{configurable:!0,value:o(null)}),t.exports=function(t){a[s][t]=!0}},90679:(t,e,n)=>{"use strict";var i=n(1625),o=TypeError;t.exports=function(t,e){if(i(e,t))return t;throw new o("Incorrect invocation")}},77811:t=>{"use strict";t.exports="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView},67394:(t,e,n)=>{"use strict";var i=n(44576),o=n(46706),r=n(22195),s=i.ArrayBuffer,a=i.TypeError;t.exports=s&&o(s.prototype,"byteLength","get")||function(t){if("ArrayBuffer"!==r(t))throw new a("ArrayBuffer expected");return t.byteLength}},3238:(t,e,n)=>{"use strict";var i=n(44576),o=n(27476),r=n(67394),s=i.ArrayBuffer,a=s&&s.prototype,c=a&&o(a.slice);t.exports=function(t){if(0!==r(t))return!1;if(!c)return!1;try{return c(t,0,0),!1}catch(t){return!0}}},15652:(t,e,n)=>{"use strict";var i=n(79039);t.exports=i((function(){if("function"==typeof ArrayBuffer){var t=new ArrayBuffer(8);Object.isExtensible(t)&&Object.defineProperty(t,"a",{value:8})}}))},55169:(t,e,n)=>{"use strict";var i=n(3238),o=TypeError;t.exports=function(t){if(i(t))throw new o("ArrayBuffer is detached");return t}},95636:(t,e,n)=>{"use strict";var i=n(44576),o=n(79504),r=n(46706),s=n(57696),a=n(55169),c=n(67394),l=n(94483),u=n(1548),h=i.structuredClone,d=i.ArrayBuffer,p=i.DataView,A=Math.min,f=d.prototype,g=p.prototype,m=o(f.slice),b=r(f,"resizable","get"),v=r(f,"maxByteLength","get"),C=o(g.getInt8),x=o(g.setInt8);t.exports=(u||l)&&function(t,e,n){var i,o=c(t),r=void 0===e?o:s(e),f=!b||!b(t);if(a(t),u&&(t=h(t,{transfer:[t]}),o===r&&(n||f)))return t;if(o>=r&&(!n||f))i=m(t,0,r);else{var g=n&&!f&&v?{maxByteLength:v(t)}:void 0;i=new d(r,g);for(var w=new p(t),y=new p(i),k=A(r,o),B=0;B{"use strict";var i,o,r,s=n(77811),a=n(43724),c=n(44576),l=n(94901),u=n(20034),h=n(39297),d=n(36955),p=n(16823),A=n(66699),f=n(36840),g=n(62106),m=n(1625),b=n(42787),v=n(52967),C=n(78227),x=n(33392),w=n(91181),y=w.enforce,k=w.get,B=c.Int8Array,E=B&&B.prototype,_=c.Uint8ClampedArray,I=_&&_.prototype,D=B&&b(B),S=E&&b(E),T=Object.prototype,O=c.TypeError,M=C("toStringTag"),P=x("TYPED_ARRAY_TAG"),R="TypedArrayConstructor",N=s&&!!v&&"Opera"!==d(c.opera),H=!1,z={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},L={BigInt64Array:8,BigUint64Array:8},F=function(t){var e=b(t);if(u(e)){var n=k(e);return n&&h(n,R)?n[R]:F(e)}},j=function(t){if(!u(t))return!1;var e=d(t);return h(z,e)||h(L,e)};for(i in z)(r=(o=c[i])&&o.prototype)?y(r)[R]=o:N=!1;for(i in L)(r=(o=c[i])&&o.prototype)&&(y(r)[R]=o);if((!N||!l(D)||D===Function.prototype)&&(D=function(){throw new O("Incorrect invocation")},N))for(i in z)c[i]&&v(c[i],D);if((!N||!S||S===T)&&(S=D.prototype,N))for(i in z)c[i]&&v(c[i].prototype,S);if(N&&b(I)!==S&&v(I,S),a&&!h(S,M))for(i in H=!0,g(S,M,{configurable:!0,get:function(){return u(this)?this[P]:void 0}}),z)c[i]&&A(c[i],P,i);t.exports={NATIVE_ARRAY_BUFFER_VIEWS:N,TYPED_ARRAY_TAG:H&&P,aTypedArray:function(t){if(j(t))return t;throw new O("Target is not a typed array")},aTypedArrayConstructor:function(t){if(l(t)&&(!v||m(D,t)))return t;throw new O(p(t)+" is not a typed array constructor")},exportTypedArrayMethod:function(t,e,n,i){if(a){if(n)for(var o in z){var r=c[o];if(r&&h(r.prototype,t))try{delete r.prototype[t]}catch(n){try{r.prototype[t]=e}catch(t){}}}S[t]&&!n||f(S,t,n?e:N&&E[t]||e,i)}},exportTypedArrayStaticMethod:function(t,e,n){var i,o;if(a){if(v){if(n)for(i in z)if((o=c[i])&&h(o,t))try{delete o[t]}catch(t){}if(D[t]&&!n)return;try{return f(D,t,n?e:N&&D[t]||e)}catch(t){}}for(i in z)!(o=c[i])||o[t]&&!n||f(o,t,e)}},getTypedArrayConstructor:F,isView:function(t){if(!u(t))return!1;var e=d(t);return"DataView"===e||h(z,e)||h(L,e)},isTypedArray:j,TypedArray:D,TypedArrayPrototype:S}},66346:(t,e,n)=>{"use strict";var i=n(44576),o=n(79504),r=n(43724),s=n(77811),a=n(10350),c=n(66699),l=n(62106),u=n(56279),h=n(79039),d=n(90679),p=n(91291),A=n(18014),f=n(57696),g=n(15617),m=n(88490),b=n(42787),v=n(52967),C=n(84373),x=n(67680),w=n(23167),y=n(77740),k=n(10687),B=n(91181),E=a.PROPER,_=a.CONFIGURABLE,I="ArrayBuffer",D="DataView",S="prototype",T="Wrong index",O=B.getterFor(I),M=B.getterFor(D),P=B.set,R=i[I],N=R,H=N&&N[S],z=i[D],L=z&&z[S],F=Object.prototype,j=i.Array,U=i.RangeError,W=o(C),Y=o([].reverse),q=m.pack,Q=m.unpack,G=function(t){return[255&t]},X=function(t){return[255&t,t>>8&255]},V=function(t){return[255&t,t>>8&255,t>>16&255,t>>24&255]},K=function(t){return t[3]<<24|t[2]<<16|t[1]<<8|t[0]},J=function(t){return q(g(t),23,4)},Z=function(t){return q(t,52,8)},$=function(t,e,n){l(t[S],e,{configurable:!0,get:function(){return n(this)[e]}})},tt=function(t,e,n,i){var o=M(t),r=f(n),s=!!i;if(r+e>o.byteLength)throw new U(T);var a=o.bytes,c=r+o.byteOffset,l=x(a,c,c+e);return s?l:Y(l)},et=function(t,e,n,i,o,r){var s=M(t),a=f(n),c=i(+o),l=!!r;if(a+e>s.byteLength)throw new U(T);for(var u=s.bytes,h=a+s.byteOffset,d=0;d>24)},setUint8:function(t,e){ot(this,t,e<<24>>24)}},{unsafe:!0})}else H=(N=function(t){d(this,H);var e=f(t);P(this,{type:I,bytes:W(j(e),0),byteLength:e}),r||(this.byteLength=e,this.detached=!1)})[S],L=(z=function(t,e,n){d(this,L),d(t,H);var i=O(t),o=i.byteLength,s=p(e);if(s<0||s>o)throw new U("Wrong offset");if(s+(n=void 0===n?o-s:A(n))>o)throw new U("Wrong length");P(this,{type:D,buffer:t,byteLength:n,byteOffset:s,bytes:i.bytes}),r||(this.buffer=t,this.byteLength=n,this.byteOffset=s)})[S],r&&($(N,"byteLength",O),$(z,"buffer",M),$(z,"byteLength",M),$(z,"byteOffset",M)),u(L,{getInt8:function(t){return tt(this,1,t)[0]<<24>>24},getUint8:function(t){return tt(this,1,t)[0]},getInt16:function(t){var e=tt(this,2,t,arguments.length>1&&arguments[1]);return(e[1]<<8|e[0])<<16>>16},getUint16:function(t){var e=tt(this,2,t,arguments.length>1&&arguments[1]);return e[1]<<8|e[0]},getInt32:function(t){return K(tt(this,4,t,arguments.length>1&&arguments[1]))},getUint32:function(t){return K(tt(this,4,t,arguments.length>1&&arguments[1]))>>>0},getFloat32:function(t){return Q(tt(this,4,t,arguments.length>1&&arguments[1]),23)},getFloat64:function(t){return Q(tt(this,8,t,arguments.length>1&&arguments[1]),52)},setInt8:function(t,e){et(this,1,t,G,e)},setUint8:function(t,e){et(this,1,t,G,e)},setInt16:function(t,e){et(this,2,t,X,e,arguments.length>2&&arguments[2])},setUint16:function(t,e){et(this,2,t,X,e,arguments.length>2&&arguments[2])},setInt32:function(t,e){et(this,4,t,V,e,arguments.length>2&&arguments[2])},setUint32:function(t,e){et(this,4,t,V,e,arguments.length>2&&arguments[2])},setFloat32:function(t,e){et(this,4,t,J,e,arguments.length>2&&arguments[2])},setFloat64:function(t,e){et(this,8,t,Z,e,arguments.length>2&&arguments[2])}});k(N,I),k(z,D),t.exports={ArrayBuffer:N,DataView:z}},57029:(t,e,n)=>{"use strict";var i=n(48981),o=n(35610),r=n(26198),s=n(84606),a=Math.min;t.exports=[].copyWithin||function(t,e){var n=i(this),c=r(n),l=o(t,c),u=o(e,c),h=arguments.length>2?arguments[2]:void 0,d=a((void 0===h?c:o(h,c))-u,c-l),p=1;for(u0;)u in n?n[l]=n[u]:s(n,l),l+=p,u+=p;return n}},84373:(t,e,n)=>{"use strict";var i=n(48981),o=n(35610),r=n(26198);t.exports=function(t){for(var e=i(this),n=r(e),s=arguments.length,a=o(s>1?arguments[1]:void 0,n),c=s>2?arguments[2]:void 0,l=void 0===c?n:o(c,n);l>a;)e[a++]=t;return e}},90235:(t,e,n)=>{"use strict";var i=n(81594).forEach,o=n(34598)("forEach");t.exports=o?[].forEach:function(t){return i(this,t,arguments.length>1?arguments[1]:void 0)}},35370:(t,e,n)=>{"use strict";var i=n(26198);t.exports=function(t,e,n){for(var o=0,r=arguments.length>2?n:i(e),s=new t(r);r>o;)s[o]=e[o++];return s}},97916:(t,e,n)=>{"use strict";var i=n(76080),o=n(69565),r=n(48981),s=n(96319),a=n(44209),c=n(33517),l=n(26198),u=n(97040),h=n(70081),d=n(50851),p=Array;t.exports=function(t){var e=r(t),n=c(this),A=arguments.length,f=A>1?arguments[1]:void 0,g=void 0!==f;g&&(f=i(f,A>2?arguments[2]:void 0));var m,b,v,C,x,w,y=d(e),k=0;if(!y||this===p&&a(y))for(m=l(e),b=n?new this(m):p(m);m>k;k++)w=g?f(e[k],k):e[k],u(b,k,w);else for(b=n?new this:[],x=(C=h(e,y)).next;!(v=o(x,C)).done;k++)w=g?s(C,f,[v.value,k],!0):v.value,u(b,k,w);return b.length=k,b}},43839:(t,e,n)=>{"use strict";var i=n(76080),o=n(47055),r=n(48981),s=n(26198),a=function(t){var e=1===t;return function(n,a,c){for(var l,u=r(n),h=o(u),d=s(h),p=i(a,c);d-- >0;)if(p(l=h[d],d,u))switch(t){case 0:return l;case 1:return d}return e?-1:void 0}};t.exports={findLast:a(0),findLastIndex:a(1)}},81594:(t,e,n)=>{"use strict";var i=n(76080),o=n(79504),r=n(47055),s=n(48981),a=n(26198),c=n(1469),l=o([].push),u=function(t){var e=1===t,n=2===t,o=3===t,u=4===t,h=6===t,d=7===t,p=5===t||h;return function(A,f,g,m){for(var b,v,C=s(A),x=r(C),w=a(x),y=i(f,g),k=0,B=m||c,E=e?B(A,w):n||d?B(A,0):void 0;w>k;k++)if((p||k in x)&&(v=y(b=x[k],k,C),t))if(e)E[k]=v;else if(v)switch(t){case 3:return!0;case 5:return b;case 6:return k;case 2:l(E,b)}else switch(t){case 4:return!1;case 7:l(E,b)}return h?-1:o||u?u:E}};t.exports={forEach:u(0),map:u(1),filter:u(2),some:u(3),every:u(4),find:u(5),findIndex:u(6),filterReject:u(7)}},8379:(t,e,n)=>{"use strict";var i=n(18745),o=n(25397),r=n(91291),s=n(26198),a=n(34598),c=Math.min,l=[].lastIndexOf,u=!!l&&1/[1].lastIndexOf(1,-0)<0,h=a("lastIndexOf"),d=u||!h;t.exports=d?function(t){if(u)return i(l,this,arguments)||0;var e=o(this),n=s(e);if(0===n)return-1;var a=n-1;for(arguments.length>1&&(a=c(a,r(arguments[1]))),a<0&&(a=n+a);a>=0;a--)if(a in e&&e[a]===t)return a||0;return-1}:l},70597:(t,e,n)=>{"use strict";var i=n(79039),o=n(78227),r=n(39519),s=o("species");t.exports=function(t){return r>=51||!i((function(){var e=[];return(e.constructor={})[s]=function(){return{foo:1}},1!==e[t](Boolean).foo}))}},34598:(t,e,n)=>{"use strict";var i=n(79039);t.exports=function(t,e){var n=[][t];return!!n&&i((function(){n.call(null,e||function(){return 1},1)}))}},80926:(t,e,n)=>{"use strict";var i=n(79306),o=n(48981),r=n(47055),s=n(26198),a=TypeError,c="Reduce of empty array with no initial value",l=function(t){return function(e,n,l,u){var h=o(e),d=r(h),p=s(h);if(i(n),0===p&&l<2)throw new a(c);var A=t?p-1:0,f=t?-1:1;if(l<2)for(;;){if(A in d){u=d[A],A+=f;break}if(A+=f,t?A<0:p<=A)throw new a(c)}for(;t?A>=0:p>A;A+=f)A in d&&(u=n(u,d[A],A,h));return u}};t.exports={left:l(!1),right:l(!0)}},34527:(t,e,n)=>{"use strict";var i=n(43724),o=n(34376),r=TypeError,s=Object.getOwnPropertyDescriptor,a=i&&!function(){if(void 0!==this)return!0;try{Object.defineProperty([],"length",{writable:!1}).length=1}catch(t){return t instanceof TypeError}}();t.exports=a?function(t,e){if(o(t)&&!s(t,"length").writable)throw new r("Cannot set read only .length");return t.length=e}:function(t,e){return t.length=e}},67680:(t,e,n)=>{"use strict";var i=n(79504);t.exports=i([].slice)},74488:(t,e,n)=>{"use strict";var i=n(67680),o=Math.floor,r=function(t,e){var n=t.length;if(n<8)for(var s,a,c=1;c0;)t[a]=t[--a];a!==c++&&(t[a]=s)}else for(var l=o(n/2),u=r(i(t,0,l),e),h=r(i(t,l),e),d=u.length,p=h.length,A=0,f=0;A{"use strict";var i=n(34376),o=n(33517),r=n(20034),s=n(78227)("species"),a=Array;t.exports=function(t){var e;return i(t)&&(e=t.constructor,(o(e)&&(e===a||i(e.prototype))||r(e)&&null===(e=e[s]))&&(e=void 0)),void 0===e?a:e}},1469:(t,e,n)=>{"use strict";var i=n(87433);t.exports=function(t,e){return new(i(t))(0===e?0:e)}},37628:(t,e,n)=>{"use strict";var i=n(26198);t.exports=function(t,e){for(var n=i(t),o=new e(n),r=0;r{"use strict";var i=n(26198),o=n(91291),r=RangeError;t.exports=function(t,e,n,s){var a=i(t),c=o(n),l=c<0?a+c:c;if(l>=a||l<0)throw new r("Incorrect index");for(var u=new e(a),h=0;h{"use strict";var e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",n=e+"+/",i=e+"-_",o=function(t){for(var e={},n=0;n<64;n++)e[t.charAt(n)]=n;return e};t.exports={i2c:n,c2i:o(n),i2cUrl:i,c2iUrl:o(i)}},96319:(t,e,n)=>{"use strict";var i=n(28551),o=n(9539);t.exports=function(t,e,n,r){try{return r?e(i(n)[0],n[1]):e(n)}catch(e){o(t,"throw",e)}}},84428:(t,e,n)=>{"use strict";var i=n(78227)("iterator"),o=!1;try{var r=0,s={next:function(){return{done:!!r++}},return:function(){o=!0}};s[i]=function(){return this},Array.from(s,(function(){throw 2}))}catch(t){}t.exports=function(t,e){try{if(!e&&!o)return!1}catch(t){return!1}var n=!1;try{var r={};r[i]=function(){return{next:function(){return{done:n=!0}}}},t(r)}catch(t){}return n}},86938:(t,e,n)=>{"use strict";var i=n(2360),o=n(62106),r=n(56279),s=n(76080),a=n(90679),c=n(64117),l=n(72652),u=n(51088),h=n(62529),d=n(87633),p=n(43724),A=n(3451).fastKey,f=n(91181),g=f.set,m=f.getterFor;t.exports={getConstructor:function(t,e,n,u){var h=t((function(t,o){a(t,d),g(t,{type:e,index:i(null),first:null,last:null,size:0}),p||(t.size=0),c(o)||l(o,t[u],{that:t,AS_ENTRIES:n})})),d=h.prototype,f=m(e),b=function(t,e,n){var i,o,r=f(t),s=v(t,e);return s?s.value=n:(r.last=s={index:o=A(e,!0),key:e,value:n,previous:i=r.last,next:null,removed:!1},r.first||(r.first=s),i&&(i.next=s),p?r.size++:t.size++,"F"!==o&&(r.index[o]=s)),t},v=function(t,e){var n,i=f(t),o=A(e);if("F"!==o)return i.index[o];for(n=i.first;n;n=n.next)if(n.key===e)return n};return r(d,{clear:function(){for(var t=f(this),e=t.first;e;)e.removed=!0,e.previous&&(e.previous=e.previous.next=null),e=e.next;t.first=t.last=null,t.index=i(null),p?t.size=0:this.size=0},delete:function(t){var e=this,n=f(e),i=v(e,t);if(i){var o=i.next,r=i.previous;delete n.index[i.index],i.removed=!0,r&&(r.next=o),o&&(o.previous=r),n.first===i&&(n.first=o),n.last===i&&(n.last=r),p?n.size--:e.size--}return!!i},forEach:function(t){for(var e,n=f(this),i=s(t,arguments.length>1?arguments[1]:void 0);e=e?e.next:n.first;)for(i(e.value,e.key,this);e&&e.removed;)e=e.previous},has:function(t){return!!v(this,t)}}),r(d,n?{get:function(t){var e=v(this,t);return e&&e.value},set:function(t,e){return b(this,0===t?0:t,e)}}:{add:function(t){return b(this,t=0===t?0:t,t)}}),p&&o(d,"size",{configurable:!0,get:function(){return f(this).size}}),h},setStrong:function(t,e,n){var i=e+" Iterator",o=m(e),r=m(i);u(t,e,(function(t,e){g(this,{type:i,target:t,state:o(t),kind:e,last:null})}),(function(){for(var t=r(this),e=t.kind,n=t.last;n&&n.removed;)n=n.previous;return t.target&&(t.last=n=n?n.next:t.state.first)?h("keys"===e?n.key:"values"===e?n.value:[n.key,n.value],!1):(t.target=null,h(void 0,!0))}),n?"entries":"values",!n,!0),d(e)}}},91625:(t,e,n)=>{"use strict";var i=n(79504),o=n(56279),r=n(3451).getWeakData,s=n(90679),a=n(28551),c=n(64117),l=n(20034),u=n(72652),h=n(81594),d=n(39297),p=n(91181),A=p.set,f=p.getterFor,g=h.find,m=h.findIndex,b=i([].splice),v=0,C=function(t){return t.frozen||(t.frozen=new x)},x=function(){this.entries=[]},w=function(t,e){return g(t.entries,(function(t){return t[0]===e}))};x.prototype={get:function(t){var e=w(this,t);if(e)return e[1]},has:function(t){return!!w(this,t)},set:function(t,e){var n=w(this,t);n?n[1]=e:this.entries.push([t,e])},delete:function(t){var e=m(this.entries,(function(e){return e[0]===t}));return~e&&b(this.entries,e,1),!!~e}},t.exports={getConstructor:function(t,e,n,i){var h=t((function(t,o){s(t,p),A(t,{type:e,id:v++,frozen:null}),c(o)||u(o,t[i],{that:t,AS_ENTRIES:n})})),p=h.prototype,g=f(e),m=function(t,e,n){var i=g(t),o=r(a(e),!0);return!0===o?C(i).set(e,n):o[i.id]=n,t};return o(p,{delete:function(t){var e=g(this);if(!l(t))return!1;var n=r(t);return!0===n?C(e).delete(t):n&&d(n,e.id)&&delete n[e.id]},has:function(t){var e=g(this);if(!l(t))return!1;var n=r(t);return!0===n?C(e).has(t):n&&d(n,e.id)}}),o(p,n?{get:function(t){var e=g(this);if(l(t)){var n=r(t);if(!0===n)return C(e).get(t);if(n)return n[e.id]}},set:function(t,e){return m(this,t,e)}}:{add:function(t){return m(this,t,!0)}}),h}}},16468:(t,e,n)=>{"use strict";var i=n(46518),o=n(44576),r=n(79504),s=n(92796),a=n(36840),c=n(3451),l=n(72652),u=n(90679),h=n(94901),d=n(64117),p=n(20034),A=n(79039),f=n(84428),g=n(10687),m=n(23167);t.exports=function(t,e,n){var b=-1!==t.indexOf("Map"),v=-1!==t.indexOf("Weak"),C=b?"set":"add",x=o[t],w=x&&x.prototype,y=x,k={},B=function(t){var e=r(w[t]);a(w,t,"add"===t?function(t){return e(this,0===t?0:t),this}:"delete"===t?function(t){return!(v&&!p(t))&&e(this,0===t?0:t)}:"get"===t?function(t){return v&&!p(t)?void 0:e(this,0===t?0:t)}:"has"===t?function(t){return!(v&&!p(t))&&e(this,0===t?0:t)}:function(t,n){return e(this,0===t?0:t,n),this})};if(s(t,!h(x)||!(v||w.forEach&&!A((function(){(new x).entries().next()})))))y=n.getConstructor(e,t,b,C),c.enable();else if(s(t,!0)){var E=new y,_=E[C](v?{}:-0,1)!==E,I=A((function(){E.has(1)})),D=f((function(t){new x(t)})),S=!v&&A((function(){for(var t=new x,e=5;e--;)t[C](e,e);return!t.has(-0)}));D||((y=e((function(t,e){u(t,w);var n=m(new x,t,y);return d(e)||l(e,n[C],{that:n,AS_ENTRIES:b}),n}))).prototype=w,w.constructor=y),(I||S)&&(B("delete"),B("has"),b&&B("get")),(S||_)&&B(C),v&&w.clear&&delete w.clear}return k[t]=y,i({global:!0,constructor:!0,forced:y!==x},k),g(y,t),v||n.setStrong(y,t,b),y}},41436:(t,e,n)=>{"use strict";var i=n(78227)("match");t.exports=function(t){var e=/./;try{"/./"[t](e)}catch(n){try{return e[i]=!1,"/./"[t](e)}catch(t){}}return!1}},12211:(t,e,n)=>{"use strict";var i=n(79039);t.exports=!i((function(){function t(){}return t.prototype.constructor=null,Object.getPrototypeOf(new t)!==t.prototype}))},77240:(t,e,n)=>{"use strict";var i=n(79504),o=n(67750),r=n(655),s=/"/g,a=i("".replace);t.exports=function(t,e,n,i){var c=r(o(t)),l="<"+e;return""!==n&&(l+=" "+n+'="'+a(r(i),s,""")+'"'),l+">"+c+""}},62529:t=>{"use strict";t.exports=function(t,e){return{value:t,done:e}}},97040:(t,e,n)=>{"use strict";var i=n(43724),o=n(24913),r=n(6980);t.exports=function(t,e,n){i?o.f(t,e,r(0,n)):t[e]=n}},70380:(t,e,n)=>{"use strict";var i=n(79504),o=n(79039),r=n(60533).start,s=RangeError,a=isFinite,c=Math.abs,l=Date.prototype,u=l.toISOString,h=i(l.getTime),d=i(l.getUTCDate),p=i(l.getUTCFullYear),A=i(l.getUTCHours),f=i(l.getUTCMilliseconds),g=i(l.getUTCMinutes),m=i(l.getUTCMonth),b=i(l.getUTCSeconds);t.exports=o((function(){return"0385-07-25T07:06:39.999Z"!==u.call(new Date(-50000000000001))}))||!o((function(){u.call(new Date(NaN))}))?function(){if(!a(h(this)))throw new s("Invalid time value");var t=this,e=p(t),n=f(t),i=e<0?"-":e>9999?"+":"";return i+r(c(e),i?6:4,0)+"-"+r(m(t)+1,2,0)+"-"+r(d(t),2,0)+"T"+r(A(t),2,0)+":"+r(g(t),2,0)+":"+r(b(t),2,0)+"."+r(n,3,0)+"Z"}:u},53640:(t,e,n)=>{"use strict";var i=n(28551),o=n(84270),r=TypeError;t.exports=function(t){if(i(this),"string"===t||"default"===t)t="string";else if("number"!==t)throw new r("Incorrect hint");return o(this,t)}},62106:(t,e,n)=>{"use strict";var i=n(50283),o=n(24913);t.exports=function(t,e,n){return n.get&&i(n.get,e,{getter:!0}),n.set&&i(n.set,e,{setter:!0}),o.f(t,e,n)}},56279:(t,e,n)=>{"use strict";var i=n(36840);t.exports=function(t,e,n){for(var o in e)i(t,o,e[o],n);return t}},84606:(t,e,n)=>{"use strict";var i=n(16823),o=TypeError;t.exports=function(t,e){if(!delete t[e])throw new o("Cannot delete property "+i(e)+" of "+i(t))}},94483:(t,e,n)=>{"use strict";var i,o,r,s,a=n(44576),c=n(89429),l=n(1548),u=a.structuredClone,h=a.ArrayBuffer,d=a.MessageChannel,p=!1;if(l)p=function(t){u(t,{transfer:[t]})};else if(h)try{d||(i=c("worker_threads"))&&(d=i.MessageChannel),d&&(o=new d,r=new h(2),s=function(t){o.port1.postMessage(null,[t])},2===r.byteLength&&(s(r),0===r.byteLength&&(p=s)))}catch(t){}t.exports=p},96837:t=>{"use strict";var e=TypeError;t.exports=function(t){if(t>9007199254740991)throw e("Maximum allowed index exceeded");return t}},55002:t=>{"use strict";t.exports={IndexSizeError:{s:"INDEX_SIZE_ERR",c:1,m:1},DOMStringSizeError:{s:"DOMSTRING_SIZE_ERR",c:2,m:0},HierarchyRequestError:{s:"HIERARCHY_REQUEST_ERR",c:3,m:1},WrongDocumentError:{s:"WRONG_DOCUMENT_ERR",c:4,m:1},InvalidCharacterError:{s:"INVALID_CHARACTER_ERR",c:5,m:1},NoDataAllowedError:{s:"NO_DATA_ALLOWED_ERR",c:6,m:0},NoModificationAllowedError:{s:"NO_MODIFICATION_ALLOWED_ERR",c:7,m:1},NotFoundError:{s:"NOT_FOUND_ERR",c:8,m:1},NotSupportedError:{s:"NOT_SUPPORTED_ERR",c:9,m:1},InUseAttributeError:{s:"INUSE_ATTRIBUTE_ERR",c:10,m:1},InvalidStateError:{s:"INVALID_STATE_ERR",c:11,m:1},SyntaxError:{s:"SYNTAX_ERR",c:12,m:1},InvalidModificationError:{s:"INVALID_MODIFICATION_ERR",c:13,m:1},NamespaceError:{s:"NAMESPACE_ERR",c:14,m:1},InvalidAccessError:{s:"INVALID_ACCESS_ERR",c:15,m:1},ValidationError:{s:"VALIDATION_ERR",c:16,m:0},TypeMismatchError:{s:"TYPE_MISMATCH_ERR",c:17,m:1},SecurityError:{s:"SECURITY_ERR",c:18,m:1},NetworkError:{s:"NETWORK_ERR",c:19,m:1},AbortError:{s:"ABORT_ERR",c:20,m:1},URLMismatchError:{s:"URL_MISMATCH_ERR",c:21,m:1},QuotaExceededError:{s:"QUOTA_EXCEEDED_ERR",c:22,m:1},TimeoutError:{s:"TIMEOUT_ERR",c:23,m:1},InvalidNodeTypeError:{s:"INVALID_NODE_TYPE_ERR",c:24,m:1},DataCloneError:{s:"DATA_CLONE_ERR",c:25,m:1}}},67400:t=>{"use strict";t.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}},79296:(t,e,n)=>{"use strict";var i=n(4055)("span").classList,o=i&&i.constructor&&i.constructor.prototype;t.exports=o===Object.prototype?void 0:o},13709:(t,e,n)=>{"use strict";var i=n(82839).match(/firefox\/(\d+)/i);t.exports=!!i&&+i[1]},13763:(t,e,n)=>{"use strict";var i=n(82839);t.exports=/MSIE|Trident/.test(i)},44265:(t,e,n)=>{"use strict";var i=n(82839);t.exports=/ipad|iphone|ipod/i.test(i)&&"undefined"!=typeof Pebble},89544:(t,e,n)=>{"use strict";var i=n(82839);t.exports=/(?:ipad|iphone|ipod).*applewebkit/i.test(i)},38574:(t,e,n)=>{"use strict";var i=n(84215);t.exports="NODE"===i},7860:(t,e,n)=>{"use strict";var i=n(82839);t.exports=/web0s(?!.*chrome)/i.test(i)},3607:(t,e,n)=>{"use strict";var i=n(82839).match(/AppleWebKit\/(\d+)\./);t.exports=!!i&&+i[1]},84215:(t,e,n)=>{"use strict";var i=n(44576),o=n(82839),r=n(22195),s=function(t){return o.slice(0,t.length)===t};t.exports=s("Bun/")?"BUN":s("Cloudflare-Workers")?"CLOUDFLARE":s("Deno/")?"DENO":s("Node.js/")?"NODE":i.Bun&&"string"==typeof Bun.version?"BUN":i.Deno&&"object"==typeof Deno.version?"DENO":"process"===r(i.process)?"NODE":i.window&&i.document?"BROWSER":"REST"},16193:(t,e,n)=>{"use strict";var i=n(79504),o=Error,r=i("".replace),s=String(new o("zxcasd").stack),a=/\n\s*at [^:]*:[^\n]*/,c=a.test(s);t.exports=function(t,e){if(c&&"string"==typeof t&&!o.prepareStackTrace)for(;e--;)t=r(t,a,"");return t}},80747:(t,e,n)=>{"use strict";var i=n(66699),o=n(16193),r=n(24659),s=Error.captureStackTrace;t.exports=function(t,e,n,a){r&&(s?s(t,e):i(t,"stack",o(n,a)))}},24659:(t,e,n)=>{"use strict";var i=n(79039),o=n(6980);t.exports=!i((function(){var t=new Error("a");return!("stack"in t)||(Object.defineProperty(t,"stack",o(1,7)),7!==t.stack)}))},77536:(t,e,n)=>{"use strict";var i=n(43724),o=n(79039),r=n(28551),s=n(32603),a=Error.prototype.toString,c=o((function(){if(i){var t=Object.create(Object.defineProperty({},"name",{get:function(){return this===t}}));if("true"!==a.call(t))return!0}return"2: 1"!==a.call({message:1,name:2})||"Error"!==a.call({})}));t.exports=c?function(){var t=r(this),e=s(t.name,"Error"),n=s(t.message);return e?n?e+": "+n:e:n}:a},70259:(t,e,n)=>{"use strict";var i=n(34376),o=n(26198),r=n(96837),s=n(76080),a=function(t,e,n,c,l,u,h,d){for(var p,A,f=l,g=0,m=!!h&&s(h,d);g0&&i(p)?(A=o(p),f=a(t,e,p,A,f,u-1)-1):(r(f+1),t[f]=p),f++),g++;return f};t.exports=a},92744:(t,e,n)=>{"use strict";var i=n(79039);t.exports=!i((function(){return Object.isExtensible(Object.preventExtensions({}))}))},76080:(t,e,n)=>{"use strict";var i=n(27476),o=n(79306),r=n(40616),s=i(i.bind);t.exports=function(t,e){return o(t),void 0===e?t:r?s(t,e):function(){return t.apply(e,arguments)}}},30566:(t,e,n)=>{"use strict";var i=n(79504),o=n(79306),r=n(20034),s=n(39297),a=n(67680),c=n(40616),l=Function,u=i([].concat),h=i([].join),d={};t.exports=c?l.bind:function(t){var e=o(this),n=e.prototype,i=a(arguments,1),c=function(){var n=u(i,a(arguments));return this instanceof c?function(t,e,n){if(!s(d,e)){for(var i=[],o=0;o{"use strict";var i=n(79504),o=n(79306);t.exports=function(t,e,n){try{return i(o(Object.getOwnPropertyDescriptor(t,e)[n]))}catch(t){}}},27476:(t,e,n)=>{"use strict";var i=n(22195),o=n(79504);t.exports=function(t){if("Function"===i(t))return o(t)}},89429:(t,e,n)=>{"use strict";var i=n(44576),o=n(38574);t.exports=function(t){if(o){try{return i.process.getBuiltinModule(t)}catch(t){}try{return Function('return require("'+t+'")')()}catch(t){}}}},44124:(t,e,n)=>{"use strict";var i=n(44576);t.exports=function(t,e){var n=i[t],o=n&&n.prototype;return o&&o[e]}},1767:t=>{"use strict";t.exports=function(t){return{iterator:t,next:t.next,done:!1}}},50851:(t,e,n)=>{"use strict";var i=n(36955),o=n(55966),r=n(64117),s=n(26269),a=n(78227)("iterator");t.exports=function(t){if(!r(t))return o(t,a)||o(t,"@@iterator")||s[i(t)]}},70081:(t,e,n)=>{"use strict";var i=n(69565),o=n(79306),r=n(28551),s=n(16823),a=n(50851),c=TypeError;t.exports=function(t,e){var n=arguments.length<2?a(t):e;if(o(n))return r(i(n,t));throw new c(s(t)+" is not iterable")}},66933:(t,e,n)=>{"use strict";var i=n(79504),o=n(34376),r=n(94901),s=n(22195),a=n(655),c=i([].push);t.exports=function(t){if(r(t))return t;if(o(t)){for(var e=t.length,n=[],i=0;i{"use strict";var i=n(79306),o=n(28551),r=n(69565),s=n(91291),a=n(1767),c="Invalid size",l=RangeError,u=TypeError,h=Math.max,d=function(t,e){this.set=t,this.size=h(e,0),this.has=i(t.has),this.keys=i(t.keys)};d.prototype={getIterator:function(){return a(o(r(this.keys,this.set)))},includes:function(t){return r(this.has,this.set,t)}},t.exports=function(t){o(t);var e=+t.size;if(e!=e)throw new u(c);var n=s(e);if(n<0)throw new l(c);return new d(t,n)}},90757:(t,e,n)=>{"use strict";var i=n(96763);t.exports=function(t,e){try{1===arguments.length?i.error(t):i.error(t,e)}catch(t){}}},88490:t=>{"use strict";var e=Array,n=Math.abs,i=Math.pow,o=Math.floor,r=Math.log,s=Math.LN2;t.exports={pack:function(t,a,c){var l,u,h,d=e(c),p=8*c-a-1,A=(1<>1,g=23===a?i(2,-24)-i(2,-77):0,m=t<0||0===t&&1/t<0?1:0,b=0;for((t=n(t))!=t||t===1/0?(u=t!=t?1:0,l=A):(l=o(r(t)/s),t*(h=i(2,-l))<1&&(l--,h*=2),(t+=l+f>=1?g/h:g*i(2,1-f))*h>=2&&(l++,h/=2),l+f>=A?(u=0,l=A):l+f>=1?(u=(t*h-1)*i(2,a),l+=f):(u=t*i(2,f-1)*i(2,a),l=0));a>=8;)d[b++]=255&u,u/=256,a-=8;for(l=l<0;)d[b++]=255&l,l/=256,p-=8;return d[b-1]|=128*m,d},unpack:function(t,e){var n,o=t.length,r=8*o-e-1,s=(1<>1,c=r-7,l=o-1,u=t[l--],h=127&u;for(u>>=7;c>0;)h=256*h+t[l--],c-=8;for(n=h&(1<<-c)-1,h>>=-c,c+=e;c>0;)n=256*n+t[l--],c-=8;if(0===h)h=1-a;else{if(h===s)return n?NaN:u?-1/0:1/0;n+=i(2,e),h-=a}return(u?-1:1)*n*i(2,h-e)}}},23167:(t,e,n)=>{"use strict";var i=n(94901),o=n(20034),r=n(52967);t.exports=function(t,e,n){var s,a;return r&&i(s=e.constructor)&&s!==n&&o(a=s.prototype)&&a!==n.prototype&&r(t,a),t}},77584:(t,e,n)=>{"use strict";var i=n(20034),o=n(66699);t.exports=function(t,e){i(e)&&"cause"in e&&o(t,"cause",e.cause)}},3451:(t,e,n)=>{"use strict";var i=n(46518),o=n(79504),r=n(30421),s=n(20034),a=n(39297),c=n(24913).f,l=n(38480),u=n(10298),h=n(34124),d=n(33392),p=n(92744),A=!1,f=d("meta"),g=0,m=function(t){c(t,f,{value:{objectID:"O"+g++,weakData:{}}})},b=t.exports={enable:function(){b.enable=function(){},A=!0;var t=l.f,e=o([].splice),n={};n[f]=1,t(n).length&&(l.f=function(n){for(var i=t(n),o=0,r=i.length;o{"use strict";var i=n(78227),o=n(26269),r=i("iterator"),s=Array.prototype;t.exports=function(t){return void 0!==t&&(o.Array===t||s[r]===t)}},34376:(t,e,n)=>{"use strict";var i=n(22195);t.exports=Array.isArray||function(t){return"Array"===i(t)}},18727:(t,e,n)=>{"use strict";var i=n(36955);t.exports=function(t){var e=i(t);return"BigInt64Array"===e||"BigUint64Array"===e}},33517:(t,e,n)=>{"use strict";var i=n(79504),o=n(79039),r=n(94901),s=n(36955),a=n(97751),c=n(33706),l=function(){},u=a("Reflect","construct"),h=/^\s*(?:class|function)\b/,d=i(h.exec),p=!h.test(l),A=function(t){if(!r(t))return!1;try{return u(l,[],t),!0}catch(t){return!1}},f=function(t){if(!r(t))return!1;switch(s(t)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return p||!!d(h,c(t))}catch(t){return!0}};f.sham=!0,t.exports=!u||o((function(){var t;return A(A.call)||!A(Object)||!A((function(){t=!0}))||t}))?f:A},16575:(t,e,n)=>{"use strict";var i=n(39297);t.exports=function(t){return void 0!==t&&(i(t,"value")||i(t,"writable"))}},2087:(t,e,n)=>{"use strict";var i=n(20034),o=Math.floor;t.exports=Number.isInteger||function(t){return!i(t)&&isFinite(t)&&o(t)===t}},13925:(t,e,n)=>{"use strict";var i=n(20034);t.exports=function(t){return i(t)||null===t}},60788:(t,e,n)=>{"use strict";var i=n(20034),o=n(22195),r=n(78227)("match");t.exports=function(t){var e;return i(t)&&(void 0!==(e=t[r])?!!e:"RegExp"===o(t))}},40507:(t,e,n)=>{"use strict";var i=n(69565);t.exports=function(t,e,n){for(var o,r,s=n?t:t.iterator,a=t.next;!(o=i(a,s)).done;)if(void 0!==(r=e(o.value)))return r}},72652:(t,e,n)=>{"use strict";var i=n(76080),o=n(69565),r=n(28551),s=n(16823),a=n(44209),c=n(26198),l=n(1625),u=n(70081),h=n(50851),d=n(9539),p=TypeError,A=function(t,e){this.stopped=t,this.result=e},f=A.prototype;t.exports=function(t,e,n){var g,m,b,v,C,x,w,y=n&&n.that,k=!(!n||!n.AS_ENTRIES),B=!(!n||!n.IS_RECORD),E=!(!n||!n.IS_ITERATOR),_=!(!n||!n.INTERRUPTED),I=i(e,y),D=function(t){return g&&d(g,"normal",t),new A(!0,t)},S=function(t){return k?(r(t),_?I(t[0],t[1],D):I(t[0],t[1])):_?I(t,D):I(t)};if(B)g=t.iterator;else if(E)g=t;else{if(!(m=h(t)))throw new p(s(t)+" is not iterable");if(a(m)){for(b=0,v=c(t);v>b;b++)if((C=S(t[b]))&&l(f,C))return C;return new A(!1)}g=u(t,m)}for(x=B?t.next:g.next;!(w=o(x,g)).done;){try{C=S(w.value)}catch(t){d(g,"throw",t)}if("object"==typeof C&&C&&l(f,C))return C}return new A(!1)}},9539:(t,e,n)=>{"use strict";var i=n(69565),o=n(28551),r=n(55966);t.exports=function(t,e,n){var s,a;o(t);try{if(!(s=r(t,"return"))){if("throw"===e)throw n;return n}s=i(s,t)}catch(t){a=!0,s=t}if("throw"===e)throw n;if(a)throw s;return o(s),n}},33994:(t,e,n)=>{"use strict";var i=n(57657).IteratorPrototype,o=n(2360),r=n(6980),s=n(10687),a=n(26269),c=function(){return this};t.exports=function(t,e,n,l){var u=e+" Iterator";return t.prototype=o(i,{next:r(+!l,n)}),s(t,u,!1,!0),a[u]=c,t}},51088:(t,e,n)=>{"use strict";var i=n(46518),o=n(69565),r=n(96395),s=n(10350),a=n(94901),c=n(33994),l=n(42787),u=n(52967),h=n(10687),d=n(66699),p=n(36840),A=n(78227),f=n(26269),g=n(57657),m=s.PROPER,b=s.CONFIGURABLE,v=g.IteratorPrototype,C=g.BUGGY_SAFARI_ITERATORS,x=A("iterator"),w="keys",y="values",k="entries",B=function(){return this};t.exports=function(t,e,n,s,A,g,E){c(n,e,s);var _,I,D,S=function(t){if(t===A&&R)return R;if(!C&&t&&t in M)return M[t];switch(t){case w:case y:case k:return function(){return new n(this,t)}}return function(){return new n(this)}},T=e+" Iterator",O=!1,M=t.prototype,P=M[x]||M["@@iterator"]||A&&M[A],R=!C&&P||S(A),N="Array"===e&&M.entries||P;if(N&&(_=l(N.call(new t)))!==Object.prototype&&_.next&&(r||l(_)===v||(u?u(_,v):a(_[x])||p(_,x,B)),h(_,T,!0,!0),r&&(f[T]=B)),m&&A===y&&P&&P.name!==y&&(!r&&b?d(M,"name",y):(O=!0,R=function(){return o(P,this)})),A)if(I={values:S(y),keys:g?R:S(w),entries:S(k)},E)for(D in I)(C||O||!(D in M))&&p(M,D,I[D]);else i({target:e,proto:!0,forced:C||O},I);return r&&!E||M[x]===R||p(M,x,R,{name:A}),f[e]=R,I}},57657:(t,e,n)=>{"use strict";var i,o,r,s=n(79039),a=n(94901),c=n(20034),l=n(2360),u=n(42787),h=n(36840),d=n(78227),p=n(96395),A=d("iterator"),f=!1;[].keys&&("next"in(r=[].keys())?(o=u(u(r)))!==Object.prototype&&(i=o):f=!0),!c(i)||s((function(){var t={};return i[A].call(t)!==t}))?i={}:p&&(i=l(i)),a(i[A])||h(i,A,(function(){return this})),t.exports={IteratorPrototype:i,BUGGY_SAFARI_ITERATORS:f}},26269:t=>{"use strict";t.exports={}},72248:(t,e,n)=>{"use strict";var i=n(79504),o=Map.prototype;t.exports={Map,set:i(o.set),get:i(o.get),has:i(o.has),remove:i(o.delete),proto:o}},53250:t=>{"use strict";var e=Math.expm1,n=Math.exp;t.exports=!e||e(10)>22025.465794806718||e(10)<22025.465794806718||-2e-17!==e(-2e-17)?function(t){var e=+t;return 0===e?e:e>-1e-6&&e<1e-6?e+e*e/2:n(e)-1}:e},33164:(t,e,n)=>{"use strict";var i=n(77782),o=Math.abs,r=2220446049250313e-31,s=1/r;t.exports=function(t,e,n,a){var c=+t,l=o(c),u=i(c);if(ln||d!=d?u*(1/0):u*d}},15617:(t,e,n)=>{"use strict";var i=n(33164);t.exports=Math.fround||function(t){return i(t,1.1920928955078125e-7,34028234663852886e22,11754943508222875e-54)}},49340:t=>{"use strict";var e=Math.log,n=Math.LOG10E;t.exports=Math.log10||function(t){return e(t)*n}},7740:t=>{"use strict";var e=Math.log;t.exports=Math.log1p||function(t){var n=+t;return n>-1e-8&&n<1e-8?n-n*n/2:e(1+n)}},77782:t=>{"use strict";t.exports=Math.sign||function(t){var e=+t;return 0===e||e!=e?e:e<0?-1:1}},91955:(t,e,n)=>{"use strict";var i,o,r,s,a,c=n(44576),l=n(93389),u=n(76080),h=n(59225).set,d=n(18265),p=n(89544),A=n(44265),f=n(7860),g=n(38574),m=c.MutationObserver||c.WebKitMutationObserver,b=c.document,v=c.process,C=c.Promise,x=l("queueMicrotask");if(!x){var w=new d,y=function(){var t,e;for(g&&(t=v.domain)&&t.exit();e=w.get();)try{e()}catch(t){throw w.head&&i(),t}t&&t.enter()};p||g||f||!m||!b?!A&&C&&C.resolve?((s=C.resolve(void 0)).constructor=C,a=u(s.then,s),i=function(){a(y)}):g?i=function(){v.nextTick(y)}:(h=u(h,c),i=function(){h(y)}):(o=!0,r=b.createTextNode(""),new m(y).observe(r,{characterData:!0}),i=function(){r.data=o=!o}),x=function(t){w.head||i(),w.add(t)}}t.exports=x},36043:(t,e,n)=>{"use strict";var i=n(79306),o=TypeError,r=function(t){var e,n;this.promise=new t((function(t,i){if(void 0!==e||void 0!==n)throw new o("Bad Promise constructor");e=t,n=i})),this.resolve=i(e),this.reject=i(n)};t.exports.f=function(t){return new r(t)}},32603:(t,e,n)=>{"use strict";var i=n(655);t.exports=function(t,e){return void 0===t?arguments.length<2?"":e:i(t)}},60511:(t,e,n)=>{"use strict";var i=n(60788),o=TypeError;t.exports=function(t){if(i(t))throw new o("The method doesn't accept regular expressions");return t}},50360:(t,e,n)=>{"use strict";var i=n(44576).isFinite;t.exports=Number.isFinite||function(t){return"number"==typeof t&&i(t)}},33904:(t,e,n)=>{"use strict";var i=n(44576),o=n(79039),r=n(79504),s=n(655),a=n(43802).trim,c=n(47452),l=r("".charAt),u=i.parseFloat,h=i.Symbol,d=h&&h.iterator,p=1/u(c+"-0")!=-1/0||d&&!o((function(){u(Object(d))}));t.exports=p?function(t){var e=a(s(t)),n=u(e);return 0===n&&"-"===l(e,0)?-0:n}:u},52703:(t,e,n)=>{"use strict";var i=n(44576),o=n(79039),r=n(79504),s=n(655),a=n(43802).trim,c=n(47452),l=i.parseInt,u=i.Symbol,h=u&&u.iterator,d=/^[+-]?0x/i,p=r(d.exec),A=8!==l(c+"08")||22!==l(c+"0x16")||h&&!o((function(){l(Object(h))}));t.exports=A?function(t,e){var n=a(s(t));return l(n,e>>>0||(p(d,n)?16:10))}:l},44213:(t,e,n)=>{"use strict";var i=n(43724),o=n(79504),r=n(69565),s=n(79039),a=n(71072),c=n(33717),l=n(48773),u=n(48981),h=n(47055),d=Object.assign,p=Object.defineProperty,A=o([].concat);t.exports=!d||s((function(){if(i&&1!==d({b:1},d(p({},"a",{enumerable:!0,get:function(){p(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var t={},e={},n=Symbol("assign detection"),o="abcdefghijklmnopqrst";return t[n]=7,o.split("").forEach((function(t){e[t]=t})),7!==d({},t)[n]||a(d({},e)).join("")!==o}))?function(t,e){for(var n=u(t),o=arguments.length,s=1,d=c.f,p=l.f;o>s;)for(var f,g=h(arguments[s++]),m=d?A(a(g),d(g)):a(g),b=m.length,v=0;b>v;)f=m[v++],i&&!r(p,g,f)||(n[f]=g[f]);return n}:d},10298:(t,e,n)=>{"use strict";var i=n(22195),o=n(25397),r=n(38480).f,s=n(67680),a="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];t.exports.f=function(t){return a&&"Window"===i(t)?function(t){try{return r(t)}catch(t){return s(a)}}(t):r(o(t))}},42787:(t,e,n)=>{"use strict";var i=n(39297),o=n(94901),r=n(48981),s=n(66119),a=n(12211),c=s("IE_PROTO"),l=Object,u=l.prototype;t.exports=a?l.getPrototypeOf:function(t){var e=r(t);if(i(e,c))return e[c];var n=e.constructor;return o(n)&&e instanceof n?n.prototype:e instanceof l?u:null}},34124:(t,e,n)=>{"use strict";var i=n(79039),o=n(20034),r=n(22195),s=n(15652),a=Object.isExtensible,c=i((function(){a(1)}));t.exports=c||s?function(t){return!!o(t)&&(!s||"ArrayBuffer"!==r(t))&&(!a||a(t))}:a},42551:(t,e,n)=>{"use strict";var i=n(96395),o=n(44576),r=n(79039),s=n(3607);t.exports=i||!r((function(){if(!(s&&s<535)){var t=Math.random();__defineSetter__.call(null,t,(function(){})),delete o[t]}}))},52967:(t,e,n)=>{"use strict";var i=n(46706),o=n(20034),r=n(67750),s=n(73506);t.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var t,e=!1,n={};try{(t=i(Object.prototype,"__proto__","set"))(n,[]),e=n instanceof Array}catch(t){}return function(n,i){return r(n),s(i),o(n)?(e?t(n,i):n.__proto__=i,n):n}}():void 0)},32357:(t,e,n)=>{"use strict";var i=n(43724),o=n(79039),r=n(79504),s=n(42787),a=n(71072),c=n(25397),l=r(n(48773).f),u=r([].push),h=i&&o((function(){var t=Object.create(null);return t[2]=2,!l(t,2)})),d=function(t){return function(e){for(var n,o=c(e),r=a(o),d=h&&null===s(o),p=r.length,A=0,f=[];p>A;)n=r[A++],i&&!(d?n in o:l(o,n))||u(f,t?[n,o[n]]:o[n]);return f}};t.exports={entries:d(!0),values:d(!1)}},53179:(t,e,n)=>{"use strict";var i=n(92140),o=n(36955);t.exports=i?{}.toString:function(){return"[object "+o(this)+"]"}},19167:(t,e,n)=>{"use strict";var i=n(44576);t.exports=i},1103:t=>{"use strict";t.exports=function(t){try{return{error:!1,value:t()}}catch(t){return{error:!0,value:t}}}},10916:(t,e,n)=>{"use strict";var i=n(44576),o=n(80550),r=n(94901),s=n(92796),a=n(33706),c=n(78227),l=n(84215),u=n(96395),h=n(39519),d=o&&o.prototype,p=c("species"),A=!1,f=r(i.PromiseRejectionEvent),g=s("Promise",(function(){var t=a(o),e=t!==String(o);if(!e&&66===h)return!0;if(u&&(!d.catch||!d.finally))return!0;if(!h||h<51||!/native code/.test(t)){var n=new o((function(t){t(1)})),i=function(t){t((function(){}),(function(){}))};if((n.constructor={})[p]=i,!(A=n.then((function(){}))instanceof i))return!0}return!(e||"BROWSER"!==l&&"DENO"!==l||f)}));t.exports={CONSTRUCTOR:g,REJECTION_EVENT:f,SUBCLASSING:A}},80550:(t,e,n)=>{"use strict";var i=n(44576);t.exports=i.Promise},93438:(t,e,n)=>{"use strict";var i=n(28551),o=n(20034),r=n(36043);t.exports=function(t,e){if(i(t),o(e)&&e.constructor===t)return e;var n=r.f(t);return(0,n.resolve)(e),n.promise}},90537:(t,e,n)=>{"use strict";var i=n(80550),o=n(84428),r=n(10916).CONSTRUCTOR;t.exports=r||!o((function(t){i.all(t).then(void 0,(function(){}))}))},11056:(t,e,n)=>{"use strict";var i=n(24913).f;t.exports=function(t,e,n){n in t||i(t,n,{configurable:!0,get:function(){return e[n]},set:function(t){e[n]=t}})}},18265:t=>{"use strict";var e=function(){this.head=null,this.tail=null};e.prototype={add:function(t){var e={item:t,next:null},n=this.tail;n?n.next=e:this.head=e,this.tail=e},get:function(){var t=this.head;if(t)return null===(this.head=t.next)&&(this.tail=null),t.item}},t.exports=e},61034:(t,e,n)=>{"use strict";var i=n(69565),o=n(39297),r=n(1625),s=n(67979),a=RegExp.prototype;t.exports=function(t){var e=t.flags;return void 0!==e||"flags"in a||o(t,"flags")||!r(a,t)?e:i(s,t)}},93389:(t,e,n)=>{"use strict";var i=n(44576),o=n(43724),r=Object.getOwnPropertyDescriptor;t.exports=function(t){if(!o)return i[t];var e=r(i,t);return e&&e.value}},3470:t=>{"use strict";t.exports=Object.is||function(t,e){return t===e?0!==t||1/t==1/e:t!=t&&e!=e}},79472:(t,e,n)=>{"use strict";var i,o=n(44576),r=n(18745),s=n(94901),a=n(84215),c=n(82839),l=n(67680),u=n(22812),h=o.Function,d=/MSIE .\./.test(c)||"BUN"===a&&((i=o.Bun.version.split(".")).length<3||"0"===i[0]&&(i[1]<3||"3"===i[1]&&"0"===i[2]));t.exports=function(t,e){var n=e?2:1;return d?function(i,o){var a=u(arguments.length,1)>n,c=s(i)?i:h(i),d=a?l(arguments,n):[],p=a?function(){r(c,this,d)}:c;return e?t(p,o):t(p)}:t}},89286:(t,e,n)=>{"use strict";var i=n(94402),o=n(38469),r=i.Set,s=i.add;t.exports=function(t){var e=new r;return o(t,(function(t){s(e,t)})),e}},83440:(t,e,n)=>{"use strict";var i=n(97080),o=n(94402),r=n(89286),s=n(25170),a=n(83789),c=n(38469),l=n(40507),u=o.has,h=o.remove;t.exports=function(t){var e=i(this),n=a(t),o=r(e);return s(e)<=n.size?c(e,(function(t){n.includes(t)&&h(o,t)})):l(n.getIterator(),(function(t){u(e,t)&&h(o,t)})),o}},94402:(t,e,n)=>{"use strict";var i=n(79504),o=Set.prototype;t.exports={Set,add:i(o.add),has:i(o.has),remove:i(o.delete),proto:o}},68750:(t,e,n)=>{"use strict";var i=n(97080),o=n(94402),r=n(25170),s=n(83789),a=n(38469),c=n(40507),l=o.Set,u=o.add,h=o.has;t.exports=function(t){var e=i(this),n=s(t),o=new l;return r(e)>n.size?c(n.getIterator(),(function(t){h(e,t)&&u(o,t)})):a(e,(function(t){n.includes(t)&&u(o,t)})),o}},64449:(t,e,n)=>{"use strict";var i=n(97080),o=n(94402).has,r=n(25170),s=n(83789),a=n(38469),c=n(40507),l=n(9539);t.exports=function(t){var e=i(this),n=s(t);if(r(e)<=n.size)return!1!==a(e,(function(t){if(n.includes(t))return!1}),!0);var u=n.getIterator();return!1!==c(u,(function(t){if(o(e,t))return l(u,"normal",!1)}))}},53838:(t,e,n)=>{"use strict";var i=n(97080),o=n(25170),r=n(38469),s=n(83789);t.exports=function(t){var e=i(this),n=s(t);return!(o(e)>n.size)&&!1!==r(e,(function(t){if(!n.includes(t))return!1}),!0)}},28527:(t,e,n)=>{"use strict";var i=n(97080),o=n(94402).has,r=n(25170),s=n(83789),a=n(40507),c=n(9539);t.exports=function(t){var e=i(this),n=s(t);if(r(e){"use strict";var i=n(79504),o=n(40507),r=n(94402),s=r.Set,a=r.proto,c=i(a.forEach),l=i(a.keys),u=l(new s).next;t.exports=function(t,e,n){return n?o({iterator:l(t),next:u},e):c(t,e)}},84916:(t,e,n)=>{"use strict";var i=n(97751),o=function(t){return{size:t,has:function(){return!1},keys:function(){return{next:function(){return{done:!0}}}}}};t.exports=function(t){var e=i("Set");try{(new e)[t](o(0));try{return(new e)[t](o(-1)),!1}catch(t){return!0}}catch(t){return!1}}},25170:(t,e,n)=>{"use strict";var i=n(46706),o=n(94402);t.exports=i(o.proto,"size","get")||function(t){return t.size}},87633:(t,e,n)=>{"use strict";var i=n(97751),o=n(62106),r=n(78227),s=n(43724),a=r("species");t.exports=function(t){var e=i(t);s&&e&&!e[a]&&o(e,a,{configurable:!0,get:function(){return this}})}},83650:(t,e,n)=>{"use strict";var i=n(97080),o=n(94402),r=n(89286),s=n(83789),a=n(40507),c=o.add,l=o.has,u=o.remove;t.exports=function(t){var e=i(this),n=s(t).getIterator(),o=r(e);return a(n,(function(t){l(e,t)?u(o,t):c(o,t)})),o}},10687:(t,e,n)=>{"use strict";var i=n(24913).f,o=n(39297),r=n(78227)("toStringTag");t.exports=function(t,e,n){t&&!n&&(t=t.prototype),t&&!o(t,r)&&i(t,r,{configurable:!0,value:e})}},44204:(t,e,n)=>{"use strict";var i=n(97080),o=n(94402).add,r=n(89286),s=n(83789),a=n(40507);t.exports=function(t){var e=i(this),n=s(t).getIterator(),c=r(e);return a(n,(function(t){o(c,t)})),c}},2293:(t,e,n)=>{"use strict";var i=n(28551),o=n(35548),r=n(64117),s=n(78227)("species");t.exports=function(t,e){var n,a=i(t).constructor;return void 0===a||r(n=i(a)[s])?e:o(n)}},23061:(t,e,n)=>{"use strict";var i=n(79039);t.exports=function(t){return i((function(){var e=""[t]('"');return e!==e.toLowerCase()||e.split('"').length>3}))}},83063:(t,e,n)=>{"use strict";var i=n(82839);t.exports=/Version\/10(?:\.\d+){1,2}(?: [\w./]+)?(?: Mobile\/\w+)? Safari\//.test(i)},60533:(t,e,n)=>{"use strict";var i=n(79504),o=n(18014),r=n(655),s=n(72333),a=n(67750),c=i(s),l=i("".slice),u=Math.ceil,h=function(t){return function(e,n,i){var s,h,d=r(a(e)),p=o(n),A=d.length,f=void 0===i?" ":r(i);return p<=A||""===f?d:((h=c(f,u((s=p-A)/f.length))).length>s&&(h=l(h,0,s)),t?d+h:h+d)}};t.exports={start:h(!1),end:h(!0)}},3717:(t,e,n)=>{"use strict";var i=n(79504),o=2147483647,r=/[^\0-\u007E]/,s=/[.\u3002\uFF0E\uFF61]/g,a="Overflow: input needs wider integers to process",c=RangeError,l=i(s.exec),u=Math.floor,h=String.fromCharCode,d=i("".charCodeAt),p=i([].join),A=i([].push),f=i("".replace),g=i("".split),m=i("".toLowerCase),b=function(t){return t+22+75*(t<26)},v=function(t,e,n){var i=0;for(t=n?u(t/700):t>>1,t+=u(t/e);t>455;)t=u(t/35),i+=36;return u(i+36*t/(t+38))},C=function(t){var e=[];t=function(t){for(var e=[],n=0,i=t.length;n=55296&&o<=56319&&n=s&&iu((o-l)/x))throw new c(a);for(l+=(C-s)*x,s=C,n=0;no)throw new c(a);if(i===s){for(var w=l,y=36;;){var k=y<=f?1:y>=f+26?26:y-f;if(w{"use strict";var i=n(91291),o=n(655),r=n(67750),s=RangeError;t.exports=function(t){var e=o(r(this)),n="",a=i(t);if(a<0||a===1/0)throw new s("Wrong number of repetitions");for(;a>0;(a>>>=1)&&(e+=e))1&a&&(n+=e);return n}},18866:(t,e,n)=>{"use strict";var i=n(43802).end,o=n(60706);t.exports=o("trimEnd")?function(){return i(this)}:"".trimEnd},60706:(t,e,n)=>{"use strict";var i=n(10350).PROPER,o=n(79039),r=n(47452);t.exports=function(t){return o((function(){return!!r[t]()||"​…᠎"!=="​…᠎"[t]()||i&&r[t].name!==t}))}},53487:(t,e,n)=>{"use strict";var i=n(43802).start,o=n(60706);t.exports=o("trimStart")?function(){return i(this)}:"".trimStart},43802:(t,e,n)=>{"use strict";var i=n(79504),o=n(67750),r=n(655),s=n(47452),a=i("".replace),c=RegExp("^["+s+"]+"),l=RegExp("(^|[^"+s+"])["+s+"]+$"),u=function(t){return function(e){var n=r(o(e));return 1&t&&(n=a(n,c,"")),2&t&&(n=a(n,l,"$1")),n}};t.exports={start:u(1),end:u(2),trim:u(3)}},1548:(t,e,n)=>{"use strict";var i=n(44576),o=n(79039),r=n(39519),s=n(84215),a=i.structuredClone;t.exports=!!a&&!o((function(){if("DENO"===s&&r>92||"NODE"===s&&r>94||"BROWSER"===s&&r>97)return!1;var t=new ArrayBuffer(8),e=a(t,{transfer:[t]});return 0!==t.byteLength||8!==e.byteLength}))},58242:(t,e,n)=>{"use strict";var i=n(69565),o=n(97751),r=n(78227),s=n(36840);t.exports=function(){var t=o("Symbol"),e=t&&t.prototype,n=e&&e.valueOf,a=r("toPrimitive");e&&!e[a]&&s(e,a,(function(t){return i(n,this)}),{arity:1})}},91296:(t,e,n)=>{"use strict";var i=n(4495);t.exports=i&&!!Symbol.for&&!!Symbol.keyFor},59225:(t,e,n)=>{"use strict";var i,o,r,s,a=n(44576),c=n(18745),l=n(76080),u=n(94901),h=n(39297),d=n(79039),p=n(20397),A=n(67680),f=n(4055),g=n(22812),m=n(89544),b=n(38574),v=a.setImmediate,C=a.clearImmediate,x=a.process,w=a.Dispatch,y=a.Function,k=a.MessageChannel,B=a.String,E=0,_={},I="onreadystatechange";d((function(){i=a.location}));var D=function(t){if(h(_,t)){var e=_[t];delete _[t],e()}},S=function(t){return function(){D(t)}},T=function(t){D(t.data)},O=function(t){a.postMessage(B(t),i.protocol+"//"+i.host)};v&&C||(v=function(t){g(arguments.length,1);var e=u(t)?t:y(t),n=A(arguments,1);return _[++E]=function(){c(e,void 0,n)},o(E),E},C=function(t){delete _[t]},b?o=function(t){x.nextTick(S(t))}:w&&w.now?o=function(t){w.now(S(t))}:k&&!m?(s=(r=new k).port2,r.port1.onmessage=T,o=l(s.postMessage,s)):a.addEventListener&&u(a.postMessage)&&!a.importScripts&&i&&"file:"!==i.protocol&&!d(O)?(o=O,a.addEventListener("message",T,!1)):o=I in f("script")?function(t){p.appendChild(f("script"))[I]=function(){p.removeChild(this),D(t)}}:function(t){setTimeout(S(t),0)}),t.exports={set:v,clear:C}},31240:(t,e,n)=>{"use strict";var i=n(79504);t.exports=i(1..valueOf)},75854:(t,e,n)=>{"use strict";var i=n(72777),o=TypeError;t.exports=function(t){var e=i(t,"number");if("number"==typeof e)throw new o("Can't convert number to bigint");return BigInt(e)}},57696:(t,e,n)=>{"use strict";var i=n(91291),o=n(18014),r=RangeError;t.exports=function(t){if(void 0===t)return 0;var e=i(t),n=o(e);if(e!==n)throw new r("Wrong length or index");return n}},58229:(t,e,n)=>{"use strict";var i=n(99590),o=RangeError;t.exports=function(t,e){var n=i(t);if(n%e)throw new o("Wrong offset");return n}},99590:(t,e,n)=>{"use strict";var i=n(91291),o=RangeError;t.exports=function(t){var e=i(t);if(e<0)throw new o("The argument can't be less than 0");return e}},58319:t=>{"use strict";var e=Math.round;t.exports=function(t){var n=e(t);return n<0?0:n>255?255:255&n}},15823:(t,e,n)=>{"use strict";var i=n(46518),o=n(44576),r=n(69565),s=n(43724),a=n(72805),c=n(94644),l=n(66346),u=n(90679),h=n(6980),d=n(66699),p=n(2087),A=n(18014),f=n(57696),g=n(58229),m=n(58319),b=n(56969),v=n(39297),C=n(36955),x=n(20034),w=n(10757),y=n(2360),k=n(1625),B=n(52967),E=n(38480).f,_=n(43251),I=n(81594).forEach,D=n(87633),S=n(62106),T=n(24913),O=n(77347),M=n(35370),P=n(91181),R=n(23167),N=P.get,H=P.set,z=P.enforce,L=T.f,F=O.f,j=o.RangeError,U=l.ArrayBuffer,W=U.prototype,Y=l.DataView,q=c.NATIVE_ARRAY_BUFFER_VIEWS,Q=c.TYPED_ARRAY_TAG,G=c.TypedArray,X=c.TypedArrayPrototype,V=c.isTypedArray,K="BYTES_PER_ELEMENT",J="Wrong length",Z=function(t,e){S(t,e,{configurable:!0,get:function(){return N(this)[e]}})},$=function(t){var e;return k(W,t)||"ArrayBuffer"===(e=C(t))||"SharedArrayBuffer"===e},tt=function(t,e){return V(t)&&!w(e)&&e in t&&p(+e)&&e>=0},et=function(t,e){return e=b(e),tt(t,e)?h(2,t[e]):F(t,e)},nt=function(t,e,n){return e=b(e),!(tt(t,e)&&x(n)&&v(n,"value"))||v(n,"get")||v(n,"set")||n.configurable||v(n,"writable")&&!n.writable||v(n,"enumerable")&&!n.enumerable?L(t,e,n):(t[e]=n.value,t)};s?(q||(O.f=et,T.f=nt,Z(X,"buffer"),Z(X,"byteOffset"),Z(X,"byteLength"),Z(X,"length")),i({target:"Object",stat:!0,forced:!q},{getOwnPropertyDescriptor:et,defineProperty:nt}),t.exports=function(t,e,n){var s=t.match(/\d+/)[0]/8,c=t+(n?"Clamped":"")+"Array",l="get"+t,h="set"+t,p=o[c],b=p,v=b&&b.prototype,C={},w=function(t,e){L(t,e,{get:function(){return function(t,e){var n=N(t);return n.view[l](e*s+n.byteOffset,!0)}(this,e)},set:function(t){return function(t,e,i){var o=N(t);o.view[h](e*s+o.byteOffset,n?m(i):i,!0)}(this,e,t)},enumerable:!0})};q?a&&(b=e((function(t,e,n,i){return u(t,v),R(x(e)?$(e)?void 0!==i?new p(e,g(n,s),i):void 0!==n?new p(e,g(n,s)):new p(e):V(e)?M(b,e):r(_,b,e):new p(f(e)),t,b)})),B&&B(b,G),I(E(p),(function(t){t in b||d(b,t,p[t])})),b.prototype=v):(b=e((function(t,e,n,i){u(t,v);var o,a,c,l=0,h=0;if(x(e)){if(!$(e))return V(e)?M(b,e):r(_,b,e);o=e,h=g(n,s);var d=e.byteLength;if(void 0===i){if(d%s)throw new j(J);if((a=d-h)<0)throw new j(J)}else if((a=A(i)*s)+h>d)throw new j(J);c=a/s}else c=f(e),o=new U(a=c*s);for(H(t,{buffer:o,byteOffset:h,byteLength:a,length:c,view:new Y(o)});l{"use strict";var i=n(44576),o=n(79039),r=n(84428),s=n(94644).NATIVE_ARRAY_BUFFER_VIEWS,a=i.ArrayBuffer,c=i.Int8Array;t.exports=!s||!o((function(){c(1)}))||!o((function(){new c(-1)}))||!r((function(t){new c,new c(null),new c(1.5),new c(t)}),!0)||o((function(){return 1!==new c(new a(2),1,void 0).length}))},26357:(t,e,n)=>{"use strict";var i=n(35370),o=n(61412);t.exports=function(t,e){return i(o(t),e)}},43251:(t,e,n)=>{"use strict";var i=n(76080),o=n(69565),r=n(35548),s=n(48981),a=n(26198),c=n(70081),l=n(50851),u=n(44209),h=n(18727),d=n(94644).aTypedArrayConstructor,p=n(75854);t.exports=function(t){var e,n,A,f,g,m,b,v,C=r(this),x=s(t),w=arguments.length,y=w>1?arguments[1]:void 0,k=void 0!==y,B=l(x);if(B&&!u(B))for(v=(b=c(x,B)).next,x=[];!(m=o(v,b)).done;)x.push(m.value);for(k&&w>2&&(y=i(y,arguments[2])),n=a(x),A=new(d(C))(n),f=h(A),e=0;n>e;e++)g=k?y(x[e],e):x[e],A[e]=f?p(g):+g;return A}},61412:(t,e,n)=>{"use strict";var i=n(94644),o=n(2293),r=i.aTypedArrayConstructor,s=i.getTypedArrayConstructor;t.exports=function(t){return r(o(t,s(t)))}},67416:(t,e,n)=>{"use strict";var i=n(79039),o=n(78227),r=n(43724),s=n(96395),a=o("iterator");t.exports=!i((function(){var t=new URL("b?a=1&b=2&c=3","https://a"),e=t.searchParams,n=new URLSearchParams("a=1&a=2&b=3"),i="";return t.pathname="c%20d",e.forEach((function(t,n){e.delete("b"),i+=n+t})),n.delete("a",2),n.delete("b",void 0),s&&(!t.toJSON||!n.has("a",1)||n.has("a",2)||!n.has("a",void 0)||n.has("b"))||!e.size&&(s||!r)||!e.sort||"https://a/c%20d?a=1&c=3"!==t.href||"3"!==e.get("c")||"a=1"!==String(new URLSearchParams("?a=1"))||!e[a]||"a"!==new URL("https://a@b").username||"b"!==new URLSearchParams(new URLSearchParams("a=b")).get("a")||"xn--e1aybc"!==new URL("https://тест").host||"#%D0%B1"!==new URL("https://a#б").hash||"a1c3"!==i||"x"!==new URL("https://x",void 0).host}))},22812:t=>{"use strict";var e=TypeError;t.exports=function(t,n){if(t{"use strict";var i=n(19167),o=n(39297),r=n(1951),s=n(24913).f;t.exports=function(t){var e=i.Symbol||(i.Symbol={});o(e,t)||s(e,t,{value:r.f(t)})}},1951:(t,e,n)=>{"use strict";var i=n(78227);e.f=i},47452:t=>{"use strict";t.exports="\t\n\v\f\r                 \u2028\u2029\ufeff"},14601:(t,e,n)=>{"use strict";var i=n(97751),o=n(39297),r=n(66699),s=n(1625),a=n(52967),c=n(77740),l=n(11056),u=n(23167),h=n(32603),d=n(77584),p=n(80747),A=n(43724),f=n(96395);t.exports=function(t,e,n,g){var m="stackTraceLimit",b=g?2:1,v=t.split("."),C=v[v.length-1],x=i.apply(null,v);if(x){var w=x.prototype;if(!f&&o(w,"cause")&&delete w.cause,!n)return x;var y=i("Error"),k=e((function(t,e){var n=h(g?e:t,void 0),i=g?new x(t):new x;return void 0!==n&&r(i,"message",n),p(i,k,i.stack,2),this&&s(w,this)&&u(i,this,k),arguments.length>b&&d(i,arguments[b]),i}));if(k.prototype=w,"Error"!==C?a?a(k,y):c(k,y,{name:!0}):A&&m in x&&(l(k,x,m),l(k,x,"prepareStackTrace")),c(k,x),!f)try{w.name!==C&&r(w,"name",C),w.constructor=k}catch(t){}return k}}},4294:(t,e,n)=>{"use strict";var i=n(46518),o=n(97751),r=n(18745),s=n(79039),a=n(14601),c="AggregateError",l=o(c),u=!s((function(){return 1!==l([1]).errors[0]}))&&s((function(){return 7!==l([1],c,{cause:7}).cause}));i({global:!0,constructor:!0,arity:2,forced:u},{AggregateError:a(c,(function(t){return function(e,n){return r(t,this,arguments)}}),u,!0)})},17145:(t,e,n)=>{"use strict";var i=n(46518),o=n(1625),r=n(42787),s=n(52967),a=n(77740),c=n(2360),l=n(66699),u=n(6980),h=n(77584),d=n(80747),p=n(72652),A=n(32603),f=n(78227)("toStringTag"),g=Error,m=[].push,b=function(t,e){var n,i=o(v,this);s?n=s(new g,i?r(this):v):(n=i?this:c(v),l(n,f,"Error")),void 0!==e&&l(n,"message",A(e)),d(n,b,n.stack,1),arguments.length>2&&h(n,arguments[2]);var a=[];return p(t,m,{that:a}),l(n,"errors",a),n};s?s(b,g):a(b,g,{name:!0});var v=b.prototype=c(g.prototype,{constructor:u(1,b),message:u(1,""),name:u(1,"AggregateError")});i({global:!0,constructor:!0,arity:2},{AggregateError:b})},30067:(t,e,n)=>{"use strict";n(17145)},54743:(t,e,n)=>{"use strict";var i=n(46518),o=n(44576),r=n(66346),s=n(87633),a="ArrayBuffer",c=r[a];i({global:!0,constructor:!0,forced:o[a]!==c},{ArrayBuffer:c}),s(a)},16573:(t,e,n)=>{"use strict";var i=n(43724),o=n(62106),r=n(3238),s=ArrayBuffer.prototype;i&&!("detached"in s)&&o(s,"detached",{configurable:!0,get:function(){return r(this)}})},46761:(t,e,n)=>{"use strict";var i=n(46518),o=n(94644);i({target:"ArrayBuffer",stat:!0,forced:!o.NATIVE_ARRAY_BUFFER_VIEWS},{isView:o.isView})},11745:(t,e,n)=>{"use strict";var i=n(46518),o=n(27476),r=n(79039),s=n(66346),a=n(28551),c=n(35610),l=n(18014),u=n(2293),h=s.ArrayBuffer,d=s.DataView,p=d.prototype,A=o(h.prototype.slice),f=o(p.getUint8),g=o(p.setUint8);i({target:"ArrayBuffer",proto:!0,unsafe:!0,forced:r((function(){return!new h(2).slice(1,void 0).byteLength}))},{slice:function(t,e){if(A&&void 0===e)return A(a(this),t);for(var n=a(this).byteLength,i=c(t,n),o=c(void 0===e?n:e,n),r=new(u(this,h))(l(o-i)),s=new d(this),p=new d(r),m=0;i{"use strict";var i=n(46518),o=n(95636);o&&i({target:"ArrayBuffer",proto:!0},{transferToFixedLength:function(){return o(this,arguments.length?arguments[0]:void 0,!1)}})},78100:(t,e,n)=>{"use strict";var i=n(46518),o=n(95636);o&&i({target:"ArrayBuffer",proto:!0},{transfer:function(){return o(this,arguments.length?arguments[0]:void 0,!0)}})},18107:(t,e,n)=>{"use strict";var i=n(46518),o=n(48981),r=n(26198),s=n(91291),a=n(6469);i({target:"Array",proto:!0},{at:function(t){var e=o(this),n=r(e),i=s(t),a=i>=0?i:n+i;return a<0||a>=n?void 0:e[a]}}),a("at")},28706:(t,e,n)=>{"use strict";var i=n(46518),o=n(79039),r=n(34376),s=n(20034),a=n(48981),c=n(26198),l=n(96837),u=n(97040),h=n(1469),d=n(70597),p=n(78227),A=n(39519),f=p("isConcatSpreadable"),g=A>=51||!o((function(){var t=[];return t[f]=!1,t.concat()[0]!==t})),m=function(t){if(!s(t))return!1;var e=t[f];return void 0!==e?!!e:r(t)};i({target:"Array",proto:!0,arity:1,forced:!g||!d("concat")},{concat:function(t){var e,n,i,o,r,s=a(this),d=h(s,0),p=0;for(e=-1,i=arguments.length;e{"use strict";var i=n(46518),o=n(57029),r=n(6469);i({target:"Array",proto:!0},{copyWithin:o}),r("copyWithin")},88431:(t,e,n)=>{"use strict";var i=n(46518),o=n(81594).every;i({target:"Array",proto:!0,forced:!n(34598)("every")},{every:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}})},33771:(t,e,n)=>{"use strict";var i=n(46518),o=n(84373),r=n(6469);i({target:"Array",proto:!0},{fill:o}),r("fill")},2008:(t,e,n)=>{"use strict";var i=n(46518),o=n(81594).filter;i({target:"Array",proto:!0,forced:!n(70597)("filter")},{filter:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}})},48980:(t,e,n)=>{"use strict";var i=n(46518),o=n(81594).findIndex,r=n(6469),s="findIndex",a=!0;s in[]&&Array(1)[s]((function(){a=!1})),i({target:"Array",proto:!0,forced:a},{findIndex:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}}),r(s)},13451:(t,e,n)=>{"use strict";var i=n(46518),o=n(43839).findLastIndex,r=n(6469);i({target:"Array",proto:!0},{findLastIndex:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}}),r("findLastIndex")},10838:(t,e,n)=>{"use strict";var i=n(46518),o=n(43839).findLast,r=n(6469);i({target:"Array",proto:!0},{findLast:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}}),r("findLast")},50113:(t,e,n)=>{"use strict";var i=n(46518),o=n(81594).find,r=n(6469),s="find",a=!0;s in[]&&Array(1)[s]((function(){a=!1})),i({target:"Array",proto:!0,forced:a},{find:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}}),r(s)},78350:(t,e,n)=>{"use strict";var i=n(46518),o=n(70259),r=n(79306),s=n(48981),a=n(26198),c=n(1469);i({target:"Array",proto:!0},{flatMap:function(t){var e,n=s(this),i=a(n);return r(t),(e=c(n,0)).length=o(e,n,n,i,0,1,t,arguments.length>1?arguments[1]:void 0),e}})},46449:(t,e,n)=>{"use strict";var i=n(46518),o=n(70259),r=n(48981),s=n(26198),a=n(91291),c=n(1469);i({target:"Array",proto:!0},{flat:function(){var t=arguments.length?arguments[0]:void 0,e=r(this),n=s(e),i=c(e,0);return i.length=o(i,e,e,n,0,void 0===t?1:a(t)),i}})},51629:(t,e,n)=>{"use strict";var i=n(46518),o=n(90235);i({target:"Array",proto:!0,forced:[].forEach!==o},{forEach:o})},23418:(t,e,n)=>{"use strict";var i=n(46518),o=n(97916);i({target:"Array",stat:!0,forced:!n(84428)((function(t){Array.from(t)}))},{from:o})},74423:(t,e,n)=>{"use strict";var i=n(46518),o=n(19617).includes,r=n(79039),s=n(6469);i({target:"Array",proto:!0,forced:r((function(){return!Array(1).includes()}))},{includes:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}}),s("includes")},25276:(t,e,n)=>{"use strict";var i=n(46518),o=n(27476),r=n(19617).indexOf,s=n(34598),a=o([].indexOf),c=!!a&&1/a([1],1,-0)<0;i({target:"Array",proto:!0,forced:c||!s("indexOf")},{indexOf:function(t){var e=arguments.length>1?arguments[1]:void 0;return c?a(this,t,e)||0:r(this,t,e)}})},64346:(t,e,n)=>{"use strict";n(46518)({target:"Array",stat:!0},{isArray:n(34376)})},23792:(t,e,n)=>{"use strict";var i=n(25397),o=n(6469),r=n(26269),s=n(91181),a=n(24913).f,c=n(51088),l=n(62529),u=n(96395),h=n(43724),d="Array Iterator",p=s.set,A=s.getterFor(d);t.exports=c(Array,"Array",(function(t,e){p(this,{type:d,target:i(t),index:0,kind:e})}),(function(){var t=A(this),e=t.target,n=t.index++;if(!e||n>=e.length)return t.target=null,l(void 0,!0);switch(t.kind){case"keys":return l(n,!1);case"values":return l(e[n],!1)}return l([n,e[n]],!1)}),"values");var f=r.Arguments=r.Array;if(o("keys"),o("values"),o("entries"),!u&&h&&"values"!==f.name)try{a(f,"name",{value:"values"})}catch(t){}},48598:(t,e,n)=>{"use strict";var i=n(46518),o=n(79504),r=n(47055),s=n(25397),a=n(34598),c=o([].join);i({target:"Array",proto:!0,forced:r!==Object||!a("join",",")},{join:function(t){return c(s(this),void 0===t?",":t)}})},8921:(t,e,n)=>{"use strict";var i=n(46518),o=n(8379);i({target:"Array",proto:!0,forced:o!==[].lastIndexOf},{lastIndexOf:o})},62062:(t,e,n)=>{"use strict";var i=n(46518),o=n(81594).map;i({target:"Array",proto:!0,forced:!n(70597)("map")},{map:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}})},31051:(t,e,n)=>{"use strict";var i=n(46518),o=n(79039),r=n(33517),s=n(97040),a=Array;i({target:"Array",stat:!0,forced:o((function(){function t(){}return!(a.of.call(t)instanceof t)}))},{of:function(){for(var t=0,e=arguments.length,n=new(r(this)?this:a)(e);e>t;)s(n,t,arguments[t++]);return n.length=e,n}})},44114:(t,e,n)=>{"use strict";var i=n(46518),o=n(48981),r=n(26198),s=n(34527),a=n(96837);i({target:"Array",proto:!0,arity:1,forced:n(79039)((function(){return 4294967297!==[].push.call({length:4294967296},1)}))||!function(){try{Object.defineProperty([],"length",{writable:!1}).push()}catch(t){return t instanceof TypeError}}()},{push:function(t){var e=o(this),n=r(e),i=arguments.length;a(n+i);for(var c=0;c{"use strict";var i=n(46518),o=n(80926).right,r=n(34598),s=n(39519);i({target:"Array",proto:!0,forced:!n(38574)&&s>79&&s<83||!r("reduceRight")},{reduceRight:function(t){return o(this,t,arguments.length,arguments.length>1?arguments[1]:void 0)}})},72712:(t,e,n)=>{"use strict";var i=n(46518),o=n(80926).left,r=n(34598),s=n(39519);i({target:"Array",proto:!0,forced:!n(38574)&&s>79&&s<83||!r("reduce")},{reduce:function(t){var e=arguments.length;return o(this,t,e,e>1?arguments[1]:void 0)}})},94490:(t,e,n)=>{"use strict";var i=n(46518),o=n(79504),r=n(34376),s=o([].reverse),a=[1,2];i({target:"Array",proto:!0,forced:String(a)===String(a.reverse())},{reverse:function(){return r(this)&&(this.length=this.length),s(this)}})},34782:(t,e,n)=>{"use strict";var i=n(46518),o=n(34376),r=n(33517),s=n(20034),a=n(35610),c=n(26198),l=n(25397),u=n(97040),h=n(78227),d=n(70597),p=n(67680),A=d("slice"),f=h("species"),g=Array,m=Math.max;i({target:"Array",proto:!0,forced:!A},{slice:function(t,e){var n,i,h,d=l(this),A=c(d),b=a(t,A),v=a(void 0===e?A:e,A);if(o(d)&&(n=d.constructor,(r(n)&&(n===g||o(n.prototype))||s(n)&&null===(n=n[f]))&&(n=void 0),n===g||void 0===n))return p(d,b,v);for(i=new(void 0===n?g:n)(m(v-b,0)),h=0;b{"use strict";var i=n(46518),o=n(81594).some;i({target:"Array",proto:!0,forced:!n(34598)("some")},{some:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}})},26910:(t,e,n)=>{"use strict";var i=n(46518),o=n(79504),r=n(79306),s=n(48981),a=n(26198),c=n(84606),l=n(655),u=n(79039),h=n(74488),d=n(34598),p=n(13709),A=n(13763),f=n(39519),g=n(3607),m=[],b=o(m.sort),v=o(m.push),C=u((function(){m.sort(void 0)})),x=u((function(){m.sort(null)})),w=d("sort"),y=!u((function(){if(f)return f<70;if(!(p&&p>3)){if(A)return!0;if(g)return g<603;var t,e,n,i,o="";for(t=65;t<76;t++){switch(e=String.fromCharCode(t),t){case 66:case 69:case 70:case 72:n=3;break;case 68:case 71:n=4;break;default:n=2}for(i=0;i<47;i++)m.push({k:e+i,v:n})}for(m.sort((function(t,e){return e.v-t.v})),i=0;il(n)?1:-1}}(t)),n=a(o),i=0;i{"use strict";n(87633)("Array")},54554:(t,e,n)=>{"use strict";var i=n(46518),o=n(48981),r=n(35610),s=n(91291),a=n(26198),c=n(34527),l=n(96837),u=n(1469),h=n(97040),d=n(84606),p=n(70597)("splice"),A=Math.max,f=Math.min;i({target:"Array",proto:!0,forced:!p},{splice:function(t,e){var n,i,p,g,m,b,v=o(this),C=a(v),x=r(t,C),w=arguments.length;for(0===w?n=i=0:1===w?(n=0,i=C-x):(n=w-2,i=f(A(s(e),0),C-x)),l(C+n-i),p=u(v,i),g=0;gC-i+n;g--)d(v,g-1)}else if(n>i)for(g=C-i;g>x;g--)b=g+n-1,(m=g+i-1)in v?v[b]=v[m]:d(v,b);for(g=0;g{"use strict";var i=n(46518),o=n(37628),r=n(25397),s=n(6469),a=Array;i({target:"Array",proto:!0},{toReversed:function(){return o(r(this),a)}}),s("toReversed")},57145:(t,e,n)=>{"use strict";var i=n(46518),o=n(79504),r=n(79306),s=n(25397),a=n(35370),c=n(44124),l=n(6469),u=Array,h=o(c("Array","sort"));i({target:"Array",proto:!0},{toSorted:function(t){void 0!==t&&r(t);var e=s(this),n=a(u,e);return h(n,t)}}),l("toSorted")},71658:(t,e,n)=>{"use strict";var i=n(46518),o=n(6469),r=n(96837),s=n(26198),a=n(35610),c=n(25397),l=n(91291),u=Array,h=Math.max,d=Math.min;i({target:"Array",proto:!0},{toSpliced:function(t,e){var n,i,o,p,A=c(this),f=s(A),g=a(t,f),m=arguments.length,b=0;for(0===m?n=i=0:1===m?(n=0,i=f-g):(n=m-2,i=d(h(l(e),0),f-g)),o=r(f+n-i),p=u(o);b{"use strict";n(6469)("flatMap")},93514:(t,e,n)=>{"use strict";n(6469)("flat")},13609:(t,e,n)=>{"use strict";var i=n(46518),o=n(48981),r=n(26198),s=n(34527),a=n(84606),c=n(96837);i({target:"Array",proto:!0,arity:1,forced:1!==[].unshift(0)||!function(){try{Object.defineProperty([],"length",{writable:!1}).unshift()}catch(t){return t instanceof TypeError}}()},{unshift:function(t){var e=o(this),n=r(e),i=arguments.length;if(i){c(n+i);for(var l=n;l--;){var u=l+i;l in e?e[u]=e[l]:a(e,u)}for(var h=0;h{"use strict";var i=n(46518),o=n(39928),r=n(25397),s=Array;i({target:"Array",proto:!0},{with:function(t,e){return o(r(this),s,t,e)}})},24359:(t,e,n)=>{"use strict";var i=n(46518),o=n(66346);i({global:!0,constructor:!0,forced:!n(77811)},{DataView:o.DataView})},38309:(t,e,n)=>{"use strict";n(24359)},61699:(t,e,n)=>{"use strict";var i=n(46518),o=n(79504),r=n(79039)((function(){return 120!==new Date(16e11).getYear()})),s=o(Date.prototype.getFullYear);i({target:"Date",proto:!0,forced:r},{getYear:function(){return s(this)-1900}})},59089:(t,e,n)=>{"use strict";var i=n(46518),o=n(79504),r=Date,s=o(r.prototype.getTime);i({target:"Date",stat:!0},{now:function(){return s(new r)}})},91191:(t,e,n)=>{"use strict";var i=n(46518),o=n(79504),r=n(91291),s=Date.prototype,a=o(s.getTime),c=o(s.setFullYear);i({target:"Date",proto:!0},{setYear:function(t){a(this);var e=r(t);return c(this,e>=0&&e<=99?e+1900:e)}})},93515:(t,e,n)=>{"use strict";n(46518)({target:"Date",proto:!0},{toGMTString:Date.prototype.toUTCString})},1688:(t,e,n)=>{"use strict";var i=n(46518),o=n(70380);i({target:"Date",proto:!0,forced:Date.prototype.toISOString!==o},{toISOString:o})},60739:(t,e,n)=>{"use strict";var i=n(46518),o=n(79039),r=n(48981),s=n(72777);i({target:"Date",proto:!0,arity:1,forced:o((function(){return null!==new Date(NaN).toJSON()||1!==Date.prototype.toJSON.call({toISOString:function(){return 1}})}))},{toJSON:function(t){var e=r(this),n=s(e,"number");return"number"!=typeof n||isFinite(n)?e.toISOString():null}})},89572:(t,e,n)=>{"use strict";var i=n(39297),o=n(36840),r=n(53640),s=n(78227)("toPrimitive"),a=Date.prototype;i(a,s)||o(a,s,r)},23288:(t,e,n)=>{"use strict";var i=n(79504),o=n(36840),r=Date.prototype,s="Invalid Date",a="toString",c=i(r[a]),l=i(r.getTime);String(new Date(NaN))!==s&&o(r,a,(function(){var t=l(this);return t==t?c(this):s}))},16280:(t,e,n)=>{"use strict";var i=n(46518),o=n(44576),r=n(18745),s=n(14601),a="WebAssembly",c=o[a],l=7!==new Error("e",{cause:7}).cause,u=function(t,e){var n={};n[t]=s(t,e,l),i({global:!0,constructor:!0,arity:1,forced:l},n)},h=function(t,e){if(c&&c[t]){var n={};n[t]=s(a+"."+t,e,l),i({target:a,stat:!0,constructor:!0,arity:1,forced:l},n)}};u("Error",(function(t){return function(e){return r(t,this,arguments)}})),u("EvalError",(function(t){return function(e){return r(t,this,arguments)}})),u("RangeError",(function(t){return function(e){return r(t,this,arguments)}})),u("ReferenceError",(function(t){return function(e){return r(t,this,arguments)}})),u("SyntaxError",(function(t){return function(e){return r(t,this,arguments)}})),u("TypeError",(function(t){return function(e){return r(t,this,arguments)}})),u("URIError",(function(t){return function(e){return r(t,this,arguments)}})),h("CompileError",(function(t){return function(e){return r(t,this,arguments)}})),h("LinkError",(function(t){return function(e){return r(t,this,arguments)}})),h("RuntimeError",(function(t){return function(e){return r(t,this,arguments)}}))},76918:(t,e,n)=>{"use strict";var i=n(36840),o=n(77536),r=Error.prototype;r.toString!==o&&i(r,"toString",o)},36456:(t,e,n)=>{"use strict";var i=n(46518),o=n(79504),r=n(655),s=o("".charAt),a=o("".charCodeAt),c=o(/./.exec),l=o(1..toString),u=o("".toUpperCase),h=/[\w*+\-./@]/,d=function(t,e){for(var n=l(t,16);n.length{"use strict";var i=n(46518),o=n(30566);i({target:"Function",proto:!0,forced:Function.bind!==o},{bind:o})},48957:(t,e,n)=>{"use strict";var i=n(94901),o=n(20034),r=n(24913),s=n(1625),a=n(78227),c=n(50283),l=a("hasInstance"),u=Function.prototype;l in u||r.f(u,l,{value:c((function(t){if(!i(this)||!o(t))return!1;var e=this.prototype;return o(e)?s(e,t):t instanceof this}),l)})},62010:(t,e,n)=>{"use strict";var i=n(43724),o=n(10350).EXISTS,r=n(79504),s=n(62106),a=Function.prototype,c=r(a.toString),l=/function\b(?:\s|\/\*[\S\s]*?\*\/|\/\/[^\n\r]*[\n\r]+)*([^\s(/]*)/,u=r(l.exec);i&&!o&&s(a,"name",{configurable:!0,get:function(){try{return u(l,c(this))[1]}catch(t){return""}}})},55081:(t,e,n)=>{"use strict";var i=n(46518),o=n(44576);i({global:!0,forced:o.globalThis!==o},{globalThis:o})},33110:(t,e,n)=>{"use strict";var i=n(46518),o=n(97751),r=n(18745),s=n(69565),a=n(79504),c=n(79039),l=n(94901),u=n(10757),h=n(67680),d=n(66933),p=n(4495),A=String,f=o("JSON","stringify"),g=a(/./.exec),m=a("".charAt),b=a("".charCodeAt),v=a("".replace),C=a(1..toString),x=/[\uD800-\uDFFF]/g,w=/^[\uD800-\uDBFF]$/,y=/^[\uDC00-\uDFFF]$/,k=!p||c((function(){var t=o("Symbol")("stringify detection");return"[null]"!==f([t])||"{}"!==f({a:t})||"{}"!==f(Object(t))})),B=c((function(){return'"\\udf06\\ud834"'!==f("\udf06\ud834")||'"\\udead"'!==f("\udead")})),E=function(t,e){var n=h(arguments),i=d(e);if(l(i)||void 0!==t&&!u(t))return n[1]=function(t,e){if(l(i)&&(e=s(i,this,A(t),e)),!u(e))return e},r(f,null,n)},_=function(t,e,n){var i=m(n,e-1),o=m(n,e+1);return g(w,t)&&!g(y,o)||g(y,t)&&!g(w,i)?"\\u"+C(b(t,0),16):t};f&&i({target:"JSON",stat:!0,arity:3,forced:k||B},{stringify:function(t,e,n){var i=h(arguments),o=r(k?E:f,null,i);return B&&"string"==typeof o?v(o,x,_):o}})},4731:(t,e,n)=>{"use strict";var i=n(44576);n(10687)(i.JSON,"JSON",!0)},48523:(t,e,n)=>{"use strict";n(16468)("Map",(function(t){return function(){return t(this,arguments.length?arguments[0]:void 0)}}),n(86938))},47072:(t,e,n)=>{"use strict";var i=n(46518),o=n(79504),r=n(79306),s=n(67750),a=n(72652),c=n(72248),l=n(96395),u=n(79039),h=c.Map,d=c.has,p=c.get,A=c.set,f=o([].push),g=l||u((function(){return 1!==h.groupBy("ab",(function(t){return t})).get("a").length}));i({target:"Map",stat:!0,forced:l||g},{groupBy:function(t,e){s(t),r(e);var n=new h,i=0;return a(t,(function(t){var o=e(t,i++);d(n,o)?f(p(n,o),t):A(n,o,[t])})),n}})},36033:(t,e,n)=>{"use strict";n(48523)},93153:(t,e,n)=>{"use strict";var i=n(46518),o=n(7740),r=Math.acosh,s=Math.log,a=Math.sqrt,c=Math.LN2;i({target:"Math",stat:!0,forced:!r||710!==Math.floor(r(Number.MAX_VALUE))||r(1/0)!==1/0},{acosh:function(t){var e=+t;return e<1?NaN:e>94906265.62425156?s(e)+c:o(e-1+a(e-1)*a(e+1))}})},82326:(t,e,n)=>{"use strict";var i=n(46518),o=Math.asinh,r=Math.log,s=Math.sqrt;i({target:"Math",stat:!0,forced:!(o&&1/o(0)>0)},{asinh:function t(e){var n=+e;return isFinite(n)&&0!==n?n<0?-t(-n):r(n+s(n*n+1)):n}})},36389:(t,e,n)=>{"use strict";var i=n(46518),o=Math.atanh,r=Math.log;i({target:"Math",stat:!0,forced:!(o&&1/o(-0)<0)},{atanh:function(t){var e=+t;return 0===e?e:r((1+e)/(1-e))/2}})},64444:(t,e,n)=>{"use strict";var i=n(46518),o=n(77782),r=Math.abs,s=Math.pow;i({target:"Math",stat:!0},{cbrt:function(t){var e=+t;return o(e)*s(r(e),1/3)}})},8085:(t,e,n)=>{"use strict";var i=n(46518),o=Math.floor,r=Math.log,s=Math.LOG2E;i({target:"Math",stat:!0},{clz32:function(t){var e=t>>>0;return e?31-o(r(e+.5)*s):32}})},77762:(t,e,n)=>{"use strict";var i=n(46518),o=n(53250),r=Math.cosh,s=Math.abs,a=Math.E;i({target:"Math",stat:!0,forced:!r||r(710)===1/0},{cosh:function(t){var e=o(s(t)-1)+1;return(e+1/(e*a*a))*(a/2)}})},65070:(t,e,n)=>{"use strict";var i=n(46518),o=n(53250);i({target:"Math",stat:!0,forced:o!==Math.expm1},{expm1:o})},60605:(t,e,n)=>{"use strict";n(46518)({target:"Math",stat:!0},{fround:n(15617)})},39469:(t,e,n)=>{"use strict";var i=n(46518),o=Math.hypot,r=Math.abs,s=Math.sqrt;i({target:"Math",stat:!0,arity:2,forced:!!o&&o(1/0,NaN)!==1/0},{hypot:function(t,e){for(var n,i,o=0,a=0,c=arguments.length,l=0;a0?(i=n/l)*i:n;return l===1/0?1/0:l*s(o)}})},72152:(t,e,n)=>{"use strict";var i=n(46518),o=n(79039),r=Math.imul;i({target:"Math",stat:!0,forced:o((function(){return-5!==r(4294967295,5)||2!==r.length}))},{imul:function(t,e){var n=65535,i=+t,o=+e,r=n&i,s=n&o;return 0|r*s+((n&i>>>16)*s+r*(n&o>>>16)<<16>>>0)}})},75376:(t,e,n)=>{"use strict";n(46518)({target:"Math",stat:!0},{log10:n(49340)})},56624:(t,e,n)=>{"use strict";n(46518)({target:"Math",stat:!0},{log1p:n(7740)})},11367:(t,e,n)=>{"use strict";var i=n(46518),o=Math.log,r=Math.LN2;i({target:"Math",stat:!0},{log2:function(t){return o(t)/r}})},5914:(t,e,n)=>{"use strict";n(46518)({target:"Math",stat:!0},{sign:n(77782)})},78553:(t,e,n)=>{"use strict";var i=n(46518),o=n(79039),r=n(53250),s=Math.abs,a=Math.exp,c=Math.E;i({target:"Math",stat:!0,forced:o((function(){return-2e-17!==Math.sinh(-2e-17)}))},{sinh:function(t){var e=+t;return s(e)<1?(r(e)-r(-e))/2:(a(e-1)-a(-e-1))*(c/2)}})},98690:(t,e,n)=>{"use strict";var i=n(46518),o=n(53250),r=Math.exp;i({target:"Math",stat:!0},{tanh:function(t){var e=+t,n=o(e),i=o(-e);return n===1/0?1:i===1/0?-1:(n-i)/(r(e)+r(-e))}})},60479:(t,e,n)=>{"use strict";n(10687)(Math,"Math",!0)},70761:(t,e,n)=>{"use strict";n(46518)({target:"Math",stat:!0},{trunc:n(80741)})},2892:(t,e,n)=>{"use strict";var i=n(46518),o=n(96395),r=n(43724),s=n(44576),a=n(19167),c=n(79504),l=n(92796),u=n(39297),h=n(23167),d=n(1625),p=n(10757),A=n(72777),f=n(79039),g=n(38480).f,m=n(77347).f,b=n(24913).f,v=n(31240),C=n(43802).trim,x="Number",w=s[x],y=a[x],k=w.prototype,B=s.TypeError,E=c("".slice),_=c("".charCodeAt),I=l(x,!w(" 0o1")||!w("0b1")||w("+0x1")),D=function(t){var e,n=arguments.length<1?0:w(function(t){var e=A(t,"number");return"bigint"==typeof e?e:function(t){var e,n,i,o,r,s,a,c,l=A(t,"number");if(p(l))throw new B("Cannot convert a Symbol value to a number");if("string"==typeof l&&l.length>2)if(l=C(l),43===(e=_(l,0))||45===e){if(88===(n=_(l,2))||120===n)return NaN}else if(48===e){switch(_(l,1)){case 66:case 98:i=2,o=49;break;case 79:case 111:i=8,o=55;break;default:return+l}for(s=(r=E(l,2)).length,a=0;ao)return NaN;return parseInt(r,i)}return+l}(e)}(t));return d(k,e=this)&&f((function(){v(e)}))?h(Object(n),this,D):n};D.prototype=k,I&&!o&&(k.constructor=D),i({global:!0,constructor:!0,wrap:!0,forced:I},{Number:D});var S=function(t,e){for(var n,i=r?g(e):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,isFinite,isInteger,isNaN,isSafeInteger,parseFloat,parseInt,fromString,range".split(","),o=0;i.length>o;o++)u(e,n=i[o])&&!u(t,n)&&b(t,n,m(e,n))};o&&y&&S(a[x],y),(I||o)&&S(a[x],w)},45374:(t,e,n)=>{"use strict";n(46518)({target:"Number",stat:!0,nonConfigurable:!0,nonWritable:!0},{EPSILON:Math.pow(2,-52)})},25428:(t,e,n)=>{"use strict";n(46518)({target:"Number",stat:!0},{isFinite:n(50360)})},32637:(t,e,n)=>{"use strict";n(46518)({target:"Number",stat:!0},{isInteger:n(2087)})},40150:(t,e,n)=>{"use strict";n(46518)({target:"Number",stat:!0},{isNaN:function(t){return t!=t}})},59149:(t,e,n)=>{"use strict";var i=n(46518),o=n(2087),r=Math.abs;i({target:"Number",stat:!0},{isSafeInteger:function(t){return o(t)&&r(t)<=9007199254740991}})},64601:(t,e,n)=>{"use strict";n(46518)({target:"Number",stat:!0,nonConfigurable:!0,nonWritable:!0},{MAX_SAFE_INTEGER:9007199254740991})},44435:(t,e,n)=>{"use strict";n(46518)({target:"Number",stat:!0,nonConfigurable:!0,nonWritable:!0},{MIN_SAFE_INTEGER:-9007199254740991})},87220:(t,e,n)=>{"use strict";var i=n(46518),o=n(33904);i({target:"Number",stat:!0,forced:Number.parseFloat!==o},{parseFloat:o})},25843:(t,e,n)=>{"use strict";var i=n(46518),o=n(52703);i({target:"Number",stat:!0,forced:Number.parseInt!==o},{parseInt:o})},62337:(t,e,n)=>{"use strict";var i=n(46518),o=n(79504),r=n(91291),s=n(31240),a=n(72333),c=n(49340),l=n(79039),u=RangeError,h=String,d=isFinite,p=Math.abs,A=Math.floor,f=Math.pow,g=Math.round,m=o(1..toExponential),b=o(a),v=o("".slice),C="-6.9000e-11"===m(-69e-12,4)&&"1.25e+0"===m(1.255,2)&&"1.235e+4"===m(12345,3)&&"3e+1"===m(25,0);i({target:"Number",proto:!0,forced:!C||!(l((function(){m(1,1/0)}))&&l((function(){m(1,-1/0)})))||!!l((function(){m(1/0,1/0),m(NaN,1/0)}))},{toExponential:function(t){var e=s(this);if(void 0===t)return m(e);var n=r(t);if(!d(e))return String(e);if(n<0||n>20)throw new u("Incorrect fraction digits");if(C)return m(e,n);var i,o,a,l,x="";if(e<0&&(x="-",e=-e),0===e)o=0,i=b("0",n+1);else{var w=c(e);o=A(w);var y=f(10,o-n),k=g(e/y);2*e>=(2*k+1)*y&&(k+=1),k>=f(10,n+1)&&(k/=10,o+=1),i=h(k)}return 0!==n&&(i=v(i,0,1)+"."+v(i,1)),0===o?(a="+",l="0"):(a=o>0?"+":"-",l=h(p(o))),x+(i+"e")+a+l}})},9868:(t,e,n)=>{"use strict";var i=n(46518),o=n(79504),r=n(91291),s=n(31240),a=n(72333),c=n(79039),l=RangeError,u=String,h=Math.floor,d=o(a),p=o("".slice),A=o(1..toFixed),f=function(t,e,n){return 0===e?n:e%2==1?f(t,e-1,n*t):f(t*t,e/2,n)},g=function(t,e,n){for(var i=-1,o=n;++i<6;)o+=e*t[i],t[i]=o%1e7,o=h(o/1e7)},m=function(t,e){for(var n=6,i=0;--n>=0;)i+=t[n],t[n]=h(i/e),i=i%e*1e7},b=function(t){for(var e=6,n="";--e>=0;)if(""!==n||0===e||0!==t[e]){var i=u(t[e]);n=""===n?i:n+d("0",7-i.length)+i}return n};i({target:"Number",proto:!0,forced:c((function(){return"0.000"!==A(8e-5,3)||"1"!==A(.9,0)||"1.25"!==A(1.255,2)||"1000000000000000128"!==A(0xde0b6b3a7640080,0)}))||!c((function(){A({})}))},{toFixed:function(t){var e,n,i,o,a=s(this),c=r(t),h=[0,0,0,0,0,0],A="",v="0";if(c<0||c>20)throw new l("Incorrect fraction digits");if(a!=a)return"NaN";if(a<=-1e21||a>=1e21)return u(a);if(a<0&&(A="-",a=-a),a>1e-21)if(n=(e=function(t){for(var e=0,n=t;n>=4096;)e+=12,n/=4096;for(;n>=2;)e+=1,n/=2;return e}(a*f(2,69,1))-69)<0?a*f(2,-e,1):a/f(2,e,1),n*=4503599627370496,(e=52-e)>0){for(g(h,0,n),i=c;i>=7;)g(h,1e7,0),i-=7;for(g(h,f(10,i,1),0),i=e-1;i>=23;)m(h,1<<23),i-=23;m(h,1<0?A+((o=v.length)<=c?"0."+d("0",c-o)+v:p(v,0,o-c)+"."+p(v,o-c)):A+v}})},80630:(t,e,n)=>{"use strict";var i=n(46518),o=n(79504),r=n(79039),s=n(31240),a=o(1..toPrecision);i({target:"Number",proto:!0,forced:r((function(){return"1"!==a(1,void 0)}))||!r((function(){a({})}))},{toPrecision:function(t){return void 0===t?a(s(this)):a(s(this),t)}})},69085:(t,e,n)=>{"use strict";var i=n(46518),o=n(44213);i({target:"Object",stat:!0,arity:2,forced:Object.assign!==o},{assign:o})},59904:(t,e,n)=>{"use strict";n(46518)({target:"Object",stat:!0,sham:!n(43724)},{create:n(2360)})},17427:(t,e,n)=>{"use strict";var i=n(46518),o=n(43724),r=n(42551),s=n(79306),a=n(48981),c=n(24913);o&&i({target:"Object",proto:!0,forced:r},{__defineGetter__:function(t,e){c.f(a(this),t,{get:s(e),enumerable:!0,configurable:!0})}})},67945:(t,e,n)=>{"use strict";var i=n(46518),o=n(43724),r=n(96801).f;i({target:"Object",stat:!0,forced:Object.defineProperties!==r,sham:!o},{defineProperties:r})},84185:(t,e,n)=>{"use strict";var i=n(46518),o=n(43724),r=n(24913).f;i({target:"Object",stat:!0,forced:Object.defineProperty!==r,sham:!o},{defineProperty:r})},87607:(t,e,n)=>{"use strict";var i=n(46518),o=n(43724),r=n(42551),s=n(79306),a=n(48981),c=n(24913);o&&i({target:"Object",proto:!0,forced:r},{__defineSetter__:function(t,e){c.f(a(this),t,{set:s(e),enumerable:!0,configurable:!0})}})},5506:(t,e,n)=>{"use strict";var i=n(46518),o=n(32357).entries;i({target:"Object",stat:!0},{entries:function(t){return o(t)}})},52811:(t,e,n)=>{"use strict";var i=n(46518),o=n(92744),r=n(79039),s=n(20034),a=n(3451).onFreeze,c=Object.freeze;i({target:"Object",stat:!0,forced:r((function(){c(1)})),sham:!o},{freeze:function(t){return c&&s(t)?c(a(t)):t}})},53921:(t,e,n)=>{"use strict";var i=n(46518),o=n(72652),r=n(97040);i({target:"Object",stat:!0},{fromEntries:function(t){var e={};return o(t,(function(t,n){r(e,t,n)}),{AS_ENTRIES:!0}),e}})},83851:(t,e,n)=>{"use strict";var i=n(46518),o=n(79039),r=n(25397),s=n(77347).f,a=n(43724);i({target:"Object",stat:!0,forced:!a||o((function(){s(1)})),sham:!a},{getOwnPropertyDescriptor:function(t,e){return s(r(t),e)}})},81278:(t,e,n)=>{"use strict";var i=n(46518),o=n(43724),r=n(35031),s=n(25397),a=n(77347),c=n(97040);i({target:"Object",stat:!0,sham:!o},{getOwnPropertyDescriptors:function(t){for(var e,n,i=s(t),o=a.f,l=r(i),u={},h=0;l.length>h;)void 0!==(n=o(i,e=l[h++]))&&c(u,e,n);return u}})},1480:(t,e,n)=>{"use strict";var i=n(46518),o=n(79039),r=n(10298).f;i({target:"Object",stat:!0,forced:o((function(){return!Object.getOwnPropertyNames(1)}))},{getOwnPropertyNames:r})},49773:(t,e,n)=>{"use strict";var i=n(46518),o=n(4495),r=n(79039),s=n(33717),a=n(48981);i({target:"Object",stat:!0,forced:!o||r((function(){s.f(1)}))},{getOwnPropertySymbols:function(t){var e=s.f;return e?e(a(t)):[]}})},40875:(t,e,n)=>{"use strict";var i=n(46518),o=n(79039),r=n(48981),s=n(42787),a=n(12211);i({target:"Object",stat:!0,forced:o((function(){s(1)})),sham:!a},{getPrototypeOf:function(t){return s(r(t))}})},77691:(t,e,n)=>{"use strict";var i=n(46518),o=n(97751),r=n(79504),s=n(79306),a=n(67750),c=n(56969),l=n(72652),u=n(79039),h=Object.groupBy,d=o("Object","create"),p=r([].push);i({target:"Object",stat:!0,forced:!h||u((function(){return 1!==h("ab",(function(t){return t})).a.length}))},{groupBy:function(t,e){a(t),s(e);var n=d(null),i=0;return l(t,(function(t){var o=c(e(t,i++));o in n?p(n[o],t):n[o]=[t]})),n}})},78347:(t,e,n)=>{"use strict";n(46518)({target:"Object",stat:!0},{hasOwn:n(39297)})},94052:(t,e,n)=>{"use strict";var i=n(46518),o=n(34124);i({target:"Object",stat:!0,forced:Object.isExtensible!==o},{isExtensible:o})},94003:(t,e,n)=>{"use strict";var i=n(46518),o=n(79039),r=n(20034),s=n(22195),a=n(15652),c=Object.isFrozen;i({target:"Object",stat:!0,forced:a||o((function(){c(1)}))},{isFrozen:function(t){return!r(t)||!(!a||"ArrayBuffer"!==s(t))||!!c&&c(t)}})},221:(t,e,n)=>{"use strict";var i=n(46518),o=n(79039),r=n(20034),s=n(22195),a=n(15652),c=Object.isSealed;i({target:"Object",stat:!0,forced:a||o((function(){c(1)}))},{isSealed:function(t){return!r(t)||!(!a||"ArrayBuffer"!==s(t))||!!c&&c(t)}})},29908:(t,e,n)=>{"use strict";n(46518)({target:"Object",stat:!0},{is:n(3470)})},79432:(t,e,n)=>{"use strict";var i=n(46518),o=n(48981),r=n(71072);i({target:"Object",stat:!0,forced:n(79039)((function(){r(1)}))},{keys:function(t){return r(o(t))}})},9220:(t,e,n)=>{"use strict";var i=n(46518),o=n(43724),r=n(42551),s=n(48981),a=n(56969),c=n(42787),l=n(77347).f;o&&i({target:"Object",proto:!0,forced:r},{__lookupGetter__:function(t){var e,n=s(this),i=a(t);do{if(e=l(n,i))return e.get}while(n=c(n))}})},7904:(t,e,n)=>{"use strict";var i=n(46518),o=n(43724),r=n(42551),s=n(48981),a=n(56969),c=n(42787),l=n(77347).f;o&&i({target:"Object",proto:!0,forced:r},{__lookupSetter__:function(t){var e,n=s(this),i=a(t);do{if(e=l(n,i))return e.set}while(n=c(n))}})},16348:(t,e,n)=>{"use strict";var i=n(46518),o=n(20034),r=n(3451).onFreeze,s=n(92744),a=n(79039),c=Object.preventExtensions;i({target:"Object",stat:!0,forced:a((function(){c(1)})),sham:!s},{preventExtensions:function(t){return c&&o(t)?c(r(t)):t}})},63548:(t,e,n)=>{"use strict";var i=n(43724),o=n(62106),r=n(20034),s=n(13925),a=n(48981),c=n(67750),l=Object.getPrototypeOf,u=Object.setPrototypeOf,h=Object.prototype,d="__proto__";if(i&&l&&u&&!(d in h))try{o(h,d,{configurable:!0,get:function(){return l(a(this))},set:function(t){var e=c(this);s(t)&&r(e)&&u(e,t)}})}catch(t){}},93941:(t,e,n)=>{"use strict";var i=n(46518),o=n(20034),r=n(3451).onFreeze,s=n(92744),a=n(79039),c=Object.seal;i({target:"Object",stat:!0,forced:a((function(){c(1)})),sham:!s},{seal:function(t){return c&&o(t)?c(r(t)):t}})},10287:(t,e,n)=>{"use strict";n(46518)({target:"Object",stat:!0},{setPrototypeOf:n(52967)})},26099:(t,e,n)=>{"use strict";var i=n(92140),o=n(36840),r=n(53179);i||o(Object.prototype,"toString",r,{unsafe:!0})},16034:(t,e,n)=>{"use strict";var i=n(46518),o=n(32357).values;i({target:"Object",stat:!0},{values:function(t){return o(t)}})},78459:(t,e,n)=>{"use strict";var i=n(46518),o=n(33904);i({global:!0,forced:parseFloat!==o},{parseFloat:o})},58940:(t,e,n)=>{"use strict";var i=n(46518),o=n(52703);i({global:!0,forced:parseInt!==o},{parseInt:o})},96167:(t,e,n)=>{"use strict";var i=n(46518),o=n(69565),r=n(79306),s=n(36043),a=n(1103),c=n(72652);i({target:"Promise",stat:!0,forced:n(90537)},{allSettled:function(t){var e=this,n=s.f(e),i=n.resolve,l=n.reject,u=a((function(){var n=r(e.resolve),s=[],a=0,l=1;c(t,(function(t){var r=a++,c=!1;l++,o(n,e,t).then((function(t){c||(c=!0,s[r]={status:"fulfilled",value:t},--l||i(s))}),(function(t){c||(c=!0,s[r]={status:"rejected",reason:t},--l||i(s))}))})),--l||i(s)}));return u.error&&l(u.value),n.promise}})},16499:(t,e,n)=>{"use strict";var i=n(46518),o=n(69565),r=n(79306),s=n(36043),a=n(1103),c=n(72652);i({target:"Promise",stat:!0,forced:n(90537)},{all:function(t){var e=this,n=s.f(e),i=n.resolve,l=n.reject,u=a((function(){var n=r(e.resolve),s=[],a=0,u=1;c(t,(function(t){var r=a++,c=!1;u++,o(n,e,t).then((function(t){c||(c=!0,s[r]=t,--u||i(s))}),l)})),--u||i(s)}));return u.error&&l(u.value),n.promise}})},93518:(t,e,n)=>{"use strict";var i=n(46518),o=n(69565),r=n(79306),s=n(97751),a=n(36043),c=n(1103),l=n(72652),u=n(90537),h="No one promise resolved";i({target:"Promise",stat:!0,forced:u},{any:function(t){var e=this,n=s("AggregateError"),i=a.f(e),u=i.resolve,d=i.reject,p=c((function(){var i=r(e.resolve),s=[],a=0,c=1,p=!1;l(t,(function(t){var r=a++,l=!1;c++,o(i,e,t).then((function(t){l||p||(p=!0,u(t))}),(function(t){l||p||(l=!0,s[r]=t,--c||d(new n(s,h)))}))})),--c||d(new n(s,h))}));return p.error&&d(p.value),i.promise}})},82003:(t,e,n)=>{"use strict";var i=n(46518),o=n(96395),r=n(10916).CONSTRUCTOR,s=n(80550),a=n(97751),c=n(94901),l=n(36840),u=s&&s.prototype;if(i({target:"Promise",proto:!0,forced:r,real:!0},{catch:function(t){return this.then(void 0,t)}}),!o&&c(s)){var h=a("Promise").prototype.catch;u.catch!==h&&l(u,"catch",h,{unsafe:!0})}},10436:(t,e,n)=>{"use strict";var i,o,r,s=n(46518),a=n(96395),c=n(38574),l=n(44576),u=n(69565),h=n(36840),d=n(52967),p=n(10687),A=n(87633),f=n(79306),g=n(94901),m=n(20034),b=n(90679),v=n(2293),C=n(59225).set,x=n(91955),w=n(90757),y=n(1103),k=n(18265),B=n(91181),E=n(80550),_=n(10916),I=n(36043),D="Promise",S=_.CONSTRUCTOR,T=_.REJECTION_EVENT,O=_.SUBCLASSING,M=B.getterFor(D),P=B.set,R=E&&E.prototype,N=E,H=R,z=l.TypeError,L=l.document,F=l.process,j=I.f,U=j,W=!!(L&&L.createEvent&&l.dispatchEvent),Y="unhandledrejection",q=function(t){var e;return!(!m(t)||!g(e=t.then))&&e},Q=function(t,e){var n,i,o,r=e.value,s=1===e.state,a=s?t.ok:t.fail,c=t.resolve,l=t.reject,h=t.domain;try{a?(s||(2===e.rejection&&J(e),e.rejection=1),!0===a?n=r:(h&&h.enter(),n=a(r),h&&(h.exit(),o=!0)),n===t.promise?l(new z("Promise-chain cycle")):(i=q(n))?u(i,n,c,l):c(n)):l(r)}catch(t){h&&!o&&h.exit(),l(t)}},G=function(t,e){t.notified||(t.notified=!0,x((function(){for(var n,i=t.reactions;n=i.get();)Q(n,t);t.notified=!1,e&&!t.rejection&&V(t)})))},X=function(t,e,n){var i,o;W?((i=L.createEvent("Event")).promise=e,i.reason=n,i.initEvent(t,!1,!0),l.dispatchEvent(i)):i={promise:e,reason:n},!T&&(o=l["on"+t])?o(i):t===Y&&w("Unhandled promise rejection",n)},V=function(t){u(C,l,(function(){var e,n=t.facade,i=t.value;if(K(t)&&(e=y((function(){c?F.emit("unhandledRejection",i,n):X(Y,n,i)})),t.rejection=c||K(t)?2:1,e.error))throw e.value}))},K=function(t){return 1!==t.rejection&&!t.parent},J=function(t){u(C,l,(function(){var e=t.facade;c?F.emit("rejectionHandled",e):X("rejectionhandled",e,t.value)}))},Z=function(t,e,n){return function(i){t(e,i,n)}},$=function(t,e,n){t.done||(t.done=!0,n&&(t=n),t.value=e,t.state=2,G(t,!0))},tt=function(t,e,n){if(!t.done){t.done=!0,n&&(t=n);try{if(t.facade===e)throw new z("Promise can't be resolved itself");var i=q(e);i?x((function(){var n={done:!1};try{u(i,e,Z(tt,n,t),Z($,n,t))}catch(e){$(n,e,t)}})):(t.value=e,t.state=1,G(t,!1))}catch(e){$({done:!1},e,t)}}};if(S&&(H=(N=function(t){b(this,H),f(t),u(i,this);var e=M(this);try{t(Z(tt,e),Z($,e))}catch(t){$(e,t)}}).prototype,(i=function(t){P(this,{type:D,done:!1,notified:!1,parent:!1,reactions:new k,rejection:!1,state:0,value:null})}).prototype=h(H,"then",(function(t,e){var n=M(this),i=j(v(this,N));return n.parent=!0,i.ok=!g(t)||t,i.fail=g(e)&&e,i.domain=c?F.domain:void 0,0===n.state?n.reactions.add(i):x((function(){Q(i,n)})),i.promise})),o=function(){var t=new i,e=M(t);this.promise=t,this.resolve=Z(tt,e),this.reject=Z($,e)},I.f=j=function(t){return t===N||void 0===t?new o(t):U(t)},!a&&g(E)&&R!==Object.prototype)){r=R.then,O||h(R,"then",(function(t,e){var n=this;return new N((function(t,e){u(r,n,t,e)})).then(t,e)}),{unsafe:!0});try{delete R.constructor}catch(t){}d&&d(R,H)}s({global:!0,constructor:!0,wrap:!0,forced:S},{Promise:N}),p(N,D,!1,!0),A(D)},9391:(t,e,n)=>{"use strict";var i=n(46518),o=n(96395),r=n(80550),s=n(79039),a=n(97751),c=n(94901),l=n(2293),u=n(93438),h=n(36840),d=r&&r.prototype;if(i({target:"Promise",proto:!0,real:!0,forced:!!r&&s((function(){d.finally.call({then:function(){}},(function(){}))}))},{finally:function(t){var e=l(this,a("Promise")),n=c(t);return this.then(n?function(n){return u(e,t()).then((function(){return n}))}:t,n?function(n){return u(e,t()).then((function(){throw n}))}:t)}}),!o&&c(r)){var p=a("Promise").prototype.finally;d.finally!==p&&h(d,"finally",p,{unsafe:!0})}},3362:(t,e,n)=>{"use strict";n(10436),n(16499),n(82003),n(7743),n(51481),n(40280)},7743:(t,e,n)=>{"use strict";var i=n(46518),o=n(69565),r=n(79306),s=n(36043),a=n(1103),c=n(72652);i({target:"Promise",stat:!0,forced:n(90537)},{race:function(t){var e=this,n=s.f(e),i=n.reject,l=a((function(){var s=r(e.resolve);c(t,(function(t){o(s,e,t).then(n.resolve,i)}))}));return l.error&&i(l.value),n.promise}})},51481:(t,e,n)=>{"use strict";var i=n(46518),o=n(36043);i({target:"Promise",stat:!0,forced:n(10916).CONSTRUCTOR},{reject:function(t){var e=o.f(this);return(0,e.reject)(t),e.promise}})},40280:(t,e,n)=>{"use strict";var i=n(46518),o=n(97751),r=n(96395),s=n(80550),a=n(10916).CONSTRUCTOR,c=n(93438),l=o("Promise"),u=r&&!a;i({target:"Promise",stat:!0,forced:r||a},{resolve:function(t){return c(u&&this===l?s:this,t)}})},14628:(t,e,n)=>{"use strict";var i=n(46518),o=n(36043);i({target:"Promise",stat:!0},{withResolvers:function(){var t=o.f(this);return{promise:t.promise,resolve:t.resolve,reject:t.reject}}})},39796:(t,e,n)=>{"use strict";var i=n(46518),o=n(18745),r=n(79306),s=n(28551);i({target:"Reflect",stat:!0,forced:!n(79039)((function(){Reflect.apply((function(){}))}))},{apply:function(t,e,n){return o(r(t),e,s(n))}})},60825:(t,e,n)=>{"use strict";var i=n(46518),o=n(97751),r=n(18745),s=n(30566),a=n(35548),c=n(28551),l=n(20034),u=n(2360),h=n(79039),d=o("Reflect","construct"),p=Object.prototype,A=[].push,f=h((function(){function t(){}return!(d((function(){}),[],t)instanceof t)})),g=!h((function(){d((function(){}))})),m=f||g;i({target:"Reflect",stat:!0,forced:m,sham:m},{construct:function(t,e){a(t),c(e);var n=arguments.length<3?t:a(arguments[2]);if(g&&!f)return d(t,e,n);if(t===n){switch(e.length){case 0:return new t;case 1:return new t(e[0]);case 2:return new t(e[0],e[1]);case 3:return new t(e[0],e[1],e[2]);case 4:return new t(e[0],e[1],e[2],e[3])}var i=[null];return r(A,i,e),new(r(s,t,i))}var o=n.prototype,h=u(l(o)?o:p),m=r(t,h,e);return l(m)?m:h}})},87411:(t,e,n)=>{"use strict";var i=n(46518),o=n(43724),r=n(28551),s=n(56969),a=n(24913);i({target:"Reflect",stat:!0,forced:n(79039)((function(){Reflect.defineProperty(a.f({},1,{value:1}),1,{value:2})})),sham:!o},{defineProperty:function(t,e,n){r(t);var i=s(e);r(n);try{return a.f(t,i,n),!0}catch(t){return!1}}})},21211:(t,e,n)=>{"use strict";var i=n(46518),o=n(28551),r=n(77347).f;i({target:"Reflect",stat:!0},{deleteProperty:function(t,e){var n=r(o(t),e);return!(n&&!n.configurable)&&delete t[e]}})},9065:(t,e,n)=>{"use strict";var i=n(46518),o=n(43724),r=n(28551),s=n(77347);i({target:"Reflect",stat:!0,sham:!o},{getOwnPropertyDescriptor:function(t,e){return s.f(r(t),e)}})},86565:(t,e,n)=>{"use strict";var i=n(46518),o=n(28551),r=n(42787);i({target:"Reflect",stat:!0,sham:!n(12211)},{getPrototypeOf:function(t){return r(o(t))}})},40888:(t,e,n)=>{"use strict";var i=n(46518),o=n(69565),r=n(20034),s=n(28551),a=n(16575),c=n(77347),l=n(42787);i({target:"Reflect",stat:!0},{get:function t(e,n){var i,u,h=arguments.length<3?e:arguments[2];return s(e)===h?e[n]:(i=c.f(e,n))?a(i)?i.value:void 0===i.get?void 0:o(i.get,h):r(u=l(e))?t(u,n,h):void 0}})},32812:(t,e,n)=>{"use strict";n(46518)({target:"Reflect",stat:!0},{has:function(t,e){return e in t}})},84634:(t,e,n)=>{"use strict";var i=n(46518),o=n(28551),r=n(34124);i({target:"Reflect",stat:!0},{isExtensible:function(t){return o(t),r(t)}})},71137:(t,e,n)=>{"use strict";n(46518)({target:"Reflect",stat:!0},{ownKeys:n(35031)})},30985:(t,e,n)=>{"use strict";var i=n(46518),o=n(97751),r=n(28551);i({target:"Reflect",stat:!0,sham:!n(92744)},{preventExtensions:function(t){r(t);try{var e=o("Object","preventExtensions");return e&&e(t),!0}catch(t){return!1}}})},34873:(t,e,n)=>{"use strict";var i=n(46518),o=n(28551),r=n(73506),s=n(52967);s&&i({target:"Reflect",stat:!0},{setPrototypeOf:function(t,e){o(t),r(e);try{return s(t,e),!0}catch(t){return!1}}})},34268:(t,e,n)=>{"use strict";var i=n(46518),o=n(69565),r=n(28551),s=n(20034),a=n(16575),c=n(79039),l=n(24913),u=n(77347),h=n(42787),d=n(6980);i({target:"Reflect",stat:!0,forced:c((function(){var t=function(){},e=l.f(new t,"a",{configurable:!0});return!1!==Reflect.set(t.prototype,"a",1,e)}))},{set:function t(e,n,i){var c,p,A,f=arguments.length<4?e:arguments[3],g=u.f(r(e),n);if(!g){if(s(p=h(e)))return t(p,n,i,f);g=d(0)}if(a(g)){if(!1===g.writable||!s(f))return!1;if(c=u.f(f,n)){if(c.get||c.set||!1===c.writable)return!1;c.value=i,l.f(f,n,c)}else l.f(f,n,d(0,i))}else{if(void 0===(A=g.set))return!1;o(A,f,i)}return!0}})},15472:(t,e,n)=>{"use strict";var i=n(46518),o=n(44576),r=n(10687);i({global:!0},{Reflect:{}}),r(o.Reflect,"Reflect",!0)},84864:(t,e,n)=>{"use strict";var i=n(43724),o=n(44576),r=n(79504),s=n(92796),a=n(23167),c=n(66699),l=n(2360),u=n(38480).f,h=n(1625),d=n(60788),p=n(655),A=n(61034),f=n(58429),g=n(11056),m=n(36840),b=n(79039),v=n(39297),C=n(91181).enforce,x=n(87633),w=n(78227),y=n(83635),k=n(18814),B=w("match"),E=o.RegExp,_=E.prototype,I=o.SyntaxError,D=r(_.exec),S=r("".charAt),T=r("".replace),O=r("".indexOf),M=r("".slice),P=/^\?<[^\s\d!#%&*+<=>@^][^\s!#%&*+<=>@^]*>/,R=/a/g,N=/a/g,H=new E(R)!==R,z=f.MISSED_STICKY,L=f.UNSUPPORTED_Y;if(s("RegExp",i&&(!H||z||y||k||b((function(){return N[B]=!1,E(R)!==R||E(N)===N||"/a/i"!==String(E(R,"i"))}))))){for(var F=function(t,e){var n,i,o,r,s,u,f=h(_,this),g=d(t),m=void 0===e,b=[],x=t;if(!f&&g&&m&&t.constructor===F)return t;if((g||h(_,t))&&(t=t.source,m&&(e=A(x))),t=void 0===t?"":p(t),e=void 0===e?"":p(e),x=t,y&&"dotAll"in R&&(i=!!e&&O(e,"s")>-1)&&(e=T(e,/s/g,"")),n=e,z&&"sticky"in R&&(o=!!e&&O(e,"y")>-1)&&L&&(e=T(e,/y/g,"")),k&&(r=function(t){for(var e,n=t.length,i=0,o="",r=[],s=l(null),a=!1,c=!1,u=0,h="";i<=n;i++){if("\\"===(e=S(t,i)))e+=S(t,++i);else if("]"===e)a=!1;else if(!a)switch(!0){case"["===e:a=!0;break;case"("===e:if(o+=e,"?:"===M(t,i+1,i+3))continue;D(P,M(t,i+1))&&(i+=2,c=!0),u++;continue;case">"===e&&c:if(""===h||v(s,h))throw new I("Invalid capture group name");s[h]=!0,r[r.length]=[h,u],c=!1,h="";continue}c?h+=e:o+=e}return[o,r]}(t),t=r[0],b=r[1]),s=a(E(t,e),f?this:_,F),(i||o||b.length)&&(u=C(s),i&&(u.dotAll=!0,u.raw=F(function(t){for(var e,n=t.length,i=0,o="",r=!1;i<=n;i++)"\\"!==(e=S(t,i))?r||"."!==e?("["===e?r=!0:"]"===e&&(r=!1),o+=e):o+="[\\s\\S]":o+=e+S(t,++i);return o}(t),n)),o&&(u.sticky=!0),b.length&&(u.groups=b)),t!==x)try{c(s,"source",""===x?"(?:)":x)}catch(t){}return s},j=u(E),U=0;j.length>U;)g(F,E,j[U++]);_.constructor=F,F.prototype=_,m(o,"RegExp",F,{constructor:!0})}x("RegExp")},57465:(t,e,n)=>{"use strict";var i=n(43724),o=n(83635),r=n(22195),s=n(62106),a=n(91181).get,c=RegExp.prototype,l=TypeError;i&&o&&s(c,"dotAll",{configurable:!0,get:function(){if(this!==c){if("RegExp"===r(this))return!!a(this).dotAll;throw new l("Incompatible receiver, RegExp required")}}})},69479:(t,e,n)=>{"use strict";var i=n(44576),o=n(43724),r=n(62106),s=n(67979),a=n(79039),c=i.RegExp,l=c.prototype;o&&a((function(){var t=!0;try{c(".","d")}catch(e){t=!1}var e={},n="",i=t?"dgimsy":"gimsy",o=function(t,i){Object.defineProperty(e,t,{get:function(){return n+=i,!0}})},r={dotAll:"s",global:"g",ignoreCase:"i",multiline:"m",sticky:"y"};for(var s in t&&(r.hasIndices="d"),r)o(s,r[s]);return Object.getOwnPropertyDescriptor(l,"flags").get.call(e)!==i||n!==i}))&&r(l,"flags",{configurable:!0,get:s})},87745:(t,e,n)=>{"use strict";var i=n(43724),o=n(58429).MISSED_STICKY,r=n(22195),s=n(62106),a=n(91181).get,c=RegExp.prototype,l=TypeError;i&&o&&s(c,"sticky",{configurable:!0,get:function(){if(this!==c){if("RegExp"===r(this))return!!a(this).sticky;throw new l("Incompatible receiver, RegExp required")}}})},90906:(t,e,n)=>{"use strict";n(27495);var i,o,r=n(46518),s=n(69565),a=n(94901),c=n(28551),l=n(655),u=(i=!1,(o=/[ac]/).exec=function(){return i=!0,/./.exec.apply(this,arguments)},!0===o.test("abc")&&i),h=/./.test;r({target:"RegExp",proto:!0,forced:!u},{test:function(t){var e=c(this),n=l(t),i=e.exec;if(!a(i))return s(h,e,n);var o=s(i,e,n);return null!==o&&(c(o),!0)}})},38781:(t,e,n)=>{"use strict";var i=n(10350).PROPER,o=n(36840),r=n(28551),s=n(655),a=n(79039),c=n(61034),l="toString",u=RegExp.prototype,h=u[l],d=a((function(){return"/a/b"!==h.call({source:"a",flags:"b"})})),p=i&&h.name!==l;(d||p)&&o(u,l,(function(){var t=r(this);return"/"+s(t.source)+"/"+s(c(t))}),{unsafe:!0})},92405:(t,e,n)=>{"use strict";n(16468)("Set",(function(t){return function(){return t(this,arguments.length?arguments[0]:void 0)}}),n(86938))},17642:(t,e,n)=>{"use strict";var i=n(46518),o=n(83440);i({target:"Set",proto:!0,real:!0,forced:!n(84916)("difference")},{difference:o})},58004:(t,e,n)=>{"use strict";var i=n(46518),o=n(79039),r=n(68750);i({target:"Set",proto:!0,real:!0,forced:!n(84916)("intersection")||o((function(){return"3,2"!==String(Array.from(new Set([1,2,3]).intersection(new Set([3,2]))))}))},{intersection:r})},33853:(t,e,n)=>{"use strict";var i=n(46518),o=n(64449);i({target:"Set",proto:!0,real:!0,forced:!n(84916)("isDisjointFrom")},{isDisjointFrom:o})},45876:(t,e,n)=>{"use strict";var i=n(46518),o=n(53838);i({target:"Set",proto:!0,real:!0,forced:!n(84916)("isSubsetOf")},{isSubsetOf:o})},32475:(t,e,n)=>{"use strict";var i=n(46518),o=n(28527);i({target:"Set",proto:!0,real:!0,forced:!n(84916)("isSupersetOf")},{isSupersetOf:o})},31415:(t,e,n)=>{"use strict";n(92405)},15024:(t,e,n)=>{"use strict";var i=n(46518),o=n(83650);i({target:"Set",proto:!0,real:!0,forced:!n(84916)("symmetricDifference")},{symmetricDifference:o})},31698:(t,e,n)=>{"use strict";var i=n(46518),o=n(44204);i({target:"Set",proto:!0,real:!0,forced:!n(84916)("union")},{union:o})},89907:(t,e,n)=>{"use strict";var i=n(46518),o=n(77240);i({target:"String",proto:!0,forced:n(23061)("anchor")},{anchor:function(t){return o(this,"a","name",t)}})},67357:(t,e,n)=>{"use strict";var i=n(46518),o=n(79504),r=n(67750),s=n(91291),a=n(655),c=n(79039),l=o("".charAt);i({target:"String",proto:!0,forced:c((function(){return"\ud842"!=="𠮷".at(-2)}))},{at:function(t){var e=a(r(this)),n=e.length,i=s(t),o=i>=0?i:n+i;return o<0||o>=n?void 0:l(e,o)}})},11898:(t,e,n)=>{"use strict";var i=n(46518),o=n(77240);i({target:"String",proto:!0,forced:n(23061)("big")},{big:function(){return o(this,"big","","")}})},35490:(t,e,n)=>{"use strict";var i=n(46518),o=n(77240);i({target:"String",proto:!0,forced:n(23061)("blink")},{blink:function(){return o(this,"blink","","")}})},5745:(t,e,n)=>{"use strict";var i=n(46518),o=n(77240);i({target:"String",proto:!0,forced:n(23061)("bold")},{bold:function(){return o(this,"b","","")}})},23860:(t,e,n)=>{"use strict";var i=n(46518),o=n(68183).codeAt;i({target:"String",proto:!0},{codePointAt:function(t){return o(this,t)}})},21830:(t,e,n)=>{"use strict";var i,o=n(46518),r=n(27476),s=n(77347).f,a=n(18014),c=n(655),l=n(60511),u=n(67750),h=n(41436),d=n(96395),p=r("".slice),A=Math.min,f=h("endsWith");o({target:"String",proto:!0,forced:!(!d&&!f&&(i=s(String.prototype,"endsWith"),i&&!i.writable)||f)},{endsWith:function(t){var e=c(u(this));l(t);var n=arguments.length>1?arguments[1]:void 0,i=e.length,o=void 0===n?i:A(a(n),i),r=c(t);return p(e,o-r.length,o)===r}})},94298:(t,e,n)=>{"use strict";var i=n(46518),o=n(77240);i({target:"String",proto:!0,forced:n(23061)("fixed")},{fixed:function(){return o(this,"tt","","")}})},60268:(t,e,n)=>{"use strict";var i=n(46518),o=n(77240);i({target:"String",proto:!0,forced:n(23061)("fontcolor")},{fontcolor:function(t){return o(this,"font","color",t)}})},69546:(t,e,n)=>{"use strict";var i=n(46518),o=n(77240);i({target:"String",proto:!0,forced:n(23061)("fontsize")},{fontsize:function(t){return o(this,"font","size",t)}})},27337:(t,e,n)=>{"use strict";var i=n(46518),o=n(79504),r=n(35610),s=RangeError,a=String.fromCharCode,c=String.fromCodePoint,l=o([].join);i({target:"String",stat:!0,arity:1,forced:!!c&&1!==c.length},{fromCodePoint:function(t){for(var e,n=[],i=arguments.length,o=0;i>o;){if(e=+arguments[o++],r(e,1114111)!==e)throw new s(e+" is not a valid code point");n[o]=e<65536?a(e):a(55296+((e-=65536)>>10),e%1024+56320)}return l(n,"")}})},21699:(t,e,n)=>{"use strict";var i=n(46518),o=n(79504),r=n(60511),s=n(67750),a=n(655),c=n(41436),l=o("".indexOf);i({target:"String",proto:!0,forced:!c("includes")},{includes:function(t){return!!~l(a(s(this)),a(r(t)),arguments.length>1?arguments[1]:void 0)}})},42043:(t,e,n)=>{"use strict";var i=n(46518),o=n(79504),r=n(67750),s=n(655),a=o("".charCodeAt);i({target:"String",proto:!0},{isWellFormed:function(){for(var t=s(r(this)),e=t.length,n=0;n=56320||++n>=e||56320!=(64512&a(t,n))))return!1}return!0}})},20781:(t,e,n)=>{"use strict";var i=n(46518),o=n(77240);i({target:"String",proto:!0,forced:n(23061)("italics")},{italics:function(){return o(this,"i","","")}})},47764:(t,e,n)=>{"use strict";var i=n(68183).charAt,o=n(655),r=n(91181),s=n(51088),a=n(62529),c="String Iterator",l=r.set,u=r.getterFor(c);s(String,"String",(function(t){l(this,{type:c,string:o(t),index:0})}),(function(){var t,e=u(this),n=e.string,o=e.index;return o>=n.length?a(void 0,!0):(t=i(n,o),e.index+=t.length,a(t,!1))}))},50778:(t,e,n)=>{"use strict";var i=n(46518),o=n(77240);i({target:"String",proto:!0,forced:n(23061)("link")},{link:function(t){return o(this,"a","href",t)}})},28543:(t,e,n)=>{"use strict";var i=n(46518),o=n(69565),r=n(27476),s=n(33994),a=n(62529),c=n(67750),l=n(18014),u=n(655),h=n(28551),d=n(64117),p=n(22195),A=n(60788),f=n(61034),g=n(55966),m=n(36840),b=n(79039),v=n(78227),C=n(2293),x=n(57829),w=n(56682),y=n(91181),k=n(96395),B=v("matchAll"),E="RegExp String",_=E+" Iterator",I=y.set,D=y.getterFor(_),S=RegExp.prototype,T=TypeError,O=r("".indexOf),M=r("".matchAll),P=!!M&&!b((function(){M("a",/./)})),R=s((function(t,e,n,i){I(this,{type:_,regexp:t,string:e,global:n,unicode:i,done:!1})}),E,(function(){var t=D(this);if(t.done)return a(void 0,!0);var e=t.regexp,n=t.string,i=w(e,n);return null===i?(t.done=!0,a(void 0,!0)):t.global?(""===u(i[0])&&(e.lastIndex=x(n,l(e.lastIndex),t.unicode)),a(i,!1)):(t.done=!0,a(i,!1))})),N=function(t){var e,n,i,o=h(this),r=u(t),s=C(o,RegExp),a=u(f(o));return e=new s(s===RegExp?o.source:o,a),n=!!~O(a,"g"),i=!!~O(a,"u"),e.lastIndex=l(o.lastIndex),new R(e,r,n,i)};i({target:"String",proto:!0,forced:P},{matchAll:function(t){var e,n,i,r,s=c(this);if(d(t)){if(P)return M(s,t)}else{if(A(t)&&(e=u(c(f(t))),!~O(e,"g")))throw new T("`.matchAll` does not allow non-global regexes");if(P)return M(s,t);if(void 0===(i=g(t,B))&&k&&"RegExp"===p(t)&&(i=N),i)return o(i,t,s)}return n=u(s),r=new RegExp(t,"g"),k?o(N,r,n):r[B](n)}}),k||B in S||m(S,B,N)},71761:(t,e,n)=>{"use strict";var i=n(69565),o=n(89228),r=n(28551),s=n(64117),a=n(18014),c=n(655),l=n(67750),u=n(55966),h=n(57829),d=n(56682);o("match",(function(t,e,n){return[function(e){var n=l(this),o=s(e)?void 0:u(e,t);return o?i(o,e,n):new RegExp(e)[t](c(n))},function(t){var i=r(this),o=c(t),s=n(e,i,o);if(s.done)return s.value;if(!i.global)return d(i,o);var l=i.unicode;i.lastIndex=0;for(var u,p=[],A=0;null!==(u=d(i,o));){var f=c(u[0]);p[A]=f,""===f&&(i.lastIndex=h(o,a(i.lastIndex),l)),A++}return 0===A?null:p}]}))},35701:(t,e,n)=>{"use strict";var i=n(46518),o=n(60533).end;i({target:"String",proto:!0,forced:n(83063)},{padEnd:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}})},68156:(t,e,n)=>{"use strict";var i=n(46518),o=n(60533).start;i({target:"String",proto:!0,forced:n(83063)},{padStart:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}})},85906:(t,e,n)=>{"use strict";var i=n(46518),o=n(79504),r=n(25397),s=n(48981),a=n(655),c=n(26198),l=o([].push),u=o([].join);i({target:"String",stat:!0},{raw:function(t){var e=r(s(t).raw),n=c(e);if(!n)return"";for(var i=arguments.length,o=[],h=0;;){if(l(o,a(e[h++])),h===n)return u(o,"");h{"use strict";n(46518)({target:"String",proto:!0},{repeat:n(72333)})},79978:(t,e,n)=>{"use strict";var i=n(46518),o=n(69565),r=n(79504),s=n(67750),a=n(94901),c=n(64117),l=n(60788),u=n(655),h=n(55966),d=n(61034),p=n(2478),A=n(78227),f=n(96395),g=A("replace"),m=TypeError,b=r("".indexOf),v=r("".replace),C=r("".slice),x=Math.max;i({target:"String",proto:!0},{replaceAll:function(t,e){var n,i,r,A,w,y,k,B,E,_,I=s(this),D=0,S="";if(!c(t)){if((n=l(t))&&(i=u(s(d(t))),!~b(i,"g")))throw new m("`.replaceAll` does not allow non-global regexes");if(r=h(t,g))return o(r,t,I,e);if(f&&n)return v(u(I),t,e)}for(A=u(I),w=u(t),(y=a(e))||(e=u(e)),k=w.length,B=x(1,k),E=b(A,w);-1!==E;)_=y?u(e(w,E,A)):p(w,A,E,[],void 0,e),S+=C(A,D,E)+_,D=E+k,E=E+B>A.length?-1:b(A,w,E+B);return D{"use strict";var i=n(69565),o=n(89228),r=n(28551),s=n(64117),a=n(67750),c=n(3470),l=n(655),u=n(55966),h=n(56682);o("search",(function(t,e,n){return[function(e){var n=a(this),o=s(e)?void 0:u(e,t);return o?i(o,e,n):new RegExp(e)[t](l(n))},function(t){var i=r(this),o=l(t),s=n(e,i,o);if(s.done)return s.value;var a=i.lastIndex;c(a,0)||(i.lastIndex=0);var u=h(i,o);return c(i.lastIndex,a)||(i.lastIndex=a),null===u?-1:u.index}]}))},89195:(t,e,n)=>{"use strict";var i=n(46518),o=n(77240);i({target:"String",proto:!0,forced:n(23061)("small")},{small:function(){return o(this,"small","","")}})},90744:(t,e,n)=>{"use strict";var i=n(69565),o=n(79504),r=n(89228),s=n(28551),a=n(64117),c=n(67750),l=n(2293),u=n(57829),h=n(18014),d=n(655),p=n(55966),A=n(56682),f=n(58429),g=n(79039),m=f.UNSUPPORTED_Y,b=Math.min,v=o([].push),C=o("".slice),x=!g((function(){var t=/(?:)/,e=t.exec;t.exec=function(){return e.apply(this,arguments)};var n="ab".split(t);return 2!==n.length||"a"!==n[0]||"b"!==n[1]})),w="c"==="abbc".split(/(b)*/)[1]||4!=="test".split(/(?:)/,-1).length||2!=="ab".split(/(?:ab)*/).length||4!==".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length;r("split",(function(t,e,n){var o="0".split(void 0,0).length?function(t,n){return void 0===t&&0===n?[]:i(e,this,t,n)}:e;return[function(e,n){var r=c(this),s=a(e)?void 0:p(e,t);return s?i(s,e,r,n):i(o,d(r),e,n)},function(t,i){var r=s(this),a=d(t);if(!w){var c=n(o,r,a,i,o!==e);if(c.done)return c.value}var p=l(r,RegExp),f=r.unicode,g=(r.ignoreCase?"i":"")+(r.multiline?"m":"")+(r.unicode?"u":"")+(m?"g":"y"),x=new p(m?"^(?:"+r.source+")":r,g),y=void 0===i?4294967295:i>>>0;if(0===y)return[];if(0===a.length)return null===A(x,a)?[a]:[];for(var k=0,B=0,E=[];B{"use strict";var i,o=n(46518),r=n(27476),s=n(77347).f,a=n(18014),c=n(655),l=n(60511),u=n(67750),h=n(41436),d=n(96395),p=r("".slice),A=Math.min,f=h("startsWith");o({target:"String",proto:!0,forced:!(!d&&!f&&(i=s(String.prototype,"startsWith"),i&&!i.writable)||f)},{startsWith:function(t){var e=c(u(this));l(t);var n=a(A(arguments.length>1?arguments[1]:void 0,e.length)),i=c(t);return p(e,n,n+i.length)===i}})},46276:(t,e,n)=>{"use strict";var i=n(46518),o=n(77240);i({target:"String",proto:!0,forced:n(23061)("strike")},{strike:function(){return o(this,"strike","","")}})},48718:(t,e,n)=>{"use strict";var i=n(46518),o=n(77240);i({target:"String",proto:!0,forced:n(23061)("sub")},{sub:function(){return o(this,"sub","","")}})},50375:(t,e,n)=>{"use strict";var i=n(46518),o=n(79504),r=n(67750),s=n(91291),a=n(655),c=o("".slice),l=Math.max,u=Math.min;i({target:"String",proto:!0,forced:!"".substr||"b"!=="ab".substr(-1)},{substr:function(t,e){var n,i,o=a(r(this)),h=o.length,d=s(t);return d===1/0&&(d=0),d<0&&(d=l(h+d,0)),(n=void 0===e?h:s(e))<=0||n===1/0||d>=(i=u(d+n,h))?"":c(o,d,i)}})},16308:(t,e,n)=>{"use strict";var i=n(46518),o=n(77240);i({target:"String",proto:!0,forced:n(23061)("sup")},{sup:function(){return o(this,"sup","","")}})},67438:(t,e,n)=>{"use strict";var i=n(46518),o=n(69565),r=n(79504),s=n(67750),a=n(655),c=n(79039),l=Array,u=r("".charAt),h=r("".charCodeAt),d=r([].join),p="".toWellFormed,A=p&&c((function(){return"1"!==o(p,1)}));i({target:"String",proto:!0,forced:A},{toWellFormed:function(){var t=a(s(this));if(A)return o(p,t);for(var e=t.length,n=l(e),i=0;i=56320||i+1>=e||56320!=(64512&h(t,i+1))?n[i]="�":(n[i]=u(t,i),n[++i]=u(t,i))}return d(n,"")}})},39202:(t,e,n)=>{"use strict";n(33313);var i=n(46518),o=n(18866);i({target:"String",proto:!0,name:"trimEnd",forced:"".trimEnd!==o},{trimEnd:o})},58934:(t,e,n)=>{"use strict";var i=n(46518),o=n(53487);i({target:"String",proto:!0,name:"trimStart",forced:"".trimLeft!==o},{trimLeft:o})},33313:(t,e,n)=>{"use strict";var i=n(46518),o=n(18866);i({target:"String",proto:!0,name:"trimEnd",forced:"".trimRight!==o},{trimRight:o})},43359:(t,e,n)=>{"use strict";n(58934);var i=n(46518),o=n(53487);i({target:"String",proto:!0,name:"trimStart",forced:"".trimStart!==o},{trimStart:o})},42762:(t,e,n)=>{"use strict";var i=n(46518),o=n(43802).trim;i({target:"String",proto:!0,forced:n(60706)("trim")},{trim:function(){return o(this)}})},66412:(t,e,n)=>{"use strict";n(70511)("asyncIterator")},6761:(t,e,n)=>{"use strict";var i=n(46518),o=n(44576),r=n(69565),s=n(79504),a=n(96395),c=n(43724),l=n(4495),u=n(79039),h=n(39297),d=n(1625),p=n(28551),A=n(25397),f=n(56969),g=n(655),m=n(6980),b=n(2360),v=n(71072),C=n(38480),x=n(10298),w=n(33717),y=n(77347),k=n(24913),B=n(96801),E=n(48773),_=n(36840),I=n(62106),D=n(25745),S=n(66119),T=n(30421),O=n(33392),M=n(78227),P=n(1951),R=n(70511),N=n(58242),H=n(10687),z=n(91181),L=n(81594).forEach,F=S("hidden"),j="Symbol",U="prototype",W=z.set,Y=z.getterFor(j),q=Object[U],Q=o.Symbol,G=Q&&Q[U],X=o.RangeError,V=o.TypeError,K=o.QObject,J=y.f,Z=k.f,$=x.f,tt=E.f,et=s([].push),nt=D("symbols"),it=D("op-symbols"),ot=D("wks"),rt=!K||!K[U]||!K[U].findChild,st=function(t,e,n){var i=J(q,e);i&&delete q[e],Z(t,e,n),i&&t!==q&&Z(q,e,i)},at=c&&u((function(){return 7!==b(Z({},"a",{get:function(){return Z(this,"a",{value:7}).a}})).a}))?st:Z,ct=function(t,e){var n=nt[t]=b(G);return W(n,{type:j,tag:t,description:e}),c||(n.description=e),n},lt=function(t,e,n){t===q&<(it,e,n),p(t);var i=f(e);return p(n),h(nt,i)?(n.enumerable?(h(t,F)&&t[F][i]&&(t[F][i]=!1),n=b(n,{enumerable:m(0,!1)})):(h(t,F)||Z(t,F,m(1,b(null))),t[F][i]=!0),at(t,i,n)):Z(t,i,n)},ut=function(t,e){p(t);var n=A(e),i=v(n).concat(At(n));return L(i,(function(e){c&&!r(ht,n,e)||lt(t,e,n[e])})),t},ht=function(t){var e=f(t),n=r(tt,this,e);return!(this===q&&h(nt,e)&&!h(it,e))&&(!(n||!h(this,e)||!h(nt,e)||h(this,F)&&this[F][e])||n)},dt=function(t,e){var n=A(t),i=f(e);if(n!==q||!h(nt,i)||h(it,i)){var o=J(n,i);return!o||!h(nt,i)||h(n,F)&&n[F][i]||(o.enumerable=!0),o}},pt=function(t){var e=$(A(t)),n=[];return L(e,(function(t){h(nt,t)||h(T,t)||et(n,t)})),n},At=function(t){var e=t===q,n=$(e?it:A(t)),i=[];return L(n,(function(t){!h(nt,t)||e&&!h(q,t)||et(i,nt[t])})),i};l||(_(G=(Q=function(){if(d(G,this))throw new V("Symbol is not a constructor");var t=arguments.length&&void 0!==arguments[0]?g(arguments[0]):void 0,e=O(t),n=function(t){var i=void 0===this?o:this;i===q&&r(n,it,t),h(i,F)&&h(i[F],e)&&(i[F][e]=!1);var s=m(1,t);try{at(i,e,s)}catch(t){if(!(t instanceof X))throw t;st(i,e,s)}};return c&&rt&&at(q,e,{configurable:!0,set:n}),ct(e,t)})[U],"toString",(function(){return Y(this).tag})),_(Q,"withoutSetter",(function(t){return ct(O(t),t)})),E.f=ht,k.f=lt,B.f=ut,y.f=dt,C.f=x.f=pt,w.f=At,P.f=function(t){return ct(M(t),t)},c&&(I(G,"description",{configurable:!0,get:function(){return Y(this).description}}),a||_(q,"propertyIsEnumerable",ht,{unsafe:!0}))),i({global:!0,constructor:!0,wrap:!0,forced:!l,sham:!l},{Symbol:Q}),L(v(ot),(function(t){R(t)})),i({target:j,stat:!0,forced:!l},{useSetter:function(){rt=!0},useSimple:function(){rt=!1}}),i({target:"Object",stat:!0,forced:!l,sham:!c},{create:function(t,e){return void 0===e?b(t):ut(b(t),e)},defineProperty:lt,defineProperties:ut,getOwnPropertyDescriptor:dt}),i({target:"Object",stat:!0,forced:!l},{getOwnPropertyNames:pt}),N(),H(Q,j),T[F]=!0},89463:(t,e,n)=>{"use strict";var i=n(46518),o=n(43724),r=n(44576),s=n(79504),a=n(39297),c=n(94901),l=n(1625),u=n(655),h=n(62106),d=n(77740),p=r.Symbol,A=p&&p.prototype;if(o&&c(p)&&(!("description"in A)||void 0!==p().description)){var f={},g=function(){var t=arguments.length<1||void 0===arguments[0]?void 0:u(arguments[0]),e=l(A,this)?new p(t):void 0===t?p():p(t);return""===t&&(f[e]=!0),e};d(g,p),g.prototype=A,A.constructor=g;var m="Symbol(description detection)"===String(p("description detection")),b=s(A.valueOf),v=s(A.toString),C=/^Symbol\((.*)\)[^)]+$/,x=s("".replace),w=s("".slice);h(A,"description",{configurable:!0,get:function(){var t=b(this);if(a(f,t))return"";var e=v(t),n=m?w(e,7,-1):x(e,C,"$1");return""===n?void 0:n}}),i({global:!0,constructor:!0,forced:!0},{Symbol:g})}},81510:(t,e,n)=>{"use strict";var i=n(46518),o=n(97751),r=n(39297),s=n(655),a=n(25745),c=n(91296),l=a("string-to-symbol-registry"),u=a("symbol-to-string-registry");i({target:"Symbol",stat:!0,forced:!c},{for:function(t){var e=s(t);if(r(l,e))return l[e];var n=o("Symbol")(e);return l[e]=n,u[n]=e,n}})},60193:(t,e,n)=>{"use strict";n(70511)("hasInstance")},92168:(t,e,n)=>{"use strict";n(70511)("isConcatSpreadable")},2259:(t,e,n)=>{"use strict";n(70511)("iterator")},52675:(t,e,n)=>{"use strict";n(6761),n(81510),n(97812),n(33110),n(49773)},97812:(t,e,n)=>{"use strict";var i=n(46518),o=n(39297),r=n(10757),s=n(16823),a=n(25745),c=n(91296),l=a("symbol-to-string-registry");i({target:"Symbol",stat:!0,forced:!c},{keyFor:function(t){if(!r(t))throw new TypeError(s(t)+" is not a symbol");if(o(l,t))return l[t]}})},83142:(t,e,n)=>{"use strict";n(70511)("matchAll")},86964:(t,e,n)=>{"use strict";n(70511)("match")},83237:(t,e,n)=>{"use strict";n(70511)("replace")},61833:(t,e,n)=>{"use strict";n(70511)("search")},67947:(t,e,n)=>{"use strict";n(70511)("species")},31073:(t,e,n)=>{"use strict";n(70511)("split")},45700:(t,e,n)=>{"use strict";var i=n(70511),o=n(58242);i("toPrimitive"),o()},78125:(t,e,n)=>{"use strict";var i=n(97751),o=n(70511),r=n(10687);o("toStringTag"),r(i("Symbol"),"Symbol")},20326:(t,e,n)=>{"use strict";n(70511)("unscopables")},48140:(t,e,n)=>{"use strict";var i=n(94644),o=n(26198),r=n(91291),s=i.aTypedArray;(0,i.exportTypedArrayMethod)("at",(function(t){var e=s(this),n=o(e),i=r(t),a=i>=0?i:n+i;return a<0||a>=n?void 0:e[a]}))},81630:(t,e,n)=>{"use strict";var i=n(79504),o=n(94644),r=i(n(57029)),s=o.aTypedArray;(0,o.exportTypedArrayMethod)("copyWithin",(function(t,e){return r(s(this),t,e,arguments.length>2?arguments[2]:void 0)}))},72170:(t,e,n)=>{"use strict";var i=n(94644),o=n(81594).every,r=i.aTypedArray;(0,i.exportTypedArrayMethod)("every",(function(t){return o(r(this),t,arguments.length>1?arguments[1]:void 0)}))},75044:(t,e,n)=>{"use strict";var i=n(94644),o=n(84373),r=n(75854),s=n(36955),a=n(69565),c=n(79504),l=n(79039),u=i.aTypedArray,h=i.exportTypedArrayMethod,d=c("".slice);h("fill",(function(t){var e=arguments.length;u(this);var n="Big"===d(s(this),0,3)?r(t):+t;return a(o,this,n,e>1?arguments[1]:void 0,e>2?arguments[2]:void 0)}),l((function(){var t=0;return new Int8Array(2).fill({valueOf:function(){return t++}}),1!==t})))},69539:(t,e,n)=>{"use strict";var i=n(94644),o=n(81594).filter,r=n(26357),s=i.aTypedArray;(0,i.exportTypedArrayMethod)("filter",(function(t){var e=o(s(this),t,arguments.length>1?arguments[1]:void 0);return r(this,e)}))},89955:(t,e,n)=>{"use strict";var i=n(94644),o=n(81594).findIndex,r=i.aTypedArray;(0,i.exportTypedArrayMethod)("findIndex",(function(t){return o(r(this),t,arguments.length>1?arguments[1]:void 0)}))},91134:(t,e,n)=>{"use strict";var i=n(94644),o=n(43839).findLastIndex,r=i.aTypedArray;(0,i.exportTypedArrayMethod)("findLastIndex",(function(t){return o(r(this),t,arguments.length>1?arguments[1]:void 0)}))},21903:(t,e,n)=>{"use strict";var i=n(94644),o=n(43839).findLast,r=i.aTypedArray;(0,i.exportTypedArrayMethod)("findLast",(function(t){return o(r(this),t,arguments.length>1?arguments[1]:void 0)}))},31694:(t,e,n)=>{"use strict";var i=n(94644),o=n(81594).find,r=i.aTypedArray;(0,i.exportTypedArrayMethod)("find",(function(t){return o(r(this),t,arguments.length>1?arguments[1]:void 0)}))},34594:(t,e,n)=>{"use strict";n(15823)("Float32",(function(t){return function(e,n,i){return t(this,e,n,i)}}))},29833:(t,e,n)=>{"use strict";n(15823)("Float64",(function(t){return function(e,n,i){return t(this,e,n,i)}}))},33206:(t,e,n)=>{"use strict";var i=n(94644),o=n(81594).forEach,r=i.aTypedArray;(0,i.exportTypedArrayMethod)("forEach",(function(t){o(r(this),t,arguments.length>1?arguments[1]:void 0)}))},48345:(t,e,n)=>{"use strict";var i=n(72805);(0,n(94644).exportTypedArrayStaticMethod)("from",n(43251),i)},44496:(t,e,n)=>{"use strict";var i=n(94644),o=n(19617).includes,r=i.aTypedArray;(0,i.exportTypedArrayMethod)("includes",(function(t){return o(r(this),t,arguments.length>1?arguments[1]:void 0)}))},66651:(t,e,n)=>{"use strict";var i=n(94644),o=n(19617).indexOf,r=i.aTypedArray;(0,i.exportTypedArrayMethod)("indexOf",(function(t){return o(r(this),t,arguments.length>1?arguments[1]:void 0)}))},72107:(t,e,n)=>{"use strict";n(15823)("Int16",(function(t){return function(e,n,i){return t(this,e,n,i)}}))},95477:(t,e,n)=>{"use strict";n(15823)("Int32",(function(t){return function(e,n,i){return t(this,e,n,i)}}))},46594:(t,e,n)=>{"use strict";n(15823)("Int8",(function(t){return function(e,n,i){return t(this,e,n,i)}}))},12887:(t,e,n)=>{"use strict";var i=n(44576),o=n(79039),r=n(79504),s=n(94644),a=n(23792),c=n(78227)("iterator"),l=i.Uint8Array,u=r(a.values),h=r(a.keys),d=r(a.entries),p=s.aTypedArray,A=s.exportTypedArrayMethod,f=l&&l.prototype,g=!o((function(){f[c].call([1])})),m=!!f&&f.values&&f[c]===f.values&&"values"===f.values.name,b=function(){return u(p(this))};A("entries",(function(){return d(p(this))}),g),A("keys",(function(){return h(p(this))}),g),A("values",b,g||!m,{name:"values"}),A(c,b,g||!m,{name:"values"})},19369:(t,e,n)=>{"use strict";var i=n(94644),o=n(79504),r=i.aTypedArray,s=i.exportTypedArrayMethod,a=o([].join);s("join",(function(t){return a(r(this),t)}))},66812:(t,e,n)=>{"use strict";var i=n(94644),o=n(18745),r=n(8379),s=i.aTypedArray;(0,i.exportTypedArrayMethod)("lastIndexOf",(function(t){var e=arguments.length;return o(r,s(this),e>1?[t,arguments[1]]:[t])}))},8995:(t,e,n)=>{"use strict";var i=n(94644),o=n(81594).map,r=n(61412),s=i.aTypedArray;(0,i.exportTypedArrayMethod)("map",(function(t){return o(s(this),t,arguments.length>1?arguments[1]:void 0,(function(t,e){return new(r(t))(e)}))}))},52568:(t,e,n)=>{"use strict";var i=n(94644),o=n(72805),r=i.aTypedArrayConstructor;(0,i.exportTypedArrayStaticMethod)("of",(function(){for(var t=0,e=arguments.length,n=new(r(this))(e);e>t;)n[t]=arguments[t++];return n}),o)},36072:(t,e,n)=>{"use strict";var i=n(94644),o=n(80926).right,r=i.aTypedArray;(0,i.exportTypedArrayMethod)("reduceRight",(function(t){var e=arguments.length;return o(r(this),t,e,e>1?arguments[1]:void 0)}))},31575:(t,e,n)=>{"use strict";var i=n(94644),o=n(80926).left,r=i.aTypedArray;(0,i.exportTypedArrayMethod)("reduce",(function(t){var e=arguments.length;return o(r(this),t,e,e>1?arguments[1]:void 0)}))},88747:(t,e,n)=>{"use strict";var i=n(94644),o=i.aTypedArray,r=i.exportTypedArrayMethod,s=Math.floor;r("reverse",(function(){for(var t,e=this,n=o(e).length,i=s(n/2),r=0;r{"use strict";var i=n(44576),o=n(69565),r=n(94644),s=n(26198),a=n(58229),c=n(48981),l=n(79039),u=i.RangeError,h=i.Int8Array,d=h&&h.prototype,p=d&&d.set,A=r.aTypedArray,f=r.exportTypedArrayMethod,g=!l((function(){var t=new Uint8ClampedArray(2);return o(p,t,{length:1,0:3},1),3!==t[1]})),m=g&&r.NATIVE_ARRAY_BUFFER_VIEWS&&l((function(){var t=new h(2);return t.set(1),t.set("2",1),0!==t[0]||2!==t[1]}));f("set",(function(t){A(this);var e=a(arguments.length>1?arguments[1]:void 0,1),n=c(t);if(g)return o(p,this,n,e);var i=this.length,r=s(n),l=0;if(r+e>i)throw new u("Wrong length");for(;l{"use strict";var i=n(94644),o=n(61412),r=n(79039),s=n(67680),a=i.aTypedArray;(0,i.exportTypedArrayMethod)("slice",(function(t,e){for(var n=s(a(this),t,e),i=o(this),r=0,c=n.length,l=new i(c);c>r;)l[r]=n[r++];return l}),r((function(){new Int8Array(1).slice()})))},57301:(t,e,n)=>{"use strict";var i=n(94644),o=n(81594).some,r=i.aTypedArray;(0,i.exportTypedArrayMethod)("some",(function(t){return o(r(this),t,arguments.length>1?arguments[1]:void 0)}))},373:(t,e,n)=>{"use strict";var i=n(44576),o=n(27476),r=n(79039),s=n(79306),a=n(74488),c=n(94644),l=n(13709),u=n(13763),h=n(39519),d=n(3607),p=c.aTypedArray,A=c.exportTypedArrayMethod,f=i.Uint16Array,g=f&&o(f.prototype.sort),m=!(!g||r((function(){g(new f(2),null)}))&&r((function(){g(new f(2),{})}))),b=!!g&&!r((function(){if(h)return h<74;if(l)return l<67;if(u)return!0;if(d)return d<602;var t,e,n=new f(516),i=Array(516);for(t=0;t<516;t++)e=t%4,n[t]=515-t,i[t]=t-2*e+3;for(g(n,(function(t,e){return(t/4|0)-(e/4|0)})),t=0;t<516;t++)if(n[t]!==i[t])return!0}));A("sort",(function(t){return void 0!==t&&s(t),b?g(this,t):a(p(this),function(t){return function(e,n){return void 0!==t?+t(e,n)||0:n!=n?-1:e!=e?1:0===e&&0===n?1/e>0&&1/n<0?1:-1:e>n}}(t))}),!b||m)},86614:(t,e,n)=>{"use strict";var i=n(94644),o=n(18014),r=n(35610),s=n(61412),a=i.aTypedArray;(0,i.exportTypedArrayMethod)("subarray",(function(t,e){var n=a(this),i=n.length,c=r(t,i);return new(s(n))(n.buffer,n.byteOffset+c*n.BYTES_PER_ELEMENT,o((void 0===e?i:r(e,i))-c))}))},41405:(t,e,n)=>{"use strict";var i=n(44576),o=n(18745),r=n(94644),s=n(79039),a=n(67680),c=i.Int8Array,l=r.aTypedArray,u=r.exportTypedArrayMethod,h=[].toLocaleString,d=!!c&&s((function(){h.call(new c(1))}));u("toLocaleString",(function(){return o(h,d?a(l(this)):l(this),a(arguments))}),s((function(){return[1,2].toLocaleString()!==new c([1,2]).toLocaleString()}))||!s((function(){c.prototype.toLocaleString.call([1,2])})))},37467:(t,e,n)=>{"use strict";var i=n(37628),o=n(94644),r=o.aTypedArray,s=o.exportTypedArrayMethod,a=o.getTypedArrayConstructor;s("toReversed",(function(){return i(r(this),a(this))}))},44732:(t,e,n)=>{"use strict";var i=n(94644),o=n(79504),r=n(79306),s=n(35370),a=i.aTypedArray,c=i.getTypedArrayConstructor,l=i.exportTypedArrayMethod,u=o(i.TypedArrayPrototype.sort);l("toSorted",(function(t){void 0!==t&&r(t);var e=a(this),n=s(c(e),e);return u(n,t)}))},33684:(t,e,n)=>{"use strict";var i=n(94644).exportTypedArrayMethod,o=n(79039),r=n(44576),s=n(79504),a=r.Uint8Array,c=a&&a.prototype||{},l=[].toString,u=s([].join);o((function(){l.call({})}))&&(l=function(){return u(this)});var h=c.toString!==l;i("toString",l,h)},3690:(t,e,n)=>{"use strict";n(15823)("Uint16",(function(t){return function(e,n,i){return t(this,e,n,i)}}))},61740:(t,e,n)=>{"use strict";n(15823)("Uint32",(function(t){return function(e,n,i){return t(this,e,n,i)}}))},21489:(t,e,n)=>{"use strict";n(15823)("Uint8",(function(t){return function(e,n,i){return t(this,e,n,i)}}))},22134:(t,e,n)=>{"use strict";n(15823)("Uint8",(function(t){return function(e,n,i){return t(this,e,n,i)}}),!0)},79577:(t,e,n)=>{"use strict";var i=n(39928),o=n(94644),r=n(18727),s=n(91291),a=n(75854),c=o.aTypedArray,l=o.getTypedArrayConstructor,u=o.exportTypedArrayMethod,h=!!function(){try{new Int8Array(1).with(2,{valueOf:function(){throw 8}})}catch(t){return 8===t}}();u("with",{with:function(t,e){var n=c(this),o=s(t),u=r(n)?a(e):+e;return i(n,l(n),o,u)}}.with,!h)},88267:(t,e,n)=>{"use strict";var i=n(46518),o=n(79504),r=n(655),s=String.fromCharCode,a=o("".charAt),c=o(/./.exec),l=o("".slice),u=/^[\da-f]{2}$/i,h=/^[\da-f]{4}$/i;i({global:!0},{unescape:function(t){for(var e,n,i=r(t),o="",d=i.length,p=0;p{"use strict";var i,o=n(92744),r=n(44576),s=n(79504),a=n(56279),c=n(3451),l=n(16468),u=n(91625),h=n(20034),d=n(91181).enforce,p=n(79039),A=n(58622),f=Object,g=Array.isArray,m=f.isExtensible,b=f.isFrozen,v=f.isSealed,C=f.freeze,x=f.seal,w=!r.ActiveXObject&&"ActiveXObject"in r,y=function(t){return function(){return t(this,arguments.length?arguments[0]:void 0)}},k=l("WeakMap",y,u),B=k.prototype,E=s(B.set);if(A)if(w){i=u.getConstructor(y,"WeakMap",!0),c.enable();var _=s(B.delete),I=s(B.has),D=s(B.get);a(B,{delete:function(t){if(h(t)&&!m(t)){var e=d(this);return e.frozen||(e.frozen=new i),_(this,t)||e.frozen.delete(t)}return _(this,t)},has:function(t){if(h(t)&&!m(t)){var e=d(this);return e.frozen||(e.frozen=new i),I(this,t)||e.frozen.has(t)}return I(this,t)},get:function(t){if(h(t)&&!m(t)){var e=d(this);return e.frozen||(e.frozen=new i),I(this,t)?D(this,t):e.frozen.get(t)}return D(this,t)},set:function(t,e){if(h(t)&&!m(t)){var n=d(this);n.frozen||(n.frozen=new i),I(this,t)?E(this,t,e):n.frozen.set(t,e)}else E(this,t,e);return this}})}else o&&p((function(){var t=C([]);return E(new k,t,1),!b(t)}))&&a(B,{set:function(t,e){var n;return g(t)&&(b(t)?n=C:v(t)&&(n=x)),E(this,t,e),n&&n(t),this}})},73772:(t,e,n)=>{"use strict";n(65746)},5240:(t,e,n)=>{"use strict";n(16468)("WeakSet",(function(t){return function(){return t(this,arguments.length?arguments[0]:void 0)}}),n(91625))},30958:(t,e,n)=>{"use strict";n(5240)},2945:(t,e,n)=>{"use strict";var i=n(46518),o=n(44576),r=n(97751),s=n(79504),a=n(69565),c=n(79039),l=n(655),u=n(22812),h=n(92804).c2i,d=/[^\d+/a-z]/i,p=/[\t\n\f\r ]+/g,A=/[=]{1,2}$/,f=r("atob"),g=String.fromCharCode,m=s("".charAt),b=s("".replace),v=s(d.exec),C=!!f&&!c((function(){return"hi"!==f("aGk=")})),x=C&&c((function(){return""!==f(" ")})),w=C&&!c((function(){f("a")})),y=C&&!c((function(){f()})),k=C&&1!==f.length;i({global:!0,bind:!0,enumerable:!0,forced:!C||x||w||y||k},{atob:function(t){if(u(arguments.length,1),C&&!x&&!w)return a(f,o,t);var e,n,i,s=b(l(t),p,""),c="",y=0,k=0;if(s.length%4==0&&(s=b(s,A,"")),(e=s.length)%4==1||v(d,s))throw new(r("DOMException"))("The string is not correctly encoded","InvalidCharacterError");for(;y>(-2*k&6)));return c}})},42207:(t,e,n)=>{"use strict";var i=n(46518),o=n(44576),r=n(97751),s=n(79504),a=n(69565),c=n(79039),l=n(655),u=n(22812),h=n(92804).i2c,d=r("btoa"),p=s("".charAt),A=s("".charCodeAt),f=!!d&&!c((function(){return"aGk="!==d("hi")})),g=f&&!c((function(){d()})),m=f&&c((function(){return"bnVsbA=="!==d(null)})),b=f&&1!==d.length;i({global:!0,bind:!0,enumerable:!0,forced:!f||g||m||b},{btoa:function(t){if(u(arguments.length,1),f)return a(d,o,l(t));for(var e,n,i=l(t),s="",c=0,g=h;p(i,c)||(g="=",c%1);){if((n=A(i,c+=3/4))>255)throw new(r("DOMException"))("The string contains characters outside of the Latin1 range","InvalidCharacterError");s+=p(g,63&(e=e<<8|n)>>8-c%1*8)}return s}})},86368:(t,e,n)=>{"use strict";var i=n(46518),o=n(44576),r=n(59225).clear;i({global:!0,bind:!0,enumerable:!0,forced:o.clearImmediate!==r},{clearImmediate:r})},23500:(t,e,n)=>{"use strict";var i=n(44576),o=n(67400),r=n(79296),s=n(90235),a=n(66699),c=function(t){if(t&&t.forEach!==s)try{a(t,"forEach",s)}catch(e){t.forEach=s}};for(var l in o)o[l]&&c(i[l]&&i[l].prototype);c(r)},62953:(t,e,n)=>{"use strict";var i=n(44576),o=n(67400),r=n(79296),s=n(23792),a=n(66699),c=n(10687),l=n(78227)("iterator"),u=s.values,h=function(t,e){if(t){if(t[l]!==u)try{a(t,l,u)}catch(e){t[l]=u}if(c(t,e,!0),o[e])for(var n in s)if(t[n]!==s[n])try{a(t,n,s[n])}catch(e){t[n]=s[n]}}};for(var d in o)h(i[d]&&i[d].prototype,d);h(r,"DOMTokenList")},55815:(t,e,n)=>{"use strict";var i=n(46518),o=n(97751),r=n(89429),s=n(79039),a=n(2360),c=n(6980),l=n(24913).f,u=n(36840),h=n(62106),d=n(39297),p=n(90679),A=n(28551),f=n(77536),g=n(32603),m=n(55002),b=n(16193),v=n(91181),C=n(43724),x=n(96395),w="DOMException",y="DATA_CLONE_ERR",k=o("Error"),B=o(w)||function(){try{(new(o("MessageChannel")||r("worker_threads").MessageChannel)).port1.postMessage(new WeakMap)}catch(t){if(t.name===y&&25===t.code)return t.constructor}}(),E=B&&B.prototype,_=k.prototype,I=v.set,D=v.getterFor(w),S="stack"in new k(w),T=function(t){return d(m,t)&&m[t].m?m[t].c:0},O=function(){p(this,M);var t=arguments.length,e=g(t<1?void 0:arguments[0]),n=g(t<2?void 0:arguments[1],"Error"),i=T(n);if(I(this,{type:w,name:n,message:e,code:i}),C||(this.name=n,this.message=e,this.code=i),S){var o=new k(e);o.name=w,l(this,"stack",c(1,b(o.stack,1)))}},M=O.prototype=a(_),P=function(t){return{enumerable:!0,configurable:!0,get:t}},R=function(t){return P((function(){return D(this)[t]}))};C&&(h(M,"code",R("code")),h(M,"message",R("message")),h(M,"name",R("name"))),l(M,"constructor",c(1,O));var N=s((function(){return!(new B instanceof k)})),H=N||s((function(){return _.toString!==f||"2: 1"!==String(new B(1,2))})),z=N||s((function(){return 25!==new B(1,"DataCloneError").code})),L=N||25!==B[y]||25!==E[y],F=x?H||z||L:N;i({global:!0,constructor:!0,forced:F},{DOMException:F?O:B});var j=o(w),U=j.prototype;for(var W in H&&(x||B===j)&&u(U,"toString",f),z&&C&&B===j&&h(U,"code",P((function(){return T(A(this).name)}))),m)if(d(m,W)){var Y=m[W],q=Y.s,Q=c(6,Y.c);d(j,q)||l(j,q,Q),d(U,q)||l(U,q,Q)}},64979:(t,e,n)=>{"use strict";var i=n(46518),o=n(44576),r=n(97751),s=n(6980),a=n(24913).f,c=n(39297),l=n(90679),u=n(23167),h=n(32603),d=n(55002),p=n(16193),A=n(43724),f=n(96395),g="DOMException",m=r("Error"),b=r(g),v=function(){l(this,C);var t=arguments.length,e=h(t<1?void 0:arguments[0]),n=h(t<2?void 0:arguments[1],"Error"),i=new b(e,n),o=new m(e);return o.name=g,a(i,"stack",s(1,p(o.stack,1))),u(i,this,v),i},C=v.prototype=b.prototype,x="stack"in new m(g),w="stack"in new b(1,2),y=b&&A&&Object.getOwnPropertyDescriptor(o,g),k=!(!y||y.writable&&y.configurable),B=x&&!k&&!w;i({global:!0,constructor:!0,forced:f||B},{DOMException:B?v:b});var E=r(g),_=E.prototype;if(_.constructor!==E)for(var I in f||a(_,"constructor",s(1,E)),d)if(c(d,I)){var D=d[I],S=D.s;c(E,S)||a(E,S,s(6,D.c))}},79739:(t,e,n)=>{"use strict";var i=n(97751),o="DOMException";n(10687)(i(o),o)},59848:(t,e,n)=>{"use strict";n(86368),n(29309)},122:(t,e,n)=>{"use strict";var i=n(46518),o=n(44576),r=n(91955),s=n(79306),a=n(22812),c=n(79039),l=n(43724);i({global:!0,enumerable:!0,dontCallGetSet:!0,forced:c((function(){return l&&1!==Object.getOwnPropertyDescriptor(o,"queueMicrotask").value.length}))},{queueMicrotask:function(t){a(arguments.length,1),r(s(t))}})},13611:(t,e,n)=>{"use strict";var i=n(46518),o=n(44576),r=n(62106),s=n(43724),a=TypeError,c=Object.defineProperty,l=o.self!==o;try{if(s){var u=Object.getOwnPropertyDescriptor(o,"self");!l&&u&&u.get&&u.enumerable||r(o,"self",{get:function(){return o},set:function(t){if(this!==o)throw new a("Illegal invocation");c(o,"self",{value:t,writable:!0,configurable:!0,enumerable:!0})},configurable:!0,enumerable:!0})}else i({global:!0,simple:!0,forced:l},{self:o})}catch(t){}},29309:(t,e,n)=>{"use strict";var i=n(46518),o=n(44576),r=n(59225).set,s=n(79472),a=o.setImmediate?s(r,!1):r;i({global:!0,bind:!0,enumerable:!0,forced:o.setImmediate!==a},{setImmediate:a})},15575:(t,e,n)=>{"use strict";var i=n(46518),o=n(44576),r=n(79472)(o.setInterval,!0);i({global:!0,bind:!0,forced:o.setInterval!==r},{setInterval:r})},24599:(t,e,n)=>{"use strict";var i=n(46518),o=n(44576),r=n(79472)(o.setTimeout,!0);i({global:!0,bind:!0,forced:o.setTimeout!==r},{setTimeout:r})},71678:(t,e,n)=>{"use strict";var i,o=n(96395),r=n(46518),s=n(44576),a=n(97751),c=n(79504),l=n(79039),u=n(33392),h=n(94901),d=n(33517),p=n(64117),A=n(20034),f=n(10757),g=n(72652),m=n(28551),b=n(36955),v=n(39297),C=n(97040),x=n(66699),w=n(26198),y=n(22812),k=n(61034),B=n(72248),E=n(94402),_=n(38469),I=n(94483),D=n(24659),S=n(1548),T=s.Object,O=s.Array,M=s.Date,P=s.Error,R=s.TypeError,N=s.PerformanceMark,H=a("DOMException"),z=B.Map,L=B.has,F=B.get,j=B.set,U=E.Set,W=E.add,Y=E.has,q=a("Object","keys"),Q=c([].push),G=c((!0).valueOf),X=c(1..valueOf),V=c("".valueOf),K=c(M.prototype.getTime),J=u("structuredClone"),Z="DataCloneError",$="Transferring",tt=function(t){return!l((function(){var e=new s.Set([7]),n=t(e),i=t(T(7));return n===e||!n.has(7)||!A(i)||7!=+i}))&&t},et=function(t,e){return!l((function(){var n=new e,i=t({a:n,b:n});return!(i&&i.a===i.b&&i.a instanceof e&&i.a.stack===n.stack)}))},nt=s.structuredClone,it=o||!et(nt,P)||!et(nt,H)||(i=nt,!!l((function(){var t=i(new s.AggregateError([1],J,{cause:3}));return"AggregateError"!==t.name||1!==t.errors[0]||t.message!==J||3!==t.cause}))),ot=!nt&&tt((function(t){return new N(J,{detail:t}).detail})),rt=tt(nt)||ot,st=function(t){throw new H("Uncloneable type: "+t,Z)},at=function(t,e){throw new H((e||"Cloning")+" of "+t+" cannot be properly polyfilled in this engine",Z)},ct=function(t,e){return rt||at(e),rt(t)},lt=function(t,e,n){if(L(e,t))return F(e,t);var i,o,r,a,c,l;if("SharedArrayBuffer"===(n||b(t)))i=rt?rt(t):t;else{var u=s.DataView;u||h(t.slice)||at("ArrayBuffer");try{if(h(t.slice)&&!t.resizable)i=t.slice(0);else{o=t.byteLength,r="maxByteLength"in t?{maxByteLength:t.maxByteLength}:void 0,i=new ArrayBuffer(o,r),a=new u(t),c=new u(i);for(l=0;l1&&!p(arguments[1])?m(arguments[1]):void 0,o=i?i.transfer:void 0;void 0!==o&&(n=function(t,e){if(!A(t))throw new R("Transfer option cannot be converted to a sequence");var n=[];g(t,(function(t){Q(n,m(t))}));for(var i,o,r,a,c,l=0,u=w(n),p=new U;l{"use strict";n(15575),n(24599)},98406:(t,e,n)=>{"use strict";n(23792),n(27337);var i=n(46518),o=n(44576),r=n(93389),s=n(97751),a=n(69565),c=n(79504),l=n(43724),u=n(67416),h=n(36840),d=n(62106),p=n(56279),A=n(10687),f=n(33994),g=n(91181),m=n(90679),b=n(94901),v=n(39297),C=n(76080),x=n(36955),w=n(28551),y=n(20034),k=n(655),B=n(2360),E=n(6980),_=n(70081),I=n(50851),D=n(62529),S=n(22812),T=n(78227),O=n(74488),M=T("iterator"),P="URLSearchParams",R=P+"Iterator",N=g.set,H=g.getterFor(P),z=g.getterFor(R),L=r("fetch"),F=r("Request"),j=r("Headers"),U=F&&F.prototype,W=j&&j.prototype,Y=o.TypeError,q=o.encodeURIComponent,Q=String.fromCharCode,G=s("String","fromCodePoint"),X=parseInt,V=c("".charAt),K=c([].join),J=c([].push),Z=c("".replace),$=c([].shift),tt=c([].splice),et=c("".split),nt=c("".slice),it=c(/./.exec),ot=/\+/g,rt=/^[0-9a-f]+$/i,st=function(t,e){var n=nt(t,e,e+2);return it(rt,n)?X(n,16):NaN},at=function(t){for(var e=0,n=128;n>0&&t&n;n>>=1)e++;return e},ct=function(t){var e=null;switch(t.length){case 1:e=t[0];break;case 2:e=(31&t[0])<<6|63&t[1];break;case 3:e=(15&t[0])<<12|(63&t[1])<<6|63&t[2];break;case 4:e=(7&t[0])<<18|(63&t[1])<<12|(63&t[2])<<6|63&t[3]}return e>1114111?null:e},lt=function(t){for(var e=(t=Z(t,ot," ")).length,n="",i=0;ie){n+="%",i++;continue}var r=st(t,i+1);if(r!=r){n+=o,i++;continue}i+=2;var s=at(r);if(0===s)o=Q(r);else{if(1===s||s>4){n+="�",i++;continue}for(var a=[r],c=1;ce||"%"!==V(t,i));){var l=st(t,i+1);if(l!=l){i+=3;break}if(l>191||l<128)break;J(a,l),i+=2,c++}if(a.length!==s){n+="�";continue}var u=ct(a);null===u?n+="�":o=G(u)}}n+=o,i++}return n},ut=/[!'()~]|%20/g,ht={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+"},dt=function(t){return ht[t]},pt=function(t){return Z(q(t),ut,dt)},At=f((function(t,e){N(this,{type:R,target:H(t).entries,index:0,kind:e})}),P,(function(){var t=z(this),e=t.target,n=t.index++;if(!e||n>=e.length)return t.target=null,D(void 0,!0);var i=e[n];switch(t.kind){case"keys":return D(i.key,!1);case"values":return D(i.value,!1)}return D([i.key,i.value],!1)}),!0),ft=function(t){this.entries=[],this.url=null,void 0!==t&&(y(t)?this.parseObject(t):this.parseQuery("string"==typeof t?"?"===V(t,0)?nt(t,1):t:k(t)))};ft.prototype={type:P,bindURL:function(t){this.url=t,this.update()},parseObject:function(t){var e,n,i,o,r,s,c,l=this.entries,u=I(t);if(u)for(n=(e=_(t,u)).next;!(i=a(n,e)).done;){if(r=(o=_(w(i.value))).next,(s=a(r,o)).done||(c=a(r,o)).done||!a(r,o).done)throw new Y("Expected sequence with length 2");J(l,{key:k(s.value),value:k(c.value)})}else for(var h in t)v(t,h)&&J(l,{key:h,value:k(t[h])})},parseQuery:function(t){if(t)for(var e,n,i=this.entries,o=et(t,"&"),r=0;r0?arguments[0]:void 0));l||(this.size=t.entries.length)},mt=gt.prototype;if(p(mt,{append:function(t,e){var n=H(this);S(arguments.length,2),J(n.entries,{key:k(t),value:k(e)}),l||this.length++,n.updateURL()},delete:function(t){for(var e=H(this),n=S(arguments.length,1),i=e.entries,o=k(t),r=n<2?void 0:arguments[1],s=void 0===r?r:k(r),a=0;ae.key?1:-1})),t.updateURL()},forEach:function(t){for(var e,n=H(this).entries,i=C(t,arguments.length>1?arguments[1]:void 0),o=0;o1?Ct(arguments[1]):{})}}),b(F)){var xt=function(t){return m(this,U),new F(t,arguments.length>1?Ct(arguments[1]):{})};U.constructor=xt,xt.prototype=U,i({global:!0,constructor:!0,dontCallGetSet:!0,forced:!0},{Request:xt})}}t.exports={URLSearchParams:gt,getState:H}},14603:(t,e,n)=>{"use strict";var i=n(36840),o=n(79504),r=n(655),s=n(22812),a=URLSearchParams,c=a.prototype,l=o(c.append),u=o(c.delete),h=o(c.forEach),d=o([].push),p=new a("a=1&a=2&b=3");p.delete("a",1),p.delete("b",void 0),p+""!="a=2"&&i(c,"delete",(function(t){var e=arguments.length,n=e<2?void 0:arguments[1];if(e&&void 0===n)return u(this,t);var i=[];h(this,(function(t,e){d(i,{key:e,value:t})})),s(e,1);for(var o,a=r(t),c=r(n),p=0,A=0,f=!1,g=i.length;p{"use strict";var i=n(36840),o=n(79504),r=n(655),s=n(22812),a=URLSearchParams,c=a.prototype,l=o(c.getAll),u=o(c.has),h=new a("a=1");!h.has("a",2)&&h.has("a",void 0)||i(c,"has",(function(t){var e=arguments.length,n=e<2?void 0:arguments[1];if(e&&void 0===n)return u(this,t);var i=l(this,t);s(e,1);for(var o=r(n),a=0;a{"use strict";n(98406)},98721:(t,e,n)=>{"use strict";var i=n(43724),o=n(79504),r=n(62106),s=URLSearchParams.prototype,a=o(s.forEach);i&&!("size"in s)&&r(s,"size",{get:function(){var t=0;return a(this,(function(){t++})),t},configurable:!0,enumerable:!0})},2222:(t,e,n)=>{"use strict";var i=n(46518),o=n(97751),r=n(79039),s=n(22812),a=n(655),c=n(67416),l=o("URL"),u=c&&r((function(){l.canParse()})),h=r((function(){return 1!==l.canParse.length}));i({target:"URL",stat:!0,forced:!u||h},{canParse:function(t){var e=s(arguments.length,1),n=a(t),i=e<2||void 0===arguments[1]?void 0:a(arguments[1]);try{return!!new l(n,i)}catch(t){return!1}}})},45806:(t,e,n)=>{"use strict";n(47764);var i,o=n(46518),r=n(43724),s=n(67416),a=n(44576),c=n(76080),l=n(79504),u=n(36840),h=n(62106),d=n(90679),p=n(39297),A=n(44213),f=n(97916),g=n(67680),m=n(68183).codeAt,b=n(3717),v=n(655),C=n(10687),x=n(22812),w=n(98406),y=n(91181),k=y.set,B=y.getterFor("URL"),E=w.URLSearchParams,_=w.getState,I=a.URL,D=a.TypeError,S=a.parseInt,T=Math.floor,O=Math.pow,M=l("".charAt),P=l(/./.exec),R=l([].join),N=l(1..toString),H=l([].pop),z=l([].push),L=l("".replace),F=l([].shift),j=l("".split),U=l("".slice),W=l("".toLowerCase),Y=l([].unshift),q="Invalid scheme",Q="Invalid host",G="Invalid port",X=/[a-z]/i,V=/[\d+-.a-z]/i,K=/\d/,J=/^0x/i,Z=/^[0-7]+$/,$=/^\d+$/,tt=/^[\da-f]+$/i,et=/[\0\t\n\r #%/:<>?@[\\\]^|]/,nt=/[\0\t\n\r #/:<>?@[\\\]^|]/,it=/^[\u0000-\u0020]+/,ot=/(^|[^\u0000-\u0020])[\u0000-\u0020]+$/,rt=/[\t\n\r]/g,st=function(t){var e,n,i,o;if("number"==typeof t){for(e=[],n=0;n<4;n++)Y(e,t%256),t=T(t/256);return R(e,".")}if("object"==typeof t){for(e="",i=function(t){for(var e=null,n=1,i=null,o=0,r=0;r<8;r++)0!==t[r]?(o>n&&(e=i,n=o),i=null,o=0):(null===i&&(i=r),++o);return o>n?i:e}(t),n=0;n<8;n++)o&&0===t[n]||(o&&(o=!1),i===n?(e+=n?":":"::",o=!0):(e+=N(t[n],16),n<7&&(e+=":")));return"["+e+"]"}return t},at={},ct=A({},at,{" ":1,'"':1,"<":1,">":1,"`":1}),lt=A({},ct,{"#":1,"?":1,"{":1,"}":1}),ut=A({},lt,{"/":1,":":1,";":1,"=":1,"@":1,"[":1,"\\":1,"]":1,"^":1,"|":1}),ht=function(t,e){var n=m(t,0);return n>32&&n<127&&!p(e,t)?t:encodeURIComponent(t)},dt={ftp:21,file:null,http:80,https:443,ws:80,wss:443},pt=function(t,e){var n;return 2===t.length&&P(X,M(t,0))&&(":"===(n=M(t,1))||!e&&"|"===n)},At=function(t){var e;return t.length>1&&pt(U(t,0,2))&&(2===t.length||"/"===(e=M(t,2))||"\\"===e||"?"===e||"#"===e)},ft=function(t){return"."===t||"%2e"===W(t)},gt={},mt={},bt={},vt={},Ct={},xt={},wt={},yt={},kt={},Bt={},Et={},_t={},It={},Dt={},St={},Tt={},Ot={},Mt={},Pt={},Rt={},Nt={},Ht=function(t,e,n){var i,o,r,s=v(t);if(e){if(o=this.parse(s))throw new D(o);this.searchParams=null}else{if(void 0!==n&&(i=new Ht(n,!0)),o=this.parse(s,null,i))throw new D(o);(r=_(new E)).bindURL(this),this.searchParams=r}};Ht.prototype={type:"URL",parse:function(t,e,n){var o,r,s,a,c,l=this,u=e||gt,h=0,d="",A=!1,m=!1,b=!1;for(t=v(t),e||(l.scheme="",l.username="",l.password="",l.host=null,l.port=null,l.path=[],l.query=null,l.fragment=null,l.cannotBeABaseURL=!1,t=L(t,it,""),t=L(t,ot,"$1")),t=L(t,rt,""),o=f(t);h<=o.length;){switch(r=o[h],u){case gt:if(!r||!P(X,r)){if(e)return q;u=bt;continue}d+=W(r),u=mt;break;case mt:if(r&&(P(V,r)||"+"===r||"-"===r||"."===r))d+=W(r);else{if(":"!==r){if(e)return q;d="",u=bt,h=0;continue}if(e&&(l.isSpecial()!==p(dt,d)||"file"===d&&(l.includesCredentials()||null!==l.port)||"file"===l.scheme&&!l.host))return;if(l.scheme=d,e)return void(l.isSpecial()&&dt[l.scheme]===l.port&&(l.port=null));d="","file"===l.scheme?u=Dt:l.isSpecial()&&n&&n.scheme===l.scheme?u=vt:l.isSpecial()?u=yt:"/"===o[h+1]?(u=Ct,h++):(l.cannotBeABaseURL=!0,z(l.path,""),u=Pt)}break;case bt:if(!n||n.cannotBeABaseURL&&"#"!==r)return q;if(n.cannotBeABaseURL&&"#"===r){l.scheme=n.scheme,l.path=g(n.path),l.query=n.query,l.fragment="",l.cannotBeABaseURL=!0,u=Nt;break}u="file"===n.scheme?Dt:xt;continue;case vt:if("/"!==r||"/"!==o[h+1]){u=xt;continue}u=kt,h++;break;case Ct:if("/"===r){u=Bt;break}u=Mt;continue;case xt:if(l.scheme=n.scheme,r===i)l.username=n.username,l.password=n.password,l.host=n.host,l.port=n.port,l.path=g(n.path),l.query=n.query;else if("/"===r||"\\"===r&&l.isSpecial())u=wt;else if("?"===r)l.username=n.username,l.password=n.password,l.host=n.host,l.port=n.port,l.path=g(n.path),l.query="",u=Rt;else{if("#"!==r){l.username=n.username,l.password=n.password,l.host=n.host,l.port=n.port,l.path=g(n.path),l.path.length--,u=Mt;continue}l.username=n.username,l.password=n.password,l.host=n.host,l.port=n.port,l.path=g(n.path),l.query=n.query,l.fragment="",u=Nt}break;case wt:if(!l.isSpecial()||"/"!==r&&"\\"!==r){if("/"!==r){l.username=n.username,l.password=n.password,l.host=n.host,l.port=n.port,u=Mt;continue}u=Bt}else u=kt;break;case yt:if(u=kt,"/"!==r||"/"!==M(d,h+1))continue;h++;break;case kt:if("/"!==r&&"\\"!==r){u=Bt;continue}break;case Bt:if("@"===r){A&&(d="%40"+d),A=!0,s=f(d);for(var C=0;C65535)return G;l.port=l.isSpecial()&&y===dt[l.scheme]?null:y,d=""}if(e)return;u=Ot;continue}return G}d+=r;break;case Dt:if(l.scheme="file","/"===r||"\\"===r)u=St;else{if(!n||"file"!==n.scheme){u=Mt;continue}switch(r){case i:l.host=n.host,l.path=g(n.path),l.query=n.query;break;case"?":l.host=n.host,l.path=g(n.path),l.query="",u=Rt;break;case"#":l.host=n.host,l.path=g(n.path),l.query=n.query,l.fragment="",u=Nt;break;default:At(R(g(o,h),""))||(l.host=n.host,l.path=g(n.path),l.shortenPath()),u=Mt;continue}}break;case St:if("/"===r||"\\"===r){u=Tt;break}n&&"file"===n.scheme&&!At(R(g(o,h),""))&&(pt(n.path[0],!0)?z(l.path,n.path[0]):l.host=n.host),u=Mt;continue;case Tt:if(r===i||"/"===r||"\\"===r||"?"===r||"#"===r){if(!e&&pt(d))u=Mt;else if(""===d){if(l.host="",e)return;u=Ot}else{if(a=l.parseHost(d))return a;if("localhost"===l.host&&(l.host=""),e)return;d="",u=Ot}continue}d+=r;break;case Ot:if(l.isSpecial()){if(u=Mt,"/"!==r&&"\\"!==r)continue}else if(e||"?"!==r)if(e||"#"!==r){if(r!==i&&(u=Mt,"/"!==r))continue}else l.fragment="",u=Nt;else l.query="",u=Rt;break;case Mt:if(r===i||"/"===r||"\\"===r&&l.isSpecial()||!e&&("?"===r||"#"===r)){if(".."===(c=W(c=d))||"%2e."===c||".%2e"===c||"%2e%2e"===c?(l.shortenPath(),"/"===r||"\\"===r&&l.isSpecial()||z(l.path,"")):ft(d)?"/"===r||"\\"===r&&l.isSpecial()||z(l.path,""):("file"===l.scheme&&!l.path.length&&pt(d)&&(l.host&&(l.host=""),d=M(d,0)+":"),z(l.path,d)),d="","file"===l.scheme&&(r===i||"?"===r||"#"===r))for(;l.path.length>1&&""===l.path[0];)F(l.path);"?"===r?(l.query="",u=Rt):"#"===r&&(l.fragment="",u=Nt)}else d+=ht(r,lt);break;case Pt:"?"===r?(l.query="",u=Rt):"#"===r?(l.fragment="",u=Nt):r!==i&&(l.path[0]+=ht(r,at));break;case Rt:e||"#"!==r?r!==i&&("'"===r&&l.isSpecial()?l.query+="%27":l.query+="#"===r?"%23":ht(r,at)):(l.fragment="",u=Nt);break;case Nt:r!==i&&(l.fragment+=ht(r,ct))}h++}},parseHost:function(t){var e,n,i;if("["===M(t,0)){if("]"!==M(t,t.length-1))return Q;if(e=function(t){var e,n,i,o,r,s,a,c=[0,0,0,0,0,0,0,0],l=0,u=null,h=0,d=function(){return M(t,h)};if(":"===d()){if(":"!==M(t,1))return;h+=2,u=++l}for(;d();){if(8===l)return;if(":"!==d()){for(e=n=0;n<4&&P(tt,d());)e=16*e+S(d(),16),h++,n++;if("."===d()){if(0===n)return;if(h-=n,l>6)return;for(i=0;d();){if(o=null,i>0){if(!("."===d()&&i<4))return;h++}if(!P(K,d()))return;for(;P(K,d());){if(r=S(d(),10),null===o)o=r;else{if(0===o)return;o=10*o+r}if(o>255)return;h++}c[l]=256*c[l]+o,2!=++i&&4!==i||l++}if(4!==i)return;break}if(":"===d()){if(h++,!d())return}else if(d())return;c[l++]=e}else{if(null!==u)return;h++,u=++l}}if(null!==u)for(s=l-u,l=7;0!==l&&s>0;)a=c[l],c[l--]=c[u+s-1],c[u+--s]=a;else if(8!==l)return;return c}(U(t,1,-1)),!e)return Q;this.host=e}else if(this.isSpecial()){if(t=b(t),P(et,t))return Q;if(e=function(t){var e,n,i,o,r,s,a,c=j(t,".");if(c.length&&""===c[c.length-1]&&c.length--,(e=c.length)>4)return t;for(n=[],i=0;i1&&"0"===M(o,0)&&(r=P(J,o)?16:8,o=U(o,8===r?1:2)),""===o)s=0;else{if(!P(10===r?$:8===r?Z:tt,o))return t;s=S(o,r)}z(n,s)}for(i=0;i=O(256,5-e))return null}else if(s>255)return null;for(a=H(n),i=0;i1?arguments[1]:void 0,i=k(e,new Ht(t,!1,n));r||(e.href=i.serialize(),e.origin=i.getOrigin(),e.protocol=i.getProtocol(),e.username=i.getUsername(),e.password=i.getPassword(),e.host=i.getHost(),e.hostname=i.getHostname(),e.port=i.getPort(),e.pathname=i.getPathname(),e.search=i.getSearch(),e.searchParams=i.getSearchParams(),e.hash=i.getHash())},Lt=zt.prototype,Ft=function(t,e){return{get:function(){return B(this)[t]()},set:e&&function(t){return B(this)[e](t)},configurable:!0,enumerable:!0}};if(r&&(h(Lt,"href",Ft("serialize","setHref")),h(Lt,"origin",Ft("getOrigin")),h(Lt,"protocol",Ft("getProtocol","setProtocol")),h(Lt,"username",Ft("getUsername","setUsername")),h(Lt,"password",Ft("getPassword","setPassword")),h(Lt,"host",Ft("getHost","setHost")),h(Lt,"hostname",Ft("getHostname","setHostname")),h(Lt,"port",Ft("getPort","setPort")),h(Lt,"pathname",Ft("getPathname","setPathname")),h(Lt,"search",Ft("getSearch","setSearch")),h(Lt,"searchParams",Ft("getSearchParams")),h(Lt,"hash",Ft("getHash","setHash"))),u(Lt,"toJSON",(function(){return B(this).serialize()}),{enumerable:!0}),u(Lt,"toString",(function(){return B(this).serialize()}),{enumerable:!0}),I){var jt=I.createObjectURL,Ut=I.revokeObjectURL;jt&&u(zt,"createObjectURL",c(jt,I)),Ut&&u(zt,"revokeObjectURL",c(Ut,I))}C(zt,"URL"),o({global:!0,constructor:!0,forced:!s,sham:!r},{URL:zt})},3296:(t,e,n)=>{"use strict";n(45806)},45781:(t,e,n)=>{"use strict";var i=n(46518),o=n(97751),r=n(22812),s=n(655),a=n(67416),c=o("URL");i({target:"URL",stat:!0,forced:!a},{parse:function(t){var e=r(arguments.length,1),n=s(t),i=e<2||void 0===arguments[1]?void 0:s(arguments[1]);try{return new c(n,i)}catch(t){return null}}})},27208:(t,e,n)=>{"use strict";var i=n(46518),o=n(69565);i({target:"URL",proto:!0,enumerable:!0},{toJSON:function(){return o(URL.prototype.toString,this)}})},84315:(t,e,n)=>{"use strict";n(52675),n(89463),n(66412),n(60193),n(92168),n(2259),n(86964),n(83142),n(83237),n(61833),n(67947),n(31073),n(45700),n(78125),n(20326),n(16280),n(76918),n(30067),n(4294),n(18107),n(28706),n(26835),n(88431),n(33771),n(2008),n(50113),n(48980),n(10838),n(13451),n(46449),n(78350),n(51629),n(23418),n(74423),n(25276),n(64346),n(23792),n(48598),n(8921),n(62062),n(31051),n(44114),n(72712),n(18863),n(94490),n(34782),n(15086),n(26910),n(87478),n(54554),n(9678),n(57145),n(71658),n(93514),n(30237),n(13609),n(11558),n(54743),n(46761),n(11745),n(38309),n(16573),n(78100),n(77936),n(61699),n(59089),n(91191),n(93515),n(1688),n(60739),n(89572),n(23288),n(36456),n(94170),n(48957),n(62010),n(55081),n(33110),n(4731),n(36033),n(47072),n(93153),n(82326),n(36389),n(64444),n(8085),n(77762),n(65070),n(60605),n(39469),n(72152),n(75376),n(56624),n(11367),n(5914),n(78553),n(98690),n(60479),n(70761),n(2892),n(45374),n(25428),n(32637),n(40150),n(59149),n(64601),n(44435),n(87220),n(25843),n(62337),n(9868),n(80630),n(69085),n(59904),n(17427),n(67945),n(84185),n(87607),n(5506),n(52811),n(53921),n(83851),n(81278),n(1480),n(40875),n(77691),n(78347),n(29908),n(94052),n(94003),n(221),n(79432),n(9220),n(7904),n(16348),n(63548),n(93941),n(10287),n(26099),n(16034),n(78459),n(58940),n(3362),n(96167),n(93518),n(9391),n(14628),n(39796),n(60825),n(87411),n(21211),n(40888),n(9065),n(86565),n(32812),n(84634),n(71137),n(30985),n(34268),n(34873),n(15472),n(84864),n(57465),n(27495),n(69479),n(87745),n(90906),n(38781),n(31415),n(17642),n(58004),n(33853),n(45876),n(32475),n(15024),n(31698),n(67357),n(23860),n(21830),n(27337),n(21699),n(42043),n(47764),n(71761),n(28543),n(35701),n(68156),n(85906),n(42781),n(25440),n(79978),n(5746),n(90744),n(11392),n(50375),n(67438),n(42762),n(39202),n(43359),n(89907),n(11898),n(35490),n(5745),n(94298),n(60268),n(69546),n(20781),n(50778),n(89195),n(46276),n(48718),n(16308),n(34594),n(29833),n(46594),n(72107),n(95477),n(21489),n(22134),n(3690),n(61740),n(48140),n(81630),n(72170),n(75044),n(69539),n(31694),n(89955),n(21903),n(91134),n(33206),n(48345),n(44496),n(66651),n(12887),n(19369),n(66812),n(8995),n(52568),n(31575),n(36072),n(88747),n(28845),n(29423),n(57301),n(373),n(86614),n(41405),n(37467),n(44732),n(33684),n(79577),n(88267),n(73772),n(30958),n(2945),n(42207),n(23500),n(62953),n(55815),n(64979),n(79739),n(59848),n(122),n(13611),n(71678),n(76031),n(3296),n(2222),n(45781),n(27208),n(48408),n(14603),n(47566),n(98721),n(19167)},35810:(t,e,n)=>{"use strict";n.d(e,{Al:()=>P,H4:()=>O,Q$:()=>M,R3:()=>w,VL:()=>x,lJ:()=>S,pt:()=>y,ur:()=>L,v7:()=>H});var i=n(35947),o=n(21777),r=n(43627),s=n(71225),a=n(63814),c=n(36117),l=n(44719),u=n(82680),h=(n(87485),n(53334)),d=n(380),p=n(65606),A=n(96763);const f=(0,i.YK)().setApp("@nextcloud/files").detectUser().build();var g=(t=>(t[t.NONE=0]="NONE",t[t.CREATE=4]="CREATE",t[t.READ=1]="READ",t[t.UPDATE=2]="UPDATE",t[t.DELETE=8]="DELETE",t[t.SHARE=16]="SHARE",t[t.ALL=31]="ALL",t))(g||{});const m=["d:getcontentlength","d:getcontenttype","d:getetag","d:getlastmodified","d:creationdate","d:displayname","d:quota-available-bytes","d:resourcetype","nc:has-preview","nc:is-encrypted","nc:mount-type","oc:comments-unread","oc:favorite","oc:fileid","oc:owner-display-name","oc:owner-id","oc:permissions","oc:size"],b={d:"DAV:",nc:"http://nextcloud.org/ns",oc:"http://owncloud.org/ns",ocs:"http://open-collaboration-services.org/ns"},v=function(){return void 0===window._nc_dav_properties&&(window._nc_dav_properties=[...m]),window._nc_dav_properties.map((t=>`<${t} />`)).join(" ")},C=function(){return void 0===window._nc_dav_namespaces&&(window._nc_dav_namespaces={...b}),Object.keys(window._nc_dav_namespaces).map((t=>`xmlns:${t}="${window._nc_dav_namespaces?.[t]}"`)).join(" ")},x=function(){return`\n\t\t\n\t\t\t\n\t\t\t\t${v()}\n\t\t\t\n\t\t`},w=function(t){return`\n\n\t\n\t\t\n\t\t\t\n\t\t\t\t${v()}\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t/files/${(0,o.HW)()?.uid}/\n\t\t\t\tinfinity\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\thttpd/unix-directory\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t0\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t${t}\n\t\t\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t100\n\t\t\t0\n\t\t\n\t\n`};var y=(t=>(t.Folder="folder",t.File="file",t))(y||{});const k=function(t,e){return null!==t.match(e)},B=(t,e)=>{if(t.id&&"number"!=typeof t.id)throw new Error("Invalid id type of value");if(!t.source)throw new Error("Missing mandatory source");try{new URL(t.source)}catch(t){throw new Error("Invalid source format, source must be a valid URL")}if(!t.source.startsWith("http"))throw new Error("Invalid source format, only http(s) is supported");if(t.displayname&&"string"!=typeof t.displayname)throw new Error("Invalid displayname type");if(t.mtime&&!(t.mtime instanceof Date))throw new Error("Invalid mtime type");if(t.crtime&&!(t.crtime instanceof Date))throw new Error("Invalid crtime type");if(!t.mime||"string"!=typeof t.mime||!t.mime.match(/^[-\w.]+\/[-+\w.]+$/gi))throw new Error("Missing or invalid mandatory mime");if("size"in t&&"number"!=typeof t.size&&void 0!==t.size)throw new Error("Invalid size type");if("permissions"in t&&void 0!==t.permissions&&!("number"==typeof t.permissions&&t.permissions>=g.NONE&&t.permissions<=g.ALL))throw new Error("Invalid permissions");if(t.owner&&null!==t.owner&&"string"!=typeof t.owner)throw new Error("Invalid owner type");if(t.attributes&&"object"!=typeof t.attributes)throw new Error("Invalid attributes type");if(t.root&&"string"!=typeof t.root)throw new Error("Invalid root type");if(t.root&&!t.root.startsWith("/"))throw new Error("Root must start with a leading slash");if(t.root&&!t.source.includes(t.root))throw new Error("Root must be part of the source");if(t.root&&k(t.source,e)){const n=t.source.match(e)[0];if(!t.source.includes((0,r.join)(n,t.root)))throw new Error("The root must be relative to the service. e.g /files/emma")}if(t.status&&!Object.values(E).includes(t.status))throw new Error("Status must be a valid NodeStatus")};var E=(t=>(t.NEW="new",t.FAILED="failed",t.LOADING="loading",t.LOCKED="locked",t))(E||{});class _{_data;_attributes;_knownDavService=/(remote|public)\.php\/(web)?dav/i;readonlyAttributes=Object.entries(Object.getOwnPropertyDescriptors(_.prototype)).filter((t=>"function"==typeof t[1].get&&"__proto__"!==t[0])).map((t=>t[0]));handler={set:(t,e,n)=>!this.readonlyAttributes.includes(e)&&Reflect.set(t,e,n),deleteProperty:(t,e)=>!this.readonlyAttributes.includes(e)&&Reflect.deleteProperty(t,e),get:(t,e,n)=>this.readonlyAttributes.includes(e)?(f.warn(`Accessing "Node.attributes.${e}" is deprecated, access it directly on the Node instance.`),Reflect.get(this,e)):Reflect.get(t,e,n)};constructor(t,e){B(t,e||this._knownDavService),this._data={displayname:t.attributes?.displayname,...t,attributes:{}},this._attributes=new Proxy(this._data.attributes,this.handler),this.update(t.attributes??{}),e&&(this._knownDavService=e)}get source(){return this._data.source.replace(/\/$/i,"")}get encodedSource(){const{origin:t}=new URL(this.source);return t+(0,s.O0)(this.source.slice(t.length))}get basename(){return(0,r.basename)(this.source)}get displayname(){return this._data.displayname||this.basename}set displayname(t){this._data.displayname=t}get extension(){return(0,r.extname)(this.source)}get dirname(){if(this.root){let t=this.source;this.isDavRessource&&(t=t.split(this._knownDavService).pop());const e=t.indexOf(this.root),n=this.root.replace(/\/$/,"");return(0,r.dirname)(t.slice(e+n.length)||"/")}const t=new URL(this.source);return(0,r.dirname)(t.pathname)}get mime(){return this._data.mime}get mtime(){return this._data.mtime}set mtime(t){this._data.mtime=t}get crtime(){return this._data.crtime}get size(){return this._data.size}set size(t){this.updateMtime(),this._data.size=t}get attributes(){return this._attributes}get permissions(){return null!==this.owner||this.isDavRessource?void 0!==this._data.permissions?this._data.permissions:g.NONE:g.READ}set permissions(t){this.updateMtime(),this._data.permissions=t}get owner(){return this.isDavRessource?this._data.owner:null}get isDavRessource(){return k(this.source,this._knownDavService)}get root(){return this._data.root?this._data.root.replace(/^(.+)\/$/,"$1"):this.isDavRessource&&(0,r.dirname)(this.source).split(this._knownDavService).pop()||null}get path(){if(this.root){let t=this.source;this.isDavRessource&&(t=t.split(this._knownDavService).pop());const e=t.indexOf(this.root),n=this.root.replace(/\/$/,"");return t.slice(e+n.length)||"/"}return(this.dirname+"/"+this.basename).replace(/\/\//g,"/")}get fileid(){return this._data?.id}get status(){return this._data?.status}set status(t){this._data.status=t}move(t){B({...this._data,source:t},this._knownDavService);const e=this.basename;this._data.source=t,this.displayname===e&&this.basename!==e&&(this.displayname=this.basename),this.updateMtime()}rename(t){if(t.includes("/"))throw new Error("Invalid basename");this.move((0,r.dirname)(this.source)+"/"+t)}updateMtime(){this._data.mtime&&(this._data.mtime=new Date)}update(t){for(const[e,n]of Object.entries(t))try{void 0===n?delete this.attributes[e]:this.attributes[e]=n}catch(t){if(t instanceof TypeError)continue;throw t}}}class I extends _{get type(){return y.File}}class D extends _{constructor(t){super({...t,mime:"httpd/unix-directory"})}get type(){return y.Folder}get extension(){return null}get mime(){return"httpd/unix-directory"}}const S=(0,u.f)()?`/files/${(0,u.G)()}`:`/files/${(0,o.HW)()?.uid}`,T=function(){const t=(0,a.dC)("dav");return(0,u.f)()?t.replace("remote.php","public.php"):t}(),O=function(t=T,e={}){const n=(0,l.UU)(t,{headers:e});function i(t){n.setHeaders({...e,"X-Requested-With":"XMLHttpRequest",requesttoken:t??""})}return(0,o.zo)(i),i((0,o.do)()),(0,l.Gu)().patch("fetch",((t,e)=>{const n=e.headers;return n?.method&&(e.method=n.method,delete n.method),fetch(t,e)})),n},M=(t,e="/",n=S)=>{const i=new AbortController;return new c.CancelablePromise((async(o,r,s)=>{s((()=>i.abort()));try{o((await t.getDirectoryContents(`${n}${e}`,{signal:i.signal,details:!0,data:`\n\t\t\n\t\t\t\n\t\t\t\t${v()}\n\t\t\t\n\t\t\t\n\t\t\t\t1\n\t\t\t\n\t\t`,headers:{method:"REPORT"},includeSelf:!0})).data.filter((t=>t.filename!==e)).map((t=>P(t,n))))}catch(t){r(t)}}))},P=function(t,e=S,n=T){let i=(0,o.HW)()?.uid;if((0,u.f)())i=i??"anonymous";else if(!i)throw new Error("No user id found");const r=t.props,s=function(t=""){let e=g.NONE;return t?((t.includes("C")||t.includes("K"))&&(e|=g.CREATE),t.includes("G")&&(e|=g.READ),(t.includes("W")||t.includes("N")||t.includes("V"))&&(e|=g.UPDATE),t.includes("D")&&(e|=g.DELETE),t.includes("R")&&(e|=g.SHARE),e):e}(r?.permissions),a=String(r?.["owner-id"]||i),c=r.fileid||0,l={id:c,source:`${n}${t.filename}`,mtime:new Date(Date.parse(t.lastmod)),mime:t.mime||"application/octet-stream",displayname:void 0!==r.displayname?String(r.displayname):void 0,size:r?.size||Number.parseInt(r.getcontentlength||"0"),status:c<0?E.FAILED:void 0,permissions:s,owner:a,root:e,attributes:{...t,...r,hasPreview:r?.["has-preview"]}};return delete l.attributes?.props,"file"===t.type?new I(l):new D(l)};Error;const R=["B","KB","MB","GB","TB","PB"],N=["B","KiB","MiB","GiB","TiB","PiB"];function H(t,e=!1,n=!1,i=!1){n=n&&!i,"string"==typeof t&&(t=Number(t));let o=t>0?Math.floor(Math.log(t)/Math.log(i?1e3:1024)):0;o=Math.min((n?N.length:R.length)-1,o);const r=n?N[o]:R[o];let s=(t/Math.pow(i?1e3:1024,o)).toFixed(1);return!0===e&&0===o?("0.0"!==s?"< 1 ":"0 ")+(n?N[1]:R[1]):(s=o<2?parseFloat(s).toFixed(0):parseFloat(s).toLocaleString((0,h.lO)()),s+" "+r)}function z(t){return t instanceof Date?t.toISOString():String(t)}function L(t,e={}){const n={sortingMode:"basename",sortingOrder:"asc",...e};return function(t,e,n){n=n??[];const i=(e=e??[t=>t]).map(((t,e)=>"asc"===(n[e]??"asc")?1:-1)),o=Intl.Collator([(0,h.Z0)(),(0,h.lO)()],{numeric:!0,usage:"sort"});return[...t].sort(((t,n)=>{for(const[r,s]of e.entries()){const e=o.compare(z(s(t)),z(s(n)));if(0!==e)return e*i[r]}return 0}))}(t,[...n.sortFavoritesFirst?[t=>1!==t.attributes?.favorite]:[],...n.sortFoldersFirst?[t=>"folder"!==t.type]:[],..."basename"!==n.sortingMode?[t=>t[n.sortingMode]]:[],t=>{return(e=t.attributes?.displayname||t.basename).lastIndexOf(".")>0?e.slice(0,e.lastIndexOf(".")):e;var e},t=>t.basename],[...n.sortFavoritesFirst?["asc"]:[],...n.sortFoldersFirst?["asc"]:[],..."mtime"===n.sortingMode?["asc"===n.sortingOrder?"desc":"asc"]:[],..."mtime"!==n.sortingMode&&"basename"!==n.sortingMode?[n.sortingOrder]:[],n.sortingOrder,n.sortingOrder])}var F={};!function(t){const e=":A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD",n="["+e+"]["+e+"\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*",i=new RegExp("^"+n+"$");t.isExist=function(t){return void 0!==t},t.isEmptyObject=function(t){return 0===Object.keys(t).length},t.merge=function(t,e,n){if(e){const i=Object.keys(e),o=i.length;for(let r=0;r!1,commentPropName:!1,unpairedTags:[],processEntities:!0,htmlEntities:!1,ignoreDeclaration:!1,ignorePiTags:!1,transformTagName:!1,transformAttributeName:!1,updateTag:function(t,e,n){return t}};j.buildOptions=function(t){return Object.assign({},U,t)},j.defaultOptions=U,!Number.parseInt&&window.parseInt&&(Number.parseInt=window.parseInt),!Number.parseFloat&&window.parseFloat&&(Number.parseFloat=window.parseFloat),new RegExp("([^\\s=]+)\\s*(=\\s*(['\"])([\\s\\S]*?)\\3)?","gm");var W={};function Y(t,e,n){let i;const o={};for(let r=0;r0&&(o[e.textNodeName]=i):void 0!==i&&(o[e.textNodeName]=i),o}function q(t){const e=Object.keys(t);for(let t=0;t`,r=!1;continue}if(c===e.commentPropName){o+=i+`\x3c!--${a[c][0][e.textNodeName]}--\x3e`,r=!0;continue}if("?"===c[0]){const t=Z(a[":@"],e),n="?xml"===c?"":i;let s=a[c][0][e.textNodeName];s=0!==s.length?" "+s:"",o+=n+`<${c}${s}${t}?>`,r=!0;continue}let u=i;""!==u&&(u+=e.indentBy);const h=i+`<${c}${Z(a[":@"],e)}`,d=K(a[c],e,l,u);-1!==e.unpairedTags.indexOf(c)?e.suppressUnpairedNode?o+=h+">":o+=h+"/>":d&&0!==d.length||!e.suppressEmptyNode?d&&d.endsWith(">")?o+=h+`>${d}${i}`:(o+=h+">",d&&""!==i&&(d.includes("/>")||d.includes("`):o+=h+"/>",r=!0}return o}function J(t){const e=Object.keys(t);for(let n=0;n0&&e.processEntities)for(let n=0;n0&&(n="\n"),K(t,e,"",n)},nt={attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,cdataPropName:!1,format:!1,indentBy:" ",suppressEmptyNode:!1,suppressUnpairedNode:!0,suppressBooleanAttributes:!0,tagValueProcessor:function(t,e){return e},attributeValueProcessor:function(t,e){return e},preserveOrder:!1,commentPropName:!1,unpairedTags:[],entities:[{regex:new RegExp("&","g"),val:"&"},{regex:new RegExp(">","g"),val:">"},{regex:new RegExp("<","g"),val:"<"},{regex:new RegExp("'","g"),val:"'"},{regex:new RegExp('"',"g"),val:"""}],processEntities:!0,stopNodes:[],oneListGroup:!1};function it(t){this.options=Object.assign({},nt,t),this.options.ignoreAttributes||this.options.attributesGroupName?this.isAttribute=function(){return!1}:(this.attrPrefixLen=this.options.attributeNamePrefix.length,this.isAttribute=st),this.processTextOrObjNode=ot,this.options.format?(this.indentate=rt,this.tagEndChar=">\n",this.newLine="\n"):(this.indentate=function(){return""},this.tagEndChar=">",this.newLine="")}function ot(t,e,n){const i=this.j2x(t,n+1);return void 0!==t[this.options.textNodeName]&&1===Object.keys(t).length?this.buildTextValNode(t[this.options.textNodeName],e,i.attrStr,n):this.buildObjectNode(i.val,e,i.attrStr,n)}function rt(t){return this.options.indentBy.repeat(t)}function st(t){return!(!t.startsWith(this.options.attributeNamePrefix)||t===this.options.textNodeName)&&t.substr(this.attrPrefixLen)}it.prototype.build=function(t){return this.options.preserveOrder?et(t,this.options):(Array.isArray(t)&&this.options.arrayNodeName&&this.options.arrayNodeName.length>1&&(t={[this.options.arrayNodeName]:t}),this.j2x(t,0).val)},it.prototype.j2x=function(t,e){let n="",i="";for(let o in t)if(Object.prototype.hasOwnProperty.call(t,o))if(void 0===t[o])this.isAttribute(o)&&(i+="");else if(null===t[o])this.isAttribute(o)?i+="":"?"===o[0]?i+=this.indentate(e)+"<"+o+"?"+this.tagEndChar:i+=this.indentate(e)+"<"+o+"/"+this.tagEndChar;else if(t[o]instanceof Date)i+=this.buildTextValNode(t[o],o,"",e);else if("object"!=typeof t[o]){const r=this.isAttribute(o);if(r)n+=this.buildAttrPairStr(r,""+t[o]);else if(o===this.options.textNodeName){let e=this.options.tagValueProcessor(o,""+t[o]);i+=this.replaceEntitiesValue(e)}else i+=this.buildTextValNode(t[o],o,"",e)}else if(Array.isArray(t[o])){const n=t[o].length;let r="",s="";for(let a=0;a"+t+o}},it.prototype.closeTag=function(t){let e="";return-1!==this.options.unpairedTags.indexOf(t)?this.options.suppressUnpairedNode||(e="/"):e=this.options.suppressEmptyNode?"/":`>`+this.newLine;if(!1!==this.options.commentPropName&&e===this.options.commentPropName)return this.indentate(i)+`\x3c!--${t}--\x3e`+this.newLine;if("?"===e[0])return this.indentate(i)+"<"+e+n+"?"+this.tagEndChar;{let o=this.options.tagValueProcessor(e,t);return o=this.replaceEntitiesValue(o),""===o?this.indentate(i)+"<"+e+n+this.closeTag(e)+this.tagEndChar:this.indentate(i)+"<"+e+n+">"+o+"0&&this.options.processEntities)for(let e=0;eA.error("SEMVER",...t):()=>{},ct={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:16,MAX_SAFE_BUILD_LENGTH:250,MAX_SAFE_INTEGER:Number.MAX_SAFE_INTEGER||9007199254740991,RELEASE_TYPES:["major","premajor","minor","preminor","patch","prepatch","prerelease"],SEMVER_SPEC_VERSION:"2.0.0",FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2},lt={exports:{}};!function(t,e){const{MAX_SAFE_COMPONENT_LENGTH:n,MAX_SAFE_BUILD_LENGTH:i,MAX_LENGTH:o}=ct,r=at,s=(e=t.exports={}).re=[],a=e.safeRe=[],c=e.src=[],l=e.t={};let u=0;const h="[a-zA-Z0-9-]",d=[["\\s",1],["\\d",o],[h,i]],p=(t,e,n)=>{const i=(t=>{for(const[e,n]of d)t=t.split(`${e}*`).join(`${e}{0,${n}}`).split(`${e}+`).join(`${e}{1,${n}}`);return t})(e),o=u++;r(t,o,e),l[t]=o,c[o]=e,s[o]=new RegExp(e,n?"g":void 0),a[o]=new RegExp(i,n?"g":void 0)};p("NUMERICIDENTIFIER","0|[1-9]\\d*"),p("NUMERICIDENTIFIERLOOSE","\\d+"),p("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${h}*`),p("MAINVERSION",`(${c[l.NUMERICIDENTIFIER]})\\.(${c[l.NUMERICIDENTIFIER]})\\.(${c[l.NUMERICIDENTIFIER]})`),p("MAINVERSIONLOOSE",`(${c[l.NUMERICIDENTIFIERLOOSE]})\\.(${c[l.NUMERICIDENTIFIERLOOSE]})\\.(${c[l.NUMERICIDENTIFIERLOOSE]})`),p("PRERELEASEIDENTIFIER",`(?:${c[l.NUMERICIDENTIFIER]}|${c[l.NONNUMERICIDENTIFIER]})`),p("PRERELEASEIDENTIFIERLOOSE",`(?:${c[l.NUMERICIDENTIFIERLOOSE]}|${c[l.NONNUMERICIDENTIFIER]})`),p("PRERELEASE",`(?:-(${c[l.PRERELEASEIDENTIFIER]}(?:\\.${c[l.PRERELEASEIDENTIFIER]})*))`),p("PRERELEASELOOSE",`(?:-?(${c[l.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${c[l.PRERELEASEIDENTIFIERLOOSE]})*))`),p("BUILDIDENTIFIER",`${h}+`),p("BUILD",`(?:\\+(${c[l.BUILDIDENTIFIER]}(?:\\.${c[l.BUILDIDENTIFIER]})*))`),p("FULLPLAIN",`v?${c[l.MAINVERSION]}${c[l.PRERELEASE]}?${c[l.BUILD]}?`),p("FULL",`^${c[l.FULLPLAIN]}$`),p("LOOSEPLAIN",`[v=\\s]*${c[l.MAINVERSIONLOOSE]}${c[l.PRERELEASELOOSE]}?${c[l.BUILD]}?`),p("LOOSE",`^${c[l.LOOSEPLAIN]}$`),p("GTLT","((?:<|>)?=?)"),p("XRANGEIDENTIFIERLOOSE",`${c[l.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`),p("XRANGEIDENTIFIER",`${c[l.NUMERICIDENTIFIER]}|x|X|\\*`),p("XRANGEPLAIN",`[v=\\s]*(${c[l.XRANGEIDENTIFIER]})(?:\\.(${c[l.XRANGEIDENTIFIER]})(?:\\.(${c[l.XRANGEIDENTIFIER]})(?:${c[l.PRERELEASE]})?${c[l.BUILD]}?)?)?`),p("XRANGEPLAINLOOSE",`[v=\\s]*(${c[l.XRANGEIDENTIFIERLOOSE]})(?:\\.(${c[l.XRANGEIDENTIFIERLOOSE]})(?:\\.(${c[l.XRANGEIDENTIFIERLOOSE]})(?:${c[l.PRERELEASELOOSE]})?${c[l.BUILD]}?)?)?`),p("XRANGE",`^${c[l.GTLT]}\\s*${c[l.XRANGEPLAIN]}$`),p("XRANGELOOSE",`^${c[l.GTLT]}\\s*${c[l.XRANGEPLAINLOOSE]}$`),p("COERCEPLAIN",`(^|[^\\d])(\\d{1,${n}})(?:\\.(\\d{1,${n}}))?(?:\\.(\\d{1,${n}}))?`),p("COERCE",`${c[l.COERCEPLAIN]}(?:$|[^\\d])`),p("COERCEFULL",c[l.COERCEPLAIN]+`(?:${c[l.PRERELEASE]})?(?:${c[l.BUILD]})?(?:$|[^\\d])`),p("COERCERTL",c[l.COERCE],!0),p("COERCERTLFULL",c[l.COERCEFULL],!0),p("LONETILDE","(?:~>?)"),p("TILDETRIM",`(\\s*)${c[l.LONETILDE]}\\s+`,!0),e.tildeTrimReplace="$1~",p("TILDE",`^${c[l.LONETILDE]}${c[l.XRANGEPLAIN]}$`),p("TILDELOOSE",`^${c[l.LONETILDE]}${c[l.XRANGEPLAINLOOSE]}$`),p("LONECARET","(?:\\^)"),p("CARETTRIM",`(\\s*)${c[l.LONECARET]}\\s+`,!0),e.caretTrimReplace="$1^",p("CARET",`^${c[l.LONECARET]}${c[l.XRANGEPLAIN]}$`),p("CARETLOOSE",`^${c[l.LONECARET]}${c[l.XRANGEPLAINLOOSE]}$`),p("COMPARATORLOOSE",`^${c[l.GTLT]}\\s*(${c[l.LOOSEPLAIN]})$|^$`),p("COMPARATOR",`^${c[l.GTLT]}\\s*(${c[l.FULLPLAIN]})$|^$`),p("COMPARATORTRIM",`(\\s*)${c[l.GTLT]}\\s*(${c[l.LOOSEPLAIN]}|${c[l.XRANGEPLAIN]})`,!0),e.comparatorTrimReplace="$1$2$3",p("HYPHENRANGE",`^\\s*(${c[l.XRANGEPLAIN]})\\s+-\\s+(${c[l.XRANGEPLAIN]})\\s*$`),p("HYPHENRANGELOOSE",`^\\s*(${c[l.XRANGEPLAINLOOSE]})\\s+-\\s+(${c[l.XRANGEPLAINLOOSE]})\\s*$`),p("STAR","(<|>)?=?\\s*\\*"),p("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$"),p("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")}(lt,lt.exports);var ut=lt.exports;Object.freeze({loose:!0}),Object.freeze({});const ht=/^[0-9]+$/,dt=(t,e)=>{const n=ht.test(t),i=ht.test(e);return n&&i&&(t=+t,e=+e),t===e?0:n&&!i?-1:i&&!n?1:tdt(e,t)};const{MAX_LENGTH:At,MAX_SAFE_INTEGER:ft}=ct,{safeRe:gt,t:mt}=ut,{compareIdentifiers:bt}=pt;d.m},4523:(t,e,n)=>{"use strict";n.r(e),n.d(e,{VERSION:()=>o,after:()=>Pe,all:()=>tn,allKeys:()=>gt,any:()=>en,assign:()=>Pt,before:()=>Re,bind:()=>we,bindAll:()=>Be,chain:()=>be,chunk:()=>zn,clone:()=>zt,collect:()=>Xe,compact:()=>_n,compose:()=>Me,constant:()=>Z,contains:()=>nn,countBy:()=>mn,create:()=>Ht,debounce:()=>Se,default:()=>Wn,defaults:()=>Rt,defer:()=>Ie,delay:()=>_e,detect:()=>qe,difference:()=>Dn,drop:()=>Bn,each:()=>Ge,escape:()=>se,every:()=>tn,extend:()=>Mt,extendOwn:()=>Pt,filter:()=>Ze,find:()=>qe,findIndex:()=>Le,findKey:()=>He,findLastIndex:()=>Fe,findWhere:()=>Qe,first:()=>kn,flatten:()=>In,foldl:()=>Ke,foldr:()=>Je,forEach:()=>Ge,functions:()=>Tt,get:()=>Wt,groupBy:()=>fn,has:()=>Yt,head:()=>kn,identity:()=>qt,include:()=>nn,includes:()=>nn,indexBy:()=>gn,indexOf:()=>We,initial:()=>yn,inject:()=>Ke,intersection:()=>Mn,invert:()=>St,invoke:()=>on,isArguments:()=>V,isArray:()=>Q,isArrayBuffer:()=>H,isBoolean:()=>I,isDataView:()=>q,isDate:()=>M,isElement:()=>D,isEmpty:()=>ct,isEqual:()=>ft,isError:()=>R,isFinite:()=>K,isFunction:()=>F,isMap:()=>kt,isMatch:()=>lt,isNaN:()=>J,isNull:()=>E,isNumber:()=>O,isObject:()=>B,isRegExp:()=>P,isSet:()=>Et,isString:()=>T,isSymbol:()=>N,isTypedArray:()=>ot,isUndefined:()=>_,isWeakMap:()=>Bt,isWeakSet:()=>_t,iteratee:()=>Kt,keys:()=>at,last:()=>En,lastIndexOf:()=>Ye,map:()=>Xe,mapObject:()=>Zt,matcher:()=>Qt,matches:()=>Qt,max:()=>an,memoize:()=>Ee,methods:()=>Tt,min:()=>cn,mixin:()=>Fn,negate:()=>Oe,noop:()=>$t,now:()=>ie,object:()=>Nn,omit:()=>wn,once:()=>Ne,pairs:()=>Dt,partial:()=>xe,partition:()=>bn,pick:()=>xn,pluck:()=>rn,property:()=>Gt,propertyOf:()=>te,random:()=>ne,range:()=>Hn,reduce:()=>Ke,reduceRight:()=>Je,reject:()=>$e,rest:()=>Bn,restArguments:()=>k,result:()=>fe,sample:()=>hn,select:()=>Ze,shuffle:()=>dn,size:()=>vn,some:()=>en,sortBy:()=>pn,sortedIndex:()=>je,tail:()=>Bn,take:()=>kn,tap:()=>Lt,template:()=>Ae,templateSettings:()=>ce,throttle:()=>De,times:()=>ee,toArray:()=>un,toPath:()=>Ft,transpose:()=>Pn,unescape:()=>ae,union:()=>On,uniq:()=>Tn,unique:()=>Tn,uniqueId:()=>me,unzip:()=>Pn,values:()=>It,where:()=>sn,without:()=>Sn,wrap:()=>Te,zip:()=>Rn});var i={};n.r(i),n.d(i,{VERSION:()=>o,after:()=>Pe,all:()=>tn,allKeys:()=>gt,any:()=>en,assign:()=>Pt,before:()=>Re,bind:()=>we,bindAll:()=>Be,chain:()=>be,chunk:()=>zn,clone:()=>zt,collect:()=>Xe,compact:()=>_n,compose:()=>Me,constant:()=>Z,contains:()=>nn,countBy:()=>mn,create:()=>Ht,debounce:()=>Se,default:()=>jn,defaults:()=>Rt,defer:()=>Ie,delay:()=>_e,detect:()=>qe,difference:()=>Dn,drop:()=>Bn,each:()=>Ge,escape:()=>se,every:()=>tn,extend:()=>Mt,extendOwn:()=>Pt,filter:()=>Ze,find:()=>qe,findIndex:()=>Le,findKey:()=>He,findLastIndex:()=>Fe,findWhere:()=>Qe,first:()=>kn,flatten:()=>In,foldl:()=>Ke,foldr:()=>Je,forEach:()=>Ge,functions:()=>Tt,get:()=>Wt,groupBy:()=>fn,has:()=>Yt,head:()=>kn,identity:()=>qt,include:()=>nn,includes:()=>nn,indexBy:()=>gn,indexOf:()=>We,initial:()=>yn,inject:()=>Ke,intersection:()=>Mn,invert:()=>St,invoke:()=>on,isArguments:()=>V,isArray:()=>Q,isArrayBuffer:()=>H,isBoolean:()=>I,isDataView:()=>q,isDate:()=>M,isElement:()=>D,isEmpty:()=>ct,isEqual:()=>ft,isError:()=>R,isFinite:()=>K,isFunction:()=>F,isMap:()=>kt,isMatch:()=>lt,isNaN:()=>J,isNull:()=>E,isNumber:()=>O,isObject:()=>B,isRegExp:()=>P,isSet:()=>Et,isString:()=>T,isSymbol:()=>N,isTypedArray:()=>ot,isUndefined:()=>_,isWeakMap:()=>Bt,isWeakSet:()=>_t,iteratee:()=>Kt,keys:()=>at,last:()=>En,lastIndexOf:()=>Ye,map:()=>Xe,mapObject:()=>Zt,matcher:()=>Qt,matches:()=>Qt,max:()=>an,memoize:()=>Ee,methods:()=>Tt,min:()=>cn,mixin:()=>Fn,negate:()=>Oe,noop:()=>$t,now:()=>ie,object:()=>Nn,omit:()=>wn,once:()=>Ne,pairs:()=>Dt,partial:()=>xe,partition:()=>bn,pick:()=>xn,pluck:()=>rn,property:()=>Gt,propertyOf:()=>te,random:()=>ne,range:()=>Hn,reduce:()=>Ke,reduceRight:()=>Je,reject:()=>$e,rest:()=>Bn,restArguments:()=>k,result:()=>fe,sample:()=>hn,select:()=>Ze,shuffle:()=>dn,size:()=>vn,some:()=>en,sortBy:()=>pn,sortedIndex:()=>je,tail:()=>Bn,take:()=>kn,tap:()=>Lt,template:()=>Ae,templateSettings:()=>ce,throttle:()=>De,times:()=>ee,toArray:()=>un,toPath:()=>Ft,transpose:()=>Pn,unescape:()=>ae,union:()=>On,uniq:()=>Tn,unique:()=>Tn,uniqueId:()=>me,unzip:()=>Pn,values:()=>It,where:()=>sn,without:()=>Sn,wrap:()=>Te,zip:()=>Rn});var o="1.13.7",r="object"==typeof self&&self.self===self&&self||"object"==typeof global&&global.global===global&&global||Function("return this")()||{},s=Array.prototype,a=Object.prototype,c="undefined"!=typeof Symbol?Symbol.prototype:null,l=s.push,u=s.slice,h=a.toString,d=a.hasOwnProperty,p="undefined"!=typeof ArrayBuffer,A="undefined"!=typeof DataView,f=Array.isArray,g=Object.keys,m=Object.create,b=p&&ArrayBuffer.isView,v=isNaN,C=isFinite,x=!{toString:null}.propertyIsEnumerable("toString"),w=["valueOf","isPrototypeOf","toString","propertyIsEnumerable","hasOwnProperty","toLocaleString"],y=Math.pow(2,53)-1;function k(t,e){return e=null==e?t.length-1:+e,function(){for(var n=Math.max(arguments.length-e,0),i=Array(n),o=0;o=0&&n<=y}}function tt(t){return function(e){return null==e?void 0:e[t]}}const et=tt("byteLength"),nt=$(et);var it=/\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\]/;const ot=p?function(t){return b?b(t)&&!q(t):nt(t)&&it.test(h.call(t))}:Z(!1),rt=tt("length");function st(t,e){e=function(t){for(var e={},n=t.length,i=0;i":">",'"':""","'":"'","`":"`"},se=oe(re),ae=oe(St(re)),ce=ut.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var le=/(.)^/,ue={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},he=/\\|'|\r|\n|\u2028|\u2029/g;function de(t){return"\\"+ue[t]}var pe=/^\s*(\w|\$)+\s*$/;function Ae(t,e,n){!e&&n&&(e=n),e=Rt({},e,ut.templateSettings);var i=RegExp([(e.escape||le).source,(e.interpolate||le).source,(e.evaluate||le).source].join("|")+"|$","g"),o=0,r="__p+='";t.replace(i,(function(e,n,i,s,a){return r+=t.slice(o,a).replace(he,de),o=a+e.length,n?r+="'+\n((__t=("+n+"))==null?'':_.escape(__t))+\n'":i?r+="'+\n((__t=("+i+"))==null?'':__t)+\n'":s&&(r+="';\n"+s+"\n__p+='"),e})),r+="';\n";var s,a=e.variable;if(a){if(!pe.test(a))throw new Error("variable is not a bare identifier: "+a)}else r="with(obj||{}){\n"+r+"}\n",a="obj";r="var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\n"+r+"return __p;\n";try{s=new Function(a,"_",r)}catch(t){throw t.source=r,t}var c=function(t){return s.call(this,t,ut)};return c.source="function("+a+"){\n"+r+"}",c}function fe(t,e,n){var i=(e=jt(e)).length;if(!i)return F(n)?n.call(t):n;for(var o=0;o1)ke(a,e-1,n,i),o=i.length;else for(var c=0,l=a.length;ce?(i&&(clearTimeout(i),i=null),a=l,s=t.apply(o,r),i||(o=r=null)):i||!1===n.trailing||(i=setTimeout(c,u)),s};return l.cancel=function(){clearTimeout(i),a=0,i=o=r=null},l}function Se(t,e,n){var i,o,r,s,a,c=function(){var l=ie()-o;e>l?i=setTimeout(c,e-l):(i=null,n||(s=t.apply(a,r)),i||(r=a=null))},l=k((function(l){return a=this,r=l,o=ie(),i||(i=setTimeout(c,e),n&&(s=t.apply(a,r))),s}));return l.cancel=function(){clearTimeout(i),i=r=a=null},l}function Te(t,e){return xe(e,t)}function Oe(t){return function(){return!t.apply(this,arguments)}}function Me(){var t=arguments,e=t.length-1;return function(){for(var n=e,i=t[e].apply(this,arguments);n--;)i=t[n].call(this,i);return i}}function Pe(t,e){return function(){if(--t<1)return e.apply(this,arguments)}}function Re(t,e){var n;return function(){return--t>0&&(n=e.apply(this,arguments)),t<=1&&(e=null),n}}const Ne=xe(Re,2);function He(t,e,n){e=Jt(e,n);for(var i,o=at(t),r=0,s=o.length;r0?0:o-1;r>=0&&r0?s=r>=0?r:Math.max(r+a,s):a=r>=0?Math.min(r+1,a):r+a+1;else if(n&&r&&a)return i[r=n(i,o)]===o?r:-1;if(o!=o)return(r=e(u.call(i,s,a),J))>=0?r+s:-1;for(r=t>0?s:a-1;r>=0&&r=3;return function(e,n,i,o){var r=!ye(e)&&at(e),s=(r||e).length,a=t>0?0:s-1;for(o||(i=e[r?r[a]:a],a+=t);a>=0&&a=0}const on=k((function(t,e,n){var i,o;return F(e)?o=e:(e=jt(e),i=e.slice(0,-1),e=e[e.length-1]),Xe(t,(function(t){var r=o;if(!r){if(i&&i.length&&(t=Ut(t,i)),null==t)return;r=t[e]}return null==r?r:r.apply(t,n)}))}));function rn(t,e){return Xe(t,Gt(e))}function sn(t,e){return Ze(t,Qt(e))}function an(t,e,n){var i,o,r=-1/0,s=-1/0;if(null==e||"number"==typeof e&&"object"!=typeof t[0]&&null!=t)for(var a=0,c=(t=ye(t)?t:It(t)).length;ar&&(r=i);else e=Jt(e,n),Ge(t,(function(t,n,i){((o=e(t,n,i))>s||o===-1/0&&r===-1/0)&&(r=t,s=o)}));return r}function cn(t,e,n){var i,o,r=1/0,s=1/0;if(null==e||"number"==typeof e&&"object"!=typeof t[0]&&null!=t)for(var a=0,c=(t=ye(t)?t:It(t)).length;ai||void 0===n)return 1;if(n1&&(i=Xt(i,e[1])),e=gt(t)):(i=Cn,e=ke(e,!1,!1),t=Object(t));for(var o=0,r=e.length;o1&&(n=e[1])):(e=Xe(ke(e,!1,!1),String),i=function(t,n){return!nn(e,n)}),xn(t,i,n)}));function yn(t,e,n){return u.call(t,0,Math.max(0,t.length-(null==e||n?1:e)))}function kn(t,e,n){return null==t||t.length<1?null==e||n?void 0:[]:null==e||n?t[0]:yn(t,t.length-e)}function Bn(t,e,n){return u.call(t,null==e||n?1:e)}function En(t,e,n){return null==t||t.length<1?null==e||n?void 0:[]:null==e||n?t[t.length-1]:Bn(t,Math.max(0,t.length-e))}function _n(t){return Ze(t,Boolean)}function In(t,e){return ke(t,e,!1)}const Dn=k((function(t,e){return e=ke(e,!0,!0),Ze(t,(function(t){return!nn(e,t)}))})),Sn=k((function(t,e){return Dn(t,e)}));function Tn(t,e,n,i){I(e)||(i=n,n=e,e=!1),null!=n&&(n=Jt(n,i));for(var o=[],r=[],s=0,a=rt(t);s{if(!n){var r=1/0;for(u=0;u=o)&&Object.keys(a.O).every((t=>a.O[t](n[c])))?n.splice(c--,1):(s=!1,o0&&e[u-1][2]>o;u--)e[u]=e[u-1];e[u]=[n,i,o]},a.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return a.d(e,{a:e}),e},a.d=(t,e)=>{for(var n in e)a.o(e,n)&&!a.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},a.f={},a.e=t=>Promise.all(Object.keys(a.f).reduce(((e,n)=>(a.f[n](t,e),e)),[])),a.u=t=>t+"-"+t+".js?v="+{802:"eddac441912aee9d7aa8",1642:"0e50a2b32d2d64b50afa",9291:"077955af818a227340aa"}[t],a.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),a.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),i={},o="nextcloud:",a.l=(t,e,n,r)=>{if(i[t])i[t].push(e);else{var s,c;if(void 0!==n)for(var l=document.getElementsByTagName("script"),u=0;u{s.onerror=s.onload=null,clearTimeout(p);var o=i[t];if(delete i[t],s.parentNode&&s.parentNode.removeChild(s),o&&o.forEach((t=>t(n))),e)return e(n)},p=setTimeout(d.bind(null,void 0,{type:"timeout",target:s}),12e4);s.onerror=d.bind(null,s.onerror),s.onload=d.bind(null,s.onload),c&&document.head.appendChild(s)}},a.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},a.nmd=t=>(t.paths=[],t.children||(t.children=[]),t),a.j=2228,(()=>{var t;a.g.importScripts&&(t=a.g.location+"");var e=a.g.document;if(!t&&e&&(e.currentScript&&"SCRIPT"===e.currentScript.tagName.toUpperCase()&&(t=e.currentScript.src),!t)){var n=e.getElementsByTagName("script");if(n.length)for(var i=n.length-1;i>-1&&(!t||!/^http(s?):/.test(t));)t=n[i--].src}if(!t)throw new Error("Automatic publicPath is not supported in this browser");t=t.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),a.p=t})(),(()=>{a.b=document.baseURI||self.location.href;var t={2228:0};a.f.j=(e,n)=>{var i=a.o(t,e)?t[e]:void 0;if(0!==i)if(i)n.push(i[2]);else{var o=new Promise(((n,o)=>i=t[e]=[n,o]));n.push(i[2]=o);var r=a.p+a.u(e),s=new Error;a.l(r,(n=>{if(a.o(t,e)&&(0!==(i=t[e])&&(t[e]=void 0),i)){var o=n&&("load"===n.type?"missing":n.type),r=n&&n.target&&n.target.src;s.message="Loading chunk "+e+" failed.\n("+o+": "+r+")",s.name="ChunkLoadError",s.type=o,s.request=r,i[1](s)}}),"chunk-"+e,e)}},a.O.j=e=>0===t[e];var e=(e,n)=>{var i,o,r=n[0],s=n[1],c=n[2],l=0;if(r.some((e=>0!==t[e]))){for(i in s)a.o(s,i)&&(a.m[i]=s[i]);if(c)var u=c(a)}for(e&&e(n);la(17036)));c=a.O(c)})(); +//# sourceMappingURL=core-main.js.map?v=109e40c9b809ceb842a9 \ No newline at end of file diff --git a/dist/core-main.js.map b/dist/core-main.js.map index 1b43295aefdb9..6685569b97e01 100644 --- a/dist/core-main.js.map +++ b/dist/core-main.js.map @@ -1 +1 @@ -{"version":3,"file":"core-main.js?v=b146ec0bb883fea3e3c0","mappings":"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AAK,EAAS,KAAK,EAAS,KAAK,EAAS,KAAK,EAAS,KAAK,EAAS,KAAK,IAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,IAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,IAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,KAAK,EAAS,KAAK,EAAS,KAAK,EAAS,KAAK,IAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,IAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,IAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,IAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,IAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,IAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,IAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,IAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,KAAK,EAAS,KAAK,IAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,IAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,KAAK,EAAS,KAAK,IAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,KAAK,EAAS,KAAK,EAAS,KAAK,IAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,IAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,IAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,IAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,IAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,KAAK,IAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,IAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,KAAK,IAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,IAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,IAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,IAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,IAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,KAAK,EAAS,KAAK,EAAS,KAAK,EAAS,KAAK,EAAS,KAAK,EAAS,KAAK,EAAS,KAAK,EAAS,KAAK,EAAS,KAAK,IAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,IAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,IAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,KAAK,EAAS,KAAK,IAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,IAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,IAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,IAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,KAAK,IAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,IAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,IAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,IAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,KAAK,IAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,IAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,KAAK,IAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,KAAK,EAAS,KAAK,EAAS,KAAK,IAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,IAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,IAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,IAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,IAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,KAAK,IAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,IAAI,EAAS,I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ACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,MACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,MACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,MACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,MACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,MACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,MACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,MACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,MACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,KACR,EAAQ,OACR,EAAQ,MACR,EAAQ,MACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,MACR,EAAQ,OACR,EAAQ,OACR,EAAQ,MACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,MACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,O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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/load script","webpack:///nextcloud/core/src/OC/notification.js","webpack:///nextcloud/core/src/OC/xhr-error.js","webpack:///nextcloud/core/src/OC/apps.js","webpack:///nextcloud/core/src/OCP/appconfig.js","webpack:///nextcloud/core/src/OC/appconfig.js","webpack:///nextcloud/core/src/OC/appswebroots.js","webpack:///nextcloud/core/src/OC/backbone-webdav.js","webpack:///nextcloud/core/src/OC/backbone.js","webpack:///nextcloud/core/src/OC/query-string.js","webpack:///nextcloud/core/src/OC/config.js","webpack:///nextcloud/core/src/OC/currentuser.js","webpack:///nextcloud/core/src/OC/dialogs.js","webpack:///nextcloud/core/src/OC/requesttoken.js","webpack:///nextcloud/core/src/OC/eventsource.js","webpack:///nextcloud/core/src/OC/menu.js","webpack:///nextcloud/core/src/OC/constants.js","webpack:///nextcloud/core/src/OC/admin.js","webpack:///nextcloud/core/src/OC/l10n.js","webpack:///nextcloud/core/src/OC/routing.js","webpack:///nextcloud/core/src/OC/msg.js","webpack:///nextcloud/core/src/OC/password-confirmation.js","webpack:///nextcloud/core/src/OC/plugins.js","webpack:///nextcloud/core/src/OC/theme.js","webpack:///nextcloud/core/src/OC/util-history.js","webpack:///nextcloud/core/src/OC/util.js","webpack:///nextcloud/core/src/OC/debug.js","webpack:///nextcloud/core/src/OC/webroot.js","webpack:///nextcloud/core/src/OC/index.js","webpack:///nextcloud/core/src/OC/capabilities.js","webpack:///nextcloud/core/src/OC/host.js","webpack:///nextcloud/core/src/OC/get_set.js","webpack:///nextcloud/core/src/OC/navigation.js","webpack:///nextcloud/core/src/session-heartbeat.js","webpack://nextcloud/./core/src/views/ContactsMenu.vue?f71b","webpack:///nextcloud/node_modules/vue-material-design-icons/Contacts.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/Contacts.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/Contacts.vue?4000","webpack:///nextcloud/node_modules/vue-material-design-icons/Contacts.vue?vue&type=template&id=38706835","webpack:///nextcloud/core/src/components/ContactsMenu/Contact.vue","webpack:///nextcloud/core/src/components/ContactsMenu/Contact.vue?vue&type=script&lang=js","webpack://nextcloud/./core/src/components/ContactsMenu/Contact.vue?2ea4","webpack://nextcloud/./core/src/components/ContactsMenu/Contact.vue?217f","webpack://nextcloud/./core/src/components/ContactsMenu/Contact.vue?8e49","webpack:///nextcloud/core/src/logger.js","webpack:///nextcloud/core/src/mixins/Nextcloud.js","webpack:///nextcloud/core/src/views/ContactsMenu.vue","webpack:///nextcloud/core/src/views/ContactsMenu.vue?vue&type=script&lang=js","webpack://nextcloud/./core/src/views/ContactsMenu.vue?bbcb","webpack://nextcloud/./core/src/views/ContactsMenu.vue?1de5","webpack:///nextcloud/core/src/components/AppMenu.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/Circle.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/Circle.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/Circle.vue?4490","webpack:///nextcloud/node_modules/vue-material-design-icons/Circle.vue?vue&type=template&id=92ac0c26","webpack:///nextcloud/core/src/components/AppMenuIcon.vue?vue&type=script&setup=true&lang=ts","webpack:///nextcloud/core/src/components/AppMenuIcon.vue","webpack://nextcloud/./core/src/components/AppMenuIcon.vue?12a3","webpack://nextcloud/./core/src/components/AppMenuIcon.vue?1caa","webpack:///nextcloud/core/src/components/AppMenuEntry.vue?vue&type=script&setup=true&lang=ts","webpack:///nextcloud/core/src/components/AppMenuEntry.vue","webpack://nextcloud/./core/src/components/AppMenuEntry.vue?1021","webpack://nextcloud/./core/src/components/AppMenuEntry.vue?9257","webpack://nextcloud/./core/src/components/AppMenuEntry.vue?d04a","webpack:///nextcloud/core/src/components/AppMenu.vue?vue&type=script&lang=ts","webpack://nextcloud/./core/src/components/AppMenu.vue?7b0b","webpack://nextcloud/./core/src/components/AppMenu.vue?95cf","webpack:///nextcloud/core/src/components/AccountMenu/AccountMenuProfileEntry.vue","webpack:///nextcloud/core/src/components/AccountMenu/AccountMenuProfileEntry.vue?vue&type=script&lang=ts","webpack://nextcloud/./core/src/components/AccountMenu/AccountMenuProfileEntry.vue?1cd5","webpack:///nextcloud/core/src/components/AccountMenu/AccountMenuEntry.vue","webpack:///nextcloud/core/src/components/AccountMenu/AccountMenuEntry.vue?vue&type=script&lang=js","webpack://nextcloud/./core/src/components/AccountMenu/AccountMenuEntry.vue?43ac","webpack://nextcloud/./core/src/components/AccountMenu/AccountMenuEntry.vue?d55f","webpack://nextcloud/./core/src/components/AccountMenu/AccountMenuEntry.vue?7210","webpack:///nextcloud/core/src/views/AccountMenu.vue","webpack:///nextcloud/apps/user_status/src/services/statusOptionsService.js","webpack:///nextcloud/core/src/views/AccountMenu.vue?vue&type=script&lang=ts","webpack://nextcloud/./core/src/views/AccountMenu.vue?268d","webpack://nextcloud/./core/src/views/AccountMenu.vue?8823","webpack:///nextcloud/core/src/utils/xhr-request.js","webpack:///nextcloud/core/src/init.js","webpack:///nextcloud/core/src/components/MainMenu.js","webpack:///nextcloud/core/src/components/UserMenu.js","webpack:///nextcloud/core/src/components/ContactsMenu.js","webpack://nextcloud/./node_modules/jquery-ui-dist/jquery-ui.css?17d5","webpack://nextcloud/./node_modules/jquery-ui-dist/jquery-ui.theme.css?4a7b","webpack://nextcloud/./node_modules/select2/select2.css?b214","webpack://nextcloud/./node_modules/strengthify/strengthify.css?eaf5","webpack:///nextcloud/core/src/OCP/comments.js","webpack:///nextcloud/core/src/OCP/whatsnew.js","webpack:///nextcloud/core/src/OCP/accessibility.js","webpack:///nextcloud/core/src/OCP/collaboration.js","webpack:///nextcloud/core/src/OCP/loader.js","webpack:///nextcloud/core/src/OCP/toast.js","webpack:///nextcloud/core/src/OCP/index.js","webpack:///nextcloud/core/src/globals.js","webpack:///nextcloud/core/src/OCA/index.js","webpack:///nextcloud/core/src/jquery/avatar.js","webpack:///nextcloud/core/src/Util/a11y.js","webpack:///nextcloud/core/src/jquery/contactsmenu.js","webpack:///nextcloud/core/src/jquery/exists.js","webpack:///nextcloud/core/src/jquery/filterattr.js","webpack:///nextcloud/core/src/jquery/ocdialog.js","webpack:///nextcloud/core/src/jquery/octemplate.js","webpack:///nextcloud/core/src/jquery/placeholder.js","webpack:///nextcloud/core/src/jquery/requesttoken.js","webpack:///nextcloud/core/src/jquery/selectrange.js","webpack:///nextcloud/core/src/jquery/showpassword.js","webpack:///nextcloud/core/src/jquery/ui-fixes.js","webpack://nextcloud/./core/src/jquery/css/jquery-ui-fixes.scss?a4c2","webpack://nextcloud/./core/src/jquery/css/jquery.ocdialog.scss?5718","webpack:///nextcloud/core/src/jquery/index.js","webpack:///nextcloud/core/src/main.js","webpack:///nextcloud/node_modules/backbone/backbone.js","webpack:///nextcloud/node_modules/blueimp-md5/js/md5.js","webpack:///nextcloud/node_modules/clipboard/dist/clipboard.js","webpack:///nextcloud/node_modules/jquery-ui-dist/jquery-ui.css","webpack:///nextcloud/node_modules/jquery-ui-dist/jquery-ui.theme.css","webpack:///nextcloud/core/src/jquery/css/jquery-ui-fixes.scss","webpack:///nextcloud/core/src/jquery/css/jquery.ocdialog.scss","webpack:///nextcloud/node_modules/select2/select2.css","webpack:///nextcloud/node_modules/strengthify/strengthify.css","webpack:///nextcloud/core/src/components/AccountMenu/AccountMenuEntry.vue?vue&type=style&index=0&id=2e0a74a6&prod&lang=scss&scoped=true","webpack:///nextcloud/core/src/components/AppMenu.vue?vue&type=style&index=0&id=7661a89b&prod&scoped=true&lang=scss","webpack:///nextcloud/core/src/components/AppMenuEntry.vue?vue&type=style&index=0&id=1c485052&prod&scoped=true&lang=scss","webpack:///nextcloud/core/src/components/AppMenuEntry.vue?vue&type=style&index=1&id=1c485052&prod&lang=scss","webpack:///nextcloud/core/src/components/AppMenuIcon.vue?vue&type=style&index=0&id=e7078f90&prod&scoped=true&lang=scss","webpack:///nextcloud/core/src/components/ContactsMenu/Contact.vue?vue&type=style&index=0&id=97ebdcaa&prod&scoped=true&lang=scss","webpack:///nextcloud/core/src/views/AccountMenu.vue?vue&type=style&index=0&id=a886d77a&prod&lang=scss&scoped=true","webpack:///nextcloud/core/src/views/ContactsMenu.vue?vue&type=style&index=0&id=5cad18ba&prod&lang=scss&scoped=true","webpack:///nextcloud/node_modules/davclient.js/lib/client.js","webpack:///nextcloud/core/src/jquery/contactsmenu/jquery_entry.handlebars","webpack:///nextcloud/node_modules/jquery-ui-dist/jquery-ui.js","webpack:///nextcloud/node_modules/moment/locale|sync|/^\\.\\/.*$","webpack:///nextcloud/node_modules/regenerator-runtime/runtime.js","webpack:///nextcloud/node_modules/select2/select2.js","webpack:///nextcloud/node_modules/snap.js/dist/snap.js","webpack:///nextcloud/node_modules/strengthify/jquery.strengthify.js","webpack:///nextcloud/node_modules/core-js/internals/a-constructor.js","webpack:///nextcloud/node_modules/core-js/internals/a-possible-prototype.js","webpack:///nextcloud/node_modules/core-js/internals/a-set.js","webpack:///nextcloud/node_modules/core-js/internals/add-to-unscopables.js","webpack:///nextcloud/node_modules/core-js/internals/an-instance.js","webpack:///nextcloud/node_modules/core-js/internals/array-buffer-basic-detection.js","webpack:///nextcloud/node_modules/core-js/internals/array-buffer-byte-length.js","webpack:///nextcloud/node_modules/core-js/internals/array-buffer-is-detached.js","webpack:///nextcloud/node_modules/core-js/internals/array-buffer-non-extensible.js","webpack:///nextcloud/node_modules/core-js/internals/array-buffer-not-detached.js","webpack:///nextcloud/node_modules/core-js/internals/array-buffer-transfer.js","webpack:///nextcloud/node_modules/core-js/internals/array-buffer-view-core.js","webpack:///nextcloud/node_modules/core-js/internals/array-buffer.js","webpack:///nextcloud/node_modules/core-js/internals/array-copy-within.js","webpack:///nextcloud/node_modules/core-js/internals/array-fill.js","webpack:///nextcloud/node_modules/core-js/internals/array-for-each.js","webpack:///nextcloud/node_modules/core-js/internals/array-from-constructor-and-list.js","webpack:///nextcloud/node_modules/core-js/internals/array-from.js","webpack:///nextcloud/node_modules/core-js/internals/array-iteration-from-last.js","webpack:///nextcloud/node_modules/core-js/internals/array-iteration.js","webpack:///nextcloud/node_modules/core-js/internals/array-last-index-of.js","webpack:///nextcloud/node_modules/core-js/internals/array-method-has-species-support.js","webpack:///nextcloud/node_modules/core-js/internals/array-method-is-strict.js","webpack:///nextcloud/node_modules/core-js/internals/array-reduce.js","webpack:///nextcloud/node_modules/core-js/internals/array-set-length.js","webpack:///nextcloud/node_modules/core-js/internals/array-slice.js","webpack:///nextcloud/node_modules/core-js/internals/array-sort.js","webpack:///nextcloud/node_modules/core-js/internals/array-species-constructor.js","webpack:///nextcloud/node_modules/core-js/internals/array-species-create.js","webpack:///nextcloud/node_modules/core-js/internals/array-to-reversed.js","webpack:///nextcloud/node_modules/core-js/internals/array-with.js","webpack:///nextcloud/node_modules/core-js/internals/base64-map.js","webpack:///nextcloud/node_modules/core-js/internals/call-with-safe-iteration-closing.js","webpack:///nextcloud/node_modules/core-js/internals/check-correctness-of-iteration.js","webpack:///nextcloud/node_modules/core-js/internals/collection-strong.js","webpack:///nextcloud/node_modules/core-js/internals/collection-weak.js","webpack:///nextcloud/node_modules/core-js/internals/collection.js","webpack:///nextcloud/node_modules/core-js/internals/correct-is-regexp-logic.js","webpack:///nextcloud/node_modules/core-js/internals/correct-prototype-getter.js","webpack:///nextcloud/node_modules/core-js/internals/create-html.js","webpack:///nextcloud/node_modules/core-js/internals/create-iter-result-object.js","webpack:///nextcloud/node_modules/core-js/internals/create-property.js","webpack:///nextcloud/node_modules/core-js/internals/date-to-iso-string.js","webpack:///nextcloud/node_modules/core-js/internals/date-to-primitive.js","webpack:///nextcloud/node_modules/core-js/internals/define-built-in-accessor.js","webpack:///nextcloud/node_modules/core-js/internals/define-built-ins.js","webpack:///nextcloud/node_modules/core-js/internals/delete-property-or-throw.js","webpack:///nextcloud/node_modules/core-js/internals/detach-transferable.js","webpack:///nextcloud/node_modules/core-js/internals/does-not-exceed-safe-integer.js","webpack:///nextcloud/node_modules/core-js/internals/dom-exception-constants.js","webpack:///nextcloud/node_modules/core-js/internals/dom-iterables.js","webpack:///nextcloud/node_modules/core-js/internals/dom-token-list-prototype.js","webpack:///nextcloud/node_modules/core-js/internals/environment-ff-version.js","webpack:///nextcloud/node_modules/core-js/internals/environment-is-ie-or-edge.js","webpack:///nextcloud/node_modules/core-js/internals/environment-is-ios-pebble.js","webpack:///nextcloud/node_modules/core-js/internals/environment-is-ios.js","webpack:///nextcloud/node_modules/core-js/internals/environment-is-node.js","webpack:///nextcloud/node_modules/core-js/internals/environment-is-webos-webkit.js","webpack:///nextcloud/node_modules/core-js/internals/environment-webkit-version.js","webpack:///nextcloud/node_modules/core-js/internals/environment.js","webpack:///nextcloud/node_modules/core-js/internals/error-stack-clear.js","webpack:///nextcloud/node_modules/core-js/internals/error-stack-install.js","webpack:///nextcloud/node_modules/core-js/internals/error-stack-installable.js","webpack:///nextcloud/node_modules/core-js/internals/error-to-string.js","webpack:///nextcloud/node_modules/core-js/internals/flatten-into-array.js","webpack:///nextcloud/node_modules/core-js/internals/freezing.js","webpack:///nextcloud/node_modules/core-js/internals/function-bind-context.js","webpack:///nextcloud/node_modules/core-js/internals/function-bind.js","webpack:///nextcloud/node_modules/core-js/internals/function-uncurry-this-accessor.js","webpack:///nextcloud/node_modules/core-js/internals/function-uncurry-this-clause.js","webpack:///nextcloud/node_modules/core-js/internals/get-built-in-node-module.js","webpack:///nextcloud/node_modules/core-js/internals/get-built-in-prototype-method.js","webpack:///nextcloud/node_modules/core-js/internals/get-iterator-direct.js","webpack:///nextcloud/node_modules/core-js/internals/get-iterator-method.js","webpack:///nextcloud/node_modules/core-js/internals/get-iterator.js","webpack:///nextcloud/node_modules/core-js/internals/get-json-replacer-function.js","webpack:///nextcloud/node_modules/core-js/internals/get-set-record.js","webpack:///nextcloud/node_modules/core-js/internals/host-report-errors.js","webpack:///nextcloud/node_modules/core-js/internals/ieee754.js","webpack:///nextcloud/node_modules/core-js/internals/inherit-if-required.js","webpack:///nextcloud/node_modules/core-js/internals/install-error-cause.js","webpack:///nextcloud/node_modules/core-js/internals/internal-metadata.js","webpack:///nextcloud/node_modules/core-js/internals/is-array-iterator-method.js","webpack:///nextcloud/node_modules/core-js/internals/is-array.js","webpack:///nextcloud/node_modules/core-js/internals/is-big-int-array.js","webpack:///nextcloud/node_modules/core-js/internals/is-constructor.js","webpack:///nextcloud/node_modules/core-js/internals/is-data-descriptor.js","webpack:///nextcloud/node_modules/core-js/internals/is-integral-number.js","webpack:///nextcloud/node_modules/core-js/internals/is-possible-prototype.js","webpack:///nextcloud/node_modules/core-js/internals/is-regexp.js","webpack:///nextcloud/node_modules/core-js/internals/iterate-simple.js","webpack:///nextcloud/node_modules/core-js/internals/iterate.js","webpack:///nextcloud/node_modules/core-js/internals/iterator-close.js","webpack:///nextcloud/node_modules/core-js/internals/iterator-create-constructor.js","webpack:///nextcloud/node_modules/core-js/internals/iterator-define.js","webpack:///nextcloud/node_modules/core-js/internals/iterators-core.js","webpack:///nextcloud/node_modules/core-js/internals/iterators.js","webpack:///nextcloud/node_modules/core-js/internals/map-helpers.js","webpack:///nextcloud/node_modules/core-js/internals/math-expm1.js","webpack:///nextcloud/node_modules/core-js/internals/math-float-round.js","webpack:///nextcloud/node_modules/core-js/internals/math-fround.js","webpack:///nextcloud/node_modules/core-js/internals/math-log10.js","webpack:///nextcloud/node_modules/core-js/internals/math-log1p.js","webpack:///nextcloud/node_modules/core-js/internals/math-sign.js","webpack:///nextcloud/node_modules/core-js/internals/microtask.js","webpack:///nextcloud/node_modules/core-js/internals/new-promise-capability.js","webpack:///nextcloud/node_modules/core-js/internals/normalize-string-argument.js","webpack:///nextcloud/node_modules/core-js/internals/not-a-regexp.js","webpack:///nextcloud/node_modules/core-js/internals/number-is-finite.js","webpack:///nextcloud/node_modules/core-js/internals/number-parse-float.js","webpack:///nextcloud/node_modules/core-js/internals/number-parse-int.js","webpack:///nextcloud/node_modules/core-js/internals/object-assign.js","webpack:///nextcloud/node_modules/core-js/internals/object-get-own-property-names-external.js","webpack:///nextcloud/node_modules/core-js/internals/object-get-prototype-of.js","webpack:///nextcloud/node_modules/core-js/internals/object-is-extensible.js","webpack:///nextcloud/node_modules/core-js/internals/object-prototype-accessors-forced.js","webpack:///nextcloud/node_modules/core-js/internals/object-set-prototype-of.js","webpack:///nextcloud/node_modules/core-js/internals/object-to-array.js","webpack:///nextcloud/node_modules/core-js/internals/object-to-string.js","webpack:///nextcloud/node_modules/core-js/internals/path.js","webpack:///nextcloud/node_modules/core-js/internals/perform.js","webpack:///nextcloud/node_modules/core-js/internals/promise-constructor-detection.js","webpack:///nextcloud/node_modules/core-js/internals/promise-native-constructor.js","webpack:///nextcloud/node_modules/core-js/internals/promise-resolve.js","webpack:///nextcloud/node_modules/core-js/internals/promise-statics-incorrect-iteration.js","webpack:///nextcloud/node_modules/core-js/internals/proxy-accessor.js","webpack:///nextcloud/node_modules/core-js/internals/queue.js","webpack:///nextcloud/node_modules/core-js/internals/regexp-get-flags.js","webpack:///nextcloud/node_modules/core-js/internals/safe-get-built-in.js","webpack:///nextcloud/node_modules/core-js/internals/same-value.js","webpack:///nextcloud/node_modules/core-js/internals/schedulers-fix.js","webpack:///nextcloud/node_modules/core-js/internals/set-clone.js","webpack:///nextcloud/node_modules/core-js/internals/set-difference.js","webpack:///nextcloud/node_modules/core-js/internals/set-helpers.js","webpack:///nextcloud/node_modules/core-js/internals/set-intersection.js","webpack:///nextcloud/node_modules/core-js/internals/set-is-disjoint-from.js","webpack:///nextcloud/node_modules/core-js/internals/set-is-subset-of.js","webpack:///nextcloud/node_modules/core-js/internals/set-is-superset-of.js","webpack:///nextcloud/node_modules/core-js/internals/set-iterate.js","webpack:///nextcloud/node_modules/core-js/internals/set-method-accept-set-like.js","webpack:///nextcloud/node_modules/core-js/internals/set-size.js","webpack:///nextcloud/node_modules/core-js/internals/set-species.js","webpack:///nextcloud/node_modules/core-js/internals/set-symmetric-difference.js","webpack:///nextcloud/node_modules/core-js/internals/set-to-string-tag.js","webpack:///nextcloud/node_modules/core-js/internals/set-union.js","webpack:///nextcloud/node_modules/core-js/internals/species-constructor.js","webpack:///nextcloud/node_modules/core-js/internals/string-html-forced.js","webpack:///nextcloud/node_modules/core-js/internals/string-pad-webkit-bug.js","webpack:///nextcloud/node_modules/core-js/internals/string-pad.js","webpack:///nextcloud/node_modules/core-js/internals/string-punycode-to-ascii.js","webpack:///nextcloud/node_modules/core-js/internals/string-repeat.js","webpack:///nextcloud/node_modules/core-js/internals/string-trim-end.js","webpack:///nextcloud/node_modules/core-js/internals/string-trim-forced.js","webpack:///nextcloud/node_modules/core-js/internals/string-trim-start.js","webpack:///nextcloud/node_modules/core-js/internals/string-trim.js","webpack:///nextcloud/node_modules/core-js/internals/structured-clone-proper-transfer.js","webpack:///nextcloud/node_modules/core-js/internals/symbol-define-to-primitive.js","webpack:///nextcloud/node_modules/core-js/internals/symbol-registry-detection.js","webpack:///nextcloud/node_modules/core-js/internals/task.js","webpack:///nextcloud/node_modules/core-js/internals/this-number-value.js","webpack:///nextcloud/node_modules/core-js/internals/to-big-int.js","webpack:///nextcloud/node_modules/core-js/internals/to-index.js","webpack:///nextcloud/node_modules/core-js/internals/to-offset.js","webpack:///nextcloud/node_modules/core-js/internals/to-positive-integer.js","webpack:///nextcloud/node_modules/core-js/internals/to-uint8-clamped.js","webpack:///nextcloud/node_modules/core-js/internals/typed-array-constructor.js","webpack:///nextcloud/node_modules/core-js/internals/typed-array-constructors-require-wrappers.js","webpack:///nextcloud/node_modules/core-js/internals/typed-array-from-species-and-list.js","webpack:///nextcloud/node_modules/core-js/internals/typed-array-from.js","webpack:///nextcloud/node_modules/core-js/internals/typed-array-species-constructor.js","webpack:///nextcloud/node_modules/core-js/internals/url-constructor-detection.js","webpack:///nextcloud/node_modules/core-js/internals/validate-arguments-length.js","webpack:///nextcloud/node_modules/core-js/internals/well-known-symbol-define.js","webpack:///nextcloud/node_modules/core-js/internals/well-known-symbol-wrapped.js","webpack:///nextcloud/node_modules/core-js/internals/whitespaces.js","webpack:///nextcloud/node_modules/core-js/internals/wrap-error-constructor-with-cause.js","webpack:///nextcloud/node_modules/core-js/modules/es.aggregate-error.cause.js","webpack:///nextcloud/node_modules/core-js/modules/es.aggregate-error.constructor.js","webpack:///nextcloud/node_modules/core-js/modules/es.aggregate-error.js","webpack:///nextcloud/node_modules/core-js/modules/es.array-buffer.constructor.js","webpack:///nextcloud/node_modules/core-js/modules/es.array-buffer.detached.js","webpack:///nextcloud/node_modules/core-js/modules/es.array-buffer.is-view.js","webpack:///nextcloud/node_modules/core-js/modules/es.array-buffer.slice.js","webpack:///nextcloud/node_modules/core-js/modules/es.array-buffer.transfer-to-fixed-length.js","webpack:///nextcloud/node_modules/core-js/modules/es.array-buffer.transfer.js","webpack:///nextcloud/node_modules/core-js/modules/es.array.at.js","webpack:///nextcloud/node_modules/core-js/modules/es.array.concat.js","webpack:///nextcloud/node_modules/core-js/modules/es.array.copy-within.js","webpack:///nextcloud/node_modules/core-js/modules/es.array.every.js","webpack:///nextcloud/node_modules/core-js/modules/es.array.fill.js","webpack:///nextcloud/node_modules/core-js/modules/es.array.filter.js","webpack:///nextcloud/node_modules/core-js/modules/es.array.find-index.js","webpack:///nextcloud/node_modules/core-js/modules/es.array.find-last-index.js","webpack:///nextcloud/node_modules/core-js/modules/es.array.find-last.js","webpack:///nextcloud/node_modules/core-js/modules/es.array.find.js","webpack:///nextcloud/node_modules/core-js/modules/es.array.flat-map.js","webpack:///nextcloud/node_modules/core-js/modules/es.array.flat.js","webpack:///nextcloud/node_modules/core-js/modules/es.array.for-each.js","webpack:///nextcloud/node_modules/core-js/modules/es.array.from.js","webpack:///nextcloud/node_modules/core-js/modules/es.array.includes.js","webpack:///nextcloud/node_modules/core-js/modules/es.array.index-of.js","webpack:///nextcloud/node_modules/core-js/modules/es.array.is-array.js","webpack:///nextcloud/node_modules/core-js/modules/es.array.iterator.js","webpack:///nextcloud/node_modules/core-js/modules/es.array.join.js","webpack:///nextcloud/node_modules/core-js/modules/es.array.last-index-of.js","webpack:///nextcloud/node_modules/core-js/modules/es.array.map.js","webpack:///nextcloud/node_modules/core-js/modules/es.array.of.js","webpack:///nextcloud/node_modules/core-js/modules/es.array.push.js","webpack:///nextcloud/node_modules/core-js/modules/es.array.reduce-right.js","webpack:///nextcloud/node_modules/core-js/modules/es.array.reduce.js","webpack:///nextcloud/node_modules/core-js/modules/es.array.reverse.js","webpack:///nextcloud/node_modules/core-js/modules/es.array.slice.js","webpack:///nextcloud/node_modules/core-js/modules/es.array.some.js","webpack:///nextcloud/node_modules/core-js/modules/es.array.sort.js","webpack:///nextcloud/node_modules/core-js/modules/es.array.species.js","webpack:///nextcloud/node_modules/core-js/modules/es.array.splice.js","webpack:///nextcloud/node_modules/core-js/modules/es.array.to-reversed.js","webpack:///nextcloud/node_modules/core-js/modules/es.array.to-sorted.js","webpack:///nextcloud/node_modules/core-js/modules/es.array.to-spliced.js","webpack:///nextcloud/node_modules/core-js/modules/es.array.unscopables.flat-map.js","webpack:///nextcloud/node_modules/core-js/modules/es.array.unscopables.flat.js","webpack:///nextcloud/node_modules/core-js/modules/es.array.unshift.js","webpack:///nextcloud/node_modules/core-js/modules/es.array.with.js","webpack:///nextcloud/node_modules/core-js/modules/es.data-view.constructor.js","webpack:///nextcloud/node_modules/core-js/modules/es.data-view.js","webpack:///nextcloud/node_modules/core-js/modules/es.date.get-year.js","webpack:///nextcloud/node_modules/core-js/modules/es.date.now.js","webpack:///nextcloud/node_modules/core-js/modules/es.date.set-year.js","webpack:///nextcloud/node_modules/core-js/modules/es.date.to-gmt-string.js","webpack:///nextcloud/node_modules/core-js/modules/es.date.to-iso-string.js","webpack:///nextcloud/node_modules/core-js/modules/es.date.to-json.js","webpack:///nextcloud/node_modules/core-js/modules/es.date.to-primitive.js","webpack:///nextcloud/node_modules/core-js/modules/es.date.to-string.js","webpack:///nextcloud/node_modules/core-js/modules/es.error.cause.js","webpack:///nextcloud/node_modules/core-js/modules/es.error.to-string.js","webpack:///nextcloud/node_modules/core-js/modules/es.escape.js","webpack:///nextcloud/node_modules/core-js/modules/es.function.bind.js","webpack:///nextcloud/node_modules/core-js/modules/es.function.has-instance.js","webpack:///nextcloud/node_modules/core-js/modules/es.function.name.js","webpack:///nextcloud/node_modules/core-js/modules/es.global-this.js","webpack:///nextcloud/node_modules/core-js/modules/es.json.stringify.js","webpack:///nextcloud/node_modules/core-js/modules/es.json.to-string-tag.js","webpack:///nextcloud/node_modules/core-js/modules/es.map.constructor.js","webpack:///nextcloud/node_modules/core-js/modules/es.map.group-by.js","webpack:///nextcloud/node_modules/core-js/modules/es.map.js","webpack:///nextcloud/node_modules/core-js/modules/es.math.acosh.js","webpack:///nextcloud/node_modules/core-js/modules/es.math.asinh.js","webpack:///nextcloud/node_modules/core-js/modules/es.math.atanh.js","webpack:///nextcloud/node_modules/core-js/modules/es.math.cbrt.js","webpack:///nextcloud/node_modules/core-js/modules/es.math.clz32.js","webpack:///nextcloud/node_modules/core-js/modules/es.math.cosh.js","webpack:///nextcloud/node_modules/core-js/modules/es.math.expm1.js","webpack:///nextcloud/node_modules/core-js/modules/es.math.fround.js","webpack:///nextcloud/node_modules/core-js/modules/es.math.hypot.js","webpack:///nextcloud/node_modules/core-js/modules/es.math.imul.js","webpack:///nextcloud/node_modules/core-js/modules/es.math.log10.js","webpack:///nextcloud/node_modules/core-js/modules/es.math.log1p.js","webpack:///nextcloud/node_modules/core-js/modules/es.math.log2.js","webpack:///nextcloud/node_modules/core-js/modules/es.math.sign.js","webpack:///nextcloud/node_modules/core-js/modules/es.math.sinh.js","webpack:///nextcloud/node_modules/core-js/modules/es.math.tanh.js","webpack:///nextcloud/node_modules/core-js/modules/es.math.to-string-tag.js","webpack:///nextcloud/node_modules/core-js/modules/es.math.trunc.js","webpack:///nextcloud/node_modules/core-js/modules/es.number.constructor.js","webpack:///nextcloud/node_modules/core-js/modules/es.number.epsilon.js","webpack:///nextcloud/node_modules/core-js/modules/es.number.is-finite.js","webpack:///nextcloud/node_modules/core-js/modules/es.number.is-integer.js","webpack:///nextcloud/node_modules/core-js/modules/es.number.is-nan.js","webpack:///nextcloud/node_modules/core-js/modules/es.number.is-safe-integer.js","webpack:///nextcloud/node_modules/core-js/modules/es.number.max-safe-integer.js","webpack:///nextcloud/node_modules/core-js/modules/es.number.min-safe-integer.js","webpack:///nextcloud/node_modules/core-js/modules/es.number.parse-float.js","webpack:///nextcloud/node_modules/core-js/modules/es.number.parse-int.js","webpack:///nextcloud/node_modules/core-js/modules/es.number.to-exponential.js","webpack:///nextcloud/node_modules/core-js/modules/es.number.to-fixed.js","webpack:///nextcloud/node_modules/core-js/modules/es.number.to-precision.js","webpack:///nextcloud/node_modules/core-js/modules/es.object.assign.js","webpack:///nextcloud/node_modules/core-js/modules/es.object.create.js","webpack:///nextcloud/node_modules/core-js/modules/es.object.define-getter.js","webpack:///nextcloud/node_modules/core-js/modules/es.object.define-properties.js","webpack:///nextcloud/node_modules/core-js/modules/es.object.define-property.js","webpack:///nextcloud/node_modules/core-js/modules/es.object.define-setter.js","webpack:///nextcloud/node_modules/core-js/modules/es.object.entries.js","webpack:///nextcloud/node_modules/core-js/modules/es.object.freeze.js","webpack:///nextcloud/node_modules/core-js/modules/es.object.from-entries.js","webpack:///nextcloud/node_modules/core-js/modules/es.object.get-own-property-descriptor.js","webpack:///nextcloud/node_modules/core-js/modules/es.object.get-own-property-descriptors.js","webpack:///nextcloud/node_modules/core-js/modules/es.object.get-own-property-names.js","webpack:///nextcloud/node_modules/core-js/modules/es.object.get-own-property-symbols.js","webpack:///nextcloud/node_modules/core-js/modules/es.object.get-prototype-of.js","webpack:///nextcloud/node_modules/core-js/modules/es.object.group-by.js","webpack:///nextcloud/node_modules/core-js/modules/es.object.has-own.js","webpack:///nextcloud/node_modules/core-js/modules/es.object.is-extensible.js","webpack:///nextcloud/node_modules/core-js/modules/es.object.is-frozen.js","webpack:///nextcloud/node_modules/core-js/modules/es.object.is-sealed.js","webpack:///nextcloud/node_modules/core-js/modules/es.object.is.js","webpack:///nextcloud/node_modules/core-js/modules/es.object.keys.js","webpack:///nextcloud/node_modules/core-js/modules/es.object.lookup-getter.js","webpack:///nextcloud/node_modules/core-js/modules/es.object.lookup-setter.js","webpack:///nextcloud/node_modules/core-js/modules/es.object.prevent-extensions.js","webpack:///nextcloud/node_modules/core-js/modules/es.object.proto.js","webpack:///nextcloud/node_modules/core-js/modules/es.object.seal.js","webpack:///nextcloud/node_modules/core-js/modules/es.object.set-prototype-of.js","webpack:///nextcloud/node_modules/core-js/modules/es.object.to-string.js","webpack:///nextcloud/node_modules/core-js/modules/es.object.values.js","webpack:///nextcloud/node_modules/core-js/modules/es.parse-float.js","webpack:///nextcloud/node_modules/core-js/modules/es.parse-int.js","webpack:///nextcloud/node_modules/core-js/modules/es.promise.all-settled.js","webpack:///nextcloud/node_modules/core-js/modules/es.promise.all.js","webpack:///nextcloud/node_modules/core-js/modules/es.promise.any.js","webpack:///nextcloud/node_modules/core-js/modules/es.promise.catch.js","webpack:///nextcloud/node_modules/core-js/modules/es.promise.constructor.js","webpack:///nextcloud/node_modules/core-js/modules/es.promise.finally.js","webpack:///nextcloud/node_modules/core-js/modules/es.promise.js","webpack:///nextcloud/node_modules/core-js/modules/es.promise.race.js","webpack:///nextcloud/node_modules/core-js/modules/es.promise.reject.js","webpack:///nextcloud/node_modules/core-js/modules/es.promise.resolve.js","webpack:///nextcloud/node_modules/core-js/modules/es.promise.with-resolvers.js","webpack:///nextcloud/node_modules/core-js/modules/es.reflect.apply.js","webpack:///nextcloud/node_modules/core-js/modules/es.reflect.construct.js","webpack:///nextcloud/node_modules/core-js/modules/es.reflect.define-property.js","webpack:///nextcloud/node_modules/core-js/modules/es.reflect.delete-property.js","webpack:///nextcloud/node_modules/core-js/modules/es.reflect.get-own-property-descriptor.js","webpack:///nextcloud/node_modules/core-js/modules/es.reflect.get-prototype-of.js","webpack:///nextcloud/node_modules/core-js/modules/es.reflect.get.js","webpack:///nextcloud/node_modules/core-js/modules/es.reflect.has.js","webpack:///nextcloud/node_modules/core-js/modules/es.reflect.is-extensible.js","webpack:///nextcloud/node_modules/core-js/modules/es.reflect.own-keys.js","webpack:///nextcloud/node_modules/core-js/modules/es.reflect.prevent-extensions.js","webpack:///nextcloud/node_modules/core-js/modules/es.reflect.set-prototype-of.js","webpack:///nextcloud/node_modules/core-js/modules/es.reflect.set.js","webpack:///nextcloud/node_modules/core-js/modules/es.reflect.to-string-tag.js","webpack:///nextcloud/node_modules/core-js/modules/es.regexp.constructor.js","webpack:///nextcloud/node_modules/core-js/modules/es.regexp.dot-all.js","webpack:///nextcloud/node_modules/core-js/modules/es.regexp.flags.js","webpack:///nextcloud/node_modules/core-js/modules/es.regexp.sticky.js","webpack:///nextcloud/node_modules/core-js/modules/es.regexp.test.js","webpack:///nextcloud/node_modules/core-js/modules/es.regexp.to-string.js","webpack:///nextcloud/node_modules/core-js/modules/es.set.constructor.js","webpack:///nextcloud/node_modules/core-js/modules/es.set.difference.v2.js","webpack:///nextcloud/node_modules/core-js/modules/es.set.intersection.v2.js","webpack:///nextcloud/node_modules/core-js/modules/es.set.is-disjoint-from.v2.js","webpack:///nextcloud/node_modules/core-js/modules/es.set.is-subset-of.v2.js","webpack:///nextcloud/node_modules/core-js/modules/es.set.is-superset-of.v2.js","webpack:///nextcloud/node_modules/core-js/modules/es.set.js","webpack:///nextcloud/node_modules/core-js/modules/es.set.symmetric-difference.v2.js","webpack:///nextcloud/node_modules/core-js/modules/es.set.union.v2.js","webpack:///nextcloud/node_modules/core-js/modules/es.string.anchor.js","webpack:///nextcloud/node_modules/core-js/modules/es.string.at-alternative.js","webpack:///nextcloud/node_modules/core-js/modules/es.string.big.js","webpack:///nextcloud/node_modules/core-js/modules/es.string.blink.js","webpack:///nextcloud/node_modules/core-js/modules/es.string.bold.js","webpack:///nextcloud/node_modules/core-js/modules/es.string.code-point-at.js","webpack:///nextcloud/node_modules/core-js/modules/es.string.ends-with.js","webpack:///nextcloud/node_modules/core-js/modules/es.string.fixed.js","webpack:///nextcloud/node_modules/core-js/modules/es.string.fontcolor.js","webpack:///nextcloud/node_modules/core-js/modules/es.string.fontsize.js","webpack:///nextcloud/node_modules/core-js/modules/es.string.from-code-point.js","webpack:///nextcloud/node_modules/core-js/modules/es.string.includes.js","webpack:///nextcloud/node_modules/core-js/modules/es.string.is-well-formed.js","webpack:///nextcloud/node_modules/core-js/modules/es.string.italics.js","webpack:///nextcloud/node_modules/core-js/modules/es.string.iterator.js","webpack:///nextcloud/node_modules/core-js/modules/es.string.link.js","webpack:///nextcloud/node_modules/core-js/modules/es.string.match-all.js","webpack:///nextcloud/node_modules/core-js/modules/es.string.match.js","webpack:///nextcloud/node_modules/core-js/modules/es.string.pad-end.js","webpack:///nextcloud/node_modules/core-js/modules/es.string.pad-start.js","webpack:///nextcloud/node_modules/core-js/modules/es.string.raw.js","webpack:///nextcloud/node_modules/core-js/modules/es.string.repeat.js","webpack:///nextcloud/node_modules/core-js/modules/es.string.replace-all.js","webpack:///nextcloud/node_modules/core-js/modules/es.string.search.js","webpack:///nextcloud/node_modules/core-js/modules/es.string.small.js","webpack:///nextcloud/node_modules/core-js/modules/es.string.split.js","webpack:///nextcloud/node_modules/core-js/modules/es.string.starts-with.js","webpack:///nextcloud/node_modules/core-js/modules/es.string.strike.js","webpack:///nextcloud/node_modules/core-js/modules/es.string.sub.js","webpack:///nextcloud/node_modules/core-js/modules/es.string.substr.js","webpack:///nextcloud/node_modules/core-js/modules/es.string.sup.js","webpack:///nextcloud/node_modules/core-js/modules/es.string.to-well-formed.js","webpack:///nextcloud/node_modules/core-js/modules/es.string.trim-end.js","webpack:///nextcloud/node_modules/core-js/modules/es.string.trim-left.js","webpack:///nextcloud/node_modules/core-js/modules/es.string.trim-right.js","webpack:///nextcloud/node_modules/core-js/modules/es.string.trim-start.js","webpack:///nextcloud/node_modules/core-js/modules/es.string.trim.js","webpack:///nextcloud/node_modules/core-js/modules/es.symbol.async-iterator.js","webpack:///nextcloud/node_modules/core-js/modules/es.symbol.constructor.js","webpack:///nextcloud/node_modules/core-js/modules/es.symbol.description.js","webpack:///nextcloud/node_modules/core-js/modules/es.symbol.for.js","webpack:///nextcloud/node_modules/core-js/modules/es.symbol.has-instance.js","webpack:///nextcloud/node_modules/core-js/modules/es.symbol.is-concat-spreadable.js","webpack:///nextcloud/node_modules/core-js/modules/es.symbol.iterator.js","webpack:///nextcloud/node_modules/core-js/modules/es.symbol.js","webpack:///nextcloud/node_modules/core-js/modules/es.symbol.key-for.js","webpack:///nextcloud/node_modules/core-js/modules/es.symbol.match-all.js","webpack:///nextcloud/node_modules/core-js/modules/es.symbol.match.js","webpack:///nextcloud/node_modules/core-js/modules/es.symbol.replace.js","webpack:///nextcloud/node_modules/core-js/modules/es.symbol.search.js","webpack:///nextcloud/node_modules/core-js/modules/es.symbol.species.js","webpack:///nextcloud/node_modules/core-js/modules/es.symbol.split.js","webpack:///nextcloud/node_modules/core-js/modules/es.symbol.to-primitive.js","webpack:///nextcloud/node_modules/core-js/modules/es.symbol.to-string-tag.js","webpack:///nextcloud/node_modules/core-js/modules/es.symbol.unscopables.js","webpack:///nextcloud/node_modules/core-js/modules/es.typed-array.at.js","webpack:///nextcloud/node_modules/core-js/modules/es.typed-array.copy-within.js","webpack:///nextcloud/node_modules/core-js/modules/es.typed-array.every.js","webpack:///nextcloud/node_modules/core-js/modules/es.typed-array.fill.js","webpack:///nextcloud/node_modules/core-js/modules/es.typed-array.filter.js","webpack:///nextcloud/node_modules/core-js/modules/es.typed-array.find-index.js","webpack:///nextcloud/node_modules/core-js/modules/es.typed-array.find-last-index.js","webpack:///nextcloud/node_modules/core-js/modules/es.typed-array.find-last.js","webpack:///nextcloud/node_modules/core-js/modules/es.typed-array.find.js","webpack:///nextcloud/node_modules/core-js/modules/es.typed-array.float32-array.js","webpack:///nextcloud/node_modules/core-js/modules/es.typed-array.float64-array.js","webpack:///nextcloud/node_modules/core-js/modules/es.typed-array.for-each.js","webpack:///nextcloud/node_modules/core-js/modules/es.typed-array.from.js","webpack:///nextcloud/node_modules/core-js/modules/es.typed-array.includes.js","webpack:///nextcloud/node_modules/core-js/modules/es.typed-array.index-of.js","webpack:///nextcloud/node_modules/core-js/modules/es.typed-array.int16-array.js","webpack:///nextcloud/node_modules/core-js/modules/es.typed-array.int32-array.js","webpack:///nextcloud/node_modules/core-js/modules/es.typed-array.int8-array.js","webpack:///nextcloud/node_modules/core-js/modules/es.typed-array.iterator.js","webpack:///nextcloud/node_modules/core-js/modules/es.typed-array.join.js","webpack:///nextcloud/node_modules/core-js/modules/es.typed-array.last-index-of.js","webpack:///nextcloud/node_modules/core-js/modules/es.typed-array.map.js","webpack:///nextcloud/node_modules/core-js/modules/es.typed-array.of.js","webpack:///nextcloud/node_modules/core-js/modules/es.typed-array.reduce-right.js","webpack:///nextcloud/node_modules/core-js/modules/es.typed-array.reduce.js","webpack:///nextcloud/node_modules/core-js/modules/es.typed-array.reverse.js","webpack:///nextcloud/node_modules/core-js/modules/es.typed-array.set.js","webpack:///nextcloud/node_modules/core-js/modules/es.typed-array.slice.js","webpack:///nextcloud/node_modules/core-js/modules/es.typed-array.some.js","webpack:///nextcloud/node_modules/core-js/modules/es.typed-array.sort.js","webpack:///nextcloud/node_modules/core-js/modules/es.typed-array.subarray.js","webpack:///nextcloud/node_modules/core-js/modules/es.typed-array.to-locale-string.js","webpack:///nextcloud/node_modules/core-js/modules/es.typed-array.to-reversed.js","webpack:///nextcloud/node_modules/core-js/modules/es.typed-array.to-sorted.js","webpack:///nextcloud/node_modules/core-js/modules/es.typed-array.to-string.js","webpack:///nextcloud/node_modules/core-js/modules/es.typed-array.uint16-array.js","webpack:///nextcloud/node_modules/core-js/modules/es.typed-array.uint32-array.js","webpack:///nextcloud/node_modules/core-js/modules/es.typed-array.uint8-array.js","webpack:///nextcloud/node_modules/core-js/modules/es.typed-array.uint8-clamped-array.js","webpack:///nextcloud/node_modules/core-js/modules/es.typed-array.with.js","webpack:///nextcloud/node_modules/core-js/modules/es.unescape.js","webpack:///nextcloud/node_modules/core-js/modules/es.weak-map.constructor.js","webpack:///nextcloud/node_modules/core-js/modules/es.weak-map.js","webpack:///nextcloud/node_modules/core-js/modules/es.weak-set.constructor.js","webpack:///nextcloud/node_modules/core-js/modules/es.weak-set.js","webpack:///nextcloud/node_modules/core-js/modules/web.atob.js","webpack:///nextcloud/node_modules/core-js/modules/web.btoa.js","webpack:///nextcloud/node_modules/core-js/modules/web.clear-immediate.js","webpack:///nextcloud/node_modules/core-js/modules/web.dom-collections.for-each.js","webpack:///nextcloud/node_modules/core-js/modules/web.dom-collections.iterator.js","webpack:///nextcloud/node_modules/core-js/modules/web.dom-exception.constructor.js","webpack:///nextcloud/node_modules/core-js/modules/web.dom-exception.stack.js","webpack:///nextcloud/node_modules/core-js/modules/web.dom-exception.to-string-tag.js","webpack:///nextcloud/node_modules/core-js/modules/web.immediate.js","webpack:///nextcloud/node_modules/core-js/modules/web.queue-microtask.js","webpack:///nextcloud/node_modules/core-js/modules/web.self.js","webpack:///nextcloud/node_modules/core-js/modules/web.set-immediate.js","webpack:///nextcloud/node_modules/core-js/modules/web.set-interval.js","webpack:///nextcloud/node_modules/core-js/modules/web.set-timeout.js","webpack:///nextcloud/node_modules/core-js/modules/web.structured-clone.js","webpack:///nextcloud/node_modules/core-js/modules/web.timers.js","webpack:///nextcloud/node_modules/core-js/modules/web.url-search-params.constructor.js","webpack:///nextcloud/node_modules/core-js/modules/web.url-search-params.delete.js","webpack:///nextcloud/node_modules/core-js/modules/web.url-search-params.has.js","webpack:///nextcloud/node_modules/core-js/modules/web.url-search-params.js","webpack:///nextcloud/node_modules/core-js/modules/web.url-search-params.size.js","webpack:///nextcloud/node_modules/core-js/modules/web.url.can-parse.js","webpack:///nextcloud/node_modules/core-js/modules/web.url.constructor.js","webpack:///nextcloud/node_modules/core-js/modules/web.url.js","webpack:///nextcloud/node_modules/core-js/modules/web.url.parse.js","webpack:///nextcloud/node_modules/core-js/modules/web.url.to-json.js","webpack:///nextcloud/node_modules/core-js/stable/index.js","webpack:///nextcloud/node_modules/@nextcloud/files/dist/index.mjs","webpack:///nextcloud/node_modules/underscore/modules/_setup.js","webpack:///nextcloud/node_modules/underscore/modules/restArguments.js","webpack:///nextcloud/node_modules/underscore/modules/isObject.js","webpack:///nextcloud/node_modules/underscore/modules/isNull.js","webpack:///nextcloud/node_modules/underscore/modules/isUndefined.js","webpack:///nextcloud/node_modules/underscore/modules/isBoolean.js","webpack:///nextcloud/node_modules/underscore/modules/isElement.js","webpack:///nextcloud/node_modules/underscore/modules/_tagTester.js","webpack:///nextcloud/node_modules/underscore/modules/isString.js","webpack:///nextcloud/node_modules/underscore/modules/isNumber.js","webpack:///nextcloud/node_modules/underscore/modules/isDate.js","webpack:///nextcloud/node_modules/underscore/modules/isRegExp.js","webpack:///nextcloud/node_modules/underscore/modules/isError.js","webpack:///nextcloud/node_modules/underscore/modules/isSymbol.js","webpack:///nextcloud/node_modules/underscore/modules/isArrayBuffer.js","webpack:///nextcloud/node_modules/underscore/modules/isFunction.js","webpack:///nextcloud/node_modules/underscore/modules/_hasObjectTag.js","webpack:///nextcloud/node_modules/underscore/modules/_stringTagBug.js","webpack:///nextcloud/node_modules/underscore/modules/isDataView.js","webpack:///nextcloud/node_modules/underscore/modules/isArray.js","webpack:///nextcloud/node_modules/underscore/modules/_has.js","webpack:///nextcloud/node_modules/underscore/modules/isArguments.js","webpack:///nextcloud/node_modules/underscore/modules/isFinite.js","webpack:///nextcloud/node_modules/underscore/modules/isNaN.js","webpack:///nextcloud/node_modules/underscore/modules/constant.js","webpack:///nextcloud/node_modules/underscore/modules/_createSizePropertyCheck.js","webpack:///nextcloud/node_modules/underscore/modules/_shallowProperty.js","webpack:///nextcloud/node_modules/underscore/modules/_getByteLength.js","webpack:///nextcloud/node_modules/underscore/modules/_isBufferLike.js","webpack:///nextcloud/node_modules/underscore/modules/isTypedArray.js","webpack:///nextcloud/node_modules/underscore/modules/_getLength.js","webpack:///nextcloud/node_modules/underscore/modules/_collectNonEnumProps.js","webpack:///nextcloud/node_modules/underscore/modules/keys.js","webpack:///nextcloud/node_modules/underscore/modules/isEmpty.js","webpack:///nextcloud/node_modules/underscore/modules/isMatch.js","webpack:///nextcloud/node_modules/underscore/modules/underscore.js","webpack:///nextcloud/node_modules/underscore/modules/_toBufferView.js","webpack:///nextcloud/node_modules/underscore/modules/isEqual.js","webpack:///nextcloud/node_modules/underscore/modules/allKeys.js","webpack:///nextcloud/node_modules/underscore/modules/_methodFingerprint.js","webpack:///nextcloud/node_modules/underscore/modules/isMap.js","webpack:///nextcloud/node_modules/underscore/modules/isWeakMap.js","webpack:///nextcloud/node_modules/underscore/modules/isSet.js","webpack:///nextcloud/node_modules/underscore/modules/isWeakSet.js","webpack:///nextcloud/node_modules/underscore/modules/values.js","webpack:///nextcloud/node_modules/underscore/modules/pairs.js","webpack:///nextcloud/node_modules/underscore/modules/invert.js","webpack:///nextcloud/node_modules/underscore/modules/functions.js","webpack:///nextcloud/node_modules/underscore/modules/_createAssigner.js","webpack:///nextcloud/node_modules/underscore/modules/extend.js","webpack:///nextcloud/node_modules/underscore/modules/extendOwn.js","webpack:///nextcloud/node_modules/underscore/modules/defaults.js","webpack:///nextcloud/node_modules/underscore/modules/_baseCreate.js","webpack:///nextcloud/node_modules/underscore/modules/create.js","webpack:///nextcloud/node_modules/underscore/modules/clone.js","webpack:///nextcloud/node_modules/underscore/modules/tap.js","webpack:///nextcloud/node_modules/underscore/modules/toPath.js","webpack:///nextcloud/node_modules/underscore/modules/_toPath.js","webpack:///nextcloud/node_modules/underscore/modules/_deepGet.js","webpack:///nextcloud/node_modules/underscore/modules/get.js","webpack:///nextcloud/node_modules/underscore/modules/has.js","webpack:///nextcloud/node_modules/underscore/modules/identity.js","webpack:///nextcloud/node_modules/underscore/modules/matcher.js","webpack:///nextcloud/node_modules/underscore/modules/property.js","webpack:///nextcloud/node_modules/underscore/modules/_optimizeCb.js","webpack:///nextcloud/node_modules/underscore/modules/_baseIteratee.js","webpack:///nextcloud/node_modules/underscore/modules/iteratee.js","webpack:///nextcloud/node_modules/underscore/modules/_cb.js","webpack:///nextcloud/node_modules/underscore/modules/mapObject.js","webpack:///nextcloud/node_modules/underscore/modules/noop.js","webpack:///nextcloud/node_modules/underscore/modules/propertyOf.js","webpack:///nextcloud/node_modules/underscore/modules/times.js","webpack:///nextcloud/node_modules/underscore/modules/random.js","webpack:///nextcloud/node_modules/underscore/modules/now.js","webpack:///nextcloud/node_modules/underscore/modules/_createEscaper.js","webpack:///nextcloud/node_modules/underscore/modules/_escapeMap.js","webpack:///nextcloud/node_modules/underscore/modules/escape.js","webpack:///nextcloud/node_modules/underscore/modules/unescape.js","webpack:///nextcloud/node_modules/underscore/modules/_unescapeMap.js","webpack:///nextcloud/node_modules/underscore/modules/templateSettings.js","webpack:///nextcloud/node_modules/underscore/modules/template.js","webpack:///nextcloud/node_modules/underscore/modules/result.js","webpack:///nextcloud/node_modules/underscore/modules/uniqueId.js","webpack:///nextcloud/node_modules/underscore/modules/chain.js","webpack:///nextcloud/node_modules/underscore/modules/_executeBound.js","webpack:///nextcloud/node_modules/underscore/modules/partial.js","webpack:///nextcloud/node_modules/underscore/modules/bind.js","webpack:///nextcloud/node_modules/underscore/modules/_isArrayLike.js","webpack:///nextcloud/node_modules/underscore/modules/_flatten.js","webpack:///nextcloud/node_modules/underscore/modules/bindAll.js","webpack:///nextcloud/node_modules/underscore/modules/memoize.js","webpack:///nextcloud/node_modules/underscore/modules/delay.js","webpack:///nextcloud/node_modules/underscore/modules/defer.js","webpack:///nextcloud/node_modules/underscore/modules/throttle.js","webpack:///nextcloud/node_modules/underscore/modules/debounce.js","webpack:///nextcloud/node_modules/underscore/modules/wrap.js","webpack:///nextcloud/node_modules/underscore/modules/negate.js","webpack:///nextcloud/node_modules/underscore/modules/compose.js","webpack:///nextcloud/node_modules/underscore/modules/after.js","webpack:///nextcloud/node_modules/underscore/modules/before.js","webpack:///nextcloud/node_modules/underscore/modules/once.js","webpack:///nextcloud/node_modules/underscore/modules/findKey.js","webpack:///nextcloud/node_modules/underscore/modules/_createPredicateIndexFinder.js","webpack:///nextcloud/node_modules/underscore/modules/findIndex.js","webpack:///nextcloud/node_modules/underscore/modules/findLastIndex.js","webpack:///nextcloud/node_modules/underscore/modules/sortedIndex.js","webpack:///nextcloud/node_modules/underscore/modules/_createIndexFinder.js","webpack:///nextcloud/node_modules/underscore/modules/indexOf.js","webpack:///nextcloud/node_modules/underscore/modules/lastIndexOf.js","webpack:///nextcloud/node_modules/underscore/modules/find.js","webpack:///nextcloud/node_modules/underscore/modules/findWhere.js","webpack:///nextcloud/node_modules/underscore/modules/each.js","webpack:///nextcloud/node_modules/underscore/modules/map.js","webpack:///nextcloud/node_modules/underscore/modules/_createReduce.js","webpack:///nextcloud/node_modules/underscore/modules/reduce.js","webpack:///nextcloud/node_modules/underscore/modules/reduceRight.js","webpack:///nextcloud/node_modules/underscore/modules/filter.js","webpack:///nextcloud/node_modules/underscore/modules/reject.js","webpack:///nextcloud/node_modules/underscore/modules/every.js","webpack:///nextcloud/node_modules/underscore/modules/some.js","webpack:///nextcloud/node_modules/underscore/modules/contains.js","webpack:///nextcloud/node_modules/underscore/modules/invoke.js","webpack:///nextcloud/node_modules/underscore/modules/pluck.js","webpack:///nextcloud/node_modules/underscore/modules/where.js","webpack:///nextcloud/node_modules/underscore/modules/max.js","webpack:///nextcloud/node_modules/underscore/modules/min.js","webpack:///nextcloud/node_modules/underscore/modules/toArray.js","webpack:///nextcloud/node_modules/underscore/modules/sample.js","webpack:///nextcloud/node_modules/underscore/modules/shuffle.js","webpack:///nextcloud/node_modules/underscore/modules/sortBy.js","webpack:///nextcloud/node_modules/underscore/modules/_group.js","webpack:///nextcloud/node_modules/underscore/modules/groupBy.js","webpack:///nextcloud/node_modules/underscore/modules/indexBy.js","webpack:///nextcloud/node_modules/underscore/modules/countBy.js","webpack:///nextcloud/node_modules/underscore/modules/partition.js","webpack:///nextcloud/node_modules/underscore/modules/size.js","webpack:///nextcloud/node_modules/underscore/modules/_keyInObj.js","webpack:///nextcloud/node_modules/underscore/modules/pick.js","webpack:///nextcloud/node_modules/underscore/modules/omit.js","webpack:///nextcloud/node_modules/underscore/modules/initial.js","webpack:///nextcloud/node_modules/underscore/modules/first.js","webpack:///nextcloud/node_modules/underscore/modules/rest.js","webpack:///nextcloud/node_modules/underscore/modules/last.js","webpack:///nextcloud/node_modules/underscore/modules/compact.js","webpack:///nextcloud/node_modules/underscore/modules/flatten.js","webpack:///nextcloud/node_modules/underscore/modules/difference.js","webpack:///nextcloud/node_modules/underscore/modules/without.js","webpack:///nextcloud/node_modules/underscore/modules/uniq.js","webpack:///nextcloud/node_modules/underscore/modules/union.js","webpack:///nextcloud/node_modules/underscore/modules/intersection.js","webpack:///nextcloud/node_modules/underscore/modules/unzip.js","webpack:///nextcloud/node_modules/underscore/modules/zip.js","webpack:///nextcloud/node_modules/underscore/modules/object.js","webpack:///nextcloud/node_modules/underscore/modules/range.js","webpack:///nextcloud/node_modules/underscore/modules/chunk.js","webpack:///nextcloud/node_modules/underscore/modules/_chainResult.js","webpack:///nextcloud/node_modules/underscore/modules/mixin.js","webpack:///nextcloud/node_modules/underscore/modules/underscore-array-methods.js","webpack:///nextcloud/node_modules/underscore/modules/index-default.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 = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\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:\";\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\tscript.timeout = 120;\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};","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport _ from 'underscore'\n/** @typedef {import('jquery')} jQuery */\nimport $ from 'jquery'\nimport { showMessage, TOAST_DEFAULT_TIMEOUT, TOAST_PERMANENT_TIMEOUT } from '@nextcloud/dialogs'\n\n/**\n * @todo Write documentation\n * @deprecated 17.0.0 use the `@nextcloud/dialogs` package instead\n * @namespace OC.Notification\n */\nexport default {\n\n\tupdatableNotification: null,\n\n\tgetDefaultNotificationFunction: null,\n\n\t/**\n\t * @param {Function} callback callback function\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tsetDefault(callback) {\n\t\tthis.getDefaultNotificationFunction = callback\n\t},\n\n\t/**\n\t * Hides a notification.\n\t *\n\t * If a row is given, only hide that one.\n\t * If no row is given, hide all notifications.\n\t *\n\t * @param {jQuery} [$row] notification row\n\t * @param {Function} [callback] callback\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\thide($row, callback) {\n\t\tif (_.isFunction($row)) {\n\t\t\t// first arg is the callback\n\t\t\tcallback = $row\n\t\t\t$row = undefined\n\t\t}\n\n\t\tif (!$row) {\n\t\t\tconsole.error('Missing argument $row in OC.Notification.hide() call, caller needs to be adjusted to only dismiss its own notification')\n\t\t\treturn\n\t\t}\n\n\t\t// remove the row directly\n\t\t$row.each(function() {\n\t\t\tif ($(this)[0].toastify) {\n\t\t\t\t$(this)[0].toastify.hideToast()\n\t\t\t} else {\n\t\t\t\tconsole.error('cannot hide toast because object is not set')\n\t\t\t}\n\t\t\tif (this === this.updatableNotification) {\n\t\t\t\tthis.updatableNotification = null\n\t\t\t}\n\t\t})\n\t\tif (callback) {\n\t\t\tcallback.call()\n\t\t}\n\t\tif (this.getDefaultNotificationFunction) {\n\t\t\tthis.getDefaultNotificationFunction()\n\t\t}\n\t},\n\n\t/**\n\t * Shows a notification as HTML without being sanitized before.\n\t * If you pass unsanitized user input this may lead to a XSS vulnerability.\n\t * Consider using show() instead of showHTML()\n\t *\n\t * @param {string} html Message to display\n\t * @param {object} [options] options\n\t * @param {string} [options.type] notification type\n\t * @param {number} [options.timeout] timeout value, defaults to 0 (permanent)\n\t * @return {jQuery} jQuery element for notification row\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshowHtml(html, options) {\n\t\toptions = options || {}\n\t\toptions.isHTML = true\n\t\toptions.timeout = (!options.timeout) ? TOAST_PERMANENT_TIMEOUT : options.timeout\n\t\tconst toast = showMessage(html, options)\n\t\ttoast.toastElement.toastify = toast\n\t\treturn $(toast.toastElement)\n\t},\n\n\t/**\n\t * Shows a sanitized notification\n\t *\n\t * @param {string} text Message to display\n\t * @param {object} [options] options\n\t * @param {string} [options.type] notification type\n\t * @param {number} [options.timeout] timeout value, defaults to 0 (permanent)\n\t * @return {jQuery} jQuery element for notification row\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshow(text, options) {\n\t\tconst escapeHTML = function(text) {\n\t\t\treturn text.toString()\n\t\t\t\t.split('&').join('&')\n\t\t\t\t.split('<').join('<')\n\t\t\t\t.split('>').join('>')\n\t\t\t\t.split('\"').join('"')\n\t\t\t\t.split('\\'').join(''')\n\t\t}\n\n\t\toptions = options || {}\n\t\toptions.timeout = (!options.timeout) ? TOAST_PERMANENT_TIMEOUT : options.timeout\n\t\tconst toast = showMessage(escapeHTML(text), options)\n\t\ttoast.toastElement.toastify = toast\n\t\treturn $(toast.toastElement)\n\t},\n\n\t/**\n\t * Updates (replaces) a sanitized notification.\n\t *\n\t * @param {string} text Message to display\n\t * @return {jQuery} JQuery element for notification row\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshowUpdate(text) {\n\t\tif (this.updatableNotification) {\n\t\t\tthis.updatableNotification.hideToast()\n\t\t}\n\t\tthis.updatableNotification = showMessage(text, { timeout: TOAST_PERMANENT_TIMEOUT })\n\t\tthis.updatableNotification.toastElement.toastify = this.updatableNotification\n\t\treturn $(this.updatableNotification.toastElement)\n\t},\n\n\t/**\n\t * Shows a notification that disappears after x seconds, default is\n\t * 7 seconds\n\t *\n\t * @param {string} text Message to show\n\t * @param {Array} [options] options array\n\t * @param {number} [options.timeout] timeout in seconds, if this is 0 it will show the message permanently\n\t * @param {boolean} [options.isHTML] an indicator for HTML notifications (true) or text (false)\n\t * @param {string} [options.type] notification type\n\t * @return {jQuery} the toast element\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshowTemporary(text, options) {\n\t\toptions = options || {}\n\t\toptions.timeout = options.timeout || TOAST_DEFAULT_TIMEOUT\n\t\tconst toast = showMessage(text, options)\n\t\ttoast.toastElement.toastify = toast\n\t\treturn $(toast.toastElement)\n\t},\n\n\t/**\n\t * Returns whether a notification is hidden.\n\t *\n\t * @return {boolean}\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tisHidden() {\n\t\treturn !$('#content').find('.toastify').length\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 _ from 'underscore'\nimport $ from 'jquery'\n\nimport OC from './index.js'\nimport Notification from './notification.js'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { showWarning } from '@nextcloud/dialogs'\n\n/**\n * Warn users that the connection to the server was lost temporarily\n *\n * This function is throttled to prevent stacked notifications.\n * After 7sec the first notification is gone, then we can show another one\n * if necessary.\n */\nexport const ajaxConnectionLostHandler = _.throttle(() => {\n\tshowWarning(t('core', 'Connection to server lost'))\n}, 7 * 1000, { trailing: false })\n\n/**\n * Process ajax error, redirects to main page\n * if an error/auth error status was returned.\n *\n * @param {XMLHttpRequest} xhr xhr request\n */\nexport const processAjaxError = xhr => {\n\t// purposefully aborted request ?\n\t// OC._userIsNavigatingAway needed to distinguish Ajax calls cancelled by navigating away\n\t// from calls cancelled by failed cross-domain Ajax due to SSO redirect\n\tif (xhr.status === 0 && (xhr.statusText === 'abort' || xhr.statusText === 'timeout' || OC._reloadCalled)) {\n\t\treturn\n\t}\n\n\tif ([302, 303, 307, 401].includes(xhr.status) && getCurrentUser()) {\n\t\t// sometimes \"beforeunload\" happens later, so need to defer the reload a bit\n\t\tsetTimeout(function() {\n\t\t\tif (!OC._userIsNavigatingAway && !OC._reloadCalled) {\n\t\t\t\tlet timer = 0\n\t\t\t\tconst seconds = 5\n\t\t\t\tconst interval = setInterval(function() {\n\t\t\t\t\tNotification.showUpdate(n('core', 'Problem loading page, reloading in %n second', 'Problem loading page, reloading in %n seconds', seconds - timer))\n\t\t\t\t\tif (timer >= seconds) {\n\t\t\t\t\t\tclearInterval(interval)\n\t\t\t\t\t\tOC.reload()\n\t\t\t\t\t}\n\t\t\t\t\ttimer++\n\t\t\t\t}, 1000, // 1 second interval\n\t\t\t\t)\n\n\t\t\t\t// only call reload once\n\t\t\t\tOC._reloadCalled = true\n\t\t\t}\n\t\t}, 100)\n\t} else if (xhr.status === 0) {\n\t\t// Connection lost (e.g. WiFi disconnected or server is down)\n\t\tsetTimeout(function() {\n\t\t\tif (!OC._userIsNavigatingAway && !OC._reloadCalled) {\n\t\t\t\t// TODO: call method above directly\n\t\t\t\tOC._ajaxConnectionLostHandler()\n\t\t\t}\n\t\t}, 100)\n\t}\n}\n\n/**\n * Registers XmlHttpRequest object for global error processing.\n *\n * This means that if this XHR object returns 401 or session timeout errors,\n * the current page will automatically be reloaded.\n *\n * @param {XMLHttpRequest} xhr xhr request\n */\nexport const registerXHRForErrorProcessing = xhr => {\n\tconst loadCallback = () => {\n\t\tif (xhr.readyState !== 4) {\n\t\t\treturn\n\t\t}\n\n\t\tif ((xhr.status >= 200 && xhr.status < 300) || xhr.status === 304) {\n\t\t\treturn\n\t\t}\n\n\t\t// fire jquery global ajax error handler\n\t\t$(document).trigger(new $.Event('ajaxError'), xhr)\n\t}\n\n\tconst errorCallback = () => {\n\t\t// fire jquery global ajax error handler\n\t\t$(document).trigger(new $.Event('ajaxError'), xhr)\n\t}\n\n\tif (xhr.addEventListener) {\n\t\txhr.addEventListener('load', loadCallback)\n\t\txhr.addEventListener('error', errorCallback)\n\t}\n\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-FileCopyrightText: 2014 ownCloud, Inc.\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport $ from 'jquery'\n\nlet dynamicSlideToggleEnabled = false\n\nconst Apps = {\n\tenableDynamicSlideToggle() {\n\t\tdynamicSlideToggleEnabled = true\n\t},\n}\n\n/**\n * Shows the #app-sidebar and add .with-app-sidebar to subsequent siblings\n *\n * @param {object} [$el] sidebar element to show, defaults to $('#app-sidebar')\n */\nApps.showAppSidebar = function($el) {\n\tconst $appSidebar = $el || $('#app-sidebar')\n\t$appSidebar.removeClass('disappear').show()\n\t$('#app-content').trigger(new $.Event('appresized'))\n}\n\n/**\n * Shows the #app-sidebar and removes .with-app-sidebar from subsequent\n * siblings\n *\n * @param {object} [$el] sidebar element to hide, defaults to $('#app-sidebar')\n */\nApps.hideAppSidebar = function($el) {\n\tconst $appSidebar = $el || $('#app-sidebar')\n\t$appSidebar.hide().addClass('disappear')\n\t$('#app-content').trigger(new $.Event('appresized'))\n}\n\n/**\n * Provides a way to slide down a target area through a button and slide it\n * up if the user clicks somewhere else. Used for the news app settings and\n * add new field.\n *\n * Usage:\n * \n *
            I'm sliding up
            \n */\nexport const registerAppsSlideToggle = () => {\n\tlet buttons = $('[data-apps-slide-toggle]')\n\n\tif (buttons.length === 0) {\n\t\t$('#app-navigation').addClass('without-app-settings')\n\t}\n\n\t$(document).click(function(event) {\n\n\t\tif (dynamicSlideToggleEnabled) {\n\t\t\tbuttons = $('[data-apps-slide-toggle]')\n\t\t}\n\n\t\tbuttons.each(function(index, button) {\n\n\t\t\tconst areaSelector = $(button).data('apps-slide-toggle')\n\t\t\tconst area = $(areaSelector)\n\n\t\t\t/**\n\t\t\t *\n\t\t\t */\n\t\t\tfunction hideArea() {\n\t\t\t\tarea.slideUp(OC.menuSpeed * 4, function() {\n\t\t\t\t\tarea.trigger(new $.Event('hide'))\n\t\t\t\t})\n\t\t\t\tarea.removeClass('opened')\n\t\t\t\t$(button).removeClass('opened')\n\t\t\t\t$(button).attr('aria-expanded', 'false')\n\t\t\t}\n\n\t\t\t/**\n\t\t\t *\n\t\t\t */\n\t\t\tfunction showArea() {\n\t\t\t\tarea.slideDown(OC.menuSpeed * 4, function() {\n\t\t\t\t\tarea.trigger(new $.Event('show'))\n\t\t\t\t})\n\t\t\t\tarea.addClass('opened')\n\t\t\t\t$(button).addClass('opened')\n\t\t\t\t$(button).attr('aria-expanded', 'true')\n\t\t\t\tconst input = $(areaSelector + ' [autofocus]')\n\t\t\t\tif (input.length === 1) {\n\t\t\t\t\tinput.focus()\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// do nothing if the area is animated\n\t\t\tif (!area.is(':animated')) {\n\n\t\t\t\t// button toggles the area\n\t\t\t\tif ($(button).is($(event.target).closest('[data-apps-slide-toggle]'))) {\n\t\t\t\t\tif (area.is(':visible')) {\n\t\t\t\t\t\thideArea()\n\t\t\t\t\t} else {\n\t\t\t\t\t\tshowArea()\n\t\t\t\t\t}\n\n\t\t\t\t\t// all other areas that have not been clicked but are open\n\t\t\t\t\t// should be slid up\n\t\t\t\t} else {\n\t\t\t\t\tconst closest = $(event.target).closest(areaSelector)\n\t\t\t\t\tif (area.is(':visible') && closest[0] !== area[0]) {\n\t\t\t\t\t\thideArea()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\n\t})\n}\n\nexport default Apps\n","/**\n * SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors\n * SPDX-FileCopyrightText: 2016 ownCloud, Inc.\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport $ from 'jquery'\nimport { generateOcsUrl } from '@nextcloud/router'\n\nimport OC from '../OC/index.js'\n\n/**\n * @param {string} method 'post' or 'delete'\n * @param {string} endpoint endpoint\n * @param {object} [options] destructuring object\n * @param {object} [options.data] option data\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n */\nfunction call(method, endpoint, options) {\n\tif ((method === 'post' || method === 'delete') && OC.PasswordConfirmation.requiresPasswordConfirmation()) {\n\t\tOC.PasswordConfirmation.requirePasswordConfirmation(_.bind(call, this, method, endpoint, options))\n\t\treturn\n\t}\n\n\toptions = options || {}\n\t$.ajax({\n\t\ttype: method.toUpperCase(),\n\t\turl: generateOcsUrl('apps/provisioning_api/api/v1/config/apps') + endpoint,\n\t\tdata: options.data || {},\n\t\tsuccess: options.success,\n\t\terror: options.error,\n\t})\n}\n\n/**\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @since 11.0.0\n */\nexport function getApps(options) {\n\tcall('get', '', options)\n}\n\n/**\n * @param {string} app app id\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n * @since 11.0.0\n */\nexport function getKeys(app, options) {\n\tcall('get', '/' + app, options)\n}\n\n/**\n * @param {string} app app id\n * @param {string} key key\n * @param {string | Function} defaultValue default value\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n * @since 11.0.0\n */\nexport function getValue(app, key, defaultValue, options) {\n\toptions = options || {}\n\toptions.data = {\n\t\tdefaultValue,\n\t}\n\n\tcall('get', '/' + app + '/' + key, options)\n}\n\n/**\n * @param {string} app app id\n * @param {string} key key\n * @param {string} value value\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n * @since 11.0.0\n */\nexport function setValue(app, key, value, options) {\n\toptions = options || {}\n\toptions.data = {\n\t\tvalue,\n\t}\n\n\tcall('post', '/' + app + '/' + key, options)\n}\n\n/**\n * @param {string} app app id\n * @param {string} key key\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n * @since 11.0.0\n */\nexport function deleteKey(app, key, options) {\n\tcall('delete', '/' + app + '/' + key, options)\n}\n","/**\n * SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors\n * SPDX-FileCopyrightText: 2014 ownCloud, Inc.\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/* eslint-disable */\n import { getValue, setValue, getApps, getKeys, deleteKey } from '../OCP/appconfig.js'\n\nexport const appConfig = window.oc_appconfig || {}\n\n/**\n * @namespace\n * @deprecated 16.0.0 Use OCP.AppConfig instead\n */\nexport const AppConfig = {\n\t/**\n\t * @deprecated Use OCP.AppConfig.getValue() instead\n\t */\n\tgetValue: function(app, key, defaultValue, callback) {\n\t\tgetValue(app, key, defaultValue, {\n\t\t\tsuccess: callback\n\t\t})\n\t},\n\n\t/**\n\t * @deprecated Use OCP.AppConfig.setValue() instead\n\t */\n\tsetValue: function(app, key, value) {\n\t\tsetValue(app, key, value)\n\t},\n\n\t/**\n\t * @deprecated Use OCP.AppConfig.getApps() instead\n\t */\n\tgetApps: function(callback) {\n\t\tgetApps({\n\t\t\tsuccess: callback\n\t\t})\n\t},\n\n\t/**\n\t * @deprecated Use OCP.AppConfig.getKeys() instead\n\t */\n\tgetKeys: function(app, callback) {\n\t\tgetKeys(app, {\n\t\t\tsuccess: callback\n\t\t})\n\t},\n\n\t/**\n\t * @deprecated Use OCP.AppConfig.deleteKey() instead\n\t */\n\tdeleteKey: function(app, key) {\n\t\tdeleteKey(app, key)\n\t}\n\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nconst appswebroots = (window._oc_appswebroots !== undefined) ? window._oc_appswebroots : false\n\nexport default appswebroots\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/* eslint-disable */\nimport _ from 'underscore'\nimport { dav } from 'davclient.js'\n\nconst methodMap = {\n\tcreate: 'POST',\n\tupdate: 'PROPPATCH',\n\tpatch: 'PROPPATCH',\n\tdelete: 'DELETE',\n\tread: 'PROPFIND'\n}\n\n// Throw an error when a URL is needed, and none is supplied.\nfunction urlError() {\n\tthrow new Error('A \"url\" property or function must be specified')\n}\n\n/**\n * Convert a single propfind result to JSON\n *\n * @param {Object} result\n * @param {Object} davProperties properties mapping\n */\nfunction parsePropFindResult(result, davProperties) {\n\tif (_.isArray(result)) {\n\t\treturn _.map(result, function(subResult) {\n\t\t\treturn parsePropFindResult(subResult, davProperties)\n\t\t})\n\t}\n\tvar props = {\n\t\thref: result.href\n\t}\n\n\t_.each(result.propStat, function(propStat) {\n\t\tif (propStat.status !== 'HTTP/1.1 200 OK') {\n\t\t\treturn\n\t\t}\n\n\t\tfor (var key in propStat.properties) {\n\t\t\tvar propKey = key\n\t\t\tif (key in davProperties) {\n\t\t\t\tpropKey = davProperties[key]\n\t\t\t}\n\t\t\tprops[propKey] = propStat.properties[key]\n\t\t}\n\t})\n\n\tif (!props.id) {\n\t\t// parse id from href\n\t\tprops.id = parseIdFromLocation(props.href)\n\t}\n\n\treturn props\n}\n\n/**\n * Parse ID from location\n *\n * @param {string} url url\n * @returns {string} id\n */\nfunction parseIdFromLocation(url) {\n\tvar queryPos = url.indexOf('?')\n\tif (queryPos > 0) {\n\t\turl = url.substr(0, queryPos)\n\t}\n\n\tvar parts = url.split('/')\n\tvar result\n\tdo {\n\t\tresult = parts[parts.length - 1]\n\t\tparts.pop()\n\t\t// note: first result can be empty when there is a trailing slash,\n\t\t// so we take the part before that\n\t} while (!result && parts.length > 0)\n\n\treturn result\n}\n\nfunction isSuccessStatus(status) {\n\treturn status >= 200 && status <= 299\n}\n\nfunction convertModelAttributesToDavProperties(attrs, davProperties) {\n\tvar props = {}\n\tvar key\n\tfor (key in attrs) {\n\t\tvar changedProp = davProperties[key]\n\t\tvar value = attrs[key]\n\t\tif (!changedProp) {\n\t\t\tconsole.warn('No matching DAV property for property \"' + key)\n\t\t\tchangedProp = key\n\t\t}\n\t\tif (_.isBoolean(value) || _.isNumber(value)) {\n\t\t\t// convert to string\n\t\t\tvalue = '' + value\n\t\t}\n\t\tprops[changedProp] = value\n\t}\n\treturn props\n}\n\nfunction callPropFind(client, options, model, headers) {\n\treturn client.propFind(\n\t\toptions.url,\n\t\t_.values(options.davProperties) || [],\n\t\toptions.depth,\n\t\theaders\n\t).then(function(response) {\n\t\tif (isSuccessStatus(response.status)) {\n\t\t\tif (_.isFunction(options.success)) {\n\t\t\t\tvar propsMapping = _.invert(options.davProperties)\n\t\t\t\tvar results = parsePropFindResult(response.body, propsMapping)\n\t\t\t\tif (options.depth > 0) {\n\t\t\t\t\t// discard root entry\n\t\t\t\t\tresults.shift()\n\t\t\t\t}\n\n\t\t\t\toptions.success(results)\n\n\t\t\t}\n\t\t} else if (_.isFunction(options.error)) {\n\t\t\toptions.error(response)\n\t\t}\n\t})\n}\n\nfunction callPropPatch(client, options, model, headers) {\n\treturn client.propPatch(\n\t\toptions.url,\n\t\tconvertModelAttributesToDavProperties(model.changed, options.davProperties),\n\t\theaders\n\t).then(function(result) {\n\t\tif (isSuccessStatus(result.status)) {\n\t\t\tif (_.isFunction(options.success)) {\n\t\t\t\t// pass the object's own values because the server\n\t\t\t\t// does not return the updated model\n\t\t\t\toptions.success(model.toJSON())\n\t\t\t}\n\t\t} else if (_.isFunction(options.error)) {\n\t\t\toptions.error(result)\n\t\t}\n\t})\n\n}\n\nfunction callMkCol(client, options, model, headers) {\n\t// call MKCOL without data, followed by PROPPATCH\n\treturn client.request(\n\t\toptions.type,\n\t\toptions.url,\n\t\theaders,\n\t\tnull\n\t).then(function(result) {\n\t\tif (!isSuccessStatus(result.status)) {\n\t\t\tif (_.isFunction(options.error)) {\n\t\t\t\toptions.error(result)\n\t\t\t}\n\t\t\treturn\n\t\t}\n\n\t\tcallPropPatch(client, options, model, headers)\n\t})\n}\n\nfunction callMethod(client, options, model, headers) {\n\theaders['Content-Type'] = 'application/json'\n\treturn client.request(\n\t\toptions.type,\n\t\toptions.url,\n\t\theaders,\n\t\toptions.data\n\t).then(function(result) {\n\t\tif (!isSuccessStatus(result.status)) {\n\t\t\tif (_.isFunction(options.error)) {\n\t\t\t\toptions.error(result)\n\t\t\t}\n\t\t\treturn\n\t\t}\n\n\t\tif (_.isFunction(options.success)) {\n\t\t\tif (options.type === 'PUT' || options.type === 'POST' || options.type === 'MKCOL') {\n\t\t\t\t// pass the object's own values because the server\n\t\t\t\t// does not return anything\n\t\t\t\tvar responseJson = result.body || model.toJSON()\n\t\t\t\tvar locationHeader = result.xhr.getResponseHeader('Content-Location')\n\t\t\t\tif (options.type === 'POST' && locationHeader) {\n\t\t\t\t\tresponseJson.id = parseIdFromLocation(locationHeader)\n\t\t\t\t}\n\t\t\t\toptions.success(responseJson)\n\t\t\t\treturn\n\t\t\t}\n\t\t\t// if multi-status, parse\n\t\t\tif (result.status === 207) {\n\t\t\t\tvar propsMapping = _.invert(options.davProperties)\n\t\t\t\toptions.success(parsePropFindResult(result.body, propsMapping))\n\t\t\t} else {\n\t\t\t\toptions.success(result.body)\n\t\t\t}\n\t\t}\n\t})\n}\n\nexport const davCall = (options, model) => {\n\tvar client = new dav.Client({\n\t\tbaseUrl: options.url,\n\t\txmlNamespaces: _.extend({\n\t\t\t'DAV:': 'd',\n\t\t\t'http://owncloud.org/ns': 'oc'\n\t\t}, options.xmlNamespaces || {})\n\t})\n\tclient.resolveUrl = function() {\n\t\treturn options.url\n\t}\n\tvar headers = _.extend({\n\t\t'X-Requested-With': 'XMLHttpRequest',\n\t\t'requesttoken': OC.requestToken\n\t}, options.headers)\n\tif (options.type === 'PROPFIND') {\n\t\treturn callPropFind(client, options, model, headers)\n\t} else if (options.type === 'PROPPATCH') {\n\t\treturn callPropPatch(client, options, model, headers)\n\t} else if (options.type === 'MKCOL') {\n\t\treturn callMkCol(client, options, model, headers)\n\t} else {\n\t\treturn callMethod(client, options, model, headers)\n\t}\n}\n\n/**\n * DAV transport\n */\nexport const davSync = Backbone => (method, model, options) => {\n\tvar params = { type: methodMap[method] || method }\n\tvar isCollection = (model instanceof Backbone.Collection)\n\n\tif (method === 'update') {\n\t\t// if a model has an inner collection, it must define an\n\t\t// attribute \"hasInnerCollection\" that evaluates to true\n\t\tif (model.hasInnerCollection) {\n\t\t\t// if the model itself is a Webdav collection, use MKCOL\n\t\t\tparams.type = 'MKCOL'\n\t\t} else if (model.usePUT || (model.collection && model.collection.usePUT)) {\n\t\t\t// use PUT instead of PROPPATCH\n\t\t\tparams.type = 'PUT'\n\t\t}\n\t}\n\n\t// Ensure that we have a URL.\n\tif (!options.url) {\n\t\tparams.url = _.result(model, 'url') || urlError()\n\t}\n\n\t// Ensure that we have the appropriate request data.\n\tif (options.data == null && model && (method === 'create' || method === 'update' || method === 'patch')) {\n\t\tparams.data = JSON.stringify(options.attrs || model.toJSON(options))\n\t}\n\n\t// Don't process data on a non-GET request.\n\tif (params.type !== 'PROPFIND') {\n\t\tparams.processData = false\n\t}\n\n\tif (params.type === 'PROPFIND' || params.type === 'PROPPATCH') {\n\t\tvar davProperties = model.davProperties\n\t\tif (!davProperties && model.model) {\n\t\t\t// use dav properties from model in case of collection\n\t\t\tdavProperties = model.model.prototype.davProperties\n\t\t}\n\t\tif (davProperties) {\n\t\t\tif (_.isFunction(davProperties)) {\n\t\t\t\tparams.davProperties = davProperties.call(model)\n\t\t\t} else {\n\t\t\t\tparams.davProperties = davProperties\n\t\t\t}\n\t\t}\n\n\t\tparams.davProperties = _.extend(params.davProperties || {}, options.davProperties)\n\n\t\tif (_.isUndefined(options.depth)) {\n\t\t\tif (isCollection) {\n\t\t\t\toptions.depth = 1\n\t\t\t} else {\n\t\t\t\toptions.depth = 0\n\t\t\t}\n\t\t}\n\t}\n\n\t// Pass along `textStatus` and `errorThrown` from jQuery.\n\tvar error = options.error\n\toptions.error = function(xhr, textStatus, errorThrown) {\n\t\toptions.textStatus = textStatus\n\t\toptions.errorThrown = errorThrown\n\t\tif (error) {\n\t\t\terror.call(options.context, xhr, textStatus, errorThrown)\n\t\t}\n\t}\n\n\t// Make the request, allowing the user to override any Ajax options.\n\tvar xhr = options.xhr = Backbone.davCall(_.extend(params, options), model)\n\tmodel.trigger('request', model, xhr, options)\n\treturn xhr\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport VendorBackbone from 'backbone'\nimport { davCall, davSync } from './backbone-webdav.js'\n\nconst Backbone = VendorBackbone.noConflict()\n\n// Patch Backbone for DAV\nObject.assign(Backbone, {\n\tdavCall,\n\tdavSync: davSync(Backbone),\n})\n\nexport default Backbone\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport $ from 'jquery'\n\n/**\n * Parses a URL query string into a JS map\n *\n * @param {string} queryString query string in the format param1=1234¶m2=abcde¶m3=xyz\n * @return {Record} map containing key/values matching the URL parameters\n */\nexport const parse = queryString => {\n\tlet pos\n\tlet components\n\tconst result = {}\n\tlet key\n\tif (!queryString) {\n\t\treturn null\n\t}\n\tpos = queryString.indexOf('?')\n\tif (pos >= 0) {\n\t\tqueryString = queryString.substr(pos + 1)\n\t}\n\tconst parts = queryString.replace(/\\+/g, '%20').split('&')\n\tfor (let i = 0; i < parts.length; i++) {\n\t\t// split on first equal sign\n\t\tconst part = parts[i]\n\t\tpos = part.indexOf('=')\n\t\tif (pos >= 0) {\n\t\t\tcomponents = [\n\t\t\t\tpart.substr(0, pos),\n\t\t\t\tpart.substr(pos + 1),\n\t\t\t]\n\t\t} else {\n\t\t\t// key only\n\t\t\tcomponents = [part]\n\t\t}\n\t\tif (!components.length) {\n\t\t\tcontinue\n\t\t}\n\t\tkey = decodeURIComponent(components[0])\n\t\tif (!key) {\n\t\t\tcontinue\n\t\t}\n\t\t// if equal sign was there, return string\n\t\tif (components.length > 1) {\n\t\t\tresult[key] = decodeURIComponent(components[1])\n\t\t} else {\n\t\t\t// no equal sign => null value\n\t\t\tresult[key] = null\n\t\t}\n\t}\n\treturn result\n}\n\n/**\n * Builds a URL query from a JS map.\n *\n * @param {Record} params map containing key/values matching the URL parameters\n * @return {string} String containing a URL query (without question) mark\n */\nexport const build = params => {\n\tif (!params) {\n\t\treturn ''\n\t}\n\treturn $.map(params, function(value, key) {\n\t\tlet s = encodeURIComponent(key)\n\t\tif (value !== null && typeof (value) !== 'undefined') {\n\t\t\ts += '=' + encodeURIComponent(value)\n\t\t}\n\t\treturn s\n\t}).join('&')\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nconst config = window._oc_config || {}\n\nexport default config\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nconst rawUid = document\n\t.getElementsByTagName('head')[0]\n\t.getAttribute('data-user')\nconst displayName = document\n\t.getElementsByTagName('head')[0]\n\t.getAttribute('data-user-displayname')\n\nexport const currentUser = rawUid !== undefined ? rawUid : false\n\nexport const getCurrentUser = () => {\n\treturn {\n\t\tuid: currentUser,\n\t\tdisplayName,\n\t}\n}\n","/**\n * SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors\n * SPDX-FileCopyrightText: 2015 ownCloud, Inc.\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/* eslint-disable */\nimport _ from 'underscore'\nimport $ from 'jquery'\n\nimport IconMove from '@mdi/svg/svg/folder-move.svg?raw'\nimport IconCopy from '@mdi/svg/svg/folder-multiple.svg?raw'\n\nimport OC from './index.js'\nimport { DialogBuilder, FilePickerType, getFilePickerBuilder, spawnDialog } from '@nextcloud/dialogs'\nimport { translate as t } from '@nextcloud/l10n'\nimport { basename } from 'path'\nimport { defineAsyncComponent } from 'vue'\n\n/**\n * this class to ease the usage of jquery dialogs\n */\nconst Dialogs = {\n\t// dialog button types\n\t/** @deprecated use `@nextcloud/dialogs` */\n\tYES_NO_BUTTONS: 70,\n\t/** @deprecated use `@nextcloud/dialogs` */\n\tOK_BUTTONS: 71,\n\n\t/** @deprecated use FilePickerType from `@nextcloud/dialogs` */\n\tFILEPICKER_TYPE_CHOOSE: 1,\n\t/** @deprecated use FilePickerType from `@nextcloud/dialogs` */\n\tFILEPICKER_TYPE_MOVE: 2,\n\t/** @deprecated use FilePickerType from `@nextcloud/dialogs` */\n\tFILEPICKER_TYPE_COPY: 3,\n\t/** @deprecated use FilePickerType from `@nextcloud/dialogs` */\n\tFILEPICKER_TYPE_COPY_MOVE: 4,\n\t/** @deprecated use FilePickerType from `@nextcloud/dialogs` */\n\tFILEPICKER_TYPE_CUSTOM: 5,\n\n\t/**\n\t * displays alert dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK\n\t * @param {boolean} [modal] make the dialog modal\n\t *\n\t * @deprecated 30.0.0 Use `@nextcloud/dialogs` instead or build your own with `@nextcloud/vue` NcDialog\n\t */\n\talert: function(text, title, callback, modal) {\n\t\tthis.message(\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\t'alert',\n\t\t\tDialogs.OK_BUTTON,\n\t\t\tcallback,\n\t\t\tmodal\n\t\t)\n\t},\n\n\t/**\n\t * displays info dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK\n\t * @param {boolean} [modal] make the dialog modal\n\t *\n\t * @deprecated 30.0.0 Use `@nextcloud/dialogs` instead or build your own with `@nextcloud/vue` NcDialog\n\t */\n\tinfo: function(text, title, callback, modal) {\n\t\tthis.message(text, title, 'info', Dialogs.OK_BUTTON, callback, modal)\n\t},\n\n\t/**\n\t * displays confirmation dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @returns {Promise}\n\t *\n\t * @deprecated 30.0.0 Use `@nextcloud/dialogs` instead or build your own with `@nextcloud/vue` NcDialog\n\t */\n\tconfirm: function(text, title, callback, modal) {\n\t\treturn this.message(\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\t'notice',\n\t\t\tDialogs.YES_NO_BUTTONS,\n\t\t\tcallback,\n\t\t\tmodal\n\t\t)\n\t},\n\t/**\n\t * displays confirmation dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {(number|{type: number, confirm: string, cancel: string, confirmClasses: string})} buttons text content of buttons\n\t * @param {function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @returns {Promise}\n\t *\n\t * @deprecated 30.0.0 Use `@nextcloud/dialogs` instead or build your own with `@nextcloud/vue` NcDialog\n\t */\n\tconfirmDestructive: function(text, title, buttons = Dialogs.OK_BUTTONS, callback = () => {}, modal) {\n\t\treturn (new DialogBuilder())\n\t\t\t.setName(title)\n\t\t\t.setText(text)\n\t\t\t.setButtons(\n\t\t\t\tbuttons === Dialogs.OK_BUTTONS\n\t\t\t\t? [\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: t('core', 'Yes'),\n\t\t\t\t\t\ttype: 'error',\n\t\t\t\t\t\tcallback: () => {\n\t\t\t\t\t\t\tcallback.clicked = true\n\t\t\t\t\t\t\tcallback(true)\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t\t: Dialogs._getLegacyButtons(buttons, callback)\n\t\t\t)\n\t\t\t.build()\n\t\t\t.show()\n\t\t\t.then(() => {\n\t\t\t\tif (!callback.clicked) {\n\t\t\t\t\tcallback(false)\n\t\t\t\t}\n\t\t\t})\n\t},\n\t/**\n\t * displays confirmation dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @returns {Promise}\n\t *\n\t * @deprecated 30.0.0 Use `@nextcloud/dialogs` instead or build your own with `@nextcloud/vue` NcDialog\n\t */\n\tconfirmHtml: function(text, title, callback, modal) {\n\t\treturn (new DialogBuilder())\n\t\t\t.setName(title)\n\t\t\t.setText('')\n\t\t\t.setButtons([\n\t\t\t\t{\n\t\t\t\t\tlabel: t('core', 'No'),\n\t\t\t\t\tcallback: () => {},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: t('core', 'Yes'),\n\t\t\t\t\ttype: 'primary',\n\t\t\t\t\tcallback: () => {\n\t\t\t\t\t\tcallback.clicked = true\n\t\t\t\t\t\tcallback(true)\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t])\n\t\t\t.build()\n\t\t\t.setHTML(text)\n\t\t\t.show()\n\t\t\t.then(() => {\n\t\t\t\tif (!callback.clicked) {\n\t\t\t\t\tcallback(false)\n\t\t\t\t}\n\t\t\t})\n\t},\n\t/**\n\t * displays prompt dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @param {string} name name of the input field\n\t * @param {boolean} password whether the input should be a password input\n\t * @returns {Promise}\n\t *\n\t * @deprecated Use NcDialog from `@nextcloud/vue` instead\n\t */\n\tprompt: function(text, title, callback, modal, name, password) {\n\t\treturn new Promise((resolve) => {\n\t\t\tspawnDialog(\n\t\t\t\tdefineAsyncComponent(() => import('../components/LegacyDialogPrompt.vue')),\n\t\t\t\t{\n\t\t\t\t\ttext,\n\t\t\t\t\tname: title,\n\t\t\t\t\tcallback,\n\t\t\t\t\tinputName: name,\n\t\t\t\t\tisPassword: !!password\n\t\t\t\t},\n\t\t\t\t(...args) => {\n\t\t\t\t\tcallback(...args)\n\t\t\t\t\tresolve()\n\t\t\t\t},\n\t\t\t)\n\t\t})\n\t},\n\n\t/**\n\t * Legacy wrapper to the new Vue based filepicker from `@nextcloud/dialogs`\n\t *\n\t * Prefer to use the Vue filepicker directly instead.\n\t *\n\t * In order to pick several types of mime types they need to be passed as an\n\t * array of strings.\n\t *\n\t * When no mime type filter is given only files can be selected. In order to\n\t * be able to select both files and folders \"['*', 'httpd/unix-directory']\"\n\t * should be used instead.\n\t *\n\t * @param {string} title dialog title\n\t * @param {Function} callback which will be triggered when user presses Choose\n\t * @param {boolean} [multiselect] whether it should be possible to select multiple files\n\t * @param {string[]} [mimetype] mimetype to filter by - directories will always be included\n\t * @param {boolean} [_modal] do not use\n\t * @param {string} [type] Type of file picker : Choose, copy, move, copy and move\n\t * @param {string} [path] path to the folder that the the file can be picket from\n\t * @param {object} [options] additonal options that need to be set\n\t * @param {Function} [options.filter] filter function for advanced filtering\n\t * @param {boolean} [options.allowDirectoryChooser] Allow to select directories\n\t * @deprecated since 27.1.0 use the filepicker from `@nextcloud/dialogs` instead\n\t */\n\tfilepicker(title, callback, multiselect = false, mimetype = undefined, _modal = undefined, type = FilePickerType.Choose, path = undefined, options = undefined) {\n\n\t\t/**\n\t\t * Create legacy callback wrapper to support old filepicker syntax\n\t\t * @param fn The original callback\n\t\t * @param type The file picker type which was used to pick the file(s)\n\t\t */\n\t\tconst legacyCallback = (fn, type) => {\n\t\t\tconst getPath = (node) => {\n\t\t\t\tconst root = node?.root || ''\n\t\t\t\tlet path = node?.path || ''\n\t\t\t\t// TODO: Fix this in @nextcloud/files\n\t\t\t\tif (path.startsWith(root)) {\n\t\t\t\t\tpath = path.slice(root.length) || '/'\n\t\t\t\t}\n\t\t\t\treturn path\n\t\t\t}\n\n\t\t\tif (multiselect) {\n\t\t\t\treturn (nodes) => fn(nodes.map(getPath), type)\n\t\t\t} else {\n\t\t\t\treturn (nodes) => fn(getPath(nodes[0]), type)\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Coverting a Node into a legacy file info to support the OC.dialogs.filepicker filter function\n\t\t * @param node The node to convert\n\t\t */\n\t\tconst nodeToLegacyFile = (node) => ({\n\t\t\tid: node.fileid || null,\n\t\t\tpath: node.path,\n\t\t\tmimetype: node.mime || null,\n\t\t\tmtime: node.mtime?.getTime() || null,\n\t\t\tpermissions: node.permissions,\n\t\t\tname: node.attributes?.displayName || node.basename,\n\t\t\tetag: node.attributes?.etag || null,\n\t\t\thasPreview: node.attributes?.hasPreview || null,\n\t\t\tmountType: node.attributes?.mountType || null,\n\t\t\tquotaAvailableBytes: node.attributes?.quotaAvailableBytes || null,\n\t\t\ticon: null,\n\t\t\tsharePermissions: null,\n\t\t})\n\n\t\tconst builder = getFilePickerBuilder(title)\n\n\t\t// Setup buttons\n\t\tif (type === this.FILEPICKER_TYPE_CUSTOM) {\n\t\t\t(options.buttons || []).forEach((button) => {\n\t\t\t\tbuilder.addButton({\n\t\t\t\t\tcallback: legacyCallback(callback, button.type),\n\t\t\t\t\tlabel: button.text,\n\t\t\t\t\ttype: button.defaultButton ? 'primary' : 'secondary',\n\t\t\t\t})\n\t\t\t})\n\t\t} else {\n\t\t\tbuilder.setButtonFactory((nodes, path) => {\n\t\t\t\tconst buttons = []\n\t\t\t\tconst node = nodes?.[0]?.attributes?.displayName || nodes?.[0]?.basename\n\t\t\t\tconst target = node || basename(path)\n\n\t\t\t\tif (type === FilePickerType.Choose) {\n\t\t\t\t\tbuttons.push({\n\t\t\t\t\t\tcallback: legacyCallback(callback, FilePickerType.Choose),\n\t\t\t\t\t\tlabel: node && !this.multiSelect ? t('core', 'Choose {file}', { file: node }) : t('core', 'Choose'),\n\t\t\t\t\t\ttype: 'primary',\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tif (type === FilePickerType.CopyMove || type === FilePickerType.Copy) {\n\t\t\t\t\tbuttons.push({\n\t\t\t\t\t\tcallback: legacyCallback(callback, FilePickerType.Copy),\n\t\t\t\t\t\tlabel: target ? t('core', 'Copy to {target}', { target }) : t('core', 'Copy'),\n\t\t\t\t\t\ttype: 'primary',\n\t\t\t\t\t\ticon: IconCopy,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tif (type === FilePickerType.Move || type === FilePickerType.CopyMove) {\n\t\t\t\t\tbuttons.push({\n\t\t\t\t\t\tcallback: legacyCallback(callback, FilePickerType.Move),\n\t\t\t\t\t\tlabel: target ? t('core', 'Move to {target}', { target }) : t('core', 'Move'),\n\t\t\t\t\t\ttype: type === FilePickerType.Move ? 'primary' : 'secondary',\n\t\t\t\t\t\ticon: IconMove,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\treturn buttons\n\t\t\t})\n\t\t}\n\n\t\tif (mimetype) {\n\t\t\tbuilder.setMimeTypeFilter(typeof mimetype === 'string' ? [mimetype] : (mimetype || []))\n\t\t}\n\t\tif (typeof options?.filter === 'function') {\n\t\t\tbuilder.setFilter((node) => options.filter(nodeToLegacyFile(node)))\n\t\t}\n\t\tbuilder.allowDirectories(options?.allowDirectoryChooser === true || mimetype?.includes('httpd/unix-directory') || false)\n\t\t\t.setMultiSelect(multiselect)\n\t\t\t.startAt(path)\n\t\t\t.build()\n\t\t\t.pick()\n\t},\n\n\t/**\n\t * Displays raw dialog\n\t * You better use a wrapper instead ...\n\t *\n\t * @deprecated 30.0.0 Use `@nextcloud/dialogs` instead or build your own with `@nextcloud/vue` NcDialog\n\t */\n\tmessage: function(content, title, dialogType, buttons, callback = () => {}, modal, allowHtml) {\n\t\tconst builder = (new DialogBuilder())\n\t\t\t.setName(title)\n\t\t\t.setText(allowHtml ? '' : content)\n\t\t\t.setButtons(Dialogs._getLegacyButtons(buttons, callback))\n\n\t\tswitch (dialogType) {\n\t\t\tcase 'alert':\n\t\t\t\tbuilder.setSeverity('warning')\n\t\t\t\tbreak\n\t\t\tcase 'notice':\n\t\t\t\tbuilder.setSeverity('info')\n\t\t\t\tbreak\n\t\t\tdefault:\n\t\t\t\tbreak\n\t\t}\n\n\t\tconst dialog = builder.build()\n\t\n\t\tif (allowHtml) {\n\t\t\tdialog.setHTML(content)\n\t\t}\n\n\t\treturn dialog.show().then(() => {\n\t\t\tif(!callback._clicked) {\n\t\t\t\tcallback(false)\n\t\t\t}\n\t\t})\n\t},\n\n\t/**\n\t * Helper for legacy API\n\t * @deprecated\n\t */\n\t_getLegacyButtons(buttons, callback) {\n\t\tconst buttonList = []\n\n\t\tswitch (typeof buttons === 'object' ? buttons.type : buttons) {\n\t\t\tcase Dialogs.YES_NO_BUTTONS:\n\t\t\t\tbuttonList.push({\n\t\t\t\t\tlabel: buttons?.cancel ?? t('core', 'No'),\n\t\t\t\t\tcallback: () => {\n\t\t\t\t\t\tcallback._clicked = true\n\t\t\t\t\t\tcallback(false)\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t\tbuttonList.push({\n\t\t\t\t\tlabel: buttons?.confirm ?? t('core', 'Yes'),\n\t\t\t\t\ttype: 'primary',\n\t\t\t\t\tcallback: () => {\n\t\t\t\t\t\tcallback._clicked = true\n\t\t\t\t\t\tcallback(true)\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t\tbreak\n\t\t\tcase Dialogs.OK_BUTTONS:\n\t\t\t\tbuttonList.push({\n\t\t\t\t\tlabel: buttons?.confirm ?? t('core', 'OK'),\n\t\t\t\t\ttype: 'primary',\n\t\t\t\t\tcallback: () => {\n\t\t\t\t\t\tcallback._clicked = true\n\t\t\t\t\t\tcallback(true)\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t\tbreak\n\t\t\tdefault:\n\t\t\t\tconsole.error('Invalid call to OC.dialogs')\n\t\t\t\tbreak\n\t\t}\n\t\treturn buttonList\n\t},\n\n\t_fileexistsshown: false,\n\t/**\n\t * Displays file exists dialog\n\t * @param {object} data upload object\n\t * @param {object} original file with name, size and mtime\n\t * @param {object} replacement file with name, size and mtime\n\t * @param {object} controller with onCancel, onSkip, onReplace and onRename methods\n\t * @returns {Promise} jquery promise that resolves after the dialog template was loaded\n\t *\n\t * @deprecated 29.0.0 Use openConflictPicker from the @nextcloud/upload package instead\n\t */\n\tfileexists: function(data, original, replacement, controller) {\n\t\tvar self = this\n\t\tvar dialogDeferred = new $.Deferred()\n\n\t\tvar getCroppedPreview = function(file) {\n\t\t\tvar deferred = new $.Deferred()\n\t\t\t// Only process image files.\n\t\t\tvar type = file.type && file.type.split('/').shift()\n\t\t\tif (window.FileReader && type === 'image') {\n\t\t\t\tvar reader = new FileReader()\n\t\t\t\treader.onload = function(e) {\n\t\t\t\t\tvar blob = new Blob([e.target.result])\n\t\t\t\t\twindow.URL = window.URL || window.webkitURL\n\t\t\t\t\tvar originalUrl = window.URL.createObjectURL(blob)\n\t\t\t\t\tvar image = new Image()\n\t\t\t\t\timage.src = originalUrl\n\t\t\t\t\timage.onload = function() {\n\t\t\t\t\t\tvar url = crop(image)\n\t\t\t\t\t\tdeferred.resolve(url)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treader.readAsArrayBuffer(file)\n\t\t\t} else {\n\t\t\t\tdeferred.reject()\n\t\t\t}\n\t\t\treturn deferred\n\t\t}\n\n\t\tvar crop = function(img) {\n\t\t\tvar canvas = document.createElement('canvas')\n\t\t\tvar targetSize = 96\n\t\t\tvar width = img.width\n\t\t\tvar height = img.height\n\t\t\tvar x; var y; var size\n\n\t\t\t// Calculate the width and height, constraining the proportions\n\t\t\tif (width > height) {\n\t\t\t\ty = 0\n\t\t\t\tx = (width - height) / 2\n\t\t\t} else {\n\t\t\t\ty = (height - width) / 2\n\t\t\t\tx = 0\n\t\t\t}\n\t\t\tsize = Math.min(width, height)\n\n\t\t\t// Set canvas size to the cropped area\n\t\t\tcanvas.width = size\n\t\t\tcanvas.height = size\n\t\t\tvar ctx = canvas.getContext('2d')\n\t\t\tctx.drawImage(img, x, y, size, size, 0, 0, size, size)\n\n\t\t\t// Resize the canvas to match the destination (right size uses 96px)\n\t\t\tresampleHermite(canvas, size, size, targetSize, targetSize)\n\n\t\t\treturn canvas.toDataURL('image/png', 0.7)\n\t\t}\n\n\t\t/**\n\t\t * Fast image resize/resample using Hermite filter with JavaScript.\n\t\t *\n\t\t * @author: ViliusL\n\t\t *\n\t\t * @param {*} canvas\n\t\t * @param {number} W\n\t\t * @param {number} H\n\t\t * @param {number} W2\n\t\t * @param {number} H2\n\t\t */\n\t\tvar resampleHermite = function(canvas, W, H, W2, H2) {\n\t\t\tW2 = Math.round(W2)\n\t\t\tH2 = Math.round(H2)\n\t\t\tvar img = canvas.getContext('2d').getImageData(0, 0, W, H)\n\t\t\tvar img2 = canvas.getContext('2d').getImageData(0, 0, W2, H2)\n\t\t\tvar data = img.data\n\t\t\tvar data2 = img2.data\n\t\t\tvar ratio_w = W / W2\n\t\t\tvar ratio_h = H / H2\n\t\t\tvar ratio_w_half = Math.ceil(ratio_w / 2)\n\t\t\tvar ratio_h_half = Math.ceil(ratio_h / 2)\n\n\t\t\tfor (var j = 0; j < H2; j++) {\n\t\t\t\tfor (var i = 0; i < W2; i++) {\n\t\t\t\t\tvar x2 = (i + j * W2) * 4\n\t\t\t\t\tvar weight = 0\n\t\t\t\t\tvar weights = 0\n\t\t\t\t\tvar weights_alpha = 0\n\t\t\t\t\tvar gx_r = 0\n\t\t\t\t\tvar gx_g = 0\n\t\t\t\t\tvar gx_b = 0\n\t\t\t\t\tvar gx_a = 0\n\t\t\t\t\tvar center_y = (j + 0.5) * ratio_h\n\t\t\t\t\tfor (var yy = Math.floor(j * ratio_h); yy < (j + 1) * ratio_h; yy++) {\n\t\t\t\t\t\tvar dy = Math.abs(center_y - (yy + 0.5)) / ratio_h_half\n\t\t\t\t\t\tvar center_x = (i + 0.5) * ratio_w\n\t\t\t\t\t\tvar w0 = dy * dy // pre-calc part of w\n\t\t\t\t\t\tfor (var xx = Math.floor(i * ratio_w); xx < (i + 1) * ratio_w; xx++) {\n\t\t\t\t\t\t\tvar dx = Math.abs(center_x - (xx + 0.5)) / ratio_w_half\n\t\t\t\t\t\t\tvar w = Math.sqrt(w0 + dx * dx)\n\t\t\t\t\t\t\tif (w >= -1 && w <= 1) {\n\t\t\t\t\t\t\t\t// hermite filter\n\t\t\t\t\t\t\t\tweight = 2 * w * w * w - 3 * w * w + 1\n\t\t\t\t\t\t\t\tif (weight > 0) {\n\t\t\t\t\t\t\t\t\tdx = 4 * (xx + yy * W)\n\t\t\t\t\t\t\t\t\t// alpha\n\t\t\t\t\t\t\t\t\tgx_a += weight * data[dx + 3]\n\t\t\t\t\t\t\t\t\tweights_alpha += weight\n\t\t\t\t\t\t\t\t\t// colors\n\t\t\t\t\t\t\t\t\tif (data[dx + 3] < 255) { weight = weight * data[dx + 3] / 250 }\n\t\t\t\t\t\t\t\t\tgx_r += weight * data[dx]\n\t\t\t\t\t\t\t\t\tgx_g += weight * data[dx + 1]\n\t\t\t\t\t\t\t\t\tgx_b += weight * data[dx + 2]\n\t\t\t\t\t\t\t\t\tweights += weight\n\t\t\t\t\t\t\t\t}\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\tdata2[x2] = gx_r / weights\n\t\t\t\t\tdata2[x2 + 1] = gx_g / weights\n\t\t\t\t\tdata2[x2 + 2] = gx_b / weights\n\t\t\t\t\tdata2[x2 + 3] = gx_a / weights_alpha\n\t\t\t\t}\n\t\t\t}\n\t\t\tcanvas.getContext('2d').clearRect(0, 0, Math.max(W, W2), Math.max(H, H2))\n\t\t\tcanvas.width = W2\n\t\t\tcanvas.height = H2\n\t\t\tcanvas.getContext('2d').putImageData(img2, 0, 0)\n\t\t}\n\n\t\tvar addConflict = function($conflicts, original, replacement) {\n\n\t\t\tvar $conflict = $conflicts.find('.template').clone().removeClass('template').addClass('conflict')\n\t\t\tvar $originalDiv = $conflict.find('.original')\n\t\t\tvar $replacementDiv = $conflict.find('.replacement')\n\n\t\t\t$conflict.data('data', data)\n\n\t\t\t$conflict.find('.filename').text(original.name)\n\t\t\t$originalDiv.find('.size').text(OC.Util.humanFileSize(original.size))\n\t\t\t$originalDiv.find('.mtime').text(OC.Util.formatDate(original.mtime))\n\t\t\t// ie sucks\n\t\t\tif (replacement.size && replacement.lastModified) {\n\t\t\t\t$replacementDiv.find('.size').text(OC.Util.humanFileSize(replacement.size))\n\t\t\t\t$replacementDiv.find('.mtime').text(OC.Util.formatDate(replacement.lastModified))\n\t\t\t}\n\t\t\tvar path = original.directory + '/' + original.name\n\t\t\tvar urlSpec = {\n\t\t\t\tfile: path,\n\t\t\t\tx: 96,\n\t\t\t\ty: 96,\n\t\t\t\tc: original.etag,\n\t\t\t\tforceIcon: 0\n\t\t\t}\n\t\t\tvar previewpath = Files.generatePreviewUrl(urlSpec)\n\t\t\t// Escaping single quotes\n\t\t\tpreviewpath = previewpath.replace(/'/g, '%27')\n\t\t\t$originalDiv.find('.icon').css({ 'background-image': \"url('\" + previewpath + \"')\" })\n\t\t\tgetCroppedPreview(replacement).then(\n\t\t\t\tfunction(path) {\n\t\t\t\t\t$replacementDiv.find('.icon').css('background-image', 'url(' + path + ')')\n\t\t\t\t}, function() {\n\t\t\t\t\tpath = OC.MimeType.getIconUrl(replacement.type)\n\t\t\t\t\t$replacementDiv.find('.icon').css('background-image', 'url(' + path + ')')\n\t\t\t\t}\n\t\t\t)\n\t\t\t// connect checkboxes with labels\n\t\t\tvar checkboxId = $conflicts.find('.conflict').length\n\t\t\t$originalDiv.find('input:checkbox').attr('id', 'checkbox_original_' + checkboxId)\n\t\t\t$replacementDiv.find('input:checkbox').attr('id', 'checkbox_replacement_' + checkboxId)\n\n\t\t\t$conflicts.append($conflict)\n\n\t\t\t// set more recent mtime bold\n\t\t\t// ie sucks\n\t\t\tif (replacement.lastModified > original.mtime) {\n\t\t\t\t$replacementDiv.find('.mtime').css('font-weight', 'bold')\n\t\t\t} else if (replacement.lastModified < original.mtime) {\n\t\t\t\t$originalDiv.find('.mtime').css('font-weight', 'bold')\n\t\t\t} else {\n\t\t\t\t// TODO add to same mtime collection?\n\t\t\t}\n\n\t\t\t// set bigger size bold\n\t\t\tif (replacement.size && replacement.size > original.size) {\n\t\t\t\t$replacementDiv.find('.size').css('font-weight', 'bold')\n\t\t\t} else if (replacement.size && replacement.size < original.size) {\n\t\t\t\t$originalDiv.find('.size').css('font-weight', 'bold')\n\t\t\t} else {\n\t\t\t\t// TODO add to same size collection?\n\t\t\t}\n\n\t\t\t// TODO show skip action for files with same size and mtime in bottom row\n\n\t\t\t// always keep readonly files\n\n\t\t\tif (original.status === 'readonly') {\n\t\t\t\t$originalDiv\n\t\t\t\t\t.addClass('readonly')\n\t\t\t\t\t.find('input[type=\"checkbox\"]')\n\t\t\t\t\t.prop('checked', true)\n\t\t\t\t\t.prop('disabled', true)\n\t\t\t\t$originalDiv.find('.message')\n\t\t\t\t\t.text(t('core', 'read-only'))\n\t\t\t}\n\t\t}\n\t\t// var selection = controller.getSelection(data.originalFiles);\n\t\t// if (selection.defaultAction) {\n\t\t//\tcontroller[selection.defaultAction](data);\n\t\t// } else {\n\t\tvar dialogName = 'oc-dialog-fileexists-content'\n\t\tvar dialogId = '#' + dialogName\n\t\tif (this._fileexistsshown) {\n\t\t\t// add conflict\n\n\t\t\tvar $conflicts = $(dialogId + ' .conflicts')\n\t\t\taddConflict($conflicts, original, replacement)\n\n\t\t\tvar count = $(dialogId + ' .conflict').length\n\t\t\tvar title = n('core',\n\t\t\t\t'{count} file conflict',\n\t\t\t\t'{count} file conflicts',\n\t\t\t\tcount,\n\t\t\t\t{ count: count }\n\t\t\t)\n\t\t\t$(dialogId).parent().children('.oc-dialog-title').text(title)\n\n\t\t\t// recalculate dimensions\n\t\t\t$(window).trigger('resize')\n\t\t\tdialogDeferred.resolve()\n\t\t} else {\n\t\t\t// create dialog\n\t\t\tthis._fileexistsshown = true\n\t\t\t$.when(this._getFileExistsTemplate()).then(function($tmpl) {\n\t\t\t\tvar title = t('core', 'One file conflict')\n\t\t\t\tvar $dlg = $tmpl.octemplate({\n\t\t\t\t\tdialog_name: dialogName,\n\t\t\t\t\ttitle: title,\n\t\t\t\t\ttype: 'fileexists',\n\n\t\t\t\t\tallnewfiles: t('core', 'New Files'),\n\t\t\t\t\tallexistingfiles: t('core', 'Already existing files'),\n\n\t\t\t\t\twhy: t('core', 'Which files do you want to keep?'),\n\t\t\t\t\twhat: t('core', 'If you select both versions, the copied file will have a number added to its name.')\n\t\t\t\t})\n\t\t\t\t$('body').append($dlg)\n\n\t\t\t\tif (original && replacement) {\n\t\t\t\t\tvar $conflicts = $dlg.find('.conflicts')\n\t\t\t\t\taddConflict($conflicts, original, replacement)\n\t\t\t\t}\n\n\t\t\t\tvar buttonlist = [{\n\t\t\t\t\ttext: t('core', 'Cancel'),\n\t\t\t\t\tclasses: 'cancel',\n\t\t\t\t\tclick: function() {\n\t\t\t\t\t\tif (typeof controller.onCancel !== 'undefined') {\n\t\t\t\t\t\t\tcontroller.onCancel(data)\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttext: t('core', 'Continue'),\n\t\t\t\t\tclasses: 'continue',\n\t\t\t\t\tclick: function() {\n\t\t\t\t\t\tif (typeof controller.onContinue !== 'undefined') {\n\t\t\t\t\t\t\tcontroller.onContinue($(dialogId + ' .conflict'))\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t}\n\t\t\t\t}]\n\n\t\t\t\t$(dialogId).ocdialog({\n\t\t\t\t\twidth: 500,\n\t\t\t\t\tcloseOnEscape: true,\n\t\t\t\t\tmodal: true,\n\t\t\t\t\tbuttons: buttonlist,\n\t\t\t\t\tcloseButton: null,\n\t\t\t\t\tclose: function() {\n\t\t\t\t\t\tself._fileexistsshown = false\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t$(this).ocdialog('destroy').remove()\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t// ignore\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\n\t\t\t\t$(dialogId).css('height', 'auto')\n\n\t\t\t\tvar $primaryButton = $dlg.closest('.oc-dialog').find('button.continue')\n\t\t\t\t$primaryButton.prop('disabled', true)\n\n\t\t\t\tfunction updatePrimaryButton() {\n\t\t\t\t\tvar checkedCount = $dlg.find('.conflicts .checkbox:checked').length\n\t\t\t\t\t$primaryButton.prop('disabled', checkedCount === 0)\n\t\t\t\t}\n\n\t\t\t\t// add checkbox toggling actions\n\t\t\t\t$(dialogId).find('.allnewfiles').on('click', function() {\n\t\t\t\t\tvar $checkboxes = $(dialogId).find('.conflict .replacement input[type=\"checkbox\"]')\n\t\t\t\t\t$checkboxes.prop('checked', $(this).prop('checked'))\n\t\t\t\t})\n\t\t\t\t$(dialogId).find('.allexistingfiles').on('click', function() {\n\t\t\t\t\tvar $checkboxes = $(dialogId).find('.conflict .original:not(.readonly) input[type=\"checkbox\"]')\n\t\t\t\t\t$checkboxes.prop('checked', $(this).prop('checked'))\n\t\t\t\t})\n\t\t\t\t$(dialogId).find('.conflicts').on('click', '.replacement,.original:not(.readonly)', function() {\n\t\t\t\t\tvar $checkbox = $(this).find('input[type=\"checkbox\"]')\n\t\t\t\t\t$checkbox.prop('checked', !$checkbox.prop('checked'))\n\t\t\t\t})\n\t\t\t\t$(dialogId).find('.conflicts').on('click', '.replacement input[type=\"checkbox\"],.original:not(.readonly) input[type=\"checkbox\"]', function() {\n\t\t\t\t\tvar $checkbox = $(this)\n\t\t\t\t\t$checkbox.prop('checked', !$checkbox.prop('checked'))\n\t\t\t\t})\n\n\t\t\t\t// update counters\n\t\t\t\t$(dialogId).on('click', '.replacement,.allnewfiles', function() {\n\t\t\t\t\tvar count = $(dialogId).find('.conflict .replacement input[type=\"checkbox\"]:checked').length\n\t\t\t\t\tif (count === $(dialogId + ' .conflict').length) {\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles').prop('checked', true)\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles + .count').text(t('core', '(all selected)'))\n\t\t\t\t\t} else if (count > 0) {\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles + .count').text(t('core', '({count} selected)', { count: count }))\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles + .count').text('')\n\t\t\t\t\t}\n\t\t\t\t\tupdatePrimaryButton()\n\t\t\t\t})\n\t\t\t\t$(dialogId).on('click', '.original,.allexistingfiles', function() {\n\t\t\t\t\tvar count = $(dialogId).find('.conflict .original input[type=\"checkbox\"]:checked').length\n\t\t\t\t\tif (count === $(dialogId + ' .conflict').length) {\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles').prop('checked', true)\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles + .count').text(t('core', '(all selected)'))\n\t\t\t\t\t} else if (count > 0) {\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles + .count')\n\t\t\t\t\t\t\t.text(t('core', '({count} selected)', { count: count }))\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles + .count').text('')\n\t\t\t\t\t}\n\t\t\t\t\tupdatePrimaryButton()\n\t\t\t\t})\n\n\t\t\t\tdialogDeferred.resolve()\n\t\t\t})\n\t\t\t\t.fail(function() {\n\t\t\t\t\tdialogDeferred.reject()\n\t\t\t\t\talert(t('core', 'Error loading file exists template'))\n\t\t\t\t})\n\t\t}\n\t\t// }\n\t\treturn dialogDeferred.promise()\n\t},\n\n\t_getFileExistsTemplate: function() {\n\t\tvar defer = $.Deferred()\n\t\tif (!this.$fileexistsTemplate) {\n\t\t\tvar self = this\n\t\t\t$.get(OC.filePath('files', 'templates', 'fileexists.html'), function(tmpl) {\n\t\t\t\tself.$fileexistsTemplate = $(tmpl)\n\t\t\t\tdefer.resolve(self.$fileexistsTemplate)\n\t\t\t})\n\t\t\t\t.fail(function() {\n\t\t\t\t\tdefer.reject()\n\t\t\t\t})\n\t\t} else {\n\t\t\tdefer.resolve(this.$fileexistsTemplate)\n\t\t}\n\t\treturn defer.promise()\n\t},\n}\n\nexport default Dialogs\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { emit } from '@nextcloud/event-bus'\n\n/**\n * @private\n * @param {Document} global the document to read the initial value from\n * @param {Function} emit the function to invoke for every new token\n * @return {object}\n */\nexport const manageToken = (global, emit) => {\n\tlet token = global.getElementsByTagName('head')[0].getAttribute('data-requesttoken')\n\n\treturn {\n\t\tgetToken: () => token,\n\t\tsetToken: newToken => {\n\t\t\ttoken = newToken\n\n\t\t\temit('csrf-token-update', {\n\t\t\t\ttoken,\n\t\t\t})\n\t\t},\n\t}\n}\n\nconst manageFromDocument = manageToken(document, emit)\n\n/**\n * @return {string}\n */\nexport const getToken = manageFromDocument.getToken\n\n/**\n * @param {string} newToken new token\n */\nexport const setToken = manageFromDocument.setToken\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-FileCopyrightText: 2015 ownCloud, Inc.\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/* eslint-disable */\nimport $ from 'jquery'\n\nimport { getToken } from './requesttoken.js'\n\n/**\n * Create a new event source\n * @param {string} src\n * @param {object} [data] to be send as GET\n *\n * @constructs OCEventSource\n */\nconst OCEventSource = function(src, data) {\n\tvar dataStr = ''\n\tvar name\n\tvar joinChar\n\tthis.typelessListeners = []\n\tthis.closed = false\n\tthis.listeners = {}\n\tif (data) {\n\t\tfor (name in data) {\n\t\t\tdataStr += name + '=' + encodeURIComponent(data[name]) + '&'\n\t\t}\n\t}\n\tdataStr += 'requesttoken=' + encodeURIComponent(getToken())\n\tif (!this.useFallBack && typeof EventSource !== 'undefined') {\n\t\tjoinChar = '&'\n\t\tif (src.indexOf('?') === -1) {\n\t\t\tjoinChar = '?'\n\t\t}\n\t\tthis.source = new EventSource(src + joinChar + dataStr)\n\t\tthis.source.onmessage = function(e) {\n\t\t\tfor (var i = 0; i < this.typelessListeners.length; i++) {\n\t\t\t\tthis.typelessListeners[i](JSON.parse(e.data))\n\t\t\t}\n\t\t}.bind(this)\n\t} else {\n\t\tvar iframeId = 'oc_eventsource_iframe_' + OCEventSource.iframeCount\n\t\tOCEventSource.fallBackSources[OCEventSource.iframeCount] = this\n\t\tthis.iframe = $('')\n\t\tthis.iframe.attr('id', iframeId)\n\t\tthis.iframe.hide()\n\n\t\tjoinChar = '&'\n\t\tif (src.indexOf('?') === -1) {\n\t\t\tjoinChar = '?'\n\t\t}\n\t\tthis.iframe.attr('src', src + joinChar + 'fallback=true&fallback_id=' + OCEventSource.iframeCount + '&' + dataStr)\n\t\t$('body').append(this.iframe)\n\t\tthis.useFallBack = true\n\t\tOCEventSource.iframeCount++\n\t}\n\t// add close listener\n\tthis.listen('__internal__', function(data) {\n\t\tif (data === 'close') {\n\t\t\tthis.close()\n\t\t}\n\t}.bind(this))\n}\nOCEventSource.fallBackSources = []\nOCEventSource.iframeCount = 0// number of fallback iframes\nOCEventSource.fallBackCallBack = function(id, type, data) {\n\tOCEventSource.fallBackSources[id].fallBackCallBack(type, data)\n}\nOCEventSource.prototype = {\n\ttypelessListeners: [],\n\tiframe: null,\n\tlisteners: {}, // only for fallback\n\tuseFallBack: false,\n\t/**\n\t * Fallback callback for browsers that don't have the\n\t * native EventSource object.\n\t *\n\t * Calls the registered listeners.\n\t *\n\t * @private\n\t * @param {String} type event type\n\t * @param {Object} data received data\n\t */\n\tfallBackCallBack: function(type, data) {\n\t\tvar i\n\t\t// ignore messages that might appear after closing\n\t\tif (this.closed) {\n\t\t\treturn\n\t\t}\n\t\tif (type) {\n\t\t\tif (typeof this.listeners.done !== 'undefined') {\n\t\t\t\tfor (i = 0; i < this.listeners[type].length; i++) {\n\t\t\t\t\tthis.listeners[type][i](data)\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor (i = 0; i < this.typelessListeners.length; i++) {\n\t\t\t\tthis.typelessListeners[i](data)\n\t\t\t}\n\t\t}\n\t},\n\tlastLength: 0, // for fallback\n\t/**\n\t * Listen to a given type of events.\n\t *\n\t * @param {String} type event type\n\t * @param {Function} callback event callback\n\t */\n\tlisten: function(type, callback) {\n\t\tif (callback && callback.call) {\n\n\t\t\tif (type) {\n\t\t\t\tif (this.useFallBack) {\n\t\t\t\t\tif (!this.listeners[type]) {\n\t\t\t\t\t\tthis.listeners[type] = []\n\t\t\t\t\t}\n\t\t\t\t\tthis.listeners[type].push(callback)\n\t\t\t\t} else {\n\t\t\t\t\tthis.source.addEventListener(type, function(e) {\n\t\t\t\t\t\tif (typeof e.data !== 'undefined') {\n\t\t\t\t\t\t\tcallback(JSON.parse(e.data))\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcallback('')\n\t\t\t\t\t\t}\n\t\t\t\t\t}, false)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.typelessListeners.push(callback)\n\t\t\t}\n\t\t}\n\t},\n\t/**\n\t * Closes this event source.\n\t */\n\tclose: function() {\n\t\tthis.closed = true\n\t\tif (typeof this.source !== 'undefined') {\n\t\t\tthis.source.close()\n\t\t}\n\t}\n}\n\nexport default OCEventSource\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport _ from 'underscore'\n/** @typedef {import('jquery')} jQuery */\nimport $ from 'jquery'\n\nimport { menuSpeed } from './constants.js'\n\nexport let currentMenu = null\nexport let currentMenuToggle = null\n\n/**\n * For menu toggling\n *\n * @param {jQuery} $toggle the toggle element\n * @param {jQuery} $menuEl the menu container element\n * @param {Function | undefined} toggle callback invoked everytime the menu is opened\n * @param {boolean} headerMenu is this a top right header menu?\n * @return {void}\n */\nexport const registerMenu = function($toggle, $menuEl, toggle, headerMenu) {\n\t$menuEl.addClass('menu')\n\tconst isClickableElement = $toggle.prop('tagName') === 'A' || $toggle.prop('tagName') === 'BUTTON'\n\n\t// On link and button, the enter key trigger a click event\n\t// Only use the click to avoid two fired events\n\t$toggle.on(isClickableElement ? 'click.menu' : 'click.menu keyup.menu', function(event) {\n\t\t// prevent the link event (append anchor to URL)\n\t\tevent.preventDefault()\n\n\t\t// allow enter key as a trigger\n\t\tif (event.key && event.key !== 'Enter') {\n\t\t\treturn\n\t\t}\n\n\t\tif ($menuEl.is(currentMenu)) {\n\t\t\thideMenus()\n\t\t\treturn\n\t\t} else if (currentMenu) {\n\t\t\t// another menu was open?\n\t\t\t// close it\n\t\t\thideMenus()\n\t\t}\n\n\t\tif (headerMenu === true) {\n\t\t\t$menuEl.parent().addClass('openedMenu')\n\t\t}\n\n\t\t// Set menu to expanded\n\t\t$toggle.attr('aria-expanded', true)\n\n\t\t$menuEl.slideToggle(menuSpeed, toggle)\n\t\tcurrentMenu = $menuEl\n\t\tcurrentMenuToggle = $toggle\n\t})\n}\n\n/**\n * Unregister a previously registered menu\n *\n * @param {jQuery} $toggle the toggle element\n * @param {jQuery} $menuEl the menu container element\n */\nexport const unregisterMenu = ($toggle, $menuEl) => {\n\t// close menu if opened\n\tif ($menuEl.is(currentMenu)) {\n\t\thideMenus()\n\t}\n\t$toggle.off('click.menu').removeClass('menutoggle')\n\t$menuEl.removeClass('menu')\n}\n\n/**\n * Hides any open menus\n *\n * @param {Function} complete callback when the hiding animation is done\n */\nexport const hideMenus = function(complete) {\n\tif (currentMenu) {\n\t\tconst lastMenu = currentMenu\n\t\tcurrentMenu.trigger(new $.Event('beforeHide'))\n\t\tcurrentMenu.slideUp(menuSpeed, function() {\n\t\t\tlastMenu.trigger(new $.Event('afterHide'))\n\t\t\tif (complete) {\n\t\t\t\tcomplete.apply(this, arguments)\n\t\t\t}\n\t\t})\n\t}\n\n\t// Set menu to closed\n\t$('.menutoggle').attr('aria-expanded', false)\n\tif (currentMenuToggle) {\n\t\tcurrentMenuToggle.attr('aria-expanded', false)\n\t}\n\n\t$('.openedMenu').removeClass('openedMenu')\n\tcurrentMenu = null\n\tcurrentMenuToggle = null\n}\n\n/**\n * Shows a given element as menu\n *\n * @param {object} [$toggle] menu toggle\n * @param {object} $menuEl menu element\n * @param {Function} complete callback when the showing animation is done\n */\nexport const showMenu = ($toggle, $menuEl, complete) => {\n\tif ($menuEl.is(currentMenu)) {\n\t\treturn\n\t}\n\thideMenus()\n\tcurrentMenu = $menuEl\n\tcurrentMenuToggle = $toggle\n\t$menuEl.trigger(new $.Event('beforeShow'))\n\t$menuEl.show()\n\t$menuEl.trigger(new $.Event('afterShow'))\n\t// no animation\n\tif (_.isFunction(complete)) {\n\t\tcomplete()\n\t}\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nexport const coreApps = ['', 'admin', 'log', 'core/search', 'core', '3rdparty']\nexport const menuSpeed = 50\nexport const PERMISSION_NONE = 0\nexport const PERMISSION_CREATE = 4\nexport const PERMISSION_READ = 1\nexport const PERMISSION_UPDATE = 2\nexport const PERMISSION_DELETE = 8\nexport const PERMISSION_SHARE = 16\nexport const PERMISSION_ALL = 31\nexport const TAG_FAVORITE = '_$!!$_'\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nconst isAdmin = !!window._oc_isadmin\n\n/**\n * Returns whether the current user is an administrator\n *\n * @return {boolean} true if the user is an admin, false otherwise\n * @since 9.0.0\n */\nexport const isUserAdmin = () => isAdmin\n","/**\n * SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors\n * SPDX-FileCopyrightText: 2014 ownCloud, Inc.\n * SPDX-FileCopyrightText: 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport Handlebars from 'handlebars'\nimport {\n\tloadTranslations,\n\ttranslate,\n\ttranslatePlural,\n\tregister,\n\tunregister,\n} from '@nextcloud/l10n'\n\n/**\n * L10N namespace with localization functions.\n *\n * @namespace OC.L10n\n * @deprecated 26.0.0 use https://www.npmjs.com/package/@nextcloud/l10n\n */\nconst L10n = {\n\n\t/**\n\t * Load an app's translation bundle if not loaded already.\n\t *\n\t * @deprecated 26.0.0 use `loadTranslations` from https://www.npmjs.com/package/@nextcloud/l10n\n\t *\n\t * @param {string} appName name of the app\n\t * @param {Function} callback callback to be called when\n\t * the translations are loaded\n\t * @return {Promise} promise\n\t */\n\tload: loadTranslations,\n\n\t/**\n\t * Register an app's translation bundle.\n\t *\n\t * @deprecated 26.0.0 use `register` from https://www.npmjs.com/package/@nextcloud/l10\n\t *\n\t * @param {string} appName name of the app\n\t * @param {Record} bundle bundle\n\t */\n\tregister,\n\n\t/**\n\t * @private\n\t * @deprecated 26.0.0 use `unregister` from https://www.npmjs.com/package/@nextcloud/l10n\n\t */\n\t_unregister: unregister,\n\n\t/**\n\t * Translate a string\n\t *\n\t * @deprecated 26.0.0 use `translate` from https://www.npmjs.com/package/@nextcloud/l10n\n\t *\n\t * @param {string} app the id of the app for which to translate the string\n\t * @param {string} text the string to translate\n\t * @param {object} [vars] map of placeholder key to value\n\t * @param {number} [count] number to replace %n with\n\t * @param {Array} [options] options array\n\t * @param {boolean} [options.escape=true] enable/disable auto escape of placeholders (by default enabled)\n\t * @param {boolean} [options.sanitize=true] enable/disable sanitization (by default enabled)\n\t * @return {string}\n\t */\n\ttranslate,\n\n\t/**\n\t * Translate a plural string\n\t *\n\t * @deprecated 26.0.0 use `translatePlural` from https://www.npmjs.com/package/@nextcloud/l10n\n\t *\n\t * @param {string} app the id of the app for which to translate the string\n\t * @param {string} textSingular the string to translate for exactly one object\n\t * @param {string} textPlural the string to translate for n objects\n\t * @param {number} count number to determine whether to use singular or plural\n\t * @param {object} [vars] map of placeholder key to value\n\t * @param {Array} [options] options array\n\t * @param {boolean} [options.escape=true] enable/disable auto escape of placeholders (by default enabled)\n\t * @return {string} Translated string\n\t */\n\ttranslatePlural,\n}\n\nexport default L10n\n\nHandlebars.registerHelper('t', function(app, text) {\n\treturn translate(app, text)\n})\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport {\n\tgetRootUrl as realGetRootUrl,\n} from '@nextcloud/router'\n\n/**\n * Creates a relative url for remote use\n *\n * @param {string} service id\n * @return {string} the url\n */\nexport const linkToRemoteBase = service => {\n\treturn realGetRootUrl() + '/remote.php/' + service\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport $ from 'jquery'\n\n/**\n * A little class to manage a status field for a \"saving\" process.\n * It can be used to display a starting message (e.g. \"Saving...\") and then\n * replace it with a green success message or a red error message.\n *\n * @namespace OC.msg\n */\nexport default {\n\t/**\n\t * Displayes a \"Saving...\" message in the given message placeholder\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t */\n\tstartSaving(selector) {\n\t\tthis.startAction(selector, t('core', 'Saving …'))\n\t},\n\n\t/**\n\t * Displayes a custom message in the given message placeholder\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {string} message Plain text message to display (no HTML allowed)\n\t */\n\tstartAction(selector, message) {\n\t\t$(selector).text(message)\n\t\t\t.removeClass('success')\n\t\t\t.removeClass('error')\n\t\t\t.stop(true, true)\n\t\t\t.show()\n\t},\n\n\t/**\n\t * Displayes an success/error message in the given selector\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {object} response Response of the server\n\t * @param {object} response.data Data of the servers response\n\t * @param {string} response.data.message Plain text message to display (no HTML allowed)\n\t * @param {string} response.status is being used to decide whether the message\n\t * is displayed as an error/success\n\t */\n\tfinishedSaving(selector, response) {\n\t\tthis.finishedAction(selector, response)\n\t},\n\n\t/**\n\t * Displayes an success/error message in the given selector\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {object} response Response of the server\n\t * @param {object} response.data Data of the servers response\n\t * @param {string} response.data.message Plain text message to display (no HTML allowed)\n\t * @param {string} response.status is being used to decide whether the message\n\t * is displayed as an error/success\n\t */\n\tfinishedAction(selector, response) {\n\t\tif (response.status === 'success') {\n\t\t\tthis.finishedSuccess(selector, response.data.message)\n\t\t} else {\n\t\t\tthis.finishedError(selector, response.data.message)\n\t\t}\n\t},\n\n\t/**\n\t * Displayes an success message in the given selector\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {string} message Plain text success message to display (no HTML allowed)\n\t */\n\tfinishedSuccess(selector, message) {\n\t\t$(selector).text(message)\n\t\t\t.addClass('success')\n\t\t\t.removeClass('error')\n\t\t\t.stop(true, true)\n\t\t\t.delay(3000)\n\t\t\t.fadeOut(900)\n\t\t\t.show()\n\t},\n\n\t/**\n\t * Displayes an error message in the given selector\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {string} message Plain text error message to display (no HTML allowed)\n\t */\n\tfinishedError(selector, message) {\n\t\t$(selector).text(message)\n\t\t\t.addClass('error')\n\t\t\t.removeClass('success')\n\t\t\t.show()\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 { confirmPassword, isPasswordConfirmationRequired } from '@nextcloud/password-confirmation'\nimport '@nextcloud/password-confirmation/dist/style.css'\n\n/**\n * @namespace OC.PasswordConfirmation\n */\nexport default {\n\n\trequiresPasswordConfirmation() {\n\t\treturn isPasswordConfirmationRequired()\n\t},\n\n\t/**\n\t * @param {Function} callback success callback function\n\t * @param {object} options options currently not used by confirmPassword\n\t * @param {Function} rejectCallback error callback function\n\t */\n\trequirePasswordConfirmation(callback, options, rejectCallback) {\n\t\tconfirmPassword().then(callback, rejectCallback)\n\t},\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nexport default {\n\n\t/**\n\t * @type {Array.}\n\t */\n\t_plugins: {},\n\n\t/**\n\t * Register plugin\n\t *\n\t * @param {string} targetName app name / class name to hook into\n\t * @param {OC.Plugin} plugin plugin\n\t */\n\tregister(targetName, plugin) {\n\t\tlet plugins = this._plugins[targetName]\n\t\tif (!plugins) {\n\t\t\tplugins = this._plugins[targetName] = []\n\t\t}\n\t\tplugins.push(plugin)\n\t},\n\n\t/**\n\t * Returns all plugin registered to the given target\n\t * name / app name / class name.\n\t *\n\t * @param {string} targetName app name / class name to hook into\n\t * @return {Array.} array of plugins\n\t */\n\tgetPlugins(targetName) {\n\t\treturn this._plugins[targetName] || []\n\t},\n\n\t/**\n\t * Call attach() on all plugins registered to the given target name.\n\t *\n\t * @param {string} targetName app name / class name\n\t * @param {object} targetObject to be extended\n\t * @param {object} [options] options\n\t */\n\tattach(targetName, targetObject, options) {\n\t\tconst plugins = this.getPlugins(targetName)\n\t\tfor (let i = 0; i < plugins.length; i++) {\n\t\t\tif (plugins[i].attach) {\n\t\t\t\tplugins[i].attach(targetObject, options)\n\t\t\t}\n\t\t}\n\t},\n\n\t/**\n\t * Call detach() on all plugins registered to the given target name.\n\t *\n\t * @param {string} targetName app name / class name\n\t * @param {object} targetObject to be extended\n\t * @param {object} [options] options\n\t */\n\tdetach(targetName, targetObject, options) {\n\t\tconst plugins = this.getPlugins(targetName)\n\t\tfor (let i = 0; i < plugins.length; i++) {\n\t\t\tif (plugins[i].detach) {\n\t\t\t\tplugins[i].detach(targetObject, options)\n\t\t\t}\n\t\t}\n\t},\n\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nexport const theme = window._theme || {}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport _ from 'underscore'\nimport OC from './index.js'\n\n/**\n * Utility class for the history API,\n * includes fallback to using the URL hash when\n * the browser doesn't support the history API.\n *\n * @namespace OC.Util.History\n */\nexport default {\n\n\t_handlers: [],\n\n\t/**\n\t * Push the current URL parameters to the history stack\n\t * and change the visible URL.\n\t * Note: this includes a workaround for IE8/IE9 that uses\n\t * the hash part instead of the search part.\n\t *\n\t * @param {object | string} params to append to the URL, can be either a string\n\t * or a map\n\t * @param {string} [url] URL to be used, otherwise the current URL will be used,\n\t * using the params as query string\n\t * @param {boolean} [replace] whether to replace instead of pushing\n\t */\n\t_pushState(params, url, replace) {\n\t\tlet strParams\n\t\tif (typeof (params) === 'string') {\n\t\t\tstrParams = params\n\t\t} else {\n\t\t\tstrParams = OC.buildQueryString(params)\n\t\t}\n\n\t\tif (window.history.pushState) {\n\t\t\turl = url || location.pathname + '?' + strParams\n\t\t\t// Workaround for bug with SVG and window.history.pushState on Firefox < 51\n\t\t\t// https://bugzilla.mozilla.org/show_bug.cgi?id=652991\n\t\t\tconst isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1\n\t\t\tif (isFirefox && parseInt(navigator.userAgent.split('/').pop()) < 51) {\n\t\t\t\tconst patterns = document.querySelectorAll('[fill^=\"url(#\"], [stroke^=\"url(#\"], [filter^=\"url(#invert\"]')\n\t\t\t\tfor (let i = 0, ii = patterns.length, pattern; i < ii; i++) {\n\t\t\t\t\tpattern = patterns[i]\n\t\t\t\t\t// eslint-disable-next-line no-self-assign\n\t\t\t\t\tpattern.style.fill = pattern.style.fill\n\t\t\t\t\t// eslint-disable-next-line no-self-assign\n\t\t\t\t\tpattern.style.stroke = pattern.style.stroke\n\t\t\t\t\tpattern.removeAttribute('filter')\n\t\t\t\t\tpattern.setAttribute('filter', 'url(#invert)')\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (replace) {\n\t\t\t\twindow.history.replaceState(params, '', url)\n\t\t\t} else {\n\t\t\t\twindow.history.pushState(params, '', url)\n\t\t\t}\n\t\t} else {\n\t\t\t// use URL hash for IE8\n\t\t\twindow.location.hash = '?' + strParams\n\t\t\t// inhibit next onhashchange that just added itself\n\t\t\t// to the event queue\n\t\t\tthis._cancelPop = true\n\t\t}\n\t},\n\n\t/**\n\t * Push the current URL parameters to the history stack\n\t * and change the visible URL.\n\t * Note: this includes a workaround for IE8/IE9 that uses\n\t * the hash part instead of the search part.\n\t *\n\t * @param {object | string} params to append to the URL, can be either a string or a map\n\t * @param {string} [url] URL to be used, otherwise the current URL will be used, using the params as query string\n\t */\n\tpushState(params, url) {\n\t\tthis._pushState(params, url, false)\n\t},\n\n\t/**\n\t * Push the current URL parameters to the history stack\n\t * and change the visible URL.\n\t * Note: this includes a workaround for IE8/IE9 that uses\n\t * the hash part instead of the search part.\n\t *\n\t * @param {object | string} params to append to the URL, can be either a string\n\t * or a map\n\t * @param {string} [url] URL to be used, otherwise the current URL will be used,\n\t * using the params as query string\n\t */\n\treplaceState(params, url) {\n\t\tthis._pushState(params, url, true)\n\t},\n\n\t/**\n\t * Add a popstate handler\n\t *\n\t * @param {Function} handler handler\n\t */\n\taddOnPopStateHandler(handler) {\n\t\tthis._handlers.push(handler)\n\t},\n\n\t/**\n\t * Parse a query string from the hash part of the URL.\n\t * (workaround for IE8 / IE9)\n\t *\n\t * @return {string}\n\t */\n\t_parseHashQuery() {\n\t\tconst hash = window.location.hash\n\t\tconst pos = hash.indexOf('?')\n\t\tif (pos >= 0) {\n\t\t\treturn hash.substr(pos + 1)\n\t\t}\n\t\tif (hash.length) {\n\t\t\t// remove hash sign\n\t\t\treturn hash.substr(1)\n\t\t}\n\t\treturn ''\n\t},\n\n\t_decodeQuery(query) {\n\t\treturn query.replace(/\\+/g, ' ')\n\t},\n\n\t/**\n\t * Parse the query/search part of the URL.\n\t * Also try and parse it from the URL hash (for IE8)\n\t *\n\t * @return {object} map of parameters\n\t */\n\tparseUrlQuery() {\n\t\tconst query = this._parseHashQuery()\n\t\tlet params\n\t\t// try and parse from URL hash first\n\t\tif (query) {\n\t\t\tparams = OC.parseQueryString(this._decodeQuery(query))\n\t\t}\n\t\t// else read from query attributes\n\t\tparams = _.extend(params || {}, OC.parseQueryString(this._decodeQuery(location.search)))\n\t\treturn params || {}\n\t},\n\n\t_onPopState(e) {\n\t\tif (this._cancelPop) {\n\t\t\tthis._cancelPop = false\n\t\t\treturn\n\t\t}\n\t\tlet params\n\t\tif (!this._handlers.length) {\n\t\t\treturn\n\t\t}\n\t\tparams = (e && e.state)\n\t\tif (_.isString(params)) {\n\t\t\tparams = OC.parseQueryString(params)\n\t\t} else if (!params) {\n\t\t\tparams = this.parseUrlQuery() || {}\n\t\t}\n\t\tfor (let i = 0; i < this._handlers.length; i++) {\n\t\t\tthis._handlers[i](params)\n\t\t}\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 moment from 'moment'\n\nimport History from './util-history.js'\nimport OC from './index.js'\nimport { formatFileSize as humanFileSize } from '@nextcloud/files'\n\n/**\n * @param {any} t -\n */\nfunction chunkify(t) {\n\t// Adapted from http://my.opera.com/GreyWyvern/blog/show.dml/1671288\n\tconst tz = []\n\tlet x = 0\n\tlet y = -1\n\tlet n = 0\n\tlet c\n\n\twhile (x < t.length) {\n\t\tc = t.charAt(x)\n\t\t// only include the dot in strings\n\t\tconst m = ((!n && c === '.') || (c >= '0' && c <= '9'))\n\t\tif (m !== n) {\n\t\t\t// next chunk\n\t\t\ty++\n\t\t\ttz[y] = ''\n\t\t\tn = m\n\t\t}\n\t\ttz[y] += c\n\t\tx++\n\t}\n\treturn tz\n}\n\n/**\n * Utility functions\n *\n * @namespace OC.Util\n */\nexport default {\n\n\tHistory,\n\n\t/**\n\t * @deprecated use https://nextcloud.github.io/nextcloud-files/functions/formatFileSize.html\n\t */\n\thumanFileSize,\n\n\t/**\n\t * Returns a file size in bytes from a humanly readable string\n\t * Makes 2kB to 2048.\n\t * Inspired by computerFileSize in helper.php\n\t *\n\t * @param {string} string file size in human-readable format\n\t * @return {number} or null if string could not be parsed\n\t *\n\t *\n\t */\n\tcomputerFileSize(string) {\n\t\tif (typeof string !== 'string') {\n\t\t\treturn null\n\t\t}\n\n\t\tconst s = string.toLowerCase().trim()\n\t\tlet bytes = null\n\n\t\tconst bytesArray = {\n\t\t\tb: 1,\n\t\t\tk: 1024,\n\t\t\tkb: 1024,\n\t\t\tmb: 1024 * 1024,\n\t\t\tm: 1024 * 1024,\n\t\t\tgb: 1024 * 1024 * 1024,\n\t\t\tg: 1024 * 1024 * 1024,\n\t\t\ttb: 1024 * 1024 * 1024 * 1024,\n\t\t\tt: 1024 * 1024 * 1024 * 1024,\n\t\t\tpb: 1024 * 1024 * 1024 * 1024 * 1024,\n\t\t\tp: 1024 * 1024 * 1024 * 1024 * 1024,\n\t\t}\n\n\t\tconst matches = s.match(/^[\\s+]?([0-9]*)(\\.([0-9]+))?( +)?([kmgtp]?b?)$/i)\n\t\tif (matches !== null) {\n\t\t\tbytes = parseFloat(s)\n\t\t\tif (!isFinite(bytes)) {\n\t\t\t\treturn null\n\t\t\t}\n\t\t} else {\n\t\t\treturn null\n\t\t}\n\t\tif (matches[5]) {\n\t\t\tbytes = bytes * bytesArray[matches[5]]\n\t\t}\n\n\t\tbytes = Math.round(bytes)\n\t\treturn bytes\n\t},\n\n\t/**\n\t * @param {string|number} timestamp timestamp\n\t * @param {string} format date format, see momentjs docs\n\t * @return {string} timestamp formatted as requested\n\t */\n\tformatDate(timestamp, format) {\n\t\tif (window.TESTING === undefined) {\n\t\t\tOC.debug && console.warn('OC.Util.formatDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment')\n\t\t}\n\t\tformat = format || 'LLL'\n\t\treturn moment(timestamp).format(format)\n\t},\n\n\t/**\n\t * @param {string|number} timestamp timestamp\n\t * @return {string} human readable difference from now\n\t */\n\trelativeModifiedDate(timestamp) {\n\t\tif (window.TESTING === undefined) {\n\t\t\tOC.debug && console.warn('OC.Util.relativeModifiedDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment')\n\t\t}\n\t\tconst diff = moment().diff(moment(timestamp))\n\t\tif (diff >= 0 && diff < 45000) {\n\t\t\treturn t('core', 'seconds ago')\n\t\t}\n\t\treturn moment(timestamp).fromNow()\n\t},\n\n\t/**\n\t * Returns the width of a generic browser scrollbar\n\t *\n\t * @return {number} width of scrollbar\n\t */\n\tgetScrollBarWidth() {\n\t\tif (this._scrollBarWidth) {\n\t\t\treturn this._scrollBarWidth\n\t\t}\n\n\t\tconst inner = document.createElement('p')\n\t\tinner.style.width = '100%'\n\t\tinner.style.height = '200px'\n\n\t\tconst outer = document.createElement('div')\n\t\touter.style.position = 'absolute'\n\t\touter.style.top = '0px'\n\t\touter.style.left = '0px'\n\t\touter.style.visibility = 'hidden'\n\t\touter.style.width = '200px'\n\t\touter.style.height = '150px'\n\t\touter.style.overflow = 'hidden'\n\t\touter.appendChild(inner)\n\n\t\tdocument.body.appendChild(outer)\n\t\tconst w1 = inner.offsetWidth\n\t\touter.style.overflow = 'scroll'\n\t\tlet w2 = inner.offsetWidth\n\t\tif (w1 === w2) {\n\t\t\tw2 = outer.clientWidth\n\t\t}\n\n\t\tdocument.body.removeChild(outer)\n\n\t\tthis._scrollBarWidth = (w1 - w2)\n\n\t\treturn this._scrollBarWidth\n\t},\n\n\t/**\n\t * Remove the time component from a given date\n\t *\n\t * @param {Date} date date\n\t * @return {Date} date with stripped time\n\t */\n\tstripTime(date) {\n\t\t// FIXME: likely to break when crossing DST\n\t\t// would be better to use a library like momentJS\n\t\treturn new Date(date.getFullYear(), date.getMonth(), date.getDate())\n\t},\n\n\t/**\n\t * Compare two strings to provide a natural sort\n\t *\n\t * @param {string} a first string to compare\n\t * @param {string} b second string to compare\n\t * @return {number} -1 if b comes before a, 1 if a comes before b\n\t * or 0 if the strings are identical\n\t */\n\tnaturalSortCompare(a, b) {\n\t\tlet x\n\t\tconst aa = chunkify(a)\n\t\tconst bb = chunkify(b)\n\n\t\tfor (x = 0; aa[x] && bb[x]; x++) {\n\t\t\tif (aa[x] !== bb[x]) {\n\t\t\t\tconst aNum = Number(aa[x]); const bNum = Number(bb[x])\n\t\t\t\t// note: == is correct here\n\t\t\t\t/* eslint-disable-next-line */\n\t\t\t\tif (aNum == aa[x] && bNum == bb[x]) {\n\t\t\t\t\treturn aNum - bNum\n\t\t\t\t} else {\n\t\t\t\t\t// Note: This locale setting isn't supported by all browsers but for the ones\n\t\t\t\t\t// that do there will be more consistency between client-server sorting\n\t\t\t\t\treturn aa[x].localeCompare(bb[x], OC.getLanguage())\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn aa.length - bb.length\n\t},\n\n\t/**\n\t * Calls the callback in a given interval until it returns true\n\t *\n\t * @param {Function} callback function to call on success\n\t * @param {number} interval in milliseconds\n\t */\n\twaitFor(callback, interval) {\n\t\tconst internalCallback = function() {\n\t\t\tif (callback() !== true) {\n\t\t\t\tsetTimeout(internalCallback, interval)\n\t\t\t}\n\t\t}\n\n\t\tinternalCallback()\n\t},\n\n\t/**\n\t * Checks if a cookie with the given name is present and is set to the provided value.\n\t *\n\t * @param {string} name name of the cookie\n\t * @param {string} value value of the cookie\n\t * @return {boolean} true if the cookie with the given name has the given value\n\t */\n\tisCookieSetToValue(name, value) {\n\t\tconst cookies = document.cookie.split(';')\n\t\tfor (let i = 0; i < cookies.length; i++) {\n\t\t\tconst cookie = cookies[i].split('=')\n\t\t\tif (cookie[0].trim() === name && cookie[1].trim() === value) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\t\treturn false\n\t},\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nconst base = window._oc_debug\n\nexport const debug = base\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nlet webroot = window._oc_webroot\n\nif (typeof webroot === 'undefined') {\n\twebroot = location.pathname\n\tconst pos = webroot.indexOf('/index.php/')\n\tif (pos !== -1) {\n\t\twebroot = webroot.substr(0, pos)\n\t} else {\n\t\twebroot = webroot.substr(0, webroot.lastIndexOf('/'))\n\t}\n}\n\nexport default webroot\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { subscribe } from '@nextcloud/event-bus'\n\nimport {\n\tajaxConnectionLostHandler,\n\tprocessAjaxError,\n\tregisterXHRForErrorProcessing,\n} from './xhr-error.js'\nimport Apps from './apps.js'\nimport { AppConfig, appConfig } from './appconfig.js'\nimport appswebroots from './appswebroots.js'\nimport Backbone from './backbone.js'\nimport {\n\tbasename,\n\tdirname,\n\tencodePath,\n\tisSamePath,\n\tjoinPaths,\n} from '@nextcloud/paths'\nimport {\n\tbuild as buildQueryString,\n\tparse as parseQueryString,\n} from './query-string.js'\nimport Config from './config.js'\nimport {\n\tcoreApps,\n\tmenuSpeed,\n\tPERMISSION_ALL,\n\tPERMISSION_CREATE,\n\tPERMISSION_DELETE,\n\tPERMISSION_NONE,\n\tPERMISSION_READ,\n\tPERMISSION_SHARE,\n\tPERMISSION_UPDATE,\n\tTAG_FAVORITE,\n} from './constants.js'\nimport { currentUser, getCurrentUser } from './currentuser.js'\nimport Dialogs from './dialogs.js'\nimport EventSource from './eventsource.js'\nimport { get, set } from './get_set.js'\nimport { getCapabilities } from './capabilities.js'\nimport {\n\tgetHost,\n\tgetHostName,\n\tgetPort,\n\tgetProtocol,\n} from './host.js'\nimport {\n\tgetToken as getRequestToken,\n} from './requesttoken.js'\nimport {\n\thideMenus,\n\tregisterMenu,\n\tshowMenu,\n\tunregisterMenu,\n} from './menu.js'\nimport { isUserAdmin } from './admin.js'\nimport L10N from './l10n.js'\nimport {\n\tgetCanonicalLocale,\n\tgetLanguage,\n\tgetLocale,\n} from '@nextcloud/l10n'\n\nimport {\n\tgenerateUrl,\n\tgenerateFilePath,\n\tgenerateOcsUrl,\n\tgenerateRemoteUrl,\n\tgetRootUrl,\n\timagePath,\n\tlinkTo,\n} from '@nextcloud/router'\n\nimport {\n\tlinkToRemoteBase,\n} from './routing.js'\nimport msg from './msg.js'\nimport Notification from './notification.js'\nimport PasswordConfirmation from './password-confirmation.js'\nimport Plugins from './plugins.js'\nimport { theme } from './theme.js'\nimport Util from './util.js'\nimport { debug } from './debug.js'\nimport { redirect, reload } from './navigation.js'\nimport webroot from './webroot.js'\n\n/** @namespace OC */\nexport default {\n\t/*\n\t * Constants\n\t */\n\tcoreApps,\n\tmenuSpeed,\n\tPERMISSION_ALL,\n\tPERMISSION_CREATE,\n\tPERMISSION_DELETE,\n\tPERMISSION_NONE,\n\tPERMISSION_READ,\n\tPERMISSION_SHARE,\n\tPERMISSION_UPDATE,\n\tTAG_FAVORITE,\n\n\t/*\n\t * Deprecated helpers to be removed\n\t */\n\t/**\n\t * Check if a user file is allowed to be handled.\n\t *\n\t * @param {string} file to check\n\t * @return {boolean}\n\t * @deprecated 17.0.0\n\t */\n\tfileIsBlacklisted: file => !!(file.match(Config.blacklist_files_regex)),\n\tApps,\n\tAppConfig,\n\tappConfig,\n\tappswebroots,\n\tBackbone,\n\tconfig: Config,\n\t/**\n\t * Currently logged in user or null if none\n\t *\n\t * @type {string}\n\t * @deprecated use `getCurrentUser` from https://www.npmjs.com/package/@nextcloud/auth\n\t */\n\tcurrentUser,\n\tdialogs: Dialogs,\n\tEventSource,\n\t/**\n\t * Returns the currently logged in user or null if there is no logged in\n\t * user (public page mode)\n\t *\n\t * @since 9.0.0\n\t * @deprecated 19.0.0 use `getCurrentUser` from https://www.npmjs.com/package/@nextcloud/auth\n\t */\n\tgetCurrentUser,\n\tisUserAdmin,\n\tL10N,\n\n\t/**\n\t * Ajax error handlers\n\t *\n\t * @todo remove from here and keep internally -> requires new tests\n\t */\n\t_ajaxConnectionLostHandler: ajaxConnectionLostHandler,\n\t_processAjaxError: processAjaxError,\n\tregisterXHRForErrorProcessing,\n\n\t/**\n\t * Capabilities\n\t *\n\t * @type {Array}\n\t * @deprecated 20.0.0 use @nextcloud/capabilities instead\n\t */\n\tgetCapabilities,\n\n\t/*\n\t * Legacy menu helpers\n\t */\n\thideMenus,\n\tregisterMenu,\n\tshowMenu,\n\tunregisterMenu,\n\n\t/*\n\t * Path helpers\n\t */\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tbasename,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tencodePath,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tdirname,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tisSamePath,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tjoinPaths,\n\n\t/**\n\t * Host (url) helpers\n\t */\n\tgetHost,\n\tgetHostName,\n\tgetPort,\n\tgetProtocol,\n\n\t/**\n\t * @deprecated 20.0.0 use `getCanonicalLocale` from https://www.npmjs.com/package/@nextcloud/l10n\n\t */\n\tgetCanonicalLocale,\n\t/**\n\t * @deprecated 26.0.0 use `getLocale` from https://www.npmjs.com/package/@nextcloud/l10n\n\t */\n\tgetLocale,\n\t/**\n\t * @deprecated 26.0.0 use `getLanguage` from https://www.npmjs.com/package/@nextcloud/l10n\n\t */\n\tgetLanguage,\n\n\t/**\n\t * Query string helpers\n\t */\n\tbuildQueryString,\n\tparseQueryString,\n\n\tmsg,\n\tNotification,\n\t/**\n\t * @deprecated 28.0.0 use methods from '@nextcloud/password-confirmation'\n\t */\n\tPasswordConfirmation,\n\tPlugins,\n\ttheme,\n\tUtil,\n\tdebug,\n\t/**\n\t * @deprecated 19.0.0 use `generateFilePath` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tfilePath: generateFilePath,\n\t/**\n\t * @deprecated 19.0.0 use `generateUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tgenerateUrl,\n\t/**\n\t * @deprecated 19.0.0 use https://lodash.com/docs#get\n\t */\n\tget: get(window),\n\t/**\n\t * @deprecated 19.0.0 use https://lodash.com/docs#set\n\t */\n\tset: set(window),\n\t/**\n\t * @deprecated 19.0.0 use `getRootUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tgetRootPath: getRootUrl,\n\t/**\n\t * @deprecated 19.0.0 use `imagePath` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\timagePath,\n\tredirect,\n\treload,\n\trequestToken: getRequestToken(),\n\t/**\n\t * @deprecated 19.0.0 use `linkTo` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tlinkTo,\n\t/**\n\t * @param {string} service service name\n\t * @param {number} version OCS API version\n\t * @return {string} OCS API base path\n\t * @deprecated 19.0.0 use `generateOcsUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tlinkToOCS: (service, version) => {\n\t\treturn generateOcsUrl(service, {}, {\n\t\t\tocsVersion: version || 1,\n\t\t}) + '/'\n\t},\n\t/**\n\t * @deprecated 19.0.0 use `generateRemoteUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tlinkToRemote: generateRemoteUrl,\n\tlinkToRemoteBase,\n\t/**\n\t * Relative path to Nextcloud root.\n\t * For example: \"/nextcloud\"\n\t *\n\t * @type {string}\n\t *\n\t * @deprecated 19.0.0 use `getRootUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t * @see OC#getRootPath\n\t */\n\twebroot,\n}\n\n// Keep the request token prop in sync\nsubscribe('csrf-token-update', e => {\n\tOC.requestToken = e.token\n\n\t// Logging might help debug (Sentry) issues\n\tconsole.info('OC.requestToken changed', e.token)\n})\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getCapabilities as realGetCapabilities } from '@nextcloud/capabilities'\n\n/**\n * Returns the capabilities\n *\n * @return {Array} capabilities\n *\n * @since 14.0.0\n */\nexport const getCapabilities = () => {\n\tOC.debug && console.warn('OC.getCapabilities is deprecated and will be removed in Nextcloud 21. See @nextcloud/capabilities')\n\treturn realGetCapabilities()\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nexport const getProtocol = () => window.location.protocol.split(':')[0]\n\n/**\n * Returns the host used to access this Nextcloud instance\n * Host is sometimes the same as the hostname but now always.\n *\n * Examples:\n * http://example.com => example.com\n * https://example.com => example.com\n * http://example.com:8080 => example.com:8080\n *\n * @return {string} host\n *\n * @since 8.2.0\n * @deprecated 17.0.0 use window.location.host directly\n */\nexport const getHost = () => window.location.host\n\n/**\n * Returns the hostname used to access this Nextcloud instance\n * The hostname is always stripped of the port\n *\n * @return {string} hostname\n * @since 9.0.0\n * @deprecated 17.0.0 use window.location.hostname directly\n */\nexport const getHostName = () => window.location.hostname\n\n/**\n * Returns the port number used to access this Nextcloud instance\n *\n * @return {number} port number\n *\n * @since 8.2.0\n * @deprecated 17.0.0 use window.location.port directly\n */\nexport const getPort = () => window.location.port\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nexport const get = context => name => {\n\tconst namespaces = name.split('.')\n\tconst tail = namespaces.pop()\n\n\tfor (let i = 0; i < namespaces.length; i++) {\n\t\tcontext = context[namespaces[i]]\n\t\tif (!context) {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn context[tail]\n}\n\n/**\n * Set a variable by name\n *\n * @param {string} context context\n * @return {Function} setter\n * @deprecated 19.0.0 use https://lodash.com/docs#set\n */\nexport const set = context => (name, value) => {\n\tconst namespaces = name.split('.')\n\tconst tail = namespaces.pop()\n\n\tfor (let i = 0; i < namespaces.length; i++) {\n\t\tif (!context[namespaces[i]]) {\n\t\t\tcontext[namespaces[i]] = {}\n\t\t}\n\t\tcontext = context[namespaces[i]]\n\t}\n\tcontext[tail] = value\n\treturn value\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nexport const redirect = targetURL => { window.location = targetURL }\n\n/**\n * Reloads the current page\n *\n * @deprecated 17.0.0 use window.location.reload directly\n */\nexport const reload = () => { window.location.reload() }\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport $ from 'jquery'\nimport { emit } from '@nextcloud/event-bus'\nimport { loadState } from '@nextcloud/initial-state'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { generateUrl } from '@nextcloud/router'\n\nimport OC from './OC/index.js'\nimport { setToken as setRequestToken, getToken as getRequestToken } from './OC/requesttoken.js'\n\nlet config = null\n/**\n * The legacy jsunit tests overwrite OC.config before calling initCore\n * therefore we need to wait with assigning the config fallback until initCore calls initSessionHeartBeat\n */\nconst loadConfig = () => {\n\ttry {\n\t\tconfig = loadState('core', 'config')\n\t} catch (e) {\n\t\t// This fallback is just for our legacy jsunit tests since we have no way to mock loadState calls\n\t\tconfig = OC.config\n\t}\n}\n\n/**\n * session heartbeat (defaults to enabled)\n *\n * @return {boolean}\n */\nconst keepSessionAlive = () => {\n\treturn config.session_keepalive === undefined\n\t\t|| !!config.session_keepalive\n}\n\n/**\n * get interval in seconds\n *\n * @return {number}\n */\nconst getInterval = () => {\n\tlet interval = NaN\n\tif (config.session_lifetime) {\n\t\tinterval = Math.floor(config.session_lifetime / 2)\n\t}\n\n\t// minimum one minute, max 24 hours, default 15 minutes\n\treturn Math.min(\n\t\t24 * 3600,\n\t\tMath.max(\n\t\t\t60,\n\t\t\tisNaN(interval) ? 900 : interval,\n\t\t),\n\t)\n}\n\nconst getToken = async () => {\n\tconst url = generateUrl('/csrftoken')\n\n\t// Not using Axios here as Axios is not stubbable with the sinon fake server\n\t// see https://stackoverflow.com/questions/41516044/sinon-mocha-test-with-async-ajax-calls-didnt-return-promises\n\t// see js/tests/specs/coreSpec.js for the tests\n\tconst resp = await $.get(url)\n\n\treturn resp.token\n}\n\nconst poll = async () => {\n\ttry {\n\t\tconst token = await getToken()\n\t\tsetRequestToken(token)\n\t} catch (e) {\n\t\tconsole.error('session heartbeat failed', e)\n\t}\n}\n\nconst startPolling = () => {\n\tconst interval = setInterval(poll, getInterval() * 1000)\n\n\tconsole.info('session heartbeat polling started')\n\n\treturn interval\n}\n\nconst registerAutoLogout = () => {\n\tif (!config.auto_logout || !getCurrentUser()) {\n\t\treturn\n\t}\n\n\tlet lastActive = Date.now()\n\twindow.addEventListener('mousemove', e => {\n\t\tlastActive = Date.now()\n\t\tlocalStorage.setItem('lastActive', lastActive)\n\t})\n\n\twindow.addEventListener('touchstart', e => {\n\t\tlastActive = Date.now()\n\t\tlocalStorage.setItem('lastActive', lastActive)\n\t})\n\n\twindow.addEventListener('storage', e => {\n\t\tif (e.key !== 'lastActive') {\n\t\t\treturn\n\t\t}\n\t\tlastActive = e.newValue\n\t})\n\n\tlet intervalId = 0\n\tconst logoutCheck = () => {\n\t\tconst timeout = Date.now() - config.session_lifetime * 1000\n\t\tif (lastActive < timeout) {\n\t\t\tclearTimeout(intervalId)\n\t\t\tconsole.info('Inactivity timout reached, logging out')\n\t\t\tconst logoutUrl = generateUrl('/logout') + '?requesttoken=' + encodeURIComponent(getRequestToken())\n\t\t\twindow.location = logoutUrl\n\t\t}\n\t}\n\tintervalId = setInterval(logoutCheck, 1000)\n}\n\n/**\n * Calls the server periodically to ensure that session and CSRF\n * token doesn't expire\n */\nexport const initSessionHeartBeat = () => {\n\tloadConfig()\n\n\tregisterAutoLogout()\n\n\tif (!keepSessionAlive()) {\n\t\tconsole.info('session heartbeat disabled')\n\t\treturn\n\t}\n\tlet interval = startPolling()\n\n\twindow.addEventListener('online', async () => {\n\t\tconsole.info('browser is online again, resuming heartbeat')\n\t\tinterval = startPolling()\n\t\ttry {\n\t\t\tawait poll()\n\t\t\tconsole.info('session token successfully updated after resuming network')\n\n\t\t\t// Let apps know we're online and requests will have the new token\n\t\t\temit('networkOnline', {\n\t\t\t\tsuccess: true,\n\t\t\t})\n\t\t} catch (e) {\n\t\t\tconsole.error('could not update session token after resuming network', e)\n\n\t\t\t// Let apps know we're online but requests might have an outdated token\n\t\t\temit('networkOnline', {\n\t\t\t\tsuccess: false,\n\t\t\t})\n\t\t}\n\t})\n\twindow.addEventListener('offline', () => {\n\t\tconsole.info('browser is offline, stopping heartbeat')\n\n\t\t// Let apps know we're offline\n\t\temit('networkOffline', {})\n\n\t\tclearInterval(interval)\n\t\tconsole.info('session heartbeat polling stopped')\n\t})\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcHeaderMenu',{staticClass:\"contactsmenu\",attrs:{\"id\":\"contactsmenu\",\"aria-label\":_vm.t('core', 'Search contacts')},on:{\"open\":_vm.handleOpen},scopedSlots:_vm._u([{key:\"trigger\",fn:function(){return [_c('Contacts',{staticClass:\"contactsmenu__trigger-icon\",attrs:{\"size\":20}})]},proxy:true}])},[_vm._v(\" \"),_c('div',{staticClass:\"contactsmenu__menu\"},[_c('div',{staticClass:\"contactsmenu__menu__input-wrapper\"},[_c('NcTextField',{ref:\"contactsMenuInput\",staticClass:\"contactsmenu__menu__search\",attrs:{\"id\":\"contactsmenu__menu__search\",\"value\":_vm.searchTerm,\"trailing-button-icon\":\"close\",\"label\":_vm.t('core', 'Search contacts'),\"trailing-button-label\":_vm.t('core','Reset search'),\"show-trailing-button\":_vm.searchTerm !== '',\"placeholder\":_vm.t('core', 'Search contacts …')},on:{\"update:value\":function($event){_vm.searchTerm=$event},\"input\":_vm.onInputDebounced,\"trailing-button-click\":_vm.onReset}})],1),_vm._v(\" \"),(_vm.error)?_c('NcEmptyContent',{attrs:{\"name\":_vm.t('core', 'Could not load your contacts')},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Magnify')]},proxy:true}],null,false,931131664)}):(_vm.loadingText)?_c('NcEmptyContent',{attrs:{\"name\":_vm.loadingText},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('NcLoadingIcon')]},proxy:true}])}):(_vm.contacts.length === 0)?_c('NcEmptyContent',{attrs:{\"name\":_vm.t('core', 'No contacts found')},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Magnify')]},proxy:true}])}):_c('div',{staticClass:\"contactsmenu__menu__content\"},[_c('div',{attrs:{\"id\":\"contactsmenu-contacts\"}},[_c('ul',_vm._l((_vm.contacts),function(contact){return _c('Contact',{key:contact.id,attrs:{\"contact\":contact}})}),1)]),_vm._v(\" \"),(_vm.contactsAppEnabled)?_c('div',{staticClass:\"contactsmenu__menu__content__footer\"},[_c('NcButton',{attrs:{\"type\":\"tertiary\",\"href\":_vm.contactsAppURL}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Show all contacts'))+\"\\n\\t\\t\\t\\t\")])],1):(_vm.canInstallApp)?_c('div',{staticClass:\"contactsmenu__menu__content__footer\"},[_c('NcButton',{attrs:{\"type\":\"tertiary\",\"href\":_vm.contactsAppMgmtURL}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Install the Contacts app'))+\"\\n\\t\\t\\t\\t\")])],1):_vm._e()])],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Contacts.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Contacts.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Contacts.vue?vue&type=template&id=38706835\"\nimport script from \"./Contacts.vue?vue&type=script&lang=js\"\nexport * from \"./Contacts.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 contacts-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\":\"M20,0H4V2H20V0M4,24H20V22H4V24M20,4H4A2,2 0 0,0 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6A2,2 0 0,0 20,4M12,6.75A2.25,2.25 0 0,1 14.25,9A2.25,2.25 0 0,1 12,11.25A2.25,2.25 0 0,1 9.75,9A2.25,2.25 0 0,1 12,6.75M17,17H7V15.5C7,13.83 10.33,13 12,13C13.67,13 17,13.83 17,15.5V17Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\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!./Contact.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!./Contact.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!./Contact.vue?vue&type=style&index=0&id=97ebdcaa&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \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!./Contact.vue?vue&type=style&index=0&id=97ebdcaa&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Contact.vue?vue&type=template&id=97ebdcaa&scoped=true\"\nimport script from \"./Contact.vue?vue&type=script&lang=js\"\nexport * from \"./Contact.vue?vue&type=script&lang=js\"\nimport style0 from \"./Contact.vue?vue&type=style&index=0&id=97ebdcaa&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 \"97ebdcaa\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('li',{staticClass:\"contact\"},[_c('NcAvatar',{staticClass:\"contact__avatar\",attrs:{\"size\":44,\"user\":_vm.contact.isUser ? _vm.contact.uid : undefined,\"is-no-user\":!_vm.contact.isUser,\"disable-menu\":true,\"display-name\":_vm.contact.avatarLabel,\"preloaded-user-status\":_vm.preloadedUserStatus}}),_vm._v(\" \"),_c('a',{staticClass:\"contact__body\",attrs:{\"href\":_vm.contact.profileUrl || _vm.contact.topAction?.hyperlink}},[_c('div',{staticClass:\"contact__body__full-name\"},[_vm._v(_vm._s(_vm.contact.fullName))]),_vm._v(\" \"),(_vm.contact.lastMessage)?_c('div',{staticClass:\"contact__body__last-message\"},[_vm._v(_vm._s(_vm.contact.lastMessage))]):_vm._e(),_vm._v(\" \"),(_vm.contact.statusMessage)?_c('div',{staticClass:\"contact__body__status-message\"},[_vm._v(_vm._s(_vm.contact.statusMessage))]):_c('div',{staticClass:\"contact__body__email-address\"},[_vm._v(_vm._s(_vm.contact.emailAddresses[0]))])]),_vm._v(\" \"),(_vm.actions.length)?_c('NcActions',{attrs:{\"inline\":_vm.contact.topAction ? 1 : 0}},[_vm._l((_vm.actions),function(action,idx){return [(action.hyperlink !== '#')?_c('NcActionLink',{key:idx,staticClass:\"other-actions\",attrs:{\"href\":action.hyperlink},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('img',{staticClass:\"contact__action__icon\",attrs:{\"aria-hidden\":\"true\",\"src\":action.icon}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(action.title)+\"\\n\\t\\t\\t\")]):_c('NcActionText',{key:idx,staticClass:\"other-actions\",scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('img',{staticClass:\"contact__action__icon\",attrs:{\"aria-hidden\":\"true\",\"src\":action.icon}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(action.title)+\"\\n\\t\\t\\t\")])]})],2):_vm._e()],1)\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 { getCurrentUser } from '@nextcloud/auth'\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nconst 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 * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport L10n from '../OC/l10n.js'\nimport OC from '../OC/index.js'\n\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tOC,\n\t\t}\n\t},\n\tmethods: {\n\t\tt: L10n.translate.bind(L10n),\n\t\tn: L10n.translatePlural.bind(L10n),\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!./ContactsMenu.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!./ContactsMenu.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!./ContactsMenu.vue?vue&type=style&index=0&id=5cad18ba&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \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!./ContactsMenu.vue?vue&type=style&index=0&id=5cad18ba&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./ContactsMenu.vue?vue&type=template&id=5cad18ba&scoped=true\"\nimport script from \"./ContactsMenu.vue?vue&type=script&lang=js\"\nexport * from \"./ContactsMenu.vue?vue&type=script&lang=js\"\nimport style0 from \"./ContactsMenu.vue?vue&type=style&index=0&id=5cad18ba&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 \"5cad18ba\",\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('nav',{ref:\"appMenu\",staticClass:\"app-menu\",attrs:{\"aria-label\":_vm.t('core', 'Applications menu')}},[_c('ul',{staticClass:\"app-menu__list\",attrs:{\"aria-label\":_vm.t('core', 'Apps')}},_vm._l((_vm.mainAppList),function(app){return _c('AppMenuEntry',{key:app.id,attrs:{\"app\":app}})}),1),_vm._v(\" \"),_c('NcActions',{staticClass:\"app-menu__overflow\",attrs:{\"aria-label\":_vm.t('core', 'More apps')}},_vm._l((_vm.popoverAppList),function(app){return _c('NcActionLink',{key:app.id,staticClass:\"app-menu__overflow-entry\",attrs:{\"aria-current\":app.active ? 'page' : false,\"href\":app.href,\"icon\":app.icon}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(app.name)+\"\\n\\t\\t\")])}),1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Circle.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Circle.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Circle.vue?vue&type=template&id=92ac0c26\"\nimport script from \"./Circle.vue?vue&type=script&lang=js\"\nexport * from \"./Circle.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 circle-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\":\"M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_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!./AppMenuIcon.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!./AppMenuIcon.vue?vue&type=script&setup=true&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('span',{staticClass:\"app-menu-icon\",attrs:{\"role\":\"img\",\"aria-hidden\":_setup.ariaHidden,\"aria-label\":_setup.ariaLabel}},[_c('img',{staticClass:\"app-menu-icon__icon\",attrs:{\"src\":_vm.app.icon,\"alt\":\"\"}}),_vm._v(\" \"),(_vm.app.unread)?_c(_setup.IconDot,{staticClass:\"app-menu-icon__unread\",attrs:{\"size\":10}}):_vm._e()],1)\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!./AppMenuIcon.vue?vue&type=style&index=0&id=e7078f90&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \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!./AppMenuIcon.vue?vue&type=style&index=0&id=e7078f90&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AppMenuIcon.vue?vue&type=template&id=e7078f90&scoped=true\"\nimport script from \"./AppMenuIcon.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AppMenuIcon.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./AppMenuIcon.vue?vue&type=style&index=0&id=e7078f90&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 \"e7078f90\",\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!./AppMenuEntry.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!./AppMenuEntry.vue?vue&type=script&setup=true&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('li',{ref:\"containerElement\",staticClass:\"app-menu-entry\",class:{\n\t\t'app-menu-entry--active': _vm.app.active,\n\t\t'app-menu-entry--truncated': _setup.needsSpace,\n\t}},[_c('a',{staticClass:\"app-menu-entry__link\",attrs:{\"href\":_vm.app.href,\"title\":_vm.app.name,\"aria-current\":_vm.app.active ? 'page' : false,\"target\":_vm.app.target ? '_blank' : undefined,\"rel\":_vm.app.target ? 'noopener noreferrer' : undefined}},[_c(_setup.AppMenuIcon,{staticClass:\"app-menu-entry__icon\",attrs:{\"app\":_vm.app}}),_vm._v(\" \"),_c('span',{ref:\"labelElement\",staticClass:\"app-menu-entry__label\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.app.name)+\"\\n\\t\\t\")])],1)])\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!./AppMenuEntry.vue?vue&type=style&index=0&id=1c485052&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \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!./AppMenuEntry.vue?vue&type=style&index=0&id=1c485052&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\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!./AppMenuEntry.vue?vue&type=style&index=1&id=1c485052&prod&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \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!./AppMenuEntry.vue?vue&type=style&index=1&id=1c485052&prod&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AppMenuEntry.vue?vue&type=template&id=1c485052&scoped=true\"\nimport script from \"./AppMenuEntry.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AppMenuEntry.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./AppMenuEntry.vue?vue&type=style&index=0&id=1c485052&prod&scoped=true&lang=scss\"\nimport style1 from \"./AppMenuEntry.vue?vue&type=style&index=1&id=1c485052&prod&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 \"1c485052\",\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!./AppMenu.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!./AppMenu.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/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppMenu.vue?vue&type=style&index=0&id=7661a89b&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \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!./AppMenu.vue?vue&type=style&index=0&id=7661a89b&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AppMenu.vue?vue&type=template&id=7661a89b&scoped=true\"\nimport script from \"./AppMenu.vue?vue&type=script&lang=ts\"\nexport * from \"./AppMenu.vue?vue&type=script&lang=ts\"\nimport style0 from \"./AppMenu.vue?vue&type=style&index=0&id=7661a89b&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 \"7661a89b\",\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('NcListItem',{attrs:{\"id\":_vm.profileEnabled ? undefined : _vm.id,\"anchor-id\":_vm.id,\"active\":_vm.active,\"compact\":\"\",\"href\":_vm.profileEnabled ? _vm.href : undefined,\"name\":_vm.displayName,\"target\":\"_self\"},scopedSlots:_vm._u([(_vm.profileEnabled)?{key:\"subname\",fn:function(){return [_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.name)+\"\\n\\t\")]},proxy:true}:null,(_vm.loading)?{key:\"indicator\",fn:function(){return [_c('NcLoadingIcon')]},proxy:true}:null],null,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!./AccountMenuProfileEntry.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!./AccountMenuProfileEntry.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./AccountMenuProfileEntry.vue?vue&type=template&id=348dadc6\"\nimport script from \"./AccountMenuProfileEntry.vue?vue&type=script&lang=ts\"\nexport * from \"./AccountMenuProfileEntry.vue?vue&type=script&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","\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!./AccountMenuEntry.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!./AccountMenuEntry.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!./AccountMenuEntry.vue?vue&type=style&index=0&id=2e0a74a6&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \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!./AccountMenuEntry.vue?vue&type=style&index=0&id=2e0a74a6&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AccountMenuEntry.vue?vue&type=template&id=2e0a74a6&scoped=true\"\nimport script from \"./AccountMenuEntry.vue?vue&type=script&lang=js\"\nexport * from \"./AccountMenuEntry.vue?vue&type=script&lang=js\"\nimport style0 from \"./AccountMenuEntry.vue?vue&type=style&index=0&id=2e0a74a6&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 \"2e0a74a6\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcListItem',{staticClass:\"account-menu-entry\",attrs:{\"id\":_vm.href ? undefined : _vm.id,\"anchor-id\":_vm.id,\"active\":_vm.active,\"compact\":\"\",\"href\":_vm.href,\"name\":_vm.name,\"target\":\"_self\"},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('img',{staticClass:\"account-menu-entry__icon\",class:{ 'account-menu-entry__icon--active': _vm.active },attrs:{\"src\":_vm.iconSource,\"alt\":\"\"}})]},proxy:true},(_vm.loading)?{key:\"indicator\",fn:function(){return [_c('NcLoadingIcon')]},proxy:true}:null],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('NcHeaderMenu',{staticClass:\"account-menu\",attrs:{\"id\":\"user-menu\",\"is-nav\":\"\",\"aria-label\":_vm.t('core', 'Settings menu'),\"description\":_vm.avatarDescription},scopedSlots:_vm._u([{key:\"trigger\",fn:function(){return [_c('NcAvatar',{key:String(_vm.showUserStatus),staticClass:\"account-menu__avatar\",attrs:{\"disable-menu\":\"\",\"disable-tooltip\":\"\",\"show-user-status\":_vm.showUserStatus,\"user\":_vm.currentUserId,\"preloaded-user-status\":_vm.userStatus}})]},proxy:true}])},[_vm._v(\" \"),_c('ul',{staticClass:\"account-menu__list\"},[_c('AccountMenuProfileEntry',{attrs:{\"id\":_vm.profileEntry.id,\"name\":_vm.profileEntry.name,\"href\":_vm.profileEntry.href,\"active\":_vm.profileEntry.active}}),_vm._v(\" \"),_vm._l((_vm.otherEntries),function(entry){return _c('AccountMenuEntry',{key:entry.id,attrs:{\"id\":entry.id,\"name\":entry.name,\"href\":entry.href,\"active\":entry.active,\"icon\":entry.icon}})})],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * SPDX-FileCopyrightText: 2020 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/**\n * Returns a list of all user-definable statuses\n *\n * @return {object[]}\n */\nconst getAllStatusOptions = () => {\n\treturn [{\n\t\ttype: 'online',\n\t\tlabel: t('user_status', 'Online'),\n\t}, {\n\t\ttype: 'away',\n\t\tlabel: t('user_status', 'Away'),\n\t}, {\n\t\ttype: 'dnd',\n\t\tlabel: t('user_status', 'Do not disturb'),\n\t\tsubline: t('user_status', 'Mute all notifications'),\n\t}, {\n\t\ttype: 'invisible',\n\t\tlabel: t('user_status', 'Invisible'),\n\t\tsubline: t('user_status', 'Appear offline'),\n\t}]\n}\n\nexport {\n\tgetAllStatusOptions,\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!./AccountMenu.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!./AccountMenu.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/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AccountMenu.vue?vue&type=style&index=0&id=a886d77a&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \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!./AccountMenu.vue?vue&type=style&index=0&id=a886d77a&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AccountMenu.vue?vue&type=template&id=a886d77a&scoped=true\"\nimport script from \"./AccountMenu.vue?vue&type=script&lang=ts\"\nexport * from \"./AccountMenu.vue?vue&type=script&lang=ts\"\nimport style0 from \"./AccountMenu.vue?vue&type=style&index=0&id=a886d77a&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 \"a886d77a\",\n null\n \n)\n\nexport default component.exports","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getRootUrl } from '@nextcloud/router'\n\n/**\n *\n * @param {string} url the URL to check\n * @return {boolean}\n */\nconst isRelativeUrl = (url) => {\n\treturn !url.startsWith('https://') && !url.startsWith('http://')\n}\n\n/**\n * @param {string} url The URL to check\n * @return {boolean} true if the URL points to this nextcloud instance\n */\nconst isNextcloudUrl = (url) => {\n\tconst nextcloudBaseUrl = window.location.protocol + '//' + window.location.host + getRootUrl()\n\t// if the URL is absolute and starts with the baseUrl+rootUrl\n\t// OR if the URL is relative and starts with rootUrl\n\treturn url.startsWith(nextcloudBaseUrl)\n\t\t|| (isRelativeUrl(url) && url.startsWith(getRootUrl()))\n}\n\n/**\n * Intercept XMLHttpRequest and fetch API calls to add X-Requested-With header\n *\n * This is also done in @nextcloud/axios but not all requests pass through that\n */\nexport const interceptRequests = () => {\n\tXMLHttpRequest.prototype.open = (function(open) {\n\t\treturn function(method, url, async) {\n\t\t\topen.apply(this, arguments)\n\t\t\tif (isNextcloudUrl(url) && !this.getResponseHeader('X-Requested-With')) {\n\t\t\t\tthis.setRequestHeader('X-Requested-With', 'XMLHttpRequest')\n\t\t\t}\n\t\t}\n\t})(XMLHttpRequest.prototype.open)\n\n\twindow.fetch = (function(fetch) {\n\t\treturn (resource, options) => {\n\t\t\t// fetch allows the `input` to be either a Request object or any stringifyable value\n\t\t\tif (!isNextcloudUrl(resource.url ?? resource.toString())) {\n\t\t\t\treturn fetch(resource, options)\n\t\t\t}\n\t\t\tif (!options) {\n\t\t\t\toptions = {}\n\t\t\t}\n\t\t\tif (!options.headers) {\n\t\t\t\toptions.headers = new Headers()\n\t\t\t}\n\n\t\t\tif (options.headers instanceof Headers && !options.headers.has('X-Requested-With')) {\n\t\t\t\toptions.headers.append('X-Requested-With', 'XMLHttpRequest')\n\t\t\t} else if (options.headers instanceof Object && !options.headers['X-Requested-With']) {\n\t\t\t\toptions.headers['X-Requested-With'] = 'XMLHttpRequest'\n\t\t\t}\n\n\t\t\treturn fetch(resource, options)\n\t\t}\n\t})(window.fetch)\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/* globals Snap */\nimport _ from 'underscore'\nimport $ from 'jquery'\nimport moment from 'moment'\n\nimport { initSessionHeartBeat } from './session-heartbeat.js'\nimport OC from './OC/index.js'\nimport { setUp as setUpContactsMenu } from './components/ContactsMenu.js'\nimport { setUp as setUpMainMenu } from './components/MainMenu.js'\nimport { setUp as setUpUserMenu } from './components/UserMenu.js'\nimport { interceptRequests } from './utils/xhr-request.js'\n\n// keep in sync with core/css/variables.scss\nconst breakpointMobileWidth = 1024\n\nconst initLiveTimestamps = () => {\n\t// Update live timestamps every 30 seconds\n\tsetInterval(() => {\n\t\t$('.live-relative-timestamp').each(function() {\n\t\t\tconst timestamp = parseInt($(this).attr('data-timestamp'), 10)\n\t\t\t$(this).text(moment(timestamp).fromNow())\n\t\t})\n\t}, 30 * 1000)\n}\n\n/**\n * Moment doesn't have aliases for every locale and doesn't parse some locale IDs correctly so we need to alias them\n */\nconst localeAliases = {\n\tzh: 'zh-cn',\n\tzh_Hans: 'zh-cn',\n\tzh_Hans_CN: 'zh-cn',\n\tzh_Hans_HK: 'zh-cn',\n\tzh_Hans_MO: 'zh-cn',\n\tzh_Hans_SG: 'zh-cn',\n\tzh_Hant: 'zh-hk',\n\tzh_Hant_HK: 'zh-hk',\n\tzh_Hant_MO: 'zh-mo',\n\tzh_Hant_TW: 'zh-tw',\n}\nlet locale = OC.getLocale()\nif (Object.prototype.hasOwnProperty.call(localeAliases, locale)) {\n\tlocale = localeAliases[locale]\n}\n\n/**\n * Set users locale to moment.js as soon as possible\n */\nmoment.locale(locale)\n\n/**\n * Initializes core\n */\nexport const initCore = () => {\n\tinterceptRequests()\n\n\t$(window).on('unload.main', () => { OC._unloadCalled = true })\n\t$(window).on('beforeunload.main', () => {\n\t\t// super-trick thanks to http://stackoverflow.com/a/4651049\n\t\t// in case another handler displays a confirmation dialog (ex: navigating away\n\t\t// during an upload), there are two possible outcomes: user clicked \"ok\" or\n\t\t// \"cancel\"\n\n\t\t// first timeout handler is called after unload dialog is closed\n\t\tsetTimeout(() => {\n\t\t\tOC._userIsNavigatingAway = true\n\n\t\t\t// second timeout event is only called if user cancelled (Chrome),\n\t\t\t// but in other browsers it might still be triggered, so need to\n\t\t\t// set a higher delay...\n\t\t\tsetTimeout(() => {\n\t\t\t\tif (!OC._unloadCalled) {\n\t\t\t\t\tOC._userIsNavigatingAway = false\n\t\t\t\t}\n\t\t\t}, 10000)\n\t\t}, 1)\n\t})\n\t$(document).on('ajaxError.main', function(event, request, settings) {\n\t\tif (settings && settings.allowAuthErrors) {\n\t\t\treturn\n\t\t}\n\t\tOC._processAjaxError(request)\n\t})\n\n\tinitSessionHeartBeat()\n\n\tOC.registerMenu($('#expand'), $('#expanddiv'), false, true)\n\n\t// toggle for menus\n\t$(document).on('mouseup.closemenus', event => {\n\t\tconst $el = $(event.target)\n\t\tif ($el.closest('.menu').length || $el.closest('.menutoggle').length) {\n\t\t\t// don't close when clicking on the menu directly or a menu toggle\n\t\t\treturn false\n\t\t}\n\n\t\tOC.hideMenus()\n\t})\n\n\tsetUpMainMenu()\n\tsetUpUserMenu()\n\tsetUpContactsMenu()\n\n\t// just add snapper for logged in users\n\t// and if the app doesn't handle the nav slider itself\n\tif ($('#app-navigation').length && !$('html').hasClass('lte9')\n\t\t&& !$('#app-content').hasClass('no-snapper')) {\n\n\t\t// App sidebar on mobile\n\t\tconst snapper = new Snap({\n\t\t\telement: document.getElementById('app-content'),\n\t\t\tdisable: 'right',\n\t\t\tmaxPosition: 300, // $navigation-width\n\t\t\tminDragDistance: 100,\n\t\t})\n\n\t\t$('#app-content').prepend('
            ')\n\n\t\t// keep track whether snapper is currently animating, and\n\t\t// prevent to call open or close while that is the case\n\t\t// to avoid duplicating events (snap.js doesn't check this)\n\t\tlet animating = false\n\t\tsnapper.on('animating', () => {\n\t\t\t// we need this because the trigger button\n\t\t\t// is also implicitly wired to close by snapper\n\t\t\tanimating = true\n\t\t})\n\t\tsnapper.on('animated', () => {\n\t\t\tanimating = false\n\t\t})\n\t\tsnapper.on('start', () => {\n\t\t\t// we need this because dragging triggers that\n\t\t\tanimating = true\n\t\t})\n\t\tsnapper.on('end', () => {\n\t\t\t// we need this because dragging stop triggers that\n\t\t\tanimating = false\n\t\t})\n\t\tsnapper.on('open', () => {\n\t\t\t$appNavigation.attr('aria-hidden', 'false')\n\t\t})\n\t\tsnapper.on('close', () => {\n\t\t\t$appNavigation.attr('aria-hidden', 'true')\n\t\t})\n\n\t\t// These are necessary because calling open or close\n\t\t// on snapper during an animation makes it trigger an\n\t\t// unfinishable animation, which itself will continue\n\t\t// triggering animating events and cause high CPU load,\n\t\t//\n\t\t// Ref https://github.com/jakiestfu/Snap.js/issues/216\n\t\tconst oldSnapperOpen = snapper.open\n\t\tconst oldSnapperClose = snapper.close\n\t\tconst _snapperOpen = () => {\n\t\t\tif (animating || snapper.state().state !== 'closed') {\n\t\t\t\treturn\n\t\t\t}\n\t\t\toldSnapperOpen('left')\n\t\t}\n\n\t\tconst _snapperClose = () => {\n\t\t\tif (animating || snapper.state().state === 'closed') {\n\t\t\t\treturn\n\t\t\t}\n\t\t\toldSnapperClose()\n\t\t}\n\n\t\t// Needs to be deferred to properly catch in-between\n\t\t// events that snap.js is triggering after dragging.\n\t\t//\n\t\t// Skipped when running unit tests as we are not testing\n\t\t// the snap.js workarounds...\n\t\tif (!window.TESTING) {\n\t\t\tsnapper.open = () => {\n\t\t\t\t_.defer(_snapperOpen)\n\t\t\t}\n\t\t\tsnapper.close = () => {\n\t\t\t\t_.defer(_snapperClose)\n\t\t\t}\n\t\t}\n\n\t\t$('#app-navigation-toggle').click((e) => {\n\t\t\t// close is implicit in the button by snap.js\n\t\t\tif (snapper.state().state !== 'left') {\n\t\t\t\tsnapper.open()\n\t\t\t}\n\t\t})\n\t\t$('#app-navigation-toggle').keypress(e => {\n\t\t\tif (snapper.state().state === 'left') {\n\t\t\t\tsnapper.close()\n\t\t\t} else {\n\t\t\t\tsnapper.open()\n\t\t\t}\n\t\t})\n\n\t\t// close sidebar when switching navigation entry\n\t\tconst $appNavigation = $('#app-navigation')\n\t\t$appNavigation.attr('aria-hidden', 'true')\n\t\t$appNavigation.delegate('a, :button', 'click', event => {\n\t\t\tconst $target = $(event.target)\n\t\t\t// don't hide navigation when changing settings or adding things\n\t\t\tif ($target.is('.app-navigation-noclose')\n\t\t\t\t|| $target.closest('.app-navigation-noclose').length) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif ($target.is('.app-navigation-entry-utils-menu-button')\n\t\t\t\t|| $target.closest('.app-navigation-entry-utils-menu-button').length) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif ($target.is('.add-new')\n\t\t\t\t|| $target.closest('.add-new').length) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif ($target.is('#app-settings')\n\t\t\t\t|| $target.closest('#app-settings').length) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tsnapper.close()\n\t\t})\n\n\t\tlet navigationBarSlideGestureEnabled = false\n\t\tlet navigationBarSlideGestureAllowed = true\n\t\tlet navigationBarSlideGestureEnablePending = false\n\n\t\tOC.allowNavigationBarSlideGesture = () => {\n\t\t\tnavigationBarSlideGestureAllowed = true\n\n\t\t\tif (navigationBarSlideGestureEnablePending) {\n\t\t\t\tsnapper.enable()\n\n\t\t\t\tnavigationBarSlideGestureEnabled = true\n\t\t\t\tnavigationBarSlideGestureEnablePending = false\n\t\t\t}\n\t\t}\n\n\t\tOC.disallowNavigationBarSlideGesture = () => {\n\t\t\tnavigationBarSlideGestureAllowed = false\n\n\t\t\tif (navigationBarSlideGestureEnabled) {\n\t\t\t\tconst endCurrentDrag = true\n\t\t\t\tsnapper.disable(endCurrentDrag)\n\n\t\t\t\tnavigationBarSlideGestureEnabled = false\n\t\t\t\tnavigationBarSlideGestureEnablePending = true\n\t\t\t}\n\t\t}\n\n\t\tconst toggleSnapperOnSize = () => {\n\t\t\tif ($(window).width() > breakpointMobileWidth) {\n\t\t\t\t$appNavigation.attr('aria-hidden', 'false')\n\t\t\t\tsnapper.close()\n\t\t\t\tsnapper.disable()\n\n\t\t\t\tnavigationBarSlideGestureEnabled = false\n\t\t\t\tnavigationBarSlideGestureEnablePending = false\n\t\t\t} else if (navigationBarSlideGestureAllowed) {\n\t\t\t\tsnapper.enable()\n\n\t\t\t\tnavigationBarSlideGestureEnabled = true\n\t\t\t\tnavigationBarSlideGestureEnablePending = false\n\t\t\t} else {\n\t\t\t\tnavigationBarSlideGestureEnablePending = true\n\t\t\t}\n\t\t}\n\n\t\t$(window).resize(_.debounce(toggleSnapperOnSize, 250))\n\n\t\t// initial call\n\t\ttoggleSnapperOnSize()\n\n\t}\n\n\tinitLiveTimestamps()\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { translate as t, translatePlural as n } from '@nextcloud/l10n'\nimport Vue from 'vue'\n\nimport AppMenu from './AppMenu.vue'\n\nexport const setUp = () => {\n\n\tVue.mixin({\n\t\tmethods: {\n\t\t\tt,\n\t\t\tn,\n\t\t},\n\t})\n\n\tconst container = document.getElementById('header-start__appmenu')\n\tif (!container) {\n\t\t// no container, possibly we're on a public page\n\t\treturn\n\t}\n\tconst AppMenuApp = Vue.extend(AppMenu)\n\tconst appMenu = new AppMenuApp({}).$mount(container)\n\n\tObject.assign(OC, {\n\t\tsetNavigationCounter(id, counter) {\n\t\t\tappMenu.setNavigationCounter(id, counter)\n\t\t},\n\t})\n\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport Vue from 'vue'\n\nimport AccountMenu from '../views/AccountMenu.vue'\n\nexport const setUp = () => {\n\tconst mountPoint = document.getElementById('user-menu')\n\tif (mountPoint) {\n\t\t// eslint-disable-next-line no-new\n\t\tnew Vue({\n\t\t\tel: mountPoint,\n\t\t\trender: h => h(AccountMenu),\n\t\t})\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 Vue from 'vue'\n\nimport ContactsMenu from '../views/ContactsMenu.vue'\n\n/**\n * @todo move to contacts menu code https://github.com/orgs/nextcloud/projects/31#card-21213129\n */\nexport const setUp = () => {\n\tconst mountPoint = document.getElementById('contactsmenu')\n\tif (mountPoint) {\n\t\t// eslint-disable-next-line no-new\n\t\tnew Vue({\n\t\t\tel: mountPoint,\n\t\t\trender: h => h(ContactsMenu),\n\t\t})\n\t}\n}\n","\n import API from \"!../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../css-loader/dist/cjs.js!./jquery-ui.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../css-loader/dist/cjs.js!./jquery-ui.css\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../css-loader/dist/cjs.js!./jquery-ui.theme.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../css-loader/dist/cjs.js!./jquery-ui.theme.css\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../css-loader/dist/cjs.js!./select2.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../css-loader/dist/cjs.js!./select2.css\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../css-loader/dist/cjs.js!./strengthify.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../css-loader/dist/cjs.js!./strengthify.css\";\n export default content && content.locals ? content.locals : undefined;\n","/**\n * SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport $ from 'jquery'\n\n/*\n * Detects links:\n * Either the http(s) protocol is given or two strings, basically limited to ascii with the last\n * word being at least one digit long,\n * followed by at least another character\n *\n * The downside: anything not ascii is excluded. Not sure how common it is in areas using different\n * alphabets… the upside: fake domains with similar looking characters won't be formatted as links\n *\n * This is a copy of the backend regex in IURLGenerator, make sure to adjust both when changing\n */\nconst urlRegex = /(\\s|^)(https?:\\/\\/)([-A-Z0-9+_.]+(?::[0-9]+)?(?:\\/[-A-Z0-9+&@#%?=~_|!:,.;()]*)*)(\\s|$)/ig\n\n/**\n * @param {any} content -\n */\nexport function plainToRich(content) {\n\treturn this.formatLinksRich(content)\n}\n\n/**\n * @param {any} content -\n */\nexport function richToPlain(content) {\n\treturn this.formatLinksPlain(content)\n}\n\n/**\n * @param {any} content -\n */\nexport function formatLinksRich(content) {\n\treturn content.replace(urlRegex, function(_, leadingSpace, protocol, url, trailingSpace) {\n\t\tlet linkText = url\n\t\tif (!protocol) {\n\t\t\tprotocol = 'https://'\n\t\t} else if (protocol === 'http://') {\n\t\t\tlinkText = protocol + url\n\t\t}\n\n\t\treturn leadingSpace + '' + linkText + '' + trailingSpace\n\t})\n}\n\n/**\n * @param {any} content -\n */\nexport function formatLinksPlain(content) {\n\tconst $content = $('
            ').html(content)\n\t$content.find('a').each(function() {\n\t\tconst $this = $(this)\n\t\t$this.html($this.attr('href'))\n\t})\n\treturn $content.html()\n}\n","/**\n * SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport _ from 'underscore'\nimport $ from 'jquery'\nimport { generateOcsUrl } from '@nextcloud/router'\n\n/**\n * @param {any} options -\n */\nexport function query(options) {\n\toptions = options || {}\n\tconst dismissOptions = options.dismiss || {}\n\t$.ajax({\n\t\ttype: 'GET',\n\t\turl: options.url || generateOcsUrl('core/whatsnew?format=json'),\n\t\tsuccess: options.success || function(data, statusText, xhr) {\n\t\t\tonQuerySuccess(data, statusText, xhr, dismissOptions)\n\t\t},\n\t\terror: options.error || onQueryError,\n\t})\n}\n\n/**\n * @param {any} version -\n * @param {any} options -\n */\nexport function dismiss(version, options) {\n\toptions = options || {}\n\t$.ajax({\n\t\ttype: 'POST',\n\t\turl: options.url || generateOcsUrl('core/whatsnew'),\n\t\tdata: { version: encodeURIComponent(version) },\n\t\tsuccess: options.success || onDismissSuccess,\n\t\terror: options.error || onDismissError,\n\t})\n\t// remove element immediately\n\t$('.whatsNewPopover').remove()\n}\n\n/**\n * @param {any} data -\n * @param {any} statusText -\n * @param {any} xhr -\n * @param {any} dismissOptions -\n */\nfunction onQuerySuccess(data, statusText, xhr, dismissOptions) {\n\tconsole.debug('querying Whats New data was successful: ' + statusText)\n\tconsole.debug(data)\n\n\tif (xhr.status !== 200) {\n\t\treturn\n\t}\n\n\tlet item, menuItem, text, icon\n\n\tconst div = document.createElement('div')\n\tdiv.classList.add('popovermenu', 'open', 'whatsNewPopover', 'menu-left')\n\n\tconst list = document.createElement('ul')\n\n\t// header\n\titem = document.createElement('li')\n\tmenuItem = document.createElement('span')\n\tmenuItem.className = 'menuitem'\n\n\ttext = document.createElement('span')\n\ttext.innerText = t('core', 'New in') + ' ' + data.ocs.data.product\n\ttext.className = 'caption'\n\tmenuItem.appendChild(text)\n\n\ticon = document.createElement('span')\n\ticon.className = 'icon-close'\n\ticon.onclick = function() {\n\t\tdismiss(data.ocs.data.version, dismissOptions)\n\t}\n\tmenuItem.appendChild(icon)\n\n\titem.appendChild(menuItem)\n\tlist.appendChild(item)\n\n\t// Highlights\n\tfor (const i in data.ocs.data.whatsNew.regular) {\n\t\tconst whatsNewTextItem = data.ocs.data.whatsNew.regular[i]\n\t\titem = document.createElement('li')\n\n\t\tmenuItem = document.createElement('span')\n\t\tmenuItem.className = 'menuitem'\n\n\t\ticon = document.createElement('span')\n\t\ticon.className = 'icon-checkmark'\n\t\tmenuItem.appendChild(icon)\n\n\t\ttext = document.createElement('p')\n\t\ttext.innerHTML = _.escape(whatsNewTextItem)\n\t\tmenuItem.appendChild(text)\n\n\t\titem.appendChild(menuItem)\n\t\tlist.appendChild(item)\n\t}\n\n\t// Changelog URL\n\tif (!_.isUndefined(data.ocs.data.changelogURL)) {\n\t\titem = document.createElement('li')\n\n\t\tmenuItem = document.createElement('a')\n\t\tmenuItem.href = data.ocs.data.changelogURL\n\t\tmenuItem.rel = 'noreferrer noopener'\n\t\tmenuItem.target = '_blank'\n\n\t\ticon = document.createElement('span')\n\t\ticon.className = 'icon-link'\n\t\tmenuItem.appendChild(icon)\n\n\t\ttext = document.createElement('span')\n\t\ttext.innerText = t('core', 'View changelog')\n\t\tmenuItem.appendChild(text)\n\n\t\titem.appendChild(menuItem)\n\t\tlist.appendChild(item)\n\t}\n\n\tdiv.appendChild(list)\n\tdocument.body.appendChild(div)\n}\n\n/**\n * @param {any} x -\n * @param {any} t -\n * @param {any} e -\n */\nfunction onQueryError(x, t, e) {\n\tconsole.debug('querying Whats New Data resulted in an error: ' + t + e)\n\tconsole.debug(x)\n}\n\n/**\n * @param {any} data -\n */\nfunction onDismissSuccess(data) {\n\t// noop\n}\n\n/**\n * @param {any} data -\n */\nfunction onDismissError(data) {\n\tconsole.debug('dismissing Whats New data resulted in an error: ' + data)\n}\n","/**\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { loadState } from '@nextcloud/initial-state'\n\n/**\n * Set the page heading\n *\n * @param {string} heading page title from the history api\n * @since 27.0.0\n */\nexport function setPageHeading(heading) {\n\tconst headingEl = document.getElementById('page-heading-level-1')\n\tif (headingEl) {\n\t\theadingEl.textContent = heading\n\t}\n}\nexport default {\n\t/**\n\t * @return {boolean} Whether the user opted-out of shortcuts so that they should not be registered\n\t */\n\tdisableKeyboardShortcuts() {\n\t\treturn loadState('theming', 'shortcutsDisabled', false)\n\t},\n\tsetPageHeading,\n}\n","/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport escapeHTML from 'escape-html'\n\n/**\n * @typedef TypeDefinition\n * @function action This action is executed to let the user select a resource\n * @param {string} icon Contains the icon css class for the type\n * @function Object() { [native code] }\n */\n\n/**\n * @type {TypeDefinition[]}\n */\nconst types = {}\n\n/**\n * Those translations will be used by the vue component but they should be shipped with the server\n * FIXME: Those translations should be added to the library\n *\n * @return {Array}\n */\nexport const l10nProjects = () => {\n\treturn [\n\t\tt('core', 'Add to a project'),\n\t\tt('core', 'Show details'),\n\t\tt('core', 'Hide details'),\n\t\tt('core', 'Rename project'),\n\t\tt('core', 'Failed to rename the project'),\n\t\tt('core', 'Failed to create a project'),\n\t\tt('core', 'Failed to add the item to the project'),\n\t\tt('core', 'Connect items to a project to make them easier to find'),\n\t\tt('core', 'Type to search for existing projects'),\n\t]\n}\n\nexport default {\n\t/**\n\t *\n\t * @param {string} type type\n\t * @param {TypeDefinition} typeDefinition typeDefinition\n\t */\n\tregisterType(type, typeDefinition) {\n\t\ttypes[type] = typeDefinition\n\t},\n\ttrigger(type) {\n\t\treturn types[type].action()\n\t},\n\tgetTypes() {\n\t\treturn Object.keys(types)\n\t},\n\tgetIcon(type) {\n\t\treturn types[type].typeIconClass || ''\n\t},\n\tgetLabel(type) {\n\t\treturn escapeHTML(types[type].typeString || type)\n\t},\n\tgetLink(type, id) {\n\t\t/* TODO: Allow action to be executed instead of href as well */\n\t\treturn typeof types[type] !== 'undefined' ? types[type].link(id) : ''\n\t},\n}\n","/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nconst loadedScripts = {}\nconst loadedStylesheets = {}\n/**\n * @namespace OCP\n * @class Loader\n */\nexport default {\n\n\t/**\n\t * Load a script asynchronously\n\t *\n\t * @param {string} app the app name\n\t * @param {string} file the script file name\n\t * @return {Promise}\n\t */\n\tloadScript(app, file) {\n\t\tconst key = app + file\n\t\tif (Object.prototype.hasOwnProperty.call(loadedScripts, key)) {\n\t\t\treturn Promise.resolve()\n\t\t}\n\t\tloadedScripts[key] = true\n\t\treturn new Promise(function(resolve, reject) {\n\t\t\tconst scriptPath = OC.filePath(app, 'js', file)\n\t\t\tconst script = document.createElement('script')\n\t\t\tscript.src = scriptPath\n\t\t\tscript.setAttribute('nonce', btoa(OC.requestToken))\n\t\t\tscript.onload = () => resolve()\n\t\t\tscript.onerror = () => reject(new Error(`Failed to load script from ${scriptPath}`))\n\t\t\tdocument.head.appendChild(script)\n\t\t})\n\t},\n\n\t/**\n\t * Load a stylesheet file asynchronously\n\t *\n\t * @param {string} app the app name\n\t * @param {string} file the script file name\n\t * @return {Promise}\n\t */\n\tloadStylesheet(app, file) {\n\t\tconst key = app + file\n\t\tif (Object.prototype.hasOwnProperty.call(loadedStylesheets, key)) {\n\t\t\treturn Promise.resolve()\n\t\t}\n\t\tloadedStylesheets[key] = true\n\t\treturn new Promise(function(resolve, reject) {\n\t\t\tconst stylePath = OC.filePath(app, 'css', file)\n\t\t\tconst link = document.createElement('link')\n\t\t\tlink.href = stylePath\n\t\t\tlink.type = 'text/css'\n\t\t\tlink.rel = 'stylesheet'\n\t\t\tlink.onload = () => resolve()\n\t\t\tlink.onerror = () => reject(new Error(`Failed to load stylesheet from ${stylePath}`))\n\t\t\tdocument.head.appendChild(link)\n\t\t})\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 {\n\tshowError,\n\tshowInfo, showMessage,\n\tshowSuccess,\n\tshowWarning,\n} from '@nextcloud/dialogs'\n\n/** @typedef {import('toastify-js')} Toast */\n\nexport default {\n\t/**\n\t * @deprecated 19.0.0 use `showSuccess` from the `@nextcloud/dialogs` package instead\n\t *\n\t * @param {string} text the toast text\n\t * @param {object} options options\n\t * @return {Toast}\n\t */\n\tsuccess(text, options) {\n\t\treturn showSuccess(text, options)\n\t},\n\t/**\n\t * @deprecated 19.0.0 use `showWarning` from the `@nextcloud/dialogs` package instead\n\t *\n\t * @param {string} text the toast text\n\t * @param {object} options options\n\t * @return {Toast}\n\t */\n\twarning(text, options) {\n\t\treturn showWarning(text, options)\n\t},\n\t/**\n\t * @deprecated 19.0.0 use `showError` from the `@nextcloud/dialogs` package instead\n\t *\n\t * @param {string} text the toast text\n\t * @param {object} options options\n\t * @return {Toast}\n\t */\n\terror(text, options) {\n\t\treturn showError(text, options)\n\t},\n\t/**\n\t * @deprecated 19.0.0 use `showInfo` from the `@nextcloud/dialogs` package instead\n\t *\n\t * @param {string} text the toast text\n\t * @param {object} options options\n\t * @return {Toast}\n\t */\n\tinfo(text, options) {\n\t\treturn showInfo(text, options)\n\t},\n\t/**\n\t * @deprecated 19.0.0 use `showMessage` from the `@nextcloud/dialogs` package instead\n\t *\n\t * @param {string} text the toast text\n\t * @param {object} options options\n\t * @return {Toast}\n\t */\n\tmessage(text, options) {\n\t\treturn showMessage(text, options)\n\t},\n\n}\n","/**\n * SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { loadState } from '@nextcloud/initial-state'\n\nimport * as AppConfig from './appconfig.js'\nimport * as Comments from './comments.js'\nimport * as WhatsNew from './whatsnew.js'\n\nimport Accessibility from './accessibility.js'\nimport Collaboration from './collaboration.js'\nimport Loader from './loader.js'\nimport Toast from './toast.js'\n\n/** @namespace OCP */\nexport default {\n\tAccessibility,\n\tAppConfig,\n\tCollaboration,\n\tComments,\n\tInitialState: {\n\t\t/**\n\t\t * @deprecated 18.0.0 add https://www.npmjs.com/package/@nextcloud/initial-state to your app\n\t\t */\n\t\tloadState,\n\t},\n\tLoader,\n\t/**\n\t * @deprecated 19.0.0 use the `@nextcloud/dialogs` package instead\n\t */\n\tToast,\n\tWhatsNew,\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/* eslint-disable @nextcloud/no-deprecations */\nimport { initCore } from './init.js'\n\nimport _ from 'underscore'\nimport $ from 'jquery'\n// TODO: switch to `jquery-ui` package and import widgets and effects individually\n// `jquery-ui-dist` is used as a workaround for the issue of missing effects\nimport 'jquery-ui-dist/jquery-ui.js'\nimport 'jquery-ui-dist/jquery-ui.css'\nimport 'jquery-ui-dist/jquery-ui.theme.css'\n// END TODO\nimport Backbone from 'backbone'\nimport ClipboardJS from 'clipboard'\nimport { dav } from 'davclient.js'\nimport Handlebars from 'handlebars'\nimport md5 from 'blueimp-md5'\nimport moment from 'moment'\nimport 'select2'\nimport 'select2/select2.css'\nimport 'snap.js/dist/snap.js'\nimport 'strengthify'\nimport 'strengthify/strengthify.css'\n\nimport OC from './OC/index.js'\nimport OCP from './OCP/index.js'\nimport OCA from './OCA/index.js'\nimport { getToken as getRequestToken } from './OC/requesttoken.js'\n\nconst warnIfNotTesting = function() {\n\tif (window.TESTING === undefined) {\n\t\tOC.debug && console.warn.apply(console, arguments)\n\t}\n}\n\n/**\n * Mark a function as deprecated and automatically\n * warn if used!\n *\n * @param {Function} func the library to deprecate\n * @param {string} funcName the name of the library\n * @param {number} version the version this gets removed\n * @return {Function}\n */\nconst deprecate = (func, funcName, version) => {\n\tconst oldFunc = func\n\tconst newFunc = function() {\n\t\twarnIfNotTesting(`The ${funcName} library is deprecated! It will be removed in nextcloud ${version}.`)\n\t\treturn oldFunc.apply(this, arguments)\n\t}\n\tObject.assign(newFunc, oldFunc)\n\treturn newFunc\n}\n\nconst setDeprecatedProp = (global, cb, msg) => {\n\t(Array.isArray(global) ? global : [global]).forEach(global => {\n\t\tif (window[global] !== undefined) {\n\t\t\tdelete window[global]\n\t\t}\n\t\tObject.defineProperty(window, global, {\n\t\t\tget: () => {\n\t\t\t\tif (msg) {\n\t\t\t\t\twarnIfNotTesting(`${global} is deprecated: ${msg}`)\n\t\t\t\t} else {\n\t\t\t\t\twarnIfNotTesting(`${global} is deprecated`)\n\t\t\t\t}\n\n\t\t\t\treturn cb()\n\t\t\t},\n\t\t})\n\t})\n}\n\nwindow._ = _\nsetDeprecatedProp(['$', 'jQuery'], () => $, 'The global jQuery is deprecated. It will be removed in a later versions without another warning. Please ship your own.')\nsetDeprecatedProp('Backbone', () => Backbone, 'please ship your own, this will be removed in Nextcloud 20')\nsetDeprecatedProp(['Clipboard', 'ClipboardJS'], () => ClipboardJS, 'please ship your own, this will be removed in Nextcloud 20')\nwindow.dav = dav\nsetDeprecatedProp('Handlebars', () => Handlebars, 'please ship your own, this will be removed in Nextcloud 20')\n// Global md5 only required for: apps/files/js/file-upload.js\nsetDeprecatedProp('md5', () => md5, 'please ship your own, this will be removed in Nextcloud 20')\nsetDeprecatedProp('moment', () => moment, 'please ship your own, this will be removed in Nextcloud 20')\n\nwindow.OC = OC\nsetDeprecatedProp('initCore', () => initCore, 'this is an internal function')\nsetDeprecatedProp('oc_appswebroots', () => OC.appswebroots, 'use OC.appswebroots instead, this will be removed in Nextcloud 20')\nsetDeprecatedProp('oc_config', () => OC.config, 'use OC.config instead, this will be removed in Nextcloud 20')\nsetDeprecatedProp('oc_current_user', () => OC.getCurrentUser().uid, 'use OC.getCurrentUser().uid instead, this will be removed in Nextcloud 20')\nsetDeprecatedProp('oc_debug', () => OC.debug, 'use OC.debug instead, this will be removed in Nextcloud 20')\nsetDeprecatedProp('oc_defaults', () => OC.theme, 'use OC.theme instead, this will be removed in Nextcloud 20')\nsetDeprecatedProp('oc_isadmin', OC.isUserAdmin, 'use OC.isUserAdmin() instead, this will be removed in Nextcloud 20')\nsetDeprecatedProp('oc_requesttoken', () => getRequestToken(), 'use OC.requestToken instead, this will be removed in Nextcloud 20')\nsetDeprecatedProp('oc_webroot', () => OC.webroot, 'use OC.getRootPath() instead, this will be removed in Nextcloud 20')\nsetDeprecatedProp('OCDialogs', () => OC.dialogs, 'use OC.dialogs instead, this will be removed in Nextcloud 20')\nwindow.OCP = OCP\nwindow.OCA = OCA\n$.fn.select2 = deprecate($.fn.select2, 'select2', 19)\n\n/**\n * translate a string\n *\n * @param {string} app the id of the app for which to translate the string\n * @param {string} text the string to translate\n * @param [vars] map of placeholder key to value\n * @param {number} [count] number to replace %n with\n * @return {string}\n */\nwindow.t = _.bind(OC.L10N.translate, OC.L10N)\n\n/**\n * translate a string\n *\n * @param {string} app the id of the app for which to translate the string\n * @param {string} text_singular the string to translate for exactly one object\n * @param {string} text_plural the string to translate for n objects\n * @param {number} count number to determine whether to use singular or plural\n * @param [vars] map of placeholder key to value\n * @return {string} Translated string\n */\nwindow.n = _.bind(OC.L10N.translatePlural, OC.L10N)\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/**\n * Namespace for apps\n *\n * @namespace OCA\n */\nexport default { }\n","/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport $ from 'jquery'\n\nimport OC from '../OC/index.js'\n\n/**\n * This plugin inserts the right avatar for the user, depending on, whether a\n * custom avatar is uploaded - which it uses then - or not, and display a\n * placeholder with the first letter of the users name instead.\n * For this it queries the core_avatar_get route, thus this plugin is fit very\n * tightly for owncloud, and it may not work anywhere else.\n *\n * You may use this on any
            \n * Here I'm using
            as an example.\n *\n * There are 5 ways to call this:\n *\n * 1. $('.avatardiv').avatar('jdoe', 128);\n * This will make the div to jdoe's fitting avatar, with a size of 128px.\n *\n * 2. $('.avatardiv').avatar('jdoe');\n * This will make the div to jdoe's fitting avatar. If the div already has a\n * height, it will be used for the avatars size. Otherwise this plugin will\n * search for 'size' DOM data, to use for avatar size. If neither are available\n * it will default to 64px.\n *\n * 3. $('.avatardiv').avatar();\n * This will search the DOM for 'user' data, to use as the username. If there\n * is no username available it will default to a placeholder with the value of\n * \"?\". The size will be determined the same way, as the second example.\n *\n * 4. $('.avatardiv').avatar('jdoe', 128, true);\n * This will behave like the first example, except it will also append random\n * hashes to the custom avatar images, to force image reloading in IE8.\n *\n * 5. $('.avatardiv').avatar('jdoe', 128, undefined, true);\n * This will behave like the first example, but it will hide the avatardiv, if\n * it will display the default placeholder. undefined is the ie8fix from\n * example 4 and can be either true, or false/undefined, to be ignored.\n *\n * 6. $('.avatardiv').avatar('jdoe', 128, undefined, true, callback);\n * This will behave like the above example, but it will call the function\n * defined in callback after the avatar is placed into the DOM.\n *\n */\n\n$.fn.avatar = function(user, size, ie8fix, hidedefault, callback, displayname) {\n\tconst setAvatarForUnknownUser = function(target) {\n\t\ttarget.imageplaceholder('?')\n\t\ttarget.css('background-color', '#b9b9b9')\n\t}\n\n\tif (typeof (user) !== 'undefined') {\n\t\tuser = String(user)\n\t}\n\tif (typeof (displayname) !== 'undefined') {\n\t\tdisplayname = String(displayname)\n\t}\n\n\tif (typeof (size) === 'undefined') {\n\t\tif (this.height() > 0) {\n\t\t\tsize = this.height()\n\t\t} else if (this.data('size') > 0) {\n\t\t\tsize = this.data('size')\n\t\t} else {\n\t\t\tsize = 64\n\t\t}\n\t}\n\n\tthis.height(size)\n\tthis.width(size)\n\n\tif (typeof (user) === 'undefined') {\n\t\tif (typeof (this.data('user')) !== 'undefined') {\n\t\t\tuser = this.data('user')\n\t\t} else {\n\t\t\tsetAvatarForUnknownUser(this)\n\t\t\treturn\n\t\t}\n\t}\n\n\t// sanitize\n\tuser = String(user).replace(/\\//g, '')\n\n\tconst $div = this\n\tlet url\n\n\t// If this is our own avatar we have to use the version attribute\n\tif (user === OC.getCurrentUser().uid) {\n\t\turl = OC.generateUrl(\n\t\t\t'/avatar/{user}/{size}?v={version}',\n\t\t\t{\n\t\t\t\tuser,\n\t\t\t\tsize: Math.ceil(size * window.devicePixelRatio),\n\t\t\t\tversion: oc_userconfig.avatar.version,\n\t\t\t})\n\t} else {\n\t\turl = OC.generateUrl(\n\t\t\t'/avatar/{user}/{size}',\n\t\t\t{\n\t\t\t\tuser,\n\t\t\t\tsize: Math.ceil(size * window.devicePixelRatio),\n\t\t\t})\n\t}\n\n\tconst img = new Image()\n\n\t// If the new image loads successfully set it.\n\timg.onload = function() {\n\t\t$div.clearimageplaceholder()\n\t\t$div.append(img)\n\n\t\tif (typeof callback === 'function') {\n\t\t\tcallback()\n\t\t}\n\t}\n\t// Fallback when avatar loading fails:\n\t// Use old placeholder when a displayname attribute is defined,\n\t// otherwise show the unknown user placeholder.\n\timg.onerror = function() {\n\t\t$div.clearimageplaceholder()\n\t\tif (typeof (displayname) !== 'undefined') {\n\t\t\t$div.imageplaceholder(user, displayname)\n\t\t} else {\n\t\t\tsetAvatarForUnknownUser($div)\n\t\t}\n\n\t\tif (typeof callback === 'function') {\n\t\t\tcallback()\n\t\t}\n\t}\n\n\tif (size < 32) {\n\t\t$div.addClass('icon-loading-small')\n\t} else {\n\t\t$div.addClass('icon-loading')\n\t}\n\timg.width = size\n\timg.height = size\n\timg.src = url\n\timg.alt = ''\n}\n","/**\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/**\n * Return whether the DOM event is an accessible mouse or keyboard element activation\n *\n * @param {Event} event DOM event\n *\n * @return {boolean}\n */\nexport const isA11yActivation = (event) => {\n\tif (event.type === 'click') {\n\t\treturn true\n\t}\n\tif (event.type === 'keydown' && event.key === 'Enter') {\n\t\treturn true\n\t}\n\treturn false\n}\n","/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport $ from 'jquery'\n\nimport { generateUrl } from '@nextcloud/router'\nimport { isA11yActivation } from '../Util/a11y.js'\n\nconst LIST = ''\n\t+ ''\n\nconst entryTemplate = require('./contactsmenu/jquery_entry.handlebars')\n\n$.fn.contactsMenu = function(shareWith, shareType, appendTo) {\n\t// 0 - user, 4 - email, 6 - remote\n\tconst allowedTypes = [0, 4, 6]\n\tif (allowedTypes.indexOf(shareType) === -1) {\n\t\treturn\n\t}\n\n\tconst $div = this\n\tappendTo.append(LIST)\n\tconst $list = appendTo.find('div.contactsmenu-popover')\n\n\t$div.on('click keydown', function(event) {\n\t\tif (!isA11yActivation(event)) {\n\t\t\treturn\n\t\t}\n\n\t\tif (!$list.hasClass('hidden')) {\n\t\t\t$list.addClass('hidden')\n\t\t\t$list.hide()\n\t\t\treturn\n\t\t}\n\n\t\t$list.removeClass('hidden')\n\t\t$list.show()\n\n\t\tif ($list.hasClass('loaded')) {\n\t\t\treturn\n\t\t}\n\n\t\t$list.addClass('loaded')\n\t\t$.ajax(generateUrl('/contactsmenu/findOne'), {\n\t\t\tmethod: 'POST',\n\t\t\tdata: {\n\t\t\t\tshareType,\n\t\t\t\tshareWith,\n\t\t\t},\n\t\t}).then(function(data) {\n\t\t\t$list.find('ul').find('li').addClass('hidden')\n\n\t\t\tlet actions\n\t\t\tif (!data.topAction) {\n\t\t\t\tactions = [{\n\t\t\t\t\thyperlink: '#',\n\t\t\t\t\ttitle: t('core', 'No action available'),\n\t\t\t\t}]\n\t\t\t} else {\n\t\t\t\tactions = [data.topAction].concat(data.actions)\n\t\t\t}\n\n\t\t\tactions.forEach(function(action) {\n\t\t\t\t$list.find('ul').append(entryTemplate(action))\n\t\t\t})\n\n\t\t\t$div.trigger('load')\n\t\t}, function(jqXHR) {\n\t\t\t$list.find('ul').find('li').addClass('hidden')\n\n\t\t\tlet title\n\t\t\tif (jqXHR.status === 404) {\n\t\t\t\ttitle = t('core', 'No action available')\n\t\t\t} else {\n\t\t\t\ttitle = t('core', 'Error fetching contact actions')\n\t\t\t}\n\n\t\t\t$list.find('ul').append(entryTemplate({\n\t\t\t\thyperlink: '#',\n\t\t\t\ttitle,\n\t\t\t}))\n\n\t\t\t$div.trigger('loaderror', jqXHR)\n\t\t})\n\t})\n\n\t$(document).click(function(event) {\n\t\tconst clickedList = ($list.has(event.target).length > 0)\n\t\tlet clickedTarget = ($div.has(event.target).length > 0)\n\n\t\t$div.each(function() {\n\t\t\tif ($(this).is(event.target)) {\n\t\t\t\tclickedTarget = true\n\t\t\t}\n\t\t})\n\n\t\tif (clickedList || clickedTarget) {\n\t\t\treturn\n\t\t}\n\n\t\t$list.addClass('hidden')\n\t\t$list.hide()\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 $ from 'jquery'\n\n/**\n * check if an element exists.\n * allows you to write if ($('#myid').exists()) to increase readability\n *\n * @see {@link http://stackoverflow.com/questions/31044/is-there-an-exists-function-for-jquery}\n * @return {boolean}\n */\n$.fn.exists = function() {\n\treturn this.length > 0\n}\n","/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport $ from 'jquery'\n\n/**\n * Filter jQuery selector by attribute value\n *\n * @param {string} attrName attribute name\n * @param {string} attrValue attribute value\n * @return {void}\n */\n$.fn.filterAttr = function(attrName, attrValue) {\n\treturn this.filter(function() {\n\t\treturn $(this).attr(attrName) === attrValue\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 $ from 'jquery'\nimport { createFocusTrap } from 'focus-trap'\nimport { isA11yActivation } from '../Util/a11y.js'\n\n$.widget('oc.ocdialog', {\n\toptions: {\n\t\twidth: 'auto',\n\t\theight: 'auto',\n\t\tcloseButton: true,\n\t\tcloseOnEscape: true,\n\t\tcloseCallback: null,\n\t\tmodal: false,\n\t},\n\t_create() {\n\t\tconst self = this\n\n\t\tthis.originalCss = {\n\t\t\tdisplay: this.element[0].style.display,\n\t\t\twidth: this.element[0].style.width,\n\t\t\theight: this.element[0].style.height,\n\t\t}\n\n\t\tthis.originalTitle = this.element.attr('title')\n\t\tthis.options.title = this.options.title || this.originalTitle\n\n\t\tthis.$dialog = $('
            ')\n\t\t\t.attr({\n\t\t\t\t// Setting tabIndex makes the div focusable\n\t\t\t\ttabIndex: -1,\n\t\t\t\trole: 'dialog',\n\t\t\t\t'aria-modal': true,\n\t\t\t})\n\t\t\t.insertBefore(this.element)\n\t\tthis.$dialog.append(this.element.detach())\n\t\tthis.element.removeAttr('title').addClass('oc-dialog-content').appendTo(this.$dialog)\n\n\t\t// Activate the primary button on enter if there is a single input\n\t\tif (self.element.find('input').length === 1) {\n\t\t\tconst $input = self.element.find('input')\n\t\t\t$input.on('keydown', function(event) {\n\t\t\t\tif (isA11yActivation(event)) {\n\t\t\t\t\tif (self.$buttonrow) {\n\t\t\t\t\t\tconst $button = self.$buttonrow.find('button.primary')\n\t\t\t\t\t\tif ($button && !$button.prop('disabled')) {\n\t\t\t\t\t\t\t$button.click()\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\n\t\tthis.$dialog.css({\n\t\t\tdisplay: 'inline-block',\n\t\t\tposition: 'fixed',\n\t\t})\n\n\t\tthis.enterCallback = null\n\n\t\t$(document).on('keydown keyup', function(event) {\n\t\t\tif (\n\t\t\t\tevent.target !== self.$dialog.get(0)\n\t\t\t\t&& self.$dialog.find($(event.target)).length === 0\n\t\t\t) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\t// Escape\n\t\t\tif (\n\t\t\t\tevent.keyCode === 27\n\t\t\t\t&& event.type === 'keydown'\n\t\t\t\t&& self.options.closeOnEscape\n\t\t\t) {\n\t\t\t\tevent.stopImmediatePropagation()\n\t\t\t\tself.close()\n\t\t\t\treturn false\n\t\t\t}\n\t\t\t// Enter\n\t\t\tif (event.keyCode === 13) {\n\t\t\t\tevent.stopImmediatePropagation()\n\t\t\t\tif (self.enterCallback !== null) {\n\t\t\t\t\tself.enterCallback()\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tif (event.type === 'keyup') {\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\treturn false\n\t\t\t}\n\t\t})\n\n\t\tthis._setOptions(this.options)\n\t\tthis._createOverlay()\n\t\tthis._useFocusTrap()\n\t},\n\t_init() {\n\t\tthis._trigger('open')\n\t},\n\t_setOption(key, value) {\n\t\tconst self = this\n\t\tswitch (key) {\n\t\tcase 'title':\n\t\t\tif (this.$title) {\n\t\t\t\tthis.$title.text(value)\n\t\t\t} else {\n\t\t\t\tconst $title = $('

            '\n\t\t\t\t\t\t+ value\n\t\t\t\t\t\t+ '

            ')\n\t\t\t\tthis.$title = $title.prependTo(this.$dialog)\n\t\t\t}\n\t\t\tthis._setSizes()\n\t\t\tbreak\n\t\tcase 'buttons':\n\t\t\tif (this.$buttonrow) {\n\t\t\t\tthis.$buttonrow.empty()\n\t\t\t} else {\n\t\t\t\tconst $buttonrow = $('
            ')\n\t\t\t\tthis.$buttonrow = $buttonrow.appendTo(this.$dialog)\n\t\t\t}\n\t\t\tif (value.length === 1) {\n\t\t\t\tthis.$buttonrow.addClass('onebutton')\n\t\t\t} else if (value.length === 2) {\n\t\t\t\tthis.$buttonrow.addClass('twobuttons')\n\t\t\t} else if (value.length === 3) {\n\t\t\t\tthis.$buttonrow.addClass('threebuttons')\n\t\t\t}\n\t\t\t$.each(value, function(idx, val) {\n\t\t\t\tconst $button = $('')\n\t\t\t\t$closeButton.attr('aria-label', t('core', 'Close \"{dialogTitle}\" dialog', { dialogTitle: this.$title || this.options.title }))\n\t\t\t\tthis.$dialog.prepend($closeButton)\n\t\t\t\t$closeButton.on('click keydown', function(event) {\n\t\t\t\t\tif (isA11yActivation(event)) {\n\t\t\t\t\t\tself.options.closeCallback && self.options.closeCallback()\n\t\t\t\t\t\tself.close()\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\tthis.$dialog.find('.oc-dialog-close').remove()\n\t\t\t}\n\t\t\tbreak\n\t\tcase 'width':\n\t\t\tthis.$dialog.css('width', value)\n\t\t\tbreak\n\t\tcase 'height':\n\t\t\tthis.$dialog.css('height', value)\n\t\t\tbreak\n\t\tcase 'close':\n\t\t\tthis.closeCB = value\n\t\t\tbreak\n\t\t}\n\t\t// this._super(key, value);\n\t\t$.Widget.prototype._setOption.apply(this, arguments)\n\t},\n\t_setOptions(options) {\n\t\t// this._super(options);\n\t\t$.Widget.prototype._setOptions.apply(this, arguments)\n\t},\n\t_setSizes() {\n\t\tlet lessHeight = 0\n\t\tif (this.$title) {\n\t\t\tlessHeight += this.$title.outerHeight(true)\n\t\t}\n\t\tif (this.$buttonrow) {\n\t\t\tlessHeight += this.$buttonrow.outerHeight(true)\n\t\t}\n\t\tthis.element.css({\n\t\t\theight: 'calc(100% - ' + lessHeight + 'px)',\n\t\t})\n\t},\n\t_createOverlay() {\n\t\tif (!this.options.modal) {\n\t\t\treturn\n\t\t}\n\n\t\tconst self = this\n\t\tlet contentDiv = $('#content')\n\t\tif (contentDiv.length === 0) {\n\t\t\t// nextcloud-vue compatibility\n\t\t\tcontentDiv = $('.content')\n\t\t}\n\t\tthis.overlay = $('
            ')\n\t\t\t.addClass('oc-dialog-dim')\n\t\t\t.insertBefore(this.$dialog)\n\t\tthis.overlay.on('click keydown keyup', function(event) {\n\t\t\tif (event.target !== self.$dialog.get(0) && self.$dialog.find($(event.target)).length === 0) {\n\t\t\t\tevent.preventDefault()\n\t\t\t\tevent.stopPropagation()\n\n\t\t\t}\n\t\t})\n\t},\n\t_destroyOverlay() {\n\t\tif (!this.options.modal) {\n\t\t\treturn\n\t\t}\n\n\t\tif (this.overlay) {\n\t\t\tthis.overlay.off('click keydown keyup')\n\t\t\tthis.overlay.remove()\n\t\t\tthis.overlay = null\n\t\t}\n\t},\n\t_useFocusTrap() {\n\t\t// Create global stack if undefined\n\t\tObject.assign(window, { _nc_focus_trap: window._nc_focus_trap || [] })\n\n\t\tconst dialogElement = this.$dialog[0]\n\t\tthis.focusTrap = createFocusTrap(dialogElement, {\n\t\t\tallowOutsideClick: true,\n\t\t\ttrapStack: window._nc_focus_trap,\n\t\t\tfallbackFocus: dialogElement,\n\t\t})\n\n\t\tthis.focusTrap.activate()\n\t},\n\t_clearFocusTrap() {\n\t\tthis.focusTrap?.deactivate()\n\t\tthis.focusTrap = null\n\t},\n\twidget() {\n\t\treturn this.$dialog\n\t},\n\tsetEnterCallback(callback) {\n\t\tthis.enterCallback = callback\n\t},\n\tunsetEnterCallback() {\n\t\tthis.enterCallback = null\n\t},\n\tclose() {\n\t\tthis._clearFocusTrap()\n\t\tthis._destroyOverlay()\n\t\tconst self = this\n\t\t// Ugly hack to catch remaining keyup events.\n\t\tsetTimeout(function() {\n\t\t\tself._trigger('close', self)\n\t\t}, 200)\n\n\t\tself.$dialog.remove()\n\t\tthis.destroy()\n\t},\n\tdestroy() {\n\t\tif (this.$title) {\n\t\t\tthis.$title.remove()\n\t\t}\n\t\tif (this.$buttonrow) {\n\t\t\tthis.$buttonrow.remove()\n\t\t}\n\n\t\tif (this.originalTitle) {\n\t\t\tthis.element.attr('title', this.originalTitle)\n\t\t}\n\t\tthis.element.removeClass('oc-dialog-content')\n\t\t\t.css(this.originalCss).detach().insertBefore(this.$dialog)\n\t\tthis.$dialog.remove()\n\t},\n})\n","/**\n * SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport $ from 'jquery'\nimport escapeHTML from 'escape-html'\n\n/**\n * jQuery plugin for micro templates\n *\n * Strings are automatically escaped, but that can be disabled by setting\n * escapeFunction to null.\n *\n * Usage examples:\n *\n * var htmlStr = '

            Bake, uncovered, until the {greasystuff} is melted and the {pasta} is heated through, about {min} minutes.

            '\n * $(htmlStr).octemplate({greasystuff: 'cheese', pasta: 'macaroni', min: 10});\n *\n * var htmlStr = '

            Welcome back {user}

            ';\n * $(htmlStr).octemplate({user: 'John Q. Public'}, {escapeFunction: null});\n *\n * Be aware that the target string must be wrapped in an HTML element for the\n * plugin to work. The following won't work:\n *\n * var textStr = 'Welcome back {user}';\n * $(textStr).octemplate({user: 'John Q. Public'});\n *\n * For anything larger than one-liners, you can use a simple $.get() ajax\n * request to get the template, or you can embed them it the page using the\n * text/template type:\n *\n * \n *\n * var $tmpl = $('#contactListItemTemplate');\n * var contacts = // fetched in some ajax call\n *\n * $.each(contacts, function(idx, contact) {\n * $contactList.append(\n * $tmpl.octemplate({\n * id: contact.getId(),\n * name: contact.getDisplayName(),\n * email: contact.getPreferredEmail(),\n * phone: contact.getPreferredPhone(),\n * });\n * );\n * });\n */\n/**\n * Object Template\n * Inspired by micro templating done by e.g. underscore.js\n */\nconst Template = {\n\tinit(vars, options, elem) {\n\t\t// Mix in the passed in options with the default options\n\t\tthis.vars = vars\n\t\tthis.options = $.extend({}, this.options, options)\n\n\t\tthis.elem = elem\n\t\tconst self = this\n\n\t\tif (typeof this.options.escapeFunction === 'function') {\n\t\t\tconst keys = Object.keys(this.vars)\n\t\t\tfor (let key = 0; key < keys.length; key++) {\n\t\t\t\tif (typeof this.vars[keys[key]] === 'string') {\n\t\t\t\t\tthis.vars[keys[key]] = self.options.escapeFunction(this.vars[keys[key]])\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst _html = this._build(this.vars)\n\t\treturn $(_html)\n\t},\n\t// From stackoverflow.com/questions/1408289/best-way-to-do-variable-interpolation-in-javascript\n\t_build(o) {\n\t\tconst data = this.elem.attr('type') === 'text/template' ? this.elem.html() : this.elem.get(0).outerHTML\n\t\ttry {\n\t\t\treturn data.replace(/{([^{}]*)}/g,\n\t\t\t\tfunction(a, b) {\n\t\t\t\t\tconst r = o[b]\n\t\t\t\t\treturn typeof r === 'string' || typeof r === 'number' ? r : a\n\t\t\t\t},\n\t\t\t)\n\t\t} catch (e) {\n\t\t\tconsole.error(e, 'data:', data)\n\t\t}\n\t},\n\toptions: {\n\t\tescapeFunction: escapeHTML,\n\t},\n}\n\n$.fn.octemplate = function(vars, options) {\n\tvars = vars || {}\n\tif (this.length) {\n\t\tconst _template = Object.create(Template)\n\t\treturn _template.init(vars, options, this)\n\t}\n}\n","/**\n * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-FileCopyrightText: 2013-2016 ownCloud, Inc.\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/* eslint-disable */\nimport $ from 'jquery'\nimport md5 from 'blueimp-md5'\n\n/*\n * Adds a background color to the element called on and adds the first character\n * of the passed in string. This string is also the seed for the generation of\n * the background color.\n *\n * You have following HTML:\n *\n *
            \n *\n * And call this from Javascript:\n *\n * $('#albumart').imageplaceholder('The Album Title');\n *\n * Which will result in:\n *\n *
            T
            \n *\n * You may also call it like this, to have a different background, than the seed:\n *\n * $('#albumart').imageplaceholder('The Album Title', 'Album Title');\n *\n * Resulting in:\n *\n *
            A
            \n *\n */\n\n/*\n* Alternatively, you can use the prototype function to convert your string to rgb colors:\n*\n* \"a6741a86aded5611a8e46ce16f2ad646\".toRgb()\n*\n* Will return the rgb parameters within the following object:\n*\n* Color {r: 208, g: 158, b: 109}\n*\n*/\n\nconst toRgb = (s) => {\n\t// Normalize hash\n\tvar hash = s.toLowerCase()\n\n\t// Already a md5 hash?\n\tif (hash.match(/^([0-9a-f]{4}-?){8}$/) === null) {\n\t\thash = md5(hash)\n\t}\n\n\thash = hash.replace(/[^0-9a-f]/g, '')\n\n\tfunction Color(r, g, b) {\n\t\tthis.r = r\n\t\tthis.g = g\n\t\tthis.b = b\n\t}\n\n\tfunction stepCalc(steps, ends) {\n\t\tvar step = new Array(3)\n\t\tstep[0] = (ends[1].r - ends[0].r) / steps\n\t\tstep[1] = (ends[1].g - ends[0].g) / steps\n\t\tstep[2] = (ends[1].b - ends[0].b) / steps\n\t\treturn step\n\t}\n\n\tfunction mixPalette(steps, color1, color2) {\n\t\tvar palette = []\n\t\tpalette.push(color1)\n\t\tvar step = stepCalc(steps, [color1, color2])\n\t\tfor (var i = 1; i < steps; i++) {\n\t\t\tvar r = parseInt(color1.r + (step[0] * i))\n\t\t\tvar g = parseInt(color1.g + (step[1] * i))\n\t\t\tvar b = parseInt(color1.b + (step[2] * i))\n\t\t\tpalette.push(new Color(r, g, b))\n\t\t}\n\t\treturn palette\n\t}\n\n\tconst red = new Color(182, 70, 157);\n\tconst yellow = new Color(221, 203, 85);\n\tconst blue = new Color(0, 130, 201); // Nextcloud blue\n\t// Number of steps to go from a color to another\n\t// 3 colors * 6 will result in 18 generated colors\n\tconst steps = 6;\n\n\tconst palette1 = mixPalette(steps, red, yellow);\n\tconst palette2 = mixPalette(steps, yellow, blue);\n\tconst palette3 = mixPalette(steps, blue, red);\n\n\tconst finalPalette = palette1.concat(palette2).concat(palette3);\n\n\t// Convert a string to an integer evenly\n\tfunction hashToInt(hash, maximum) {\n\t\tvar finalInt = 0\n\t\tvar result = []\n\n\t\t// Splitting evenly the string\n\t\tfor (var i = 0; i < hash.length; i++) {\n\t\t\t// chars in md5 goes up to f, hex:16\n\t\t\tresult.push(parseInt(hash.charAt(i), 16) % 16)\n\t\t}\n\t\t// Adds up all results\n\t\tfor (var j in result) {\n\t\t\tfinalInt += result[j]\n\t\t}\n\t\t// chars in md5 goes up to f, hex:16\n\t\t// make sure we're always using int in our operation\n\t\treturn parseInt(parseInt(finalInt) % maximum)\n\t}\n\n\treturn finalPalette[hashToInt(hash, steps * 3)]\n}\n\nString.prototype.toRgb = function() {\n\tOC.debug && console.warn('String.prototype.toRgb is deprecated! It will be removed in Nextcloud 22.')\n\n\treturn toRgb(this)\n}\n\n$.fn.imageplaceholder = function(seed, text, size) {\n\ttext = text || seed\n\n\t// Compute the hash\n\tvar rgb = toRgb(seed)\n\tthis.css('background-color', 'rgb(' + rgb.r + ', ' + rgb.g + ', ' + rgb.b + ')')\n\n\t// Placeholders are square\n\tvar height = this.height() || size || 32\n\tthis.height(height)\n\tthis.width(height)\n\n\t// CSS rules\n\tthis.css('color', '#fff')\n\tthis.css('font-weight', 'normal')\n\tthis.css('text-align', 'center')\n\n\t// calculate the height\n\tthis.css('line-height', height + 'px')\n\tthis.css('font-size', (height * 0.55) + 'px')\n\n\tif (seed !== null && seed.length) {\n\t\tvar placeholderText = text.replace(/\\s+/g, ' ').trim().split(' ', 2).map((word) => word[0].toUpperCase()).join('')\n\t\tthis.html(placeholderText);\n\t}\n}\n\n$.fn.clearimageplaceholder = function() {\n\tthis.css('background-color', '')\n\tthis.css('color', '')\n\tthis.css('font-weight', '')\n\tthis.css('text-align', '')\n\tthis.css('line-height', '')\n\tthis.css('font-size', '')\n\tthis.html('')\n\tthis.removeClass('icon-loading')\n\tthis.removeClass('icon-loading-small')\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport $ from 'jquery'\n\nimport { getToken } from '../OC/requesttoken.js'\n\n$(document).on('ajaxSend', function(elm, xhr, settings) {\n\tif (settings.crossDomain === false) {\n\t\txhr.setRequestHeader('requesttoken', getToken())\n\t\txhr.setRequestHeader('OCS-APIREQUEST', 'true')\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 $ from 'jquery'\n\n/**\n * select a range in an input field\n *\n * @see {@link http://stackoverflow.com/questions/499126/jquery-set-cursor-position-in-text-area}\n * @param {number} start start selection from\n * @param {number} end number of char from start\n * @return {void}\n */\n$.fn.selectRange = function(start, end) {\n\treturn this.each(function() {\n\t\tif (this.setSelectionRange) {\n\t\t\tthis.focus()\n\t\t\tthis.setSelectionRange(start, end)\n\t\t} else if (this.createTextRange) {\n\t\t\tconst range = this.createTextRange()\n\t\t\trange.collapse(true)\n\t\t\trange.moveEnd('character', end)\n\t\t\trange.moveStart('character', start)\n\t\t\trange.select()\n\t\t}\n\t})\n}\n","/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/** @typedef {import('jquery')} jQuery */\nimport $ from 'jquery'\n\n/**\n * @name Show Password\n * @description\n * @version 1.3.0\n * @requires jQuery 1.5\n *\n * @author Jan Jarfalk \n * author-website http://www.unwrongest.com\n *\n * special-thanks Michel Gratton\n *\n * @license MIT\n */\n$.fn.extend({\n\tshowPassword(c) {\n\n\t\t// Setup callback object\n\t\tconst callback = { fn: null, args: {} }\n\t\tcallback.fn = c\n\n\t\t// Clones passwords and turn the clones into text inputs\n\t\tconst cloneElement = function(element) {\n\n\t\t\tconst $element = $(element)\n\n\t\t\tconst $clone = $('')\n\n\t\t\t// Name added for JQuery Validation compatibility\n\t\t\t// Element name is required to avoid script warning.\n\t\t\t$clone.attr({\n\t\t\t\ttype: 'text',\n\t\t\t\tclass: $element.attr('class'),\n\t\t\t\tstyle: $element.attr('style'),\n\t\t\t\tsize: $element.attr('size'),\n\t\t\t\tname: $element.attr('name') + '-clone',\n\t\t\t\ttabindex: $element.attr('tabindex'),\n\t\t\t\tautocomplete: 'off',\n\t\t\t})\n\n\t\t\tif ($element.attr('placeholder') !== undefined) {\n\t\t\t\t$clone.attr('placeholder', $element.attr('placeholder'))\n\t\t\t}\n\n\t\t\treturn $clone\n\n\t\t}\n\n\t\t// Transfers values between two elements\n\t\tconst update = function(a, b) {\n\t\t\tb.val(a.val())\n\t\t}\n\n\t\t// Shows a or b depending on checkbox\n\t\tconst setState = function(checkbox, a, b) {\n\n\t\t\tif (checkbox.is(':checked')) {\n\t\t\t\tupdate(a, b)\n\t\t\t\tb.show()\n\t\t\t\ta.hide()\n\t\t\t} else {\n\t\t\t\tupdate(b, a)\n\t\t\t\tb.hide()\n\t\t\t\ta.show()\n\t\t\t}\n\n\t\t}\n\n\t\treturn this.each(function() {\n\n\t\t\tconst $input = $(this)\n\t\t\tconst $checkbox = $($input.data('typetoggle'))\n\n\t\t\t// Create clone\n\t\t\tconst $clone = cloneElement($input)\n\t\t\t$clone.insertAfter($input)\n\n\t\t\t// Set callback arguments\n\t\t\tif (callback.fn) {\n\t\t\t\tcallback.args.input = $input\n\t\t\t\tcallback.args.checkbox = $checkbox\n\t\t\t\tcallback.args.clone = $clone\n\t\t\t}\n\n\t\t\t$checkbox.bind('click', function() {\n\t\t\t\tsetState($checkbox, $input, $clone)\n\t\t\t})\n\n\t\t\t$input.bind('keyup', function() {\n\t\t\t\tupdate($input, $clone)\n\t\t\t})\n\n\t\t\t$clone.bind('keyup', function() {\n\t\t\t\tupdate($clone, $input)\n\n\t\t\t\t// Added for JQuery Validation compatibility\n\t\t\t\t// This will trigger validation if it's ON for keyup event\n\t\t\t\t$input.trigger('keyup')\n\n\t\t\t})\n\n\t\t\t// Added for JQuery Validation compatibility\n\t\t\t// This will trigger validation if it's ON for blur event\n\t\t\t$clone.bind('blur', function() {\n\t\t\t\t$input.trigger('focusout')\n\t\t\t})\n\n\t\t\tsetState($checkbox, $input, $clone)\n\n\t\t\t// set type of password field clone (type=text) to password right on submit\n\t\t\t// to prevent browser save the value of this field\n\t\t\t$clone.closest('form').submit(function(e) {\n\t\t\t\t// .prop has to be used, because .attr throws\n\t\t\t\t// an error while changing a type of an input\n\t\t\t\t// element\n\t\t\t\t$clone.prop('type', 'password')\n\t\t\t})\n\n\t\t\tif (callback.fn) {\n\t\t\t\tcallback.fn(callback.args)\n\t\t\t}\n\n\t\t})\n\t},\n})\n","/**\n * SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport $ from 'jquery'\n\n// Set autocomplete width the same as the related input\n// See http://stackoverflow.com/a/11845718\n$.ui.autocomplete.prototype._resizeMenu = function() {\n\tconst ul = this.menu.element\n\tul.outerWidth(this.element.outerWidth())\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/sass-loader/dist/cjs.js!./jquery-ui-fixes.scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \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/sass-loader/dist/cjs.js!./jquery-ui-fixes.scss\";\n export default content && content.locals ? content.locals : undefined;\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/sass-loader/dist/cjs.js!./jquery.ocdialog.scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \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/sass-loader/dist/cjs.js!./jquery.ocdialog.scss\";\n export default content && content.locals ? content.locals : undefined;\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport $ from 'jquery'\n\nimport './avatar.js'\nimport './contactsmenu.js'\nimport './exists.js'\nimport './filterattr.js'\nimport './ocdialog.js'\nimport './octemplate.js'\nimport './placeholder.js'\nimport './requesttoken.js'\nimport './selectrange.js'\nimport './showpassword.js'\nimport './ui-fixes.js'\n\nimport './css/jquery-ui-fixes.scss'\nimport './css/jquery.ocdialog.scss'\n\n/**\n * Disable automatic evaluation of responses for $.ajax() functions (and its\n * higher-level alternatives like $.get() and $.post()).\n *\n * If a response to a $.ajax() request returns a content type of \"application/javascript\"\n * JQuery would previously execute the response body. This is a pretty unexpected\n * behaviour and can result in a bypass of our Content-Security-Policy as well as\n * multiple unexpected XSS vectors.\n */\n$.ajaxSetup({\n\tcontents: {\n\t\tscript: false,\n\t},\n})\n\n/**\n * Disable execution of eval in jQuery. We do require an allowed eval CSP\n * configuration at the moment for handlebars et al. But for jQuery there is\n * not much of a reason to execute JavaScript directly via eval.\n *\n * This thus mitigates some unexpected XSS vectors.\n */\n$.globalEval = function() {\n}\n","/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport 'core-js/stable/index.js'\nimport 'regenerator-runtime/runtime.js'\n\n// If you remove the line below, tests won't pass\n// eslint-disable-next-line no-unused-vars\nimport OC from './OC/index.js'\n\nimport './globals.js'\nimport './jquery/index.js'\nimport { initCore } from './init.js'\nimport { registerAppsSlideToggle } from './OC/apps.js'\nimport { getCSPNonce } from '@nextcloud/auth'\nimport { generateUrl } from '@nextcloud/router'\nimport Axios from '@nextcloud/axios'\n\n// eslint-disable-next-line camelcase\n__webpack_nonce__ = getCSPNonce()\n\nwindow.addEventListener('DOMContentLoaded', function() {\n\tinitCore()\n\tregisterAppsSlideToggle()\n\n\t// fallback to hashchange when no history support\n\tif (window.history.pushState) {\n\t\twindow.onpopstate = _.bind(OC.Util.History._onPopState, OC.Util.History)\n\t} else {\n\t\twindow.onhashchange = _.bind(OC.Util.History._onPopState, OC.Util.History)\n\t}\n})\n\n// Fix error \"CSRF check failed\"\ndocument.addEventListener('DOMContentLoaded', function() {\n\tconst form = document.getElementById('password-input-form')\n\tif (form) {\n\t\tform.addEventListener('submit', async function(event) {\n\t\t\tevent.preventDefault()\n\t\t\tconst requestToken = document.getElementById('requesttoken')\n\t\t\tif (requestToken) {\n\t\t\t\tconst url = generateUrl('/csrftoken')\n\t\t\t\tconst resp = await Axios.get(url)\n\t\t\t\trequestToken.value = resp.data.token\n\t\t\t}\n\t\t\tform.submit()\n\t\t})\n\t}\n})\n","// Backbone.js 1.6.0\n\n// (c) 2010-2024 Jeremy Ashkenas and DocumentCloud\n// Backbone may be freely distributed under the MIT license.\n// For all details and documentation:\n// http://backbonejs.org\n\n(function(factory) {\n\n // Establish the root object, `window` (`self`) in the browser, or `global` on the server.\n // We use `self` instead of `window` for `WebWorker` support.\n var root = typeof self == 'object' && self.self === self && self ||\n typeof global == 'object' && global.global === global && global;\n\n // Set up Backbone appropriately for the environment. Start with AMD.\n if (typeof define === 'function' && define.amd) {\n define(['underscore', 'jquery', 'exports'], function(_, $, exports) {\n // Export global even in AMD case in case this script is loaded with\n // others that may still expect a global Backbone.\n root.Backbone = factory(root, exports, _, $);\n });\n\n // Next for Node.js or CommonJS. jQuery may not be needed as a module.\n } else if (typeof exports !== 'undefined') {\n var _ = require('underscore'), $;\n try { $ = require('jquery'); } catch (e) {}\n factory(root, exports, _, $);\n\n // Finally, as a browser global.\n } else {\n root.Backbone = factory(root, {}, root._, root.jQuery || root.Zepto || root.ender || root.$);\n }\n\n})(function(root, Backbone, _, $) {\n\n // Initial Setup\n // -------------\n\n // Save the previous value of the `Backbone` variable, so that it can be\n // restored later on, if `noConflict` is used.\n var previousBackbone = root.Backbone;\n\n // Create a local reference to a common array method we'll want to use later.\n var slice = Array.prototype.slice;\n\n // Current version of the library. Keep in sync with `package.json`.\n Backbone.VERSION = '1.6.0';\n\n // For Backbone's purposes, jQuery, Zepto, Ender, or My Library (kidding) owns\n // the `$` variable.\n Backbone.$ = $;\n\n // Runs Backbone.js in *noConflict* mode, returning the `Backbone` variable\n // to its previous owner. Returns a reference to this Backbone object.\n Backbone.noConflict = function() {\n root.Backbone = previousBackbone;\n return this;\n };\n\n // Turn on `emulateHTTP` to support legacy HTTP servers. Setting this option\n // will fake `\"PATCH\"`, `\"PUT\"` and `\"DELETE\"` requests via the `_method` parameter and\n // set a `X-Http-Method-Override` header.\n Backbone.emulateHTTP = false;\n\n // Turn on `emulateJSON` to support legacy servers that can't deal with direct\n // `application/json` requests ... this will encode the body as\n // `application/x-www-form-urlencoded` instead and will send the model in a\n // form param named `model`.\n Backbone.emulateJSON = false;\n\n // Backbone.Events\n // ---------------\n\n // A module that can be mixed in to *any object* in order to provide it with\n // a custom event channel. You may bind a callback to an event with `on` or\n // remove with `off`; `trigger`-ing an event fires all callbacks in\n // succession.\n //\n // var object = {};\n // _.extend(object, Backbone.Events);\n // object.on('expand', function(){ alert('expanded'); });\n // object.trigger('expand');\n //\n var Events = Backbone.Events = {};\n\n // Regular expression used to split event strings.\n var eventSplitter = /\\s+/;\n\n // A private global variable to share between listeners and listenees.\n var _listening;\n\n // Iterates over the standard `event, callback` (as well as the fancy multiple\n // space-separated events `\"change blur\", callback` and jQuery-style event\n // maps `{event: callback}`).\n var eventsApi = function(iteratee, events, name, callback, opts) {\n var i = 0, names;\n if (name && typeof name === 'object') {\n // Handle event maps.\n if (callback !== void 0 && 'context' in opts && opts.context === void 0) opts.context = callback;\n for (names = _.keys(name); i < names.length ; i++) {\n events = eventsApi(iteratee, events, names[i], name[names[i]], opts);\n }\n } else if (name && eventSplitter.test(name)) {\n // Handle space-separated event names by delegating them individually.\n for (names = name.split(eventSplitter); i < names.length; i++) {\n events = iteratee(events, names[i], callback, opts);\n }\n } else {\n // Finally, standard events.\n events = iteratee(events, name, callback, opts);\n }\n return events;\n };\n\n // Bind an event to a `callback` function. Passing `\"all\"` will bind\n // the callback to all events fired.\n Events.on = function(name, callback, context) {\n this._events = eventsApi(onApi, this._events || {}, name, callback, {\n context: context,\n ctx: this,\n listening: _listening\n });\n\n if (_listening) {\n var listeners = this._listeners || (this._listeners = {});\n listeners[_listening.id] = _listening;\n // Allow the listening to use a counter, instead of tracking\n // callbacks for library interop\n _listening.interop = false;\n }\n\n return this;\n };\n\n // Inversion-of-control versions of `on`. Tell *this* object to listen to\n // an event in another object... keeping track of what it's listening to\n // for easier unbinding later.\n Events.listenTo = function(obj, name, callback) {\n if (!obj) return this;\n var id = obj._listenId || (obj._listenId = _.uniqueId('l'));\n var listeningTo = this._listeningTo || (this._listeningTo = {});\n var listening = _listening = listeningTo[id];\n\n // This object is not listening to any other events on `obj` yet.\n // Setup the necessary references to track the listening callbacks.\n if (!listening) {\n this._listenId || (this._listenId = _.uniqueId('l'));\n listening = _listening = listeningTo[id] = new Listening(this, obj);\n }\n\n // Bind callbacks on obj.\n var error = tryCatchOn(obj, name, callback, this);\n _listening = void 0;\n\n if (error) throw error;\n // If the target obj is not Backbone.Events, track events manually.\n if (listening.interop) listening.on(name, callback);\n\n return this;\n };\n\n // The reducing API that adds a callback to the `events` object.\n var onApi = function(events, name, callback, options) {\n if (callback) {\n var handlers = events[name] || (events[name] = []);\n var context = options.context, ctx = options.ctx, listening = options.listening;\n if (listening) listening.count++;\n\n handlers.push({callback: callback, context: context, ctx: context || ctx, listening: listening});\n }\n return events;\n };\n\n // An try-catch guarded #on function, to prevent poisoning the global\n // `_listening` variable.\n var tryCatchOn = function(obj, name, callback, context) {\n try {\n obj.on(name, callback, context);\n } catch (e) {\n return e;\n }\n };\n\n // Remove one or many callbacks. If `context` is null, removes all\n // callbacks with that function. If `callback` is null, removes all\n // callbacks for the event. If `name` is null, removes all bound\n // callbacks for all events.\n Events.off = function(name, callback, context) {\n if (!this._events) return this;\n this._events = eventsApi(offApi, this._events, name, callback, {\n context: context,\n listeners: this._listeners\n });\n\n return this;\n };\n\n // Tell this object to stop listening to either specific events ... or\n // to every object it's currently listening to.\n Events.stopListening = function(obj, name, callback) {\n var listeningTo = this._listeningTo;\n if (!listeningTo) return this;\n\n var ids = obj ? [obj._listenId] : _.keys(listeningTo);\n for (var i = 0; i < ids.length; i++) {\n var listening = listeningTo[ids[i]];\n\n // If listening doesn't exist, this object is not currently\n // listening to obj. Break out early.\n if (!listening) break;\n\n listening.obj.off(name, callback, this);\n if (listening.interop) listening.off(name, callback);\n }\n if (_.isEmpty(listeningTo)) this._listeningTo = void 0;\n\n return this;\n };\n\n // The reducing API that removes a callback from the `events` object.\n var offApi = function(events, name, callback, options) {\n if (!events) return;\n\n var context = options.context, listeners = options.listeners;\n var i = 0, names;\n\n // Delete all event listeners and \"drop\" events.\n if (!name && !context && !callback) {\n for (names = _.keys(listeners); i < names.length; i++) {\n listeners[names[i]].cleanup();\n }\n return;\n }\n\n names = name ? [name] : _.keys(events);\n for (; i < names.length; i++) {\n name = names[i];\n var handlers = events[name];\n\n // Bail out if there are no events stored.\n if (!handlers) break;\n\n // Find any remaining events.\n var remaining = [];\n for (var j = 0; j < handlers.length; j++) {\n var handler = handlers[j];\n if (\n callback && callback !== handler.callback &&\n callback !== handler.callback._callback ||\n context && context !== handler.context\n ) {\n remaining.push(handler);\n } else {\n var listening = handler.listening;\n if (listening) listening.off(name, callback);\n }\n }\n\n // Replace events if there are any remaining. Otherwise, clean up.\n if (remaining.length) {\n events[name] = remaining;\n } else {\n delete events[name];\n }\n }\n\n return events;\n };\n\n // Bind an event to only be triggered a single time. After the first time\n // the callback is invoked, its listener will be removed. If multiple events\n // are passed in using the space-separated syntax, the handler will fire\n // once for each event, not once for a combination of all events.\n Events.once = function(name, callback, context) {\n // Map the event into a `{event: once}` object.\n var events = eventsApi(onceMap, {}, name, callback, this.off.bind(this));\n if (typeof name === 'string' && context == null) callback = void 0;\n return this.on(events, callback, context);\n };\n\n // Inversion-of-control versions of `once`.\n Events.listenToOnce = function(obj, name, callback) {\n // Map the event into a `{event: once}` object.\n var events = eventsApi(onceMap, {}, name, callback, this.stopListening.bind(this, obj));\n return this.listenTo(obj, events);\n };\n\n // Reduces the event callbacks into a map of `{event: onceWrapper}`.\n // `offer` unbinds the `onceWrapper` after it has been called.\n var onceMap = function(map, name, callback, offer) {\n if (callback) {\n var once = map[name] = _.once(function() {\n offer(name, once);\n callback.apply(this, arguments);\n });\n once._callback = callback;\n }\n return map;\n };\n\n // Trigger one or many events, firing all bound callbacks. Callbacks are\n // passed the same arguments as `trigger` is, apart from the event name\n // (unless you're listening on `\"all\"`, which will cause your callback to\n // receive the true name of the event as the first argument).\n Events.trigger = function(name) {\n if (!this._events) return this;\n\n var length = Math.max(0, arguments.length - 1);\n var args = Array(length);\n for (var i = 0; i < length; i++) args[i] = arguments[i + 1];\n\n eventsApi(triggerApi, this._events, name, void 0, args);\n return this;\n };\n\n // Handles triggering the appropriate event callbacks.\n var triggerApi = function(objEvents, name, callback, args) {\n if (objEvents) {\n var events = objEvents[name];\n var allEvents = objEvents.all;\n if (events && allEvents) allEvents = allEvents.slice();\n if (events) triggerEvents(events, args);\n if (allEvents) triggerEvents(allEvents, [name].concat(args));\n }\n return objEvents;\n };\n\n // A difficult-to-believe, but optimized internal dispatch function for\n // triggering events. Tries to keep the usual cases speedy (most internal\n // Backbone events have 3 arguments).\n var triggerEvents = function(events, args) {\n var ev, i = -1, l = events.length, a1 = args[0], a2 = args[1], a3 = args[2];\n switch (args.length) {\n case 0: while (++i < l) (ev = events[i]).callback.call(ev.ctx); return;\n case 1: while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1); return;\n case 2: while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1, a2); return;\n case 3: while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1, a2, a3); return;\n default: while (++i < l) (ev = events[i]).callback.apply(ev.ctx, args); return;\n }\n };\n\n // A listening class that tracks and cleans up memory bindings\n // when all callbacks have been offed.\n var Listening = function(listener, obj) {\n this.id = listener._listenId;\n this.listener = listener;\n this.obj = obj;\n this.interop = true;\n this.count = 0;\n this._events = void 0;\n };\n\n Listening.prototype.on = Events.on;\n\n // Offs a callback (or several).\n // Uses an optimized counter if the listenee uses Backbone.Events.\n // Otherwise, falls back to manual tracking to support events\n // library interop.\n Listening.prototype.off = function(name, callback) {\n var cleanup;\n if (this.interop) {\n this._events = eventsApi(offApi, this._events, name, callback, {\n context: void 0,\n listeners: void 0\n });\n cleanup = !this._events;\n } else {\n this.count--;\n cleanup = this.count === 0;\n }\n if (cleanup) this.cleanup();\n };\n\n // Cleans up memory bindings between the listener and the listenee.\n Listening.prototype.cleanup = function() {\n delete this.listener._listeningTo[this.obj._listenId];\n if (!this.interop) delete this.obj._listeners[this.id];\n };\n\n // Aliases for backwards compatibility.\n Events.bind = Events.on;\n Events.unbind = Events.off;\n\n // Allow the `Backbone` object to serve as a global event bus, for folks who\n // want global \"pubsub\" in a convenient place.\n _.extend(Backbone, Events);\n\n // Backbone.Model\n // --------------\n\n // Backbone **Models** are the basic data object in the framework --\n // frequently representing a row in a table in a database on your server.\n // A discrete chunk of data and a bunch of useful, related methods for\n // performing computations and transformations on that data.\n\n // Create a new model with the specified attributes. A client id (`cid`)\n // is automatically generated and assigned for you.\n var Model = Backbone.Model = function(attributes, options) {\n var attrs = attributes || {};\n options || (options = {});\n this.preinitialize.apply(this, arguments);\n this.cid = _.uniqueId(this.cidPrefix);\n this.attributes = {};\n if (options.collection) this.collection = options.collection;\n if (options.parse) attrs = this.parse(attrs, options) || {};\n var defaults = _.result(this, 'defaults');\n\n // Just _.defaults would work fine, but the additional _.extends\n // is in there for historical reasons. See #3843.\n attrs = _.defaults(_.extend({}, defaults, attrs), defaults);\n\n this.set(attrs, options);\n this.changed = {};\n this.initialize.apply(this, arguments);\n };\n\n // Attach all inheritable methods to the Model prototype.\n _.extend(Model.prototype, Events, {\n\n // A hash of attributes whose current and previous value differ.\n changed: null,\n\n // The value returned during the last failed validation.\n validationError: null,\n\n // The default name for the JSON `id` attribute is `\"id\"`. MongoDB and\n // CouchDB users may want to set this to `\"_id\"`.\n idAttribute: 'id',\n\n // The prefix is used to create the client id which is used to identify models locally.\n // You may want to override this if you're experiencing name clashes with model ids.\n cidPrefix: 'c',\n\n // preinitialize is an empty function by default. You can override it with a function\n // or object. preinitialize will run before any instantiation logic is run in the Model.\n preinitialize: function(){},\n\n // Initialize is an empty function by default. Override it with your own\n // initialization logic.\n initialize: function(){},\n\n // Return a copy of the model's `attributes` object.\n toJSON: function(options) {\n return _.clone(this.attributes);\n },\n\n // Proxy `Backbone.sync` by default -- but override this if you need\n // custom syncing semantics for *this* particular model.\n sync: function() {\n return Backbone.sync.apply(this, arguments);\n },\n\n // Get the value of an attribute.\n get: function(attr) {\n return this.attributes[attr];\n },\n\n // Get the HTML-escaped value of an attribute.\n escape: function(attr) {\n return _.escape(this.get(attr));\n },\n\n // Returns `true` if the attribute contains a value that is not null\n // or undefined.\n has: function(attr) {\n return this.get(attr) != null;\n },\n\n // Special-cased proxy to underscore's `_.matches` method.\n matches: function(attrs) {\n return !!_.iteratee(attrs, this)(this.attributes);\n },\n\n // Set a hash of model attributes on the object, firing `\"change\"`. This is\n // the core primitive operation of a model, updating the data and notifying\n // anyone who needs to know about the change in state. The heart of the beast.\n set: function(key, val, options) {\n if (key == null) return this;\n\n // Handle both `\"key\", value` and `{key: value}` -style arguments.\n var attrs;\n if (typeof key === 'object') {\n attrs = key;\n options = val;\n } else {\n (attrs = {})[key] = val;\n }\n\n options || (options = {});\n\n // Run validation.\n if (!this._validate(attrs, options)) return false;\n\n // Extract attributes and options.\n var unset = options.unset;\n var silent = options.silent;\n var changes = [];\n var changing = this._changing;\n this._changing = true;\n\n if (!changing) {\n this._previousAttributes = _.clone(this.attributes);\n this.changed = {};\n }\n\n var current = this.attributes;\n var changed = this.changed;\n var prev = this._previousAttributes;\n\n // For each `set` attribute, update or delete the current value.\n for (var attr in attrs) {\n val = attrs[attr];\n if (!_.isEqual(current[attr], val)) changes.push(attr);\n if (!_.isEqual(prev[attr], val)) {\n changed[attr] = val;\n } else {\n delete changed[attr];\n }\n unset ? delete current[attr] : current[attr] = val;\n }\n\n // Update the `id`.\n if (this.idAttribute in attrs) {\n var prevId = this.id;\n this.id = this.get(this.idAttribute);\n this.trigger('changeId', this, prevId, options);\n }\n\n // Trigger all relevant attribute changes.\n if (!silent) {\n if (changes.length) this._pending = options;\n for (var i = 0; i < changes.length; i++) {\n this.trigger('change:' + changes[i], this, current[changes[i]], options);\n }\n }\n\n // You might be wondering why there's a `while` loop here. Changes can\n // be recursively nested within `\"change\"` events.\n if (changing) return this;\n if (!silent) {\n while (this._pending) {\n options = this._pending;\n this._pending = false;\n this.trigger('change', this, options);\n }\n }\n this._pending = false;\n this._changing = false;\n return this;\n },\n\n // Remove an attribute from the model, firing `\"change\"`. `unset` is a noop\n // if the attribute doesn't exist.\n unset: function(attr, options) {\n return this.set(attr, void 0, _.extend({}, options, {unset: true}));\n },\n\n // Clear all attributes on the model, firing `\"change\"`.\n clear: function(options) {\n var attrs = {};\n for (var key in this.attributes) attrs[key] = void 0;\n return this.set(attrs, _.extend({}, options, {unset: true}));\n },\n\n // Determine if the model has changed since the last `\"change\"` event.\n // If you specify an attribute name, determine if that attribute has changed.\n hasChanged: function(attr) {\n if (attr == null) return !_.isEmpty(this.changed);\n return _.has(this.changed, attr);\n },\n\n // Return an object containing all the attributes that have changed, or\n // false if there are no changed attributes. Useful for determining what\n // parts of a view need to be updated and/or what attributes need to be\n // persisted to the server. Unset attributes will be set to undefined.\n // You can also pass an attributes object to diff against the model,\n // determining if there *would be* a change.\n changedAttributes: function(diff) {\n if (!diff) return this.hasChanged() ? _.clone(this.changed) : false;\n var old = this._changing ? this._previousAttributes : this.attributes;\n var changed = {};\n var hasChanged;\n for (var attr in diff) {\n var val = diff[attr];\n if (_.isEqual(old[attr], val)) continue;\n changed[attr] = val;\n hasChanged = true;\n }\n return hasChanged ? changed : false;\n },\n\n // Get the previous value of an attribute, recorded at the time the last\n // `\"change\"` event was fired.\n previous: function(attr) {\n if (attr == null || !this._previousAttributes) return null;\n return this._previousAttributes[attr];\n },\n\n // Get all of the attributes of the model at the time of the previous\n // `\"change\"` event.\n previousAttributes: function() {\n return _.clone(this._previousAttributes);\n },\n\n // Fetch the model from the server, merging the response with the model's\n // local attributes. Any changed attributes will trigger a \"change\" event.\n fetch: function(options) {\n options = _.extend({parse: true}, options);\n var model = this;\n var success = options.success;\n options.success = function(resp) {\n var serverAttrs = options.parse ? model.parse(resp, options) : resp;\n if (!model.set(serverAttrs, options)) return false;\n if (success) success.call(options.context, model, resp, options);\n model.trigger('sync', model, resp, options);\n };\n wrapError(this, options);\n return this.sync('read', this, options);\n },\n\n // Set a hash of model attributes, and sync the model to the server.\n // If the server returns an attributes hash that differs, the model's\n // state will be `set` again.\n save: function(key, val, options) {\n // Handle both `\"key\", value` and `{key: value}` -style arguments.\n var attrs;\n if (key == null || typeof key === 'object') {\n attrs = key;\n options = val;\n } else {\n (attrs = {})[key] = val;\n }\n\n options = _.extend({validate: true, parse: true}, options);\n var wait = options.wait;\n\n // If we're not waiting and attributes exist, save acts as\n // `set(attr).save(null, opts)` with validation. Otherwise, check if\n // the model will be valid when the attributes, if any, are set.\n if (attrs && !wait) {\n if (!this.set(attrs, options)) return false;\n } else if (!this._validate(attrs, options)) {\n return false;\n }\n\n // After a successful server-side save, the client is (optionally)\n // updated with the server-side state.\n var model = this;\n var success = options.success;\n var attributes = this.attributes;\n options.success = function(resp) {\n // Ensure attributes are restored during synchronous saves.\n model.attributes = attributes;\n var serverAttrs = options.parse ? model.parse(resp, options) : resp;\n if (wait) serverAttrs = _.extend({}, attrs, serverAttrs);\n if (serverAttrs && !model.set(serverAttrs, options)) return false;\n if (success) success.call(options.context, model, resp, options);\n model.trigger('sync', model, resp, options);\n };\n wrapError(this, options);\n\n // Set temporary attributes if `{wait: true}` to properly find new ids.\n if (attrs && wait) this.attributes = _.extend({}, attributes, attrs);\n\n var method = this.isNew() ? 'create' : options.patch ? 'patch' : 'update';\n if (method === 'patch' && !options.attrs) options.attrs = attrs;\n var xhr = this.sync(method, this, options);\n\n // Restore attributes.\n this.attributes = attributes;\n\n return xhr;\n },\n\n // Destroy this model on the server if it was already persisted.\n // Optimistically removes the model from its collection, if it has one.\n // If `wait: true` is passed, waits for the server to respond before removal.\n destroy: function(options) {\n options = options ? _.clone(options) : {};\n var model = this;\n var success = options.success;\n var wait = options.wait;\n\n var destroy = function() {\n model.stopListening();\n model.trigger('destroy', model, model.collection, options);\n };\n\n options.success = function(resp) {\n if (wait) destroy();\n if (success) success.call(options.context, model, resp, options);\n if (!model.isNew()) model.trigger('sync', model, resp, options);\n };\n\n var xhr = false;\n if (this.isNew()) {\n _.defer(options.success);\n } else {\n wrapError(this, options);\n xhr = this.sync('delete', this, options);\n }\n if (!wait) destroy();\n return xhr;\n },\n\n // Default URL for the model's representation on the server -- if you're\n // using Backbone's restful methods, override this to change the endpoint\n // that will be called.\n url: function() {\n var base =\n _.result(this, 'urlRoot') ||\n _.result(this.collection, 'url') ||\n urlError();\n if (this.isNew()) return base;\n var id = this.get(this.idAttribute);\n return base.replace(/[^\\/]$/, '$&/') + encodeURIComponent(id);\n },\n\n // **parse** converts a response into the hash of attributes to be `set` on\n // the model. The default implementation is just to pass the response along.\n parse: function(resp, options) {\n return resp;\n },\n\n // Create a new model with identical attributes to this one.\n clone: function() {\n return new this.constructor(this.attributes);\n },\n\n // A model is new if it has never been saved to the server, and lacks an id.\n isNew: function() {\n return !this.has(this.idAttribute);\n },\n\n // Check if the model is currently in a valid state.\n isValid: function(options) {\n return this._validate({}, _.extend({}, options, {validate: true}));\n },\n\n // Run validation against the next complete set of model attributes,\n // returning `true` if all is well. Otherwise, fire an `\"invalid\"` event.\n _validate: function(attrs, options) {\n if (!options.validate || !this.validate) return true;\n attrs = _.extend({}, this.attributes, attrs);\n var error = this.validationError = this.validate(attrs, options) || null;\n if (!error) return true;\n this.trigger('invalid', this, error, _.extend(options, {validationError: error}));\n return false;\n }\n\n });\n\n // Backbone.Collection\n // -------------------\n\n // If models tend to represent a single row of data, a Backbone Collection is\n // more analogous to a table full of data ... or a small slice or page of that\n // table, or a collection of rows that belong together for a particular reason\n // -- all of the messages in this particular folder, all of the documents\n // belonging to this particular author, and so on. Collections maintain\n // indexes of their models, both in order, and for lookup by `id`.\n\n // Create a new **Collection**, perhaps to contain a specific type of `model`.\n // If a `comparator` is specified, the Collection will maintain\n // its models in sort order, as they're added and removed.\n var Collection = Backbone.Collection = function(models, options) {\n options || (options = {});\n this.preinitialize.apply(this, arguments);\n if (options.model) this.model = options.model;\n if (options.comparator !== void 0) this.comparator = options.comparator;\n this._reset();\n this.initialize.apply(this, arguments);\n if (models) this.reset(models, _.extend({silent: true}, options));\n };\n\n // Default options for `Collection#set`.\n var setOptions = {add: true, remove: true, merge: true};\n var addOptions = {add: true, remove: false};\n\n // Splices `insert` into `array` at index `at`.\n var splice = function(array, insert, at) {\n at = Math.min(Math.max(at, 0), array.length);\n var tail = Array(array.length - at);\n var length = insert.length;\n var i;\n for (i = 0; i < tail.length; i++) tail[i] = array[i + at];\n for (i = 0; i < length; i++) array[i + at] = insert[i];\n for (i = 0; i < tail.length; i++) array[i + length + at] = tail[i];\n };\n\n // Define the Collection's inheritable methods.\n _.extend(Collection.prototype, Events, {\n\n // The default model for a collection is just a **Backbone.Model**.\n // This should be overridden in most cases.\n model: Model,\n\n\n // preinitialize is an empty function by default. You can override it with a function\n // or object. preinitialize will run before any instantiation logic is run in the Collection.\n preinitialize: function(){},\n\n // Initialize is an empty function by default. Override it with your own\n // initialization logic.\n initialize: function(){},\n\n // The JSON representation of a Collection is an array of the\n // models' attributes.\n toJSON: function(options) {\n return this.map(function(model) { return model.toJSON(options); });\n },\n\n // Proxy `Backbone.sync` by default.\n sync: function() {\n return Backbone.sync.apply(this, arguments);\n },\n\n // Add a model, or list of models to the set. `models` may be Backbone\n // Models or raw JavaScript objects to be converted to Models, or any\n // combination of the two.\n add: function(models, options) {\n return this.set(models, _.extend({merge: false}, options, addOptions));\n },\n\n // Remove a model, or a list of models from the set.\n remove: function(models, options) {\n options = _.extend({}, options);\n var singular = !_.isArray(models);\n models = singular ? [models] : models.slice();\n var removed = this._removeModels(models, options);\n if (!options.silent && removed.length) {\n options.changes = {added: [], merged: [], removed: removed};\n this.trigger('update', this, options);\n }\n return singular ? removed[0] : removed;\n },\n\n // Update a collection by `set`-ing a new list of models, adding new ones,\n // removing models that are no longer present, and merging models that\n // already exist in the collection, as necessary. Similar to **Model#set**,\n // the core operation for updating the data contained by the collection.\n set: function(models, options) {\n if (models == null) return;\n\n options = _.extend({}, setOptions, options);\n if (options.parse && !this._isModel(models)) {\n models = this.parse(models, options) || [];\n }\n\n var singular = !_.isArray(models);\n models = singular ? [models] : models.slice();\n\n var at = options.at;\n if (at != null) at = +at;\n if (at > this.length) at = this.length;\n if (at < 0) at += this.length + 1;\n\n var set = [];\n var toAdd = [];\n var toMerge = [];\n var toRemove = [];\n var modelMap = {};\n\n var add = options.add;\n var merge = options.merge;\n var remove = options.remove;\n\n var sort = false;\n var sortable = this.comparator && at == null && options.sort !== false;\n var sortAttr = _.isString(this.comparator) ? this.comparator : null;\n\n // Turn bare objects into model references, and prevent invalid models\n // from being added.\n var model, i;\n for (i = 0; i < models.length; i++) {\n model = models[i];\n\n // If a duplicate is found, prevent it from being added and\n // optionally merge it into the existing model.\n var existing = this.get(model);\n if (existing) {\n if (merge && model !== existing) {\n var attrs = this._isModel(model) ? model.attributes : model;\n if (options.parse) attrs = existing.parse(attrs, options);\n existing.set(attrs, options);\n toMerge.push(existing);\n if (sortable && !sort) sort = existing.hasChanged(sortAttr);\n }\n if (!modelMap[existing.cid]) {\n modelMap[existing.cid] = true;\n set.push(existing);\n }\n models[i] = existing;\n\n // If this is a new, valid model, push it to the `toAdd` list.\n } else if (add) {\n model = models[i] = this._prepareModel(model, options);\n if (model) {\n toAdd.push(model);\n this._addReference(model, options);\n modelMap[model.cid] = true;\n set.push(model);\n }\n }\n }\n\n // Remove stale models.\n if (remove) {\n for (i = 0; i < this.length; i++) {\n model = this.models[i];\n if (!modelMap[model.cid]) toRemove.push(model);\n }\n if (toRemove.length) this._removeModels(toRemove, options);\n }\n\n // See if sorting is needed, update `length` and splice in new models.\n var orderChanged = false;\n var replace = !sortable && add && remove;\n if (set.length && replace) {\n orderChanged = this.length !== set.length || _.some(this.models, function(m, index) {\n return m !== set[index];\n });\n this.models.length = 0;\n splice(this.models, set, 0);\n this.length = this.models.length;\n } else if (toAdd.length) {\n if (sortable) sort = true;\n splice(this.models, toAdd, at == null ? this.length : at);\n this.length = this.models.length;\n }\n\n // Silently sort the collection if appropriate.\n if (sort) this.sort({silent: true});\n\n // Unless silenced, it's time to fire all appropriate add/sort/update events.\n if (!options.silent) {\n for (i = 0; i < toAdd.length; i++) {\n if (at != null) options.index = at + i;\n model = toAdd[i];\n model.trigger('add', model, this, options);\n }\n if (sort || orderChanged) this.trigger('sort', this, options);\n if (toAdd.length || toRemove.length || toMerge.length) {\n options.changes = {\n added: toAdd,\n removed: toRemove,\n merged: toMerge\n };\n this.trigger('update', this, options);\n }\n }\n\n // Return the added (or merged) model (or models).\n return singular ? models[0] : models;\n },\n\n // When you have more items than you want to add or remove individually,\n // you can reset the entire set with a new list of models, without firing\n // any granular `add` or `remove` events. Fires `reset` when finished.\n // Useful for bulk operations and optimizations.\n reset: function(models, options) {\n options = options ? _.clone(options) : {};\n for (var i = 0; i < this.models.length; i++) {\n this._removeReference(this.models[i], options);\n }\n options.previousModels = this.models;\n this._reset();\n models = this.add(models, _.extend({silent: true}, options));\n if (!options.silent) this.trigger('reset', this, options);\n return models;\n },\n\n // Add a model to the end of the collection.\n push: function(model, options) {\n return this.add(model, _.extend({at: this.length}, options));\n },\n\n // Remove a model from the end of the collection.\n pop: function(options) {\n var model = this.at(this.length - 1);\n return this.remove(model, options);\n },\n\n // Add a model to the beginning of the collection.\n unshift: function(model, options) {\n return this.add(model, _.extend({at: 0}, options));\n },\n\n // Remove a model from the beginning of the collection.\n shift: function(options) {\n var model = this.at(0);\n return this.remove(model, options);\n },\n\n // Slice out a sub-array of models from the collection.\n slice: function() {\n return slice.apply(this.models, arguments);\n },\n\n // Get a model from the set by id, cid, model object with id or cid\n // properties, or an attributes object that is transformed through modelId.\n get: function(obj) {\n if (obj == null) return void 0;\n return this._byId[obj] ||\n this._byId[this.modelId(this._isModel(obj) ? obj.attributes : obj, obj.idAttribute)] ||\n obj.cid && this._byId[obj.cid];\n },\n\n // Returns `true` if the model is in the collection.\n has: function(obj) {\n return this.get(obj) != null;\n },\n\n // Get the model at the given index.\n at: function(index) {\n if (index < 0) index += this.length;\n return this.models[index];\n },\n\n // Return models with matching attributes. Useful for simple cases of\n // `filter`.\n where: function(attrs, first) {\n return this[first ? 'find' : 'filter'](attrs);\n },\n\n // Return the first model with matching attributes. Useful for simple cases\n // of `find`.\n findWhere: function(attrs) {\n return this.where(attrs, true);\n },\n\n // Force the collection to re-sort itself. You don't need to call this under\n // normal circumstances, as the set will maintain sort order as each item\n // is added.\n sort: function(options) {\n var comparator = this.comparator;\n if (!comparator) throw new Error('Cannot sort a set without a comparator');\n options || (options = {});\n\n var length = comparator.length;\n if (_.isFunction(comparator)) comparator = comparator.bind(this);\n\n // Run sort based on type of `comparator`.\n if (length === 1 || _.isString(comparator)) {\n this.models = this.sortBy(comparator);\n } else {\n this.models.sort(comparator);\n }\n if (!options.silent) this.trigger('sort', this, options);\n return this;\n },\n\n // Pluck an attribute from each model in the collection.\n pluck: function(attr) {\n return this.map(attr + '');\n },\n\n // Fetch the default set of models for this collection, resetting the\n // collection when they arrive. If `reset: true` is passed, the response\n // data will be passed through the `reset` method instead of `set`.\n fetch: function(options) {\n options = _.extend({parse: true}, options);\n var success = options.success;\n var collection = this;\n options.success = function(resp) {\n var method = options.reset ? 'reset' : 'set';\n collection[method](resp, options);\n if (success) success.call(options.context, collection, resp, options);\n collection.trigger('sync', collection, resp, options);\n };\n wrapError(this, options);\n return this.sync('read', this, options);\n },\n\n // Create a new instance of a model in this collection. Add the model to the\n // collection immediately, unless `wait: true` is passed, in which case we\n // wait for the server to agree.\n create: function(model, options) {\n options = options ? _.clone(options) : {};\n var wait = options.wait;\n model = this._prepareModel(model, options);\n if (!model) return false;\n if (!wait) this.add(model, options);\n var collection = this;\n var success = options.success;\n options.success = function(m, resp, callbackOpts) {\n if (wait) {\n m.off('error', collection._forwardPristineError, collection);\n collection.add(m, callbackOpts);\n }\n if (success) success.call(callbackOpts.context, m, resp, callbackOpts);\n };\n // In case of wait:true, our collection is not listening to any\n // of the model's events yet, so it will not forward the error\n // event. In this special case, we need to listen for it\n // separately and handle the event just once.\n // (The reason we don't need to do this for the sync event is\n // in the success handler above: we add the model first, which\n // causes the collection to listen, and then invoke the callback\n // that triggers the event.)\n if (wait) {\n model.once('error', this._forwardPristineError, this);\n }\n model.save(null, options);\n return model;\n },\n\n // **parse** converts a response into a list of models to be added to the\n // collection. The default implementation is just to pass it through.\n parse: function(resp, options) {\n return resp;\n },\n\n // Create a new collection with an identical list of models as this one.\n clone: function() {\n return new this.constructor(this.models, {\n model: this.model,\n comparator: this.comparator\n });\n },\n\n // Define how to uniquely identify models in the collection.\n modelId: function(attrs, idAttribute) {\n return attrs[idAttribute || this.model.prototype.idAttribute || 'id'];\n },\n\n // Get an iterator of all models in this collection.\n values: function() {\n return new CollectionIterator(this, ITERATOR_VALUES);\n },\n\n // Get an iterator of all model IDs in this collection.\n keys: function() {\n return new CollectionIterator(this, ITERATOR_KEYS);\n },\n\n // Get an iterator of all [ID, model] tuples in this collection.\n entries: function() {\n return new CollectionIterator(this, ITERATOR_KEYSVALUES);\n },\n\n // Private method to reset all internal state. Called when the collection\n // is first initialized or reset.\n _reset: function() {\n this.length = 0;\n this.models = [];\n this._byId = {};\n },\n\n // Prepare a hash of attributes (or other model) to be added to this\n // collection.\n _prepareModel: function(attrs, options) {\n if (this._isModel(attrs)) {\n if (!attrs.collection) attrs.collection = this;\n return attrs;\n }\n options = options ? _.clone(options) : {};\n options.collection = this;\n\n var model;\n if (this.model.prototype) {\n model = new this.model(attrs, options);\n } else {\n // ES class methods didn't have prototype\n model = this.model(attrs, options);\n }\n\n if (!model.validationError) return model;\n this.trigger('invalid', this, model.validationError, options);\n return false;\n },\n\n // Internal method called by both remove and set.\n _removeModels: function(models, options) {\n var removed = [];\n for (var i = 0; i < models.length; i++) {\n var model = this.get(models[i]);\n if (!model) continue;\n\n var index = this.indexOf(model);\n this.models.splice(index, 1);\n this.length--;\n\n // Remove references before triggering 'remove' event to prevent an\n // infinite loop. #3693\n delete this._byId[model.cid];\n var id = this.modelId(model.attributes, model.idAttribute);\n if (id != null) delete this._byId[id];\n\n if (!options.silent) {\n options.index = index;\n model.trigger('remove', model, this, options);\n }\n\n removed.push(model);\n this._removeReference(model, options);\n }\n if (models.length > 0 && !options.silent) delete options.index;\n return removed;\n },\n\n // Method for checking whether an object should be considered a model for\n // the purposes of adding to the collection.\n _isModel: function(model) {\n return model instanceof Model;\n },\n\n // Internal method to create a model's ties to a collection.\n _addReference: function(model, options) {\n this._byId[model.cid] = model;\n var id = this.modelId(model.attributes, model.idAttribute);\n if (id != null) this._byId[id] = model;\n model.on('all', this._onModelEvent, this);\n },\n\n // Internal method to sever a model's ties to a collection.\n _removeReference: function(model, options) {\n delete this._byId[model.cid];\n var id = this.modelId(model.attributes, model.idAttribute);\n if (id != null) delete this._byId[id];\n if (this === model.collection) delete model.collection;\n model.off('all', this._onModelEvent, this);\n },\n\n // Internal method called every time a model in the set fires an event.\n // Sets need to update their indexes when models change ids. All other\n // events simply proxy through. \"add\" and \"remove\" events that originate\n // in other collections are ignored.\n _onModelEvent: function(event, model, collection, options) {\n if (model) {\n if ((event === 'add' || event === 'remove') && collection !== this) return;\n if (event === 'destroy') this.remove(model, options);\n if (event === 'changeId') {\n var prevId = this.modelId(model.previousAttributes(), model.idAttribute);\n var id = this.modelId(model.attributes, model.idAttribute);\n if (prevId != null) delete this._byId[prevId];\n if (id != null) this._byId[id] = model;\n }\n }\n this.trigger.apply(this, arguments);\n },\n\n // Internal callback method used in `create`. It serves as a\n // stand-in for the `_onModelEvent` method, which is not yet bound\n // during the `wait` period of the `create` call. We still want to\n // forward any `'error'` event at the end of the `wait` period,\n // hence a customized callback.\n _forwardPristineError: function(model, collection, options) {\n // Prevent double forward if the model was already in the\n // collection before the call to `create`.\n if (this.has(model)) return;\n this._onModelEvent('error', model, collection, options);\n }\n });\n\n // Defining an @@iterator method implements JavaScript's Iterable protocol.\n // In modern ES2015 browsers, this value is found at Symbol.iterator.\n /* global Symbol */\n var $$iterator = typeof Symbol === 'function' && Symbol.iterator;\n if ($$iterator) {\n Collection.prototype[$$iterator] = Collection.prototype.values;\n }\n\n // CollectionIterator\n // ------------------\n\n // A CollectionIterator implements JavaScript's Iterator protocol, allowing the\n // use of `for of` loops in modern browsers and interoperation between\n // Backbone.Collection and other JavaScript functions and third-party libraries\n // which can operate on Iterables.\n var CollectionIterator = function(collection, kind) {\n this._collection = collection;\n this._kind = kind;\n this._index = 0;\n };\n\n // This \"enum\" defines the three possible kinds of values which can be emitted\n // by a CollectionIterator that correspond to the values(), keys() and entries()\n // methods on Collection, respectively.\n var ITERATOR_VALUES = 1;\n var ITERATOR_KEYS = 2;\n var ITERATOR_KEYSVALUES = 3;\n\n // All Iterators should themselves be Iterable.\n if ($$iterator) {\n CollectionIterator.prototype[$$iterator] = function() {\n return this;\n };\n }\n\n CollectionIterator.prototype.next = function() {\n if (this._collection) {\n\n // Only continue iterating if the iterated collection is long enough.\n if (this._index < this._collection.length) {\n var model = this._collection.at(this._index);\n this._index++;\n\n // Construct a value depending on what kind of values should be iterated.\n var value;\n if (this._kind === ITERATOR_VALUES) {\n value = model;\n } else {\n var id = this._collection.modelId(model.attributes, model.idAttribute);\n if (this._kind === ITERATOR_KEYS) {\n value = id;\n } else { // ITERATOR_KEYSVALUES\n value = [id, model];\n }\n }\n return {value: value, done: false};\n }\n\n // Once exhausted, remove the reference to the collection so future\n // calls to the next method always return done.\n this._collection = void 0;\n }\n\n return {value: void 0, done: true};\n };\n\n // Backbone.View\n // -------------\n\n // Backbone Views are almost more convention than they are actual code. A View\n // is simply a JavaScript object that represents a logical chunk of UI in the\n // DOM. This might be a single item, an entire list, a sidebar or panel, or\n // even the surrounding frame which wraps your whole app. Defining a chunk of\n // UI as a **View** allows you to define your DOM events declaratively, without\n // having to worry about render order ... and makes it easy for the view to\n // react to specific changes in the state of your models.\n\n // Creating a Backbone.View creates its initial element outside of the DOM,\n // if an existing element is not provided...\n var View = Backbone.View = function(options) {\n this.cid = _.uniqueId('view');\n this.preinitialize.apply(this, arguments);\n _.extend(this, _.pick(options, viewOptions));\n this._ensureElement();\n this.initialize.apply(this, arguments);\n };\n\n // Cached regex to split keys for `delegate`.\n var delegateEventSplitter = /^(\\S+)\\s*(.*)$/;\n\n // List of view options to be set as properties.\n var viewOptions = ['model', 'collection', 'el', 'id', 'attributes', 'className', 'tagName', 'events'];\n\n // Set up all inheritable **Backbone.View** properties and methods.\n _.extend(View.prototype, Events, {\n\n // The default `tagName` of a View's element is `\"div\"`.\n tagName: 'div',\n\n // jQuery delegate for element lookup, scoped to DOM elements within the\n // current view. This should be preferred to global lookups where possible.\n $: function(selector) {\n return this.$el.find(selector);\n },\n\n // preinitialize is an empty function by default. You can override it with a function\n // or object. preinitialize will run before any instantiation logic is run in the View\n preinitialize: function(){},\n\n // Initialize is an empty function by default. Override it with your own\n // initialization logic.\n initialize: function(){},\n\n // **render** is the core function that your view should override, in order\n // to populate its element (`this.el`), with the appropriate HTML. The\n // convention is for **render** to always return `this`.\n render: function() {\n return this;\n },\n\n // Remove this view by taking the element out of the DOM, and removing any\n // applicable Backbone.Events listeners.\n remove: function() {\n this._removeElement();\n this.stopListening();\n return this;\n },\n\n // Remove this view's element from the document and all event listeners\n // attached to it. Exposed for subclasses using an alternative DOM\n // manipulation API.\n _removeElement: function() {\n this.$el.remove();\n },\n\n // Change the view's element (`this.el` property) and re-delegate the\n // view's events on the new element.\n setElement: function(element) {\n this.undelegateEvents();\n this._setElement(element);\n this.delegateEvents();\n return this;\n },\n\n // Creates the `this.el` and `this.$el` references for this view using the\n // given `el`. `el` can be a CSS selector or an HTML string, a jQuery\n // context or an element. Subclasses can override this to utilize an\n // alternative DOM manipulation API and are only required to set the\n // `this.el` property.\n _setElement: function(el) {\n this.$el = el instanceof Backbone.$ ? el : Backbone.$(el);\n this.el = this.$el[0];\n },\n\n // Set callbacks, where `this.events` is a hash of\n //\n // *{\"event selector\": \"callback\"}*\n //\n // {\n // 'mousedown .title': 'edit',\n // 'click .button': 'save',\n // 'click .open': function(e) { ... }\n // }\n //\n // pairs. Callbacks will be bound to the view, with `this` set properly.\n // Uses event delegation for efficiency.\n // Omitting the selector binds the event to `this.el`.\n delegateEvents: function(events) {\n events || (events = _.result(this, 'events'));\n if (!events) return this;\n this.undelegateEvents();\n for (var key in events) {\n var method = events[key];\n if (!_.isFunction(method)) method = this[method];\n if (!method) continue;\n var match = key.match(delegateEventSplitter);\n this.delegate(match[1], match[2], method.bind(this));\n }\n return this;\n },\n\n // Add a single event listener to the view's element (or a child element\n // using `selector`). This only works for delegate-able events: not `focus`,\n // `blur`, and not `change`, `submit`, and `reset` in Internet Explorer.\n delegate: function(eventName, selector, listener) {\n this.$el.on(eventName + '.delegateEvents' + this.cid, selector, listener);\n return this;\n },\n\n // Clears all callbacks previously bound to the view by `delegateEvents`.\n // You usually don't need to use this, but may wish to if you have multiple\n // Backbone views attached to the same DOM element.\n undelegateEvents: function() {\n if (this.$el) this.$el.off('.delegateEvents' + this.cid);\n return this;\n },\n\n // A finer-grained `undelegateEvents` for removing a single delegated event.\n // `selector` and `listener` are both optional.\n undelegate: function(eventName, selector, listener) {\n this.$el.off(eventName + '.delegateEvents' + this.cid, selector, listener);\n return this;\n },\n\n // Produces a DOM element to be assigned to your view. Exposed for\n // subclasses using an alternative DOM manipulation API.\n _createElement: function(tagName) {\n return document.createElement(tagName);\n },\n\n // Ensure that the View has a DOM element to render into.\n // If `this.el` is a string, pass it through `$()`, take the first\n // matching element, and re-assign it to `el`. Otherwise, create\n // an element from the `id`, `className` and `tagName` properties.\n _ensureElement: function() {\n if (!this.el) {\n var attrs = _.extend({}, _.result(this, 'attributes'));\n if (this.id) attrs.id = _.result(this, 'id');\n if (this.className) attrs['class'] = _.result(this, 'className');\n this.setElement(this._createElement(_.result(this, 'tagName')));\n this._setAttributes(attrs);\n } else {\n this.setElement(_.result(this, 'el'));\n }\n },\n\n // Set attributes from a hash on this view's element. Exposed for\n // subclasses using an alternative DOM manipulation API.\n _setAttributes: function(attributes) {\n this.$el.attr(attributes);\n }\n\n });\n\n // Proxy Backbone class methods to Underscore functions, wrapping the model's\n // `attributes` object or collection's `models` array behind the scenes.\n //\n // collection.filter(function(model) { return model.get('age') > 10 });\n // collection.each(this.addView);\n //\n // `Function#apply` can be slow so we use the method's arg count, if we know it.\n var addMethod = function(base, length, method, attribute) {\n switch (length) {\n case 1: return function() {\n return base[method](this[attribute]);\n };\n case 2: return function(value) {\n return base[method](this[attribute], value);\n };\n case 3: return function(iteratee, context) {\n return base[method](this[attribute], cb(iteratee, this), context);\n };\n case 4: return function(iteratee, defaultVal, context) {\n return base[method](this[attribute], cb(iteratee, this), defaultVal, context);\n };\n default: return function() {\n var args = slice.call(arguments);\n args.unshift(this[attribute]);\n return base[method].apply(base, args);\n };\n }\n };\n\n var addUnderscoreMethods = function(Class, base, methods, attribute) {\n _.each(methods, function(length, method) {\n if (base[method]) Class.prototype[method] = addMethod(base, length, method, attribute);\n });\n };\n\n // Support `collection.sortBy('attr')` and `collection.findWhere({id: 1})`.\n var cb = function(iteratee, instance) {\n if (_.isFunction(iteratee)) return iteratee;\n if (_.isObject(iteratee) && !instance._isModel(iteratee)) return modelMatcher(iteratee);\n if (_.isString(iteratee)) return function(model) { return model.get(iteratee); };\n return iteratee;\n };\n var modelMatcher = function(attrs) {\n var matcher = _.matches(attrs);\n return function(model) {\n return matcher(model.attributes);\n };\n };\n\n // Underscore methods that we want to implement on the Collection.\n // 90% of the core usefulness of Backbone Collections is actually implemented\n // right here:\n var collectionMethods = {forEach: 3, each: 3, map: 3, collect: 3, reduce: 0,\n foldl: 0, inject: 0, reduceRight: 0, foldr: 0, find: 3, detect: 3, filter: 3,\n select: 3, reject: 3, every: 3, all: 3, some: 3, any: 3, include: 3, includes: 3,\n contains: 3, invoke: 0, max: 3, min: 3, toArray: 1, size: 1, first: 3,\n head: 3, take: 3, initial: 3, rest: 3, tail: 3, drop: 3, last: 3,\n without: 0, difference: 0, indexOf: 3, shuffle: 1, lastIndexOf: 3,\n isEmpty: 1, chain: 1, sample: 3, partition: 3, groupBy: 3, countBy: 3,\n sortBy: 3, indexBy: 3, findIndex: 3, findLastIndex: 3};\n\n\n // Underscore methods that we want to implement on the Model, mapped to the\n // number of arguments they take.\n var modelMethods = {keys: 1, values: 1, pairs: 1, invert: 1, pick: 0,\n omit: 0, chain: 1, isEmpty: 1};\n\n // Mix in each Underscore method as a proxy to `Collection#models`.\n\n _.each([\n [Collection, collectionMethods, 'models'],\n [Model, modelMethods, 'attributes']\n ], function(config) {\n var Base = config[0],\n methods = config[1],\n attribute = config[2];\n\n Base.mixin = function(obj) {\n var mappings = _.reduce(_.functions(obj), function(memo, name) {\n memo[name] = 0;\n return memo;\n }, {});\n addUnderscoreMethods(Base, obj, mappings, attribute);\n };\n\n addUnderscoreMethods(Base, _, methods, attribute);\n });\n\n // Backbone.sync\n // -------------\n\n // Override this function to change the manner in which Backbone persists\n // models to the server. You will be passed the type of request, and the\n // model in question. By default, makes a RESTful Ajax request\n // to the model's `url()`. Some possible customizations could be:\n //\n // * Use `setTimeout` to batch rapid-fire updates into a single request.\n // * Send up the models as XML instead of JSON.\n // * Persist models via WebSockets instead of Ajax.\n //\n // Turn on `Backbone.emulateHTTP` in order to send `PUT` and `DELETE` requests\n // as `POST`, with a `_method` parameter containing the true HTTP method,\n // as well as all requests with the body as `application/x-www-form-urlencoded`\n // instead of `application/json` with the model in a param named `model`.\n // Useful when interfacing with server-side languages like **PHP** that make\n // it difficult to read the body of `PUT` requests.\n Backbone.sync = function(method, model, options) {\n var type = methodMap[method];\n\n // Default options, unless specified.\n _.defaults(options || (options = {}), {\n emulateHTTP: Backbone.emulateHTTP,\n emulateJSON: Backbone.emulateJSON\n });\n\n // Default JSON-request options.\n var params = {type: type, dataType: 'json'};\n\n // Ensure that we have a URL.\n if (!options.url) {\n params.url = _.result(model, 'url') || urlError();\n }\n\n // Ensure that we have the appropriate request data.\n if (options.data == null && model && (method === 'create' || method === 'update' || method === 'patch')) {\n params.contentType = 'application/json';\n params.data = JSON.stringify(options.attrs || model.toJSON(options));\n }\n\n // For older servers, emulate JSON by encoding the request into an HTML-form.\n if (options.emulateJSON) {\n params.contentType = 'application/x-www-form-urlencoded';\n params.data = params.data ? {model: params.data} : {};\n }\n\n // For older servers, emulate HTTP by mimicking the HTTP method with `_method`\n // And an `X-HTTP-Method-Override` header.\n if (options.emulateHTTP && (type === 'PUT' || type === 'DELETE' || type === 'PATCH')) {\n params.type = 'POST';\n if (options.emulateJSON) params.data._method = type;\n var beforeSend = options.beforeSend;\n options.beforeSend = function(xhr) {\n xhr.setRequestHeader('X-HTTP-Method-Override', type);\n if (beforeSend) return beforeSend.apply(this, arguments);\n };\n }\n\n // Don't process data on a non-GET request.\n if (params.type !== 'GET' && !options.emulateJSON) {\n params.processData = false;\n }\n\n // Pass along `textStatus` and `errorThrown` from jQuery.\n var error = options.error;\n options.error = function(xhr, textStatus, errorThrown) {\n options.textStatus = textStatus;\n options.errorThrown = errorThrown;\n if (error) error.call(options.context, xhr, textStatus, errorThrown);\n };\n\n // Make the request, allowing the user to override any Ajax options.\n var xhr = options.xhr = Backbone.ajax(_.extend(params, options));\n model.trigger('request', model, xhr, options);\n return xhr;\n };\n\n // Map from CRUD to HTTP for our default `Backbone.sync` implementation.\n var methodMap = {\n 'create': 'POST',\n 'update': 'PUT',\n 'patch': 'PATCH',\n 'delete': 'DELETE',\n 'read': 'GET'\n };\n\n // Set the default implementation of `Backbone.ajax` to proxy through to `$`.\n // Override this if you'd like to use a different library.\n Backbone.ajax = function() {\n return Backbone.$.ajax.apply(Backbone.$, arguments);\n };\n\n // Backbone.Router\n // ---------------\n\n // Routers map faux-URLs to actions, and fire events when routes are\n // matched. Creating a new one sets its `routes` hash, if not set statically.\n var Router = Backbone.Router = function(options) {\n options || (options = {});\n this.preinitialize.apply(this, arguments);\n if (options.routes) this.routes = options.routes;\n this._bindRoutes();\n this.initialize.apply(this, arguments);\n };\n\n // Cached regular expressions for matching named param parts and splatted\n // parts of route strings.\n var optionalParam = /\\((.*?)\\)/g;\n var namedParam = /(\\(\\?)?:\\w+/g;\n var splatParam = /\\*\\w+/g;\n var escapeRegExp = /[\\-{}\\[\\]+?.,\\\\\\^$|#\\s]/g;\n\n // Set up all inheritable **Backbone.Router** properties and methods.\n _.extend(Router.prototype, Events, {\n\n // preinitialize is an empty function by default. You can override it with a function\n // or object. preinitialize will run before any instantiation logic is run in the Router.\n preinitialize: function(){},\n\n // Initialize is an empty function by default. Override it with your own\n // initialization logic.\n initialize: function(){},\n\n // Manually bind a single named route to a callback. For example:\n //\n // this.route('search/:query/p:num', 'search', function(query, num) {\n // ...\n // });\n //\n route: function(route, name, callback) {\n if (!_.isRegExp(route)) route = this._routeToRegExp(route);\n if (_.isFunction(name)) {\n callback = name;\n name = '';\n }\n if (!callback) callback = this[name];\n var router = this;\n Backbone.history.route(route, function(fragment) {\n var args = router._extractParameters(route, fragment);\n if (router.execute(callback, args, name) !== false) {\n router.trigger.apply(router, ['route:' + name].concat(args));\n router.trigger('route', name, args);\n Backbone.history.trigger('route', router, name, args);\n }\n });\n return this;\n },\n\n // Execute a route handler with the provided parameters. This is an\n // excellent place to do pre-route setup or post-route cleanup.\n execute: function(callback, args, name) {\n if (callback) callback.apply(this, args);\n },\n\n // Simple proxy to `Backbone.history` to save a fragment into the history.\n navigate: function(fragment, options) {\n Backbone.history.navigate(fragment, options);\n return this;\n },\n\n // Bind all defined routes to `Backbone.history`. We have to reverse the\n // order of the routes here to support behavior where the most general\n // routes can be defined at the bottom of the route map.\n _bindRoutes: function() {\n if (!this.routes) return;\n this.routes = _.result(this, 'routes');\n var route, routes = _.keys(this.routes);\n while ((route = routes.pop()) != null) {\n this.route(route, this.routes[route]);\n }\n },\n\n // Convert a route string into a regular expression, suitable for matching\n // against the current location hash.\n _routeToRegExp: function(route) {\n route = route.replace(escapeRegExp, '\\\\$&')\n .replace(optionalParam, '(?:$1)?')\n .replace(namedParam, function(match, optional) {\n return optional ? match : '([^/?]+)';\n })\n .replace(splatParam, '([^?]*?)');\n return new RegExp('^' + route + '(?:\\\\?([\\\\s\\\\S]*))?$');\n },\n\n // Given a route, and a URL fragment that it matches, return the array of\n // extracted decoded parameters. Empty or unmatched parameters will be\n // treated as `null` to normalize cross-browser behavior.\n _extractParameters: function(route, fragment) {\n var params = route.exec(fragment).slice(1);\n return _.map(params, function(param, i) {\n // Don't decode the search params.\n if (i === params.length - 1) return param || null;\n return param ? decodeURIComponent(param) : null;\n });\n }\n\n });\n\n // Backbone.History\n // ----------------\n\n // Handles cross-browser history management, based on either\n // [pushState](http://diveintohtml5.info/history.html) and real URLs, or\n // [onhashchange](https://developer.mozilla.org/en-US/docs/DOM/window.onhashchange)\n // and URL fragments. If the browser supports neither (old IE, natch),\n // falls back to polling.\n var History = Backbone.History = function() {\n this.handlers = [];\n this.checkUrl = this.checkUrl.bind(this);\n\n // Ensure that `History` can be used outside of the browser.\n if (typeof window !== 'undefined') {\n this.location = window.location;\n this.history = window.history;\n }\n };\n\n // Cached regex for stripping a leading hash/slash and trailing space.\n var routeStripper = /^[#\\/]|\\s+$/g;\n\n // Cached regex for stripping leading and trailing slashes.\n var rootStripper = /^\\/+|\\/+$/g;\n\n // Cached regex for stripping urls of hash.\n var pathStripper = /#.*$/;\n\n // Has the history handling already been started?\n History.started = false;\n\n // Set up all inheritable **Backbone.History** properties and methods.\n _.extend(History.prototype, Events, {\n\n // The default interval to poll for hash changes, if necessary, is\n // twenty times a second.\n interval: 50,\n\n // Are we at the app root?\n atRoot: function() {\n var path = this.location.pathname.replace(/[^\\/]$/, '$&/');\n return path === this.root && !this.getSearch();\n },\n\n // Does the pathname match the root?\n matchRoot: function() {\n var path = this.decodeFragment(this.location.pathname);\n var rootPath = path.slice(0, this.root.length - 1) + '/';\n return rootPath === this.root;\n },\n\n // Unicode characters in `location.pathname` are percent encoded so they're\n // decoded for comparison. `%25` should not be decoded since it may be part\n // of an encoded parameter.\n decodeFragment: function(fragment) {\n return decodeURI(fragment.replace(/%25/g, '%2525'));\n },\n\n // In IE6, the hash fragment and search params are incorrect if the\n // fragment contains `?`.\n getSearch: function() {\n var match = this.location.href.replace(/#.*/, '').match(/\\?.+/);\n return match ? match[0] : '';\n },\n\n // Gets the true hash value. Cannot use location.hash directly due to bug\n // in Firefox where location.hash will always be decoded.\n getHash: function(window) {\n var match = (window || this).location.href.match(/#(.*)$/);\n return match ? match[1] : '';\n },\n\n // Get the pathname and search params, without the root.\n getPath: function() {\n var path = this.decodeFragment(\n this.location.pathname + this.getSearch()\n ).slice(this.root.length - 1);\n return path.charAt(0) === '/' ? path.slice(1) : path;\n },\n\n // Get the cross-browser normalized URL fragment from the path or hash.\n getFragment: function(fragment) {\n if (fragment == null) {\n if (this._usePushState || !this._wantsHashChange) {\n fragment = this.getPath();\n } else {\n fragment = this.getHash();\n }\n }\n return fragment.replace(routeStripper, '');\n },\n\n // Start the hash change handling, returning `true` if the current URL matches\n // an existing route, and `false` otherwise.\n start: function(options) {\n if (History.started) throw new Error('Backbone.history has already been started');\n History.started = true;\n\n // Figure out the initial configuration. Do we need an iframe?\n // Is pushState desired ... is it available?\n this.options = _.extend({root: '/'}, this.options, options);\n this.root = this.options.root;\n this._trailingSlash = this.options.trailingSlash;\n this._wantsHashChange = this.options.hashChange !== false;\n this._hasHashChange = 'onhashchange' in window && (document.documentMode === void 0 || document.documentMode > 7);\n this._useHashChange = this._wantsHashChange && this._hasHashChange;\n this._wantsPushState = !!this.options.pushState;\n this._hasPushState = !!(this.history && this.history.pushState);\n this._usePushState = this._wantsPushState && this._hasPushState;\n this.fragment = this.getFragment();\n\n // Normalize root to always include a leading and trailing slash.\n this.root = ('/' + this.root + '/').replace(rootStripper, '/');\n\n // Transition from hashChange to pushState or vice versa if both are\n // requested.\n if (this._wantsHashChange && this._wantsPushState) {\n\n // If we've started off with a route from a `pushState`-enabled\n // browser, but we're currently in a browser that doesn't support it...\n if (!this._hasPushState && !this.atRoot()) {\n var rootPath = this.root.slice(0, -1) || '/';\n this.location.replace(rootPath + '#' + this.getPath());\n // Return immediately as browser will do redirect to new url\n return true;\n\n // Or if we've started out with a hash-based route, but we're currently\n // in a browser where it could be `pushState`-based instead...\n } else if (this._hasPushState && this.atRoot()) {\n this.navigate(this.getHash(), {replace: true});\n }\n\n }\n\n // Proxy an iframe to handle location events if the browser doesn't\n // support the `hashchange` event, HTML5 history, or the user wants\n // `hashChange` but not `pushState`.\n if (!this._hasHashChange && this._wantsHashChange && !this._usePushState) {\n this.iframe = document.createElement('iframe');\n this.iframe.src = 'javascript:0';\n this.iframe.style.display = 'none';\n this.iframe.tabIndex = -1;\n var body = document.body;\n // Using `appendChild` will throw on IE < 9 if the document is not ready.\n var iWindow = body.insertBefore(this.iframe, body.firstChild).contentWindow;\n iWindow.document.open();\n iWindow.document.close();\n iWindow.location.hash = '#' + this.fragment;\n }\n\n // Add a cross-platform `addEventListener` shim for older browsers.\n var addEventListener = window.addEventListener || function(eventName, listener) {\n return attachEvent('on' + eventName, listener);\n };\n\n // Depending on whether we're using pushState or hashes, and whether\n // 'onhashchange' is supported, determine how we check the URL state.\n if (this._usePushState) {\n addEventListener('popstate', this.checkUrl, false);\n } else if (this._useHashChange && !this.iframe) {\n addEventListener('hashchange', this.checkUrl, false);\n } else if (this._wantsHashChange) {\n this._checkUrlInterval = setInterval(this.checkUrl, this.interval);\n }\n\n if (!this.options.silent) return this.loadUrl();\n },\n\n // Disable Backbone.history, perhaps temporarily. Not useful in a real app,\n // but possibly useful for unit testing Routers.\n stop: function() {\n // Add a cross-platform `removeEventListener` shim for older browsers.\n var removeEventListener = window.removeEventListener || function(eventName, listener) {\n return detachEvent('on' + eventName, listener);\n };\n\n // Remove window listeners.\n if (this._usePushState) {\n removeEventListener('popstate', this.checkUrl, false);\n } else if (this._useHashChange && !this.iframe) {\n removeEventListener('hashchange', this.checkUrl, false);\n }\n\n // Clean up the iframe if necessary.\n if (this.iframe) {\n document.body.removeChild(this.iframe);\n this.iframe = null;\n }\n\n // Some environments will throw when clearing an undefined interval.\n if (this._checkUrlInterval) clearInterval(this._checkUrlInterval);\n History.started = false;\n },\n\n // Add a route to be tested when the fragment changes. Routes added later\n // may override previous routes.\n route: function(route, callback) {\n this.handlers.unshift({route: route, callback: callback});\n },\n\n // Checks the current URL to see if it has changed, and if it has,\n // calls `loadUrl`, normalizing across the hidden iframe.\n checkUrl: function(e) {\n var current = this.getFragment();\n\n // If the user pressed the back button, the iframe's hash will have\n // changed and we should use that for comparison.\n if (current === this.fragment && this.iframe) {\n current = this.getHash(this.iframe.contentWindow);\n }\n\n if (current === this.fragment) {\n if (!this.matchRoot()) return this.notfound();\n return false;\n }\n if (this.iframe) this.navigate(current);\n this.loadUrl();\n },\n\n // Attempt to load the current URL fragment. If a route succeeds with a\n // match, returns `true`. If no defined routes matches the fragment,\n // returns `false`.\n loadUrl: function(fragment) {\n // If the root doesn't match, no routes can match either.\n if (!this.matchRoot()) return this.notfound();\n fragment = this.fragment = this.getFragment(fragment);\n return _.some(this.handlers, function(handler) {\n if (handler.route.test(fragment)) {\n handler.callback(fragment);\n return true;\n }\n }) || this.notfound();\n },\n\n // When no route could be matched, this method is called internally to\n // trigger the `'notfound'` event. It returns `false` so that it can be used\n // in tail position.\n notfound: function() {\n this.trigger('notfound');\n return false;\n },\n\n // Save a fragment into the hash history, or replace the URL state if the\n // 'replace' option is passed. You are responsible for properly URL-encoding\n // the fragment in advance.\n //\n // The options object can contain `trigger: true` if you wish to have the\n // route callback be fired (not usually desirable), or `replace: true`, if\n // you wish to modify the current URL without adding an entry to the history.\n navigate: function(fragment, options) {\n if (!History.started) return false;\n if (!options || options === true) options = {trigger: !!options};\n\n // Normalize the fragment.\n fragment = this.getFragment(fragment || '');\n\n // Strip trailing slash on the root unless _trailingSlash is true\n var rootPath = this.root;\n if (!this._trailingSlash && (fragment === '' || fragment.charAt(0) === '?')) {\n rootPath = rootPath.slice(0, -1) || '/';\n }\n var url = rootPath + fragment;\n\n // Strip the fragment of the query and hash for matching.\n fragment = fragment.replace(pathStripper, '');\n\n // Decode for matching.\n var decodedFragment = this.decodeFragment(fragment);\n\n if (this.fragment === decodedFragment) return;\n this.fragment = decodedFragment;\n\n // If pushState is available, we use it to set the fragment as a real URL.\n if (this._usePushState) {\n this.history[options.replace ? 'replaceState' : 'pushState']({}, document.title, url);\n\n // If hash changes haven't been explicitly disabled, update the hash\n // fragment to store history.\n } else if (this._wantsHashChange) {\n this._updateHash(this.location, fragment, options.replace);\n if (this.iframe && fragment !== this.getHash(this.iframe.contentWindow)) {\n var iWindow = this.iframe.contentWindow;\n\n // Opening and closing the iframe tricks IE7 and earlier to push a\n // history entry on hash-tag change. When replace is true, we don't\n // want this.\n if (!options.replace) {\n iWindow.document.open();\n iWindow.document.close();\n }\n\n this._updateHash(iWindow.location, fragment, options.replace);\n }\n\n // If you've told us that you explicitly don't want fallback hashchange-\n // based history, then `navigate` becomes a page refresh.\n } else {\n return this.location.assign(url);\n }\n if (options.trigger) return this.loadUrl(fragment);\n },\n\n // Update the hash location, either replacing the current entry, or adding\n // a new one to the browser history.\n _updateHash: function(location, fragment, replace) {\n if (replace) {\n var href = location.href.replace(/(javascript:|#).*$/, '');\n location.replace(href + '#' + fragment);\n } else {\n // Some browsers require that `hash` contains a leading #.\n location.hash = '#' + fragment;\n }\n }\n\n });\n\n // Create the default Backbone.history.\n Backbone.history = new History;\n\n // Helpers\n // -------\n\n // Helper function to correctly set up the prototype chain for subclasses.\n // Similar to `goog.inherits`, but uses a hash of prototype properties and\n // class properties to be extended.\n var extend = function(protoProps, staticProps) {\n var parent = this;\n var child;\n\n // The constructor function for the new subclass is either defined by you\n // (the \"constructor\" property in your `extend` definition), or defaulted\n // by us to simply call the parent constructor.\n if (protoProps && _.has(protoProps, 'constructor')) {\n child = protoProps.constructor;\n } else {\n child = function(){ return parent.apply(this, arguments); };\n }\n\n // Add static properties to the constructor function, if supplied.\n _.extend(child, parent, staticProps);\n\n // Set the prototype chain to inherit from `parent`, without calling\n // `parent`'s constructor function and add the prototype properties.\n child.prototype = _.create(parent.prototype, protoProps);\n child.prototype.constructor = child;\n\n // Set a convenience property in case the parent's prototype is needed\n // later.\n child.__super__ = parent.prototype;\n\n return child;\n };\n\n // Set up inheritance for the model, collection, router, view and history.\n Model.extend = Collection.extend = Router.extend = View.extend = History.extend = extend;\n\n // Throw an error when a URL is needed, and none is supplied.\n var urlError = function() {\n throw new Error('A \"url\" property or function must be specified');\n };\n\n // Wrap an optional error callback with a fallback error event.\n var wrapError = function(model, options) {\n var error = options.error;\n options.error = function(resp) {\n if (error) error.call(options.context, model, resp, options);\n model.trigger('error', model, resp, options);\n };\n };\n\n // Provide useful information when things go wrong. This method is not meant\n // to be used directly; it merely provides the necessary introspection for the\n // external `debugInfo` function.\n Backbone._debug = function() {\n return {root: root, _: _};\n };\n\n return Backbone;\n});\n","/*\n * JavaScript MD5\n * https://github.com/blueimp/JavaScript-MD5\n *\n * Copyright 2011, Sebastian Tschan\n * https://blueimp.net\n *\n * Licensed under the MIT license:\n * https://opensource.org/licenses/MIT\n *\n * Based on\n * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message\n * Digest Algorithm, as defined in RFC 1321.\n * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for more info.\n */\n\n/* global define */\n\n/* eslint-disable strict */\n\n;(function ($) {\n 'use strict'\n\n /**\n * Add integers, wrapping at 2^32.\n * This uses 16-bit operations internally to work around bugs in interpreters.\n *\n * @param {number} x First integer\n * @param {number} y Second integer\n * @returns {number} Sum\n */\n function safeAdd(x, y) {\n var lsw = (x & 0xffff) + (y & 0xffff)\n var msw = (x >> 16) + (y >> 16) + (lsw >> 16)\n return (msw << 16) | (lsw & 0xffff)\n }\n\n /**\n * Bitwise rotate a 32-bit number to the left.\n *\n * @param {number} num 32-bit number\n * @param {number} cnt Rotation count\n * @returns {number} Rotated number\n */\n function bitRotateLeft(num, cnt) {\n return (num << cnt) | (num >>> (32 - cnt))\n }\n\n /**\n * Basic operation the algorithm uses.\n *\n * @param {number} q q\n * @param {number} a a\n * @param {number} b b\n * @param {number} x x\n * @param {number} s s\n * @param {number} t t\n * @returns {number} Result\n */\n function md5cmn(q, a, b, x, s, t) {\n return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b)\n }\n /**\n * Basic operation the algorithm uses.\n *\n * @param {number} a a\n * @param {number} b b\n * @param {number} c c\n * @param {number} d d\n * @param {number} x x\n * @param {number} s s\n * @param {number} t t\n * @returns {number} Result\n */\n function md5ff(a, b, c, d, x, s, t) {\n return md5cmn((b & c) | (~b & d), a, b, x, s, t)\n }\n /**\n * Basic operation the algorithm uses.\n *\n * @param {number} a a\n * @param {number} b b\n * @param {number} c c\n * @param {number} d d\n * @param {number} x x\n * @param {number} s s\n * @param {number} t t\n * @returns {number} Result\n */\n function md5gg(a, b, c, d, x, s, t) {\n return md5cmn((b & d) | (c & ~d), a, b, x, s, t)\n }\n /**\n * Basic operation the algorithm uses.\n *\n * @param {number} a a\n * @param {number} b b\n * @param {number} c c\n * @param {number} d d\n * @param {number} x x\n * @param {number} s s\n * @param {number} t t\n * @returns {number} Result\n */\n function md5hh(a, b, c, d, x, s, t) {\n return md5cmn(b ^ c ^ d, a, b, x, s, t)\n }\n /**\n * Basic operation the algorithm uses.\n *\n * @param {number} a a\n * @param {number} b b\n * @param {number} c c\n * @param {number} d d\n * @param {number} x x\n * @param {number} s s\n * @param {number} t t\n * @returns {number} Result\n */\n function md5ii(a, b, c, d, x, s, t) {\n return md5cmn(c ^ (b | ~d), a, b, x, s, t)\n }\n\n /**\n * Calculate the MD5 of an array of little-endian words, and a bit length.\n *\n * @param {Array} x Array of little-endian words\n * @param {number} len Bit length\n * @returns {Array} MD5 Array\n */\n function binlMD5(x, len) {\n /* append padding */\n x[len >> 5] |= 0x80 << len % 32\n x[(((len + 64) >>> 9) << 4) + 14] = len\n\n var i\n var olda\n var oldb\n var oldc\n var oldd\n var a = 1732584193\n var b = -271733879\n var c = -1732584194\n var d = 271733878\n\n for (i = 0; i < x.length; i += 16) {\n olda = a\n oldb = b\n oldc = c\n oldd = d\n\n a = md5ff(a, b, c, d, x[i], 7, -680876936)\n d = md5ff(d, a, b, c, x[i + 1], 12, -389564586)\n c = md5ff(c, d, a, b, x[i + 2], 17, 606105819)\n b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330)\n a = md5ff(a, b, c, d, x[i + 4], 7, -176418897)\n d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426)\n c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341)\n b = md5ff(b, c, d, a, x[i + 7], 22, -45705983)\n a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416)\n d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417)\n c = md5ff(c, d, a, b, x[i + 10], 17, -42063)\n b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162)\n a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682)\n d = md5ff(d, a, b, c, x[i + 13], 12, -40341101)\n c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290)\n b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329)\n\n a = md5gg(a, b, c, d, x[i + 1], 5, -165796510)\n d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632)\n c = md5gg(c, d, a, b, x[i + 11], 14, 643717713)\n b = md5gg(b, c, d, a, x[i], 20, -373897302)\n a = md5gg(a, b, c, d, x[i + 5], 5, -701558691)\n d = md5gg(d, a, b, c, x[i + 10], 9, 38016083)\n c = md5gg(c, d, a, b, x[i + 15], 14, -660478335)\n b = md5gg(b, c, d, a, x[i + 4], 20, -405537848)\n a = md5gg(a, b, c, d, x[i + 9], 5, 568446438)\n d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690)\n c = md5gg(c, d, a, b, x[i + 3], 14, -187363961)\n b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501)\n a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467)\n d = md5gg(d, a, b, c, x[i + 2], 9, -51403784)\n c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473)\n b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734)\n\n a = md5hh(a, b, c, d, x[i + 5], 4, -378558)\n d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463)\n c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562)\n b = md5hh(b, c, d, a, x[i + 14], 23, -35309556)\n a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060)\n d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353)\n c = md5hh(c, d, a, b, x[i + 7], 16, -155497632)\n b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640)\n a = md5hh(a, b, c, d, x[i + 13], 4, 681279174)\n d = md5hh(d, a, b, c, x[i], 11, -358537222)\n c = md5hh(c, d, a, b, x[i + 3], 16, -722521979)\n b = md5hh(b, c, d, a, x[i + 6], 23, 76029189)\n a = md5hh(a, b, c, d, x[i + 9], 4, -640364487)\n d = md5hh(d, a, b, c, x[i + 12], 11, -421815835)\n c = md5hh(c, d, a, b, x[i + 15], 16, 530742520)\n b = md5hh(b, c, d, a, x[i + 2], 23, -995338651)\n\n a = md5ii(a, b, c, d, x[i], 6, -198630844)\n d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415)\n c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905)\n b = md5ii(b, c, d, a, x[i + 5], 21, -57434055)\n a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571)\n d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606)\n c = md5ii(c, d, a, b, x[i + 10], 15, -1051523)\n b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799)\n a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359)\n d = md5ii(d, a, b, c, x[i + 15], 10, -30611744)\n c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380)\n b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649)\n a = md5ii(a, b, c, d, x[i + 4], 6, -145523070)\n d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379)\n c = md5ii(c, d, a, b, x[i + 2], 15, 718787259)\n b = md5ii(b, c, d, a, x[i + 9], 21, -343485551)\n\n a = safeAdd(a, olda)\n b = safeAdd(b, oldb)\n c = safeAdd(c, oldc)\n d = safeAdd(d, oldd)\n }\n return [a, b, c, d]\n }\n\n /**\n * Convert an array of little-endian words to a string\n *\n * @param {Array} input MD5 Array\n * @returns {string} MD5 string\n */\n function binl2rstr(input) {\n var i\n var output = ''\n var length32 = input.length * 32\n for (i = 0; i < length32; i += 8) {\n output += String.fromCharCode((input[i >> 5] >>> i % 32) & 0xff)\n }\n return output\n }\n\n /**\n * Convert a raw string to an array of little-endian words\n * Characters >255 have their high-byte silently ignored.\n *\n * @param {string} input Raw input string\n * @returns {Array} Array of little-endian words\n */\n function rstr2binl(input) {\n var i\n var output = []\n output[(input.length >> 2) - 1] = undefined\n for (i = 0; i < output.length; i += 1) {\n output[i] = 0\n }\n var length8 = input.length * 8\n for (i = 0; i < length8; i += 8) {\n output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << i % 32\n }\n return output\n }\n\n /**\n * Calculate the MD5 of a raw string\n *\n * @param {string} s Input string\n * @returns {string} Raw MD5 string\n */\n function rstrMD5(s) {\n return binl2rstr(binlMD5(rstr2binl(s), s.length * 8))\n }\n\n /**\n * Calculates the HMAC-MD5 of a key and some data (raw strings)\n *\n * @param {string} key HMAC key\n * @param {string} data Raw input string\n * @returns {string} Raw MD5 string\n */\n function rstrHMACMD5(key, data) {\n var i\n var bkey = rstr2binl(key)\n var ipad = []\n var opad = []\n var hash\n ipad[15] = opad[15] = undefined\n if (bkey.length > 16) {\n bkey = binlMD5(bkey, key.length * 8)\n }\n for (i = 0; i < 16; i += 1) {\n ipad[i] = bkey[i] ^ 0x36363636\n opad[i] = bkey[i] ^ 0x5c5c5c5c\n }\n hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8)\n return binl2rstr(binlMD5(opad.concat(hash), 512 + 128))\n }\n\n /**\n * Convert a raw string to a hex string\n *\n * @param {string} input Raw input string\n * @returns {string} Hex encoded string\n */\n function rstr2hex(input) {\n var hexTab = '0123456789abcdef'\n var output = ''\n var x\n var i\n for (i = 0; i < input.length; i += 1) {\n x = input.charCodeAt(i)\n output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f)\n }\n return output\n }\n\n /**\n * Encode a string as UTF-8\n *\n * @param {string} input Input string\n * @returns {string} UTF8 string\n */\n function str2rstrUTF8(input) {\n return unescape(encodeURIComponent(input))\n }\n\n /**\n * Encodes input string as raw MD5 string\n *\n * @param {string} s Input string\n * @returns {string} Raw MD5 string\n */\n function rawMD5(s) {\n return rstrMD5(str2rstrUTF8(s))\n }\n /**\n * Encodes input string as Hex encoded string\n *\n * @param {string} s Input string\n * @returns {string} Hex encoded string\n */\n function hexMD5(s) {\n return rstr2hex(rawMD5(s))\n }\n /**\n * Calculates the raw HMAC-MD5 for the given key and data\n *\n * @param {string} k HMAC key\n * @param {string} d Input string\n * @returns {string} Raw MD5 string\n */\n function rawHMACMD5(k, d) {\n return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d))\n }\n /**\n * Calculates the Hex encoded HMAC-MD5 for the given key and data\n *\n * @param {string} k HMAC key\n * @param {string} d Input string\n * @returns {string} Raw MD5 string\n */\n function hexHMACMD5(k, d) {\n return rstr2hex(rawHMACMD5(k, d))\n }\n\n /**\n * Calculates MD5 value for a given string.\n * If a key is provided, calculates the HMAC-MD5 value.\n * Returns a Hex encoded string unless the raw argument is given.\n *\n * @param {string} string Input string\n * @param {string} [key] HMAC key\n * @param {boolean} [raw] Raw output switch\n * @returns {string} MD5 output\n */\n function md5(string, key, raw) {\n if (!key) {\n if (!raw) {\n return hexMD5(string)\n }\n return rawMD5(string)\n }\n if (!raw) {\n return hexHMACMD5(key, string)\n }\n return rawHMACMD5(key, string)\n }\n\n if (typeof define === 'function' && define.amd) {\n define(function () {\n return md5\n })\n } else if (typeof module === 'object' && module.exports) {\n module.exports = md5\n } else {\n $.md5 = md5\n }\n})(this)\n","/*!\n * clipboard.js v2.0.11\n * https://clipboardjs.com/\n *\n * Licensed MIT © Zeno Rocha\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ClipboardJS\"] = factory();\n\telse\n\t\troot[\"ClipboardJS\"] = factory();\n})(this, function() {\nreturn /******/ (function() { // webpackBootstrap\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ 686:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n \"default\": function() { return /* binding */ clipboard; }\n});\n\n// EXTERNAL MODULE: ./node_modules/tiny-emitter/index.js\nvar tiny_emitter = __webpack_require__(279);\nvar tiny_emitter_default = /*#__PURE__*/__webpack_require__.n(tiny_emitter);\n// EXTERNAL MODULE: ./node_modules/good-listener/src/listen.js\nvar listen = __webpack_require__(370);\nvar listen_default = /*#__PURE__*/__webpack_require__.n(listen);\n// EXTERNAL MODULE: ./node_modules/select/src/select.js\nvar src_select = __webpack_require__(817);\nvar select_default = /*#__PURE__*/__webpack_require__.n(src_select);\n;// CONCATENATED MODULE: ./src/common/command.js\n/**\n * Executes a given operation type.\n * @param {String} type\n * @return {Boolean}\n */\nfunction command(type) {\n try {\n return document.execCommand(type);\n } catch (err) {\n return false;\n }\n}\n;// CONCATENATED MODULE: ./src/actions/cut.js\n\n\n/**\n * Cut action wrapper.\n * @param {String|HTMLElement} target\n * @return {String}\n */\n\nvar ClipboardActionCut = function ClipboardActionCut(target) {\n var selectedText = select_default()(target);\n command('cut');\n return selectedText;\n};\n\n/* harmony default export */ var actions_cut = (ClipboardActionCut);\n;// CONCATENATED MODULE: ./src/common/create-fake-element.js\n/**\n * Creates a fake textarea element with a value.\n * @param {String} value\n * @return {HTMLElement}\n */\nfunction createFakeElement(value) {\n var isRTL = document.documentElement.getAttribute('dir') === 'rtl';\n var fakeElement = document.createElement('textarea'); // Prevent zooming on iOS\n\n fakeElement.style.fontSize = '12pt'; // Reset box model\n\n fakeElement.style.border = '0';\n fakeElement.style.padding = '0';\n fakeElement.style.margin = '0'; // Move element out of screen horizontally\n\n fakeElement.style.position = 'absolute';\n fakeElement.style[isRTL ? 'right' : 'left'] = '-9999px'; // Move element to the same position vertically\n\n var yPosition = window.pageYOffset || document.documentElement.scrollTop;\n fakeElement.style.top = \"\".concat(yPosition, \"px\");\n fakeElement.setAttribute('readonly', '');\n fakeElement.value = value;\n return fakeElement;\n}\n;// CONCATENATED MODULE: ./src/actions/copy.js\n\n\n\n/**\n * Create fake copy action wrapper using a fake element.\n * @param {String} target\n * @param {Object} options\n * @return {String}\n */\n\nvar fakeCopyAction = function fakeCopyAction(value, options) {\n var fakeElement = createFakeElement(value);\n options.container.appendChild(fakeElement);\n var selectedText = select_default()(fakeElement);\n command('copy');\n fakeElement.remove();\n return selectedText;\n};\n/**\n * Copy action wrapper.\n * @param {String|HTMLElement} target\n * @param {Object} options\n * @return {String}\n */\n\n\nvar ClipboardActionCopy = function ClipboardActionCopy(target) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n container: document.body\n };\n var selectedText = '';\n\n if (typeof target === 'string') {\n selectedText = fakeCopyAction(target, options);\n } else if (target instanceof HTMLInputElement && !['text', 'search', 'url', 'tel', 'password'].includes(target === null || target === void 0 ? void 0 : target.type)) {\n // If input type doesn't support `setSelectionRange`. Simulate it. https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setSelectionRange\n selectedText = fakeCopyAction(target.value, options);\n } else {\n selectedText = select_default()(target);\n command('copy');\n }\n\n return selectedText;\n};\n\n/* harmony default export */ var actions_copy = (ClipboardActionCopy);\n;// CONCATENATED MODULE: ./src/actions/default.js\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n\n\n/**\n * Inner function which performs selection from either `text` or `target`\n * properties and then executes copy or cut operations.\n * @param {Object} options\n */\n\nvar ClipboardActionDefault = function ClipboardActionDefault() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n // Defines base properties passed from constructor.\n var _options$action = options.action,\n action = _options$action === void 0 ? 'copy' : _options$action,\n container = options.container,\n target = options.target,\n text = options.text; // Sets the `action` to be performed which can be either 'copy' or 'cut'.\n\n if (action !== 'copy' && action !== 'cut') {\n throw new Error('Invalid \"action\" value, use either \"copy\" or \"cut\"');\n } // Sets the `target` property using an element that will be have its content copied.\n\n\n if (target !== undefined) {\n if (target && _typeof(target) === 'object' && target.nodeType === 1) {\n if (action === 'copy' && target.hasAttribute('disabled')) {\n throw new Error('Invalid \"target\" attribute. Please use \"readonly\" instead of \"disabled\" attribute');\n }\n\n if (action === 'cut' && (target.hasAttribute('readonly') || target.hasAttribute('disabled'))) {\n throw new Error('Invalid \"target\" attribute. You can\\'t cut text from elements with \"readonly\" or \"disabled\" attributes');\n }\n } else {\n throw new Error('Invalid \"target\" value, use a valid Element');\n }\n } // Define selection strategy based on `text` property.\n\n\n if (text) {\n return actions_copy(text, {\n container: container\n });\n } // Defines which selection strategy based on `target` property.\n\n\n if (target) {\n return action === 'cut' ? actions_cut(target) : actions_copy(target, {\n container: container\n });\n }\n};\n\n/* harmony default export */ var actions_default = (ClipboardActionDefault);\n;// CONCATENATED MODULE: ./src/clipboard.js\nfunction clipboard_typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { clipboard_typeof = function _typeof(obj) { return typeof obj; }; } else { clipboard_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return clipboard_typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (clipboard_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n\n\n\n\n\n/**\n * Helper function to retrieve attribute value.\n * @param {String} suffix\n * @param {Element} element\n */\n\nfunction getAttributeValue(suffix, element) {\n var attribute = \"data-clipboard-\".concat(suffix);\n\n if (!element.hasAttribute(attribute)) {\n return;\n }\n\n return element.getAttribute(attribute);\n}\n/**\n * Base class which takes one or more elements, adds event listeners to them,\n * and instantiates a new `ClipboardAction` on each click.\n */\n\n\nvar Clipboard = /*#__PURE__*/function (_Emitter) {\n _inherits(Clipboard, _Emitter);\n\n var _super = _createSuper(Clipboard);\n\n /**\n * @param {String|HTMLElement|HTMLCollection|NodeList} trigger\n * @param {Object} options\n */\n function Clipboard(trigger, options) {\n var _this;\n\n _classCallCheck(this, Clipboard);\n\n _this = _super.call(this);\n\n _this.resolveOptions(options);\n\n _this.listenClick(trigger);\n\n return _this;\n }\n /**\n * Defines if attributes would be resolved using internal setter functions\n * or custom functions that were passed in the constructor.\n * @param {Object} options\n */\n\n\n _createClass(Clipboard, [{\n key: \"resolveOptions\",\n value: function resolveOptions() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this.action = typeof options.action === 'function' ? options.action : this.defaultAction;\n this.target = typeof options.target === 'function' ? options.target : this.defaultTarget;\n this.text = typeof options.text === 'function' ? options.text : this.defaultText;\n this.container = clipboard_typeof(options.container) === 'object' ? options.container : document.body;\n }\n /**\n * Adds a click event listener to the passed trigger.\n * @param {String|HTMLElement|HTMLCollection|NodeList} trigger\n */\n\n }, {\n key: \"listenClick\",\n value: function listenClick(trigger) {\n var _this2 = this;\n\n this.listener = listen_default()(trigger, 'click', function (e) {\n return _this2.onClick(e);\n });\n }\n /**\n * Defines a new `ClipboardAction` on each click event.\n * @param {Event} e\n */\n\n }, {\n key: \"onClick\",\n value: function onClick(e) {\n var trigger = e.delegateTarget || e.currentTarget;\n var action = this.action(trigger) || 'copy';\n var text = actions_default({\n action: action,\n container: this.container,\n target: this.target(trigger),\n text: this.text(trigger)\n }); // Fires an event based on the copy operation result.\n\n this.emit(text ? 'success' : 'error', {\n action: action,\n text: text,\n trigger: trigger,\n clearSelection: function clearSelection() {\n if (trigger) {\n trigger.focus();\n }\n\n window.getSelection().removeAllRanges();\n }\n });\n }\n /**\n * Default `action` lookup function.\n * @param {Element} trigger\n */\n\n }, {\n key: \"defaultAction\",\n value: function defaultAction(trigger) {\n return getAttributeValue('action', trigger);\n }\n /**\n * Default `target` lookup function.\n * @param {Element} trigger\n */\n\n }, {\n key: \"defaultTarget\",\n value: function defaultTarget(trigger) {\n var selector = getAttributeValue('target', trigger);\n\n if (selector) {\n return document.querySelector(selector);\n }\n }\n /**\n * Allow fire programmatically a copy action\n * @param {String|HTMLElement} target\n * @param {Object} options\n * @returns Text copied.\n */\n\n }, {\n key: \"defaultText\",\n\n /**\n * Default `text` lookup function.\n * @param {Element} trigger\n */\n value: function defaultText(trigger) {\n return getAttributeValue('text', trigger);\n }\n /**\n * Destroy lifecycle.\n */\n\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.listener.destroy();\n }\n }], [{\n key: \"copy\",\n value: function copy(target) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n container: document.body\n };\n return actions_copy(target, options);\n }\n /**\n * Allow fire programmatically a cut action\n * @param {String|HTMLElement} target\n * @returns Text cutted.\n */\n\n }, {\n key: \"cut\",\n value: function cut(target) {\n return actions_cut(target);\n }\n /**\n * Returns the support of the given action, or all actions if no action is\n * given.\n * @param {String} [action]\n */\n\n }, {\n key: \"isSupported\",\n value: function isSupported() {\n var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['copy', 'cut'];\n var actions = typeof action === 'string' ? [action] : action;\n var support = !!document.queryCommandSupported;\n actions.forEach(function (action) {\n support = support && !!document.queryCommandSupported(action);\n });\n return support;\n }\n }]);\n\n return Clipboard;\n}((tiny_emitter_default()));\n\n/* harmony default export */ var clipboard = (Clipboard);\n\n/***/ }),\n\n/***/ 828:\n/***/ (function(module) {\n\nvar DOCUMENT_NODE_TYPE = 9;\n\n/**\n * A polyfill for Element.matches()\n */\nif (typeof Element !== 'undefined' && !Element.prototype.matches) {\n var proto = Element.prototype;\n\n proto.matches = proto.matchesSelector ||\n proto.mozMatchesSelector ||\n proto.msMatchesSelector ||\n proto.oMatchesSelector ||\n proto.webkitMatchesSelector;\n}\n\n/**\n * Finds the closest parent that matches a selector.\n *\n * @param {Element} element\n * @param {String} selector\n * @return {Function}\n */\nfunction closest (element, selector) {\n while (element && element.nodeType !== DOCUMENT_NODE_TYPE) {\n if (typeof element.matches === 'function' &&\n element.matches(selector)) {\n return element;\n }\n element = element.parentNode;\n }\n}\n\nmodule.exports = closest;\n\n\n/***/ }),\n\n/***/ 438:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar closest = __webpack_require__(828);\n\n/**\n * Delegates event to a selector.\n *\n * @param {Element} element\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @param {Boolean} useCapture\n * @return {Object}\n */\nfunction _delegate(element, selector, type, callback, useCapture) {\n var listenerFn = listener.apply(this, arguments);\n\n element.addEventListener(type, listenerFn, useCapture);\n\n return {\n destroy: function() {\n element.removeEventListener(type, listenerFn, useCapture);\n }\n }\n}\n\n/**\n * Delegates event to a selector.\n *\n * @param {Element|String|Array} [elements]\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @param {Boolean} useCapture\n * @return {Object}\n */\nfunction delegate(elements, selector, type, callback, useCapture) {\n // Handle the regular Element usage\n if (typeof elements.addEventListener === 'function') {\n return _delegate.apply(null, arguments);\n }\n\n // Handle Element-less usage, it defaults to global delegation\n if (typeof type === 'function') {\n // Use `document` as the first parameter, then apply arguments\n // This is a short way to .unshift `arguments` without running into deoptimizations\n return _delegate.bind(null, document).apply(null, arguments);\n }\n\n // Handle Selector-based usage\n if (typeof elements === 'string') {\n elements = document.querySelectorAll(elements);\n }\n\n // Handle Array-like based usage\n return Array.prototype.map.call(elements, function (element) {\n return _delegate(element, selector, type, callback, useCapture);\n });\n}\n\n/**\n * Finds closest match and invokes callback.\n *\n * @param {Element} element\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @return {Function}\n */\nfunction listener(element, selector, type, callback) {\n return function(e) {\n e.delegateTarget = closest(e.target, selector);\n\n if (e.delegateTarget) {\n callback.call(element, e);\n }\n }\n}\n\nmodule.exports = delegate;\n\n\n/***/ }),\n\n/***/ 879:\n/***/ (function(__unused_webpack_module, exports) {\n\n/**\n * Check if argument is a HTML element.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.node = function(value) {\n return value !== undefined\n && value instanceof HTMLElement\n && value.nodeType === 1;\n};\n\n/**\n * Check if argument is a list of HTML elements.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.nodeList = function(value) {\n var type = Object.prototype.toString.call(value);\n\n return value !== undefined\n && (type === '[object NodeList]' || type === '[object HTMLCollection]')\n && ('length' in value)\n && (value.length === 0 || exports.node(value[0]));\n};\n\n/**\n * Check if argument is a string.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.string = function(value) {\n return typeof value === 'string'\n || value instanceof String;\n};\n\n/**\n * Check if argument is a function.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.fn = function(value) {\n var type = Object.prototype.toString.call(value);\n\n return type === '[object Function]';\n};\n\n\n/***/ }),\n\n/***/ 370:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar is = __webpack_require__(879);\nvar delegate = __webpack_require__(438);\n\n/**\n * Validates all params and calls the right\n * listener function based on its target type.\n *\n * @param {String|HTMLElement|HTMLCollection|NodeList} target\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listen(target, type, callback) {\n if (!target && !type && !callback) {\n throw new Error('Missing required arguments');\n }\n\n if (!is.string(type)) {\n throw new TypeError('Second argument must be a String');\n }\n\n if (!is.fn(callback)) {\n throw new TypeError('Third argument must be a Function');\n }\n\n if (is.node(target)) {\n return listenNode(target, type, callback);\n }\n else if (is.nodeList(target)) {\n return listenNodeList(target, type, callback);\n }\n else if (is.string(target)) {\n return listenSelector(target, type, callback);\n }\n else {\n throw new TypeError('First argument must be a String, HTMLElement, HTMLCollection, or NodeList');\n }\n}\n\n/**\n * Adds an event listener to a HTML element\n * and returns a remove listener function.\n *\n * @param {HTMLElement} node\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenNode(node, type, callback) {\n node.addEventListener(type, callback);\n\n return {\n destroy: function() {\n node.removeEventListener(type, callback);\n }\n }\n}\n\n/**\n * Add an event listener to a list of HTML elements\n * and returns a remove listener function.\n *\n * @param {NodeList|HTMLCollection} nodeList\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenNodeList(nodeList, type, callback) {\n Array.prototype.forEach.call(nodeList, function(node) {\n node.addEventListener(type, callback);\n });\n\n return {\n destroy: function() {\n Array.prototype.forEach.call(nodeList, function(node) {\n node.removeEventListener(type, callback);\n });\n }\n }\n}\n\n/**\n * Add an event listener to a selector\n * and returns a remove listener function.\n *\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenSelector(selector, type, callback) {\n return delegate(document.body, selector, type, callback);\n}\n\nmodule.exports = listen;\n\n\n/***/ }),\n\n/***/ 817:\n/***/ (function(module) {\n\nfunction select(element) {\n var selectedText;\n\n if (element.nodeName === 'SELECT') {\n element.focus();\n\n selectedText = element.value;\n }\n else if (element.nodeName === 'INPUT' || element.nodeName === 'TEXTAREA') {\n var isReadOnly = element.hasAttribute('readonly');\n\n if (!isReadOnly) {\n element.setAttribute('readonly', '');\n }\n\n element.select();\n element.setSelectionRange(0, element.value.length);\n\n if (!isReadOnly) {\n element.removeAttribute('readonly');\n }\n\n selectedText = element.value;\n }\n else {\n if (element.hasAttribute('contenteditable')) {\n element.focus();\n }\n\n var selection = window.getSelection();\n var range = document.createRange();\n\n range.selectNodeContents(element);\n selection.removeAllRanges();\n selection.addRange(range);\n\n selectedText = selection.toString();\n }\n\n return selectedText;\n}\n\nmodule.exports = select;\n\n\n/***/ }),\n\n/***/ 279:\n/***/ (function(module) {\n\nfunction E () {\n // Keep this empty so it's easier to inherit from\n // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3)\n}\n\nE.prototype = {\n on: function (name, callback, ctx) {\n var e = this.e || (this.e = {});\n\n (e[name] || (e[name] = [])).push({\n fn: callback,\n ctx: ctx\n });\n\n return this;\n },\n\n once: function (name, callback, ctx) {\n var self = this;\n function listener () {\n self.off(name, listener);\n callback.apply(ctx, arguments);\n };\n\n listener._ = callback\n return this.on(name, listener, ctx);\n },\n\n emit: function (name) {\n var data = [].slice.call(arguments, 1);\n var evtArr = ((this.e || (this.e = {}))[name] || []).slice();\n var i = 0;\n var len = evtArr.length;\n\n for (i; i < len; i++) {\n evtArr[i].fn.apply(evtArr[i].ctx, data);\n }\n\n return this;\n },\n\n off: function (name, callback) {\n var e = this.e || (this.e = {});\n var evts = e[name];\n var liveEvents = [];\n\n if (evts && callback) {\n for (var i = 0, len = evts.length; i < len; i++) {\n if (evts[i].fn !== callback && evts[i].fn._ !== callback)\n liveEvents.push(evts[i]);\n }\n }\n\n // Remove event from queue to prevent memory leak\n // Suggested by https://github.com/lazd\n // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910\n\n (liveEvents.length)\n ? e[name] = liveEvents\n : delete e[name];\n\n return this;\n }\n};\n\nmodule.exports = E;\nmodule.exports.TinyEmitter = E;\n\n\n/***/ })\n\n/******/ \t});\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(__webpack_module_cache__[moduleId]) {\n/******/ \t\t\treturn __webpack_module_cache__[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t/* webpack/runtime/compat get default export */\n/******/ \t!function() {\n/******/ \t\t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t\t__webpack_require__.n = function(module) {\n/******/ \t\t\tvar getter = module && module.__esModule ?\n/******/ \t\t\t\tfunction() { return module['default']; } :\n/******/ \t\t\t\tfunction() { return module; };\n/******/ \t\t\t__webpack_require__.d(getter, { a: getter });\n/******/ \t\t\treturn getter;\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/define property getters */\n/******/ \t!function() {\n/******/ \t\t// define getter functions for harmony exports\n/******/ \t\t__webpack_require__.d = function(exports, definition) {\n/******/ \t\t\tfor(var key in definition) {\n/******/ \t\t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n/******/ \t\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/hasOwnProperty shorthand */\n/******/ \t!function() {\n/******/ \t\t__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }\n/******/ \t}();\n/******/ \t\n/************************************************************************/\n/******/ \t// module exports must be returned from runtime so entry inlining is disabled\n/******/ \t// startup\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(686);\n/******/ })()\n.default;\n});","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_1___ = new URL(\"data:image/gif;base64,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\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_2___ = new URL(\"images/ui-icons_444444_256x240.png\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_3___ = new URL(\"images/ui-icons_555555_256x240.png\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_4___ = new URL(\"images/ui-icons_ffffff_256x240.png\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_5___ = new URL(\"images/ui-icons_777620_256x240.png\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_6___ = new URL(\"images/ui-icons_cc0000_256x240.png\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_7___ = new URL(\"images/ui-icons_777777_256x240.png\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_1___);\nvar ___CSS_LOADER_URL_REPLACEMENT_2___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_2___);\nvar ___CSS_LOADER_URL_REPLACEMENT_3___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_3___);\nvar ___CSS_LOADER_URL_REPLACEMENT_4___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_4___);\nvar ___CSS_LOADER_URL_REPLACEMENT_5___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_5___);\nvar ___CSS_LOADER_URL_REPLACEMENT_6___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_6___);\nvar ___CSS_LOADER_URL_REPLACEMENT_7___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_7___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*! jQuery UI - v1.13.3 - 2024-04-26\n* https://jqueryui.com\n* Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css\n* To view and modify this theme, visit https://jqueryui.com/themeroller/?bgShadowXPos=&bgOverlayXPos=&bgErrorXPos=&bgHighlightXPos=&bgContentXPos=&bgHeaderXPos=&bgActiveXPos=&bgHoverXPos=&bgDefaultXPos=&bgShadowYPos=&bgOverlayYPos=&bgErrorYPos=&bgHighlightYPos=&bgContentYPos=&bgHeaderYPos=&bgActiveYPos=&bgHoverYPos=&bgDefaultYPos=&bgShadowRepeat=&bgOverlayRepeat=&bgErrorRepeat=&bgHighlightRepeat=&bgContentRepeat=&bgHeaderRepeat=&bgActiveRepeat=&bgHoverRepeat=&bgDefaultRepeat=&iconsHover=url(%22images%2Fui-icons_555555_256x240.png%22)&iconsHighlight=url(%22images%2Fui-icons_777620_256x240.png%22)&iconsHeader=url(%22images%2Fui-icons_444444_256x240.png%22)&iconsError=url(%22images%2Fui-icons_cc0000_256x240.png%22)&iconsDefault=url(%22images%2Fui-icons_777777_256x240.png%22)&iconsContent=url(%22images%2Fui-icons_444444_256x240.png%22)&iconsActive=url(%22images%2Fui-icons_ffffff_256x240.png%22)&bgImgUrlShadow=&bgImgUrlOverlay=&bgImgUrlHover=&bgImgUrlHighlight=&bgImgUrlHeader=&bgImgUrlError=&bgImgUrlDefault=&bgImgUrlContent=&bgImgUrlActive=&opacityFilterShadow=%22alpha(opacity%3D30)%22&opacityFilterOverlay=%22alpha(opacity%3D30)%22&opacityShadowPerc=30&opacityOverlayPerc=30&iconColorHover=%23555555&iconColorHighlight=%23777620&iconColorHeader=%23444444&iconColorError=%23cc0000&iconColorDefault=%23777777&iconColorContent=%23444444&iconColorActive=%23ffffff&bgImgOpacityShadow=0&bgImgOpacityOverlay=0&bgImgOpacityError=95&bgImgOpacityHighlight=55&bgImgOpacityContent=75&bgImgOpacityHeader=75&bgImgOpacityActive=65&bgImgOpacityHover=75&bgImgOpacityDefault=75&bgTextureShadow=flat&bgTextureOverlay=flat&bgTextureError=flat&bgTextureHighlight=flat&bgTextureContent=flat&bgTextureHeader=flat&bgTextureActive=flat&bgTextureHover=flat&bgTextureDefault=flat&cornerRadius=3px&fwDefault=normal&ffDefault=Arial%2CHelvetica%2Csans-serif&fsDefault=1em&cornerRadiusShadow=8px&thicknessShadow=5px&offsetLeftShadow=0px&offsetTopShadow=0px&opacityShadow=.3&bgColorShadow=%23666666&opacityOverlay=.3&bgColorOverlay=%23aaaaaa&fcError=%235f3f3f&borderColorError=%23f1a899&bgColorError=%23fddfdf&fcHighlight=%23777620&borderColorHighlight=%23dad55e&bgColorHighlight=%23fffa90&fcContent=%23333333&borderColorContent=%23dddddd&bgColorContent=%23ffffff&fcHeader=%23333333&borderColorHeader=%23dddddd&bgColorHeader=%23e9e9e9&fcActive=%23ffffff&borderColorActive=%23003eff&bgColorActive=%23007fff&fcHover=%232b2b2b&borderColorHover=%23cccccc&bgColorHover=%23ededed&fcDefault=%23454545&borderColorDefault=%23c5c5c5&bgColorDefault=%23f6f6f6\n* Copyright OpenJS Foundation and other contributors; Licensed MIT */\n\n/* Layout helpers\n----------------------------------*/\n.ui-helper-hidden {\n\tdisplay: none;\n}\n.ui-helper-hidden-accessible {\n\tborder: 0;\n\tclip: rect(0 0 0 0);\n\theight: 1px;\n\tmargin: -1px;\n\toverflow: hidden;\n\tpadding: 0;\n\tposition: absolute;\n\twidth: 1px;\n}\n.ui-helper-reset {\n\tmargin: 0;\n\tpadding: 0;\n\tborder: 0;\n\toutline: 0;\n\tline-height: 1.3;\n\ttext-decoration: none;\n\tfont-size: 100%;\n\tlist-style: none;\n}\n.ui-helper-clearfix:before,\n.ui-helper-clearfix:after {\n\tcontent: \"\";\n\tdisplay: table;\n\tborder-collapse: collapse;\n}\n.ui-helper-clearfix:after {\n\tclear: both;\n}\n.ui-helper-zfix {\n\twidth: 100%;\n\theight: 100%;\n\ttop: 0;\n\tleft: 0;\n\tposition: absolute;\n\topacity: 0;\n\t-ms-filter: \"alpha(opacity=0)\"; /* support: IE8 */\n}\n\n.ui-front {\n\tz-index: 100;\n}\n\n\n/* Interaction Cues\n----------------------------------*/\n.ui-state-disabled {\n\tcursor: default !important;\n\tpointer-events: none;\n}\n\n\n/* Icons\n----------------------------------*/\n.ui-icon {\n\tdisplay: inline-block;\n\tvertical-align: middle;\n\tmargin-top: -.25em;\n\tposition: relative;\n\ttext-indent: -99999px;\n\toverflow: hidden;\n\tbackground-repeat: no-repeat;\n}\n\n.ui-widget-icon-block {\n\tleft: 50%;\n\tmargin-left: -8px;\n\tdisplay: block;\n}\n\n/* Misc visuals\n----------------------------------*/\n\n/* Overlays */\n.ui-widget-overlay {\n\tposition: fixed;\n\ttop: 0;\n\tleft: 0;\n\twidth: 100%;\n\theight: 100%;\n}\n.ui-accordion .ui-accordion-header {\n\tdisplay: block;\n\tcursor: pointer;\n\tposition: relative;\n\tmargin: 2px 0 0 0;\n\tpadding: .5em .5em .5em .7em;\n\tfont-size: 100%;\n}\n.ui-accordion .ui-accordion-content {\n\tpadding: 1em 2.2em;\n\tborder-top: 0;\n\toverflow: auto;\n}\n.ui-autocomplete {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tcursor: default;\n}\n.ui-menu {\n\tlist-style: none;\n\tpadding: 0;\n\tmargin: 0;\n\tdisplay: block;\n\toutline: 0;\n}\n.ui-menu .ui-menu {\n\tposition: absolute;\n}\n.ui-menu .ui-menu-item {\n\tmargin: 0;\n\tcursor: pointer;\n\t/* support: IE10, see #8844 */\n\tlist-style-image: url(${___CSS_LOADER_URL_REPLACEMENT_0___});\n}\n.ui-menu .ui-menu-item-wrapper {\n\tposition: relative;\n\tpadding: 3px 1em 3px .4em;\n}\n.ui-menu .ui-menu-divider {\n\tmargin: 5px 0;\n\theight: 0;\n\tfont-size: 0;\n\tline-height: 0;\n\tborder-width: 1px 0 0 0;\n}\n.ui-menu .ui-state-focus,\n.ui-menu .ui-state-active {\n\tmargin: -1px;\n}\n\n/* icon support */\n.ui-menu-icons {\n\tposition: relative;\n}\n.ui-menu-icons .ui-menu-item-wrapper {\n\tpadding-left: 2em;\n}\n\n/* left-aligned */\n.ui-menu .ui-icon {\n\tposition: absolute;\n\ttop: 0;\n\tbottom: 0;\n\tleft: .2em;\n\tmargin: auto 0;\n}\n\n/* right-aligned */\n.ui-menu .ui-menu-icon {\n\tleft: auto;\n\tright: 0;\n}\n.ui-button {\n\tpadding: .4em 1em;\n\tdisplay: inline-block;\n\tposition: relative;\n\tline-height: normal;\n\tmargin-right: .1em;\n\tcursor: pointer;\n\tvertical-align: middle;\n\ttext-align: center;\n\t-webkit-user-select: none;\n\t-moz-user-select: none;\n\t-ms-user-select: none;\n\tuser-select: none;\n\n\t/* Support: IE <= 11 */\n\toverflow: visible;\n}\n\n.ui-button,\n.ui-button:link,\n.ui-button:visited,\n.ui-button:hover,\n.ui-button:active {\n\ttext-decoration: none;\n}\n\n/* to make room for the icon, a width needs to be set here */\n.ui-button-icon-only {\n\twidth: 2em;\n\tbox-sizing: border-box;\n\ttext-indent: -9999px;\n\twhite-space: nowrap;\n}\n\n/* no icon support for input elements */\ninput.ui-button.ui-button-icon-only {\n\ttext-indent: 0;\n}\n\n/* button icon element(s) */\n.ui-button-icon-only .ui-icon {\n\tposition: absolute;\n\ttop: 50%;\n\tleft: 50%;\n\tmargin-top: -8px;\n\tmargin-left: -8px;\n}\n\n.ui-button.ui-icon-notext .ui-icon {\n\tpadding: 0;\n\twidth: 2.1em;\n\theight: 2.1em;\n\ttext-indent: -9999px;\n\twhite-space: nowrap;\n\n}\n\ninput.ui-button.ui-icon-notext .ui-icon {\n\twidth: auto;\n\theight: auto;\n\ttext-indent: 0;\n\twhite-space: normal;\n\tpadding: .4em 1em;\n}\n\n/* workarounds */\n/* Support: Firefox 5 - 40 */\ninput.ui-button::-moz-focus-inner,\nbutton.ui-button::-moz-focus-inner {\n\tborder: 0;\n\tpadding: 0;\n}\n.ui-controlgroup {\n\tvertical-align: middle;\n\tdisplay: inline-block;\n}\n.ui-controlgroup > .ui-controlgroup-item {\n\tfloat: left;\n\tmargin-left: 0;\n\tmargin-right: 0;\n}\n.ui-controlgroup > .ui-controlgroup-item:focus,\n.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus {\n\tz-index: 9999;\n}\n.ui-controlgroup-vertical > .ui-controlgroup-item {\n\tdisplay: block;\n\tfloat: none;\n\twidth: 100%;\n\tmargin-top: 0;\n\tmargin-bottom: 0;\n\ttext-align: left;\n}\n.ui-controlgroup-vertical .ui-controlgroup-item {\n\tbox-sizing: border-box;\n}\n.ui-controlgroup .ui-controlgroup-label {\n\tpadding: .4em 1em;\n}\n.ui-controlgroup .ui-controlgroup-label span {\n\tfont-size: 80%;\n}\n.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item {\n\tborder-left: none;\n}\n.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item {\n\tborder-top: none;\n}\n.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content {\n\tborder-right: none;\n}\n.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content {\n\tborder-bottom: none;\n}\n\n/* Spinner specific style fixes */\n.ui-controlgroup-vertical .ui-spinner-input {\n\n\t/* Support: IE8 only, Android < 4.4 only */\n\twidth: 75%;\n\twidth: calc( 100% - 2.4em );\n}\n.ui-controlgroup-vertical .ui-spinner .ui-spinner-up {\n\tborder-top-style: solid;\n}\n\n.ui-checkboxradio-label .ui-icon-background {\n\tbox-shadow: inset 1px 1px 1px #ccc;\n\tborder-radius: .12em;\n\tborder: none;\n}\n.ui-checkboxradio-radio-label .ui-icon-background {\n\twidth: 16px;\n\theight: 16px;\n\tborder-radius: 1em;\n\toverflow: visible;\n\tborder: none;\n}\n.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,\n.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon {\n\tbackground-image: none;\n\twidth: 8px;\n\theight: 8px;\n\tborder-width: 4px;\n\tborder-style: solid;\n}\n.ui-checkboxradio-disabled {\n\tpointer-events: none;\n}\n.ui-datepicker {\n\twidth: 17em;\n\tpadding: .2em .2em 0;\n\tdisplay: none;\n}\n.ui-datepicker .ui-datepicker-header {\n\tposition: relative;\n\tpadding: .2em 0;\n}\n.ui-datepicker .ui-datepicker-prev,\n.ui-datepicker .ui-datepicker-next {\n\tposition: absolute;\n\ttop: 2px;\n\twidth: 1.8em;\n\theight: 1.8em;\n}\n.ui-datepicker .ui-datepicker-prev-hover,\n.ui-datepicker .ui-datepicker-next-hover {\n\ttop: 1px;\n}\n.ui-datepicker .ui-datepicker-prev {\n\tleft: 2px;\n}\n.ui-datepicker .ui-datepicker-next {\n\tright: 2px;\n}\n.ui-datepicker .ui-datepicker-prev-hover {\n\tleft: 1px;\n}\n.ui-datepicker .ui-datepicker-next-hover {\n\tright: 1px;\n}\n.ui-datepicker .ui-datepicker-prev span,\n.ui-datepicker .ui-datepicker-next span {\n\tdisplay: block;\n\tposition: absolute;\n\tleft: 50%;\n\tmargin-left: -8px;\n\ttop: 50%;\n\tmargin-top: -8px;\n}\n.ui-datepicker .ui-datepicker-title {\n\tmargin: 0 2.3em;\n\tline-height: 1.8em;\n\ttext-align: center;\n}\n.ui-datepicker .ui-datepicker-title select {\n\tfont-size: 1em;\n\tmargin: 1px 0;\n}\n.ui-datepicker select.ui-datepicker-month,\n.ui-datepicker select.ui-datepicker-year {\n\twidth: 45%;\n}\n.ui-datepicker table {\n\twidth: 100%;\n\tfont-size: .9em;\n\tborder-collapse: collapse;\n\tmargin: 0 0 .4em;\n}\n.ui-datepicker th {\n\tpadding: .7em .3em;\n\ttext-align: center;\n\tfont-weight: bold;\n\tborder: 0;\n}\n.ui-datepicker td {\n\tborder: 0;\n\tpadding: 1px;\n}\n.ui-datepicker td span,\n.ui-datepicker td a {\n\tdisplay: block;\n\tpadding: .2em;\n\ttext-align: right;\n\ttext-decoration: none;\n}\n.ui-datepicker .ui-datepicker-buttonpane {\n\tbackground-image: none;\n\tmargin: .7em 0 0 0;\n\tpadding: 0 .2em;\n\tborder-left: 0;\n\tborder-right: 0;\n\tborder-bottom: 0;\n}\n.ui-datepicker .ui-datepicker-buttonpane button {\n\tfloat: right;\n\tmargin: .5em .2em .4em;\n\tcursor: pointer;\n\tpadding: .2em .6em .3em .6em;\n\twidth: auto;\n\toverflow: visible;\n}\n.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current {\n\tfloat: left;\n}\n\n/* with multiple calendars */\n.ui-datepicker.ui-datepicker-multi {\n\twidth: auto;\n}\n.ui-datepicker-multi .ui-datepicker-group {\n\tfloat: left;\n}\n.ui-datepicker-multi .ui-datepicker-group table {\n\twidth: 95%;\n\tmargin: 0 auto .4em;\n}\n.ui-datepicker-multi-2 .ui-datepicker-group {\n\twidth: 50%;\n}\n.ui-datepicker-multi-3 .ui-datepicker-group {\n\twidth: 33.3%;\n}\n.ui-datepicker-multi-4 .ui-datepicker-group {\n\twidth: 25%;\n}\n.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,\n.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header {\n\tborder-left-width: 0;\n}\n.ui-datepicker-multi .ui-datepicker-buttonpane {\n\tclear: left;\n}\n.ui-datepicker-row-break {\n\tclear: both;\n\twidth: 100%;\n\tfont-size: 0;\n}\n\n/* RTL support */\n.ui-datepicker-rtl {\n\tdirection: rtl;\n}\n.ui-datepicker-rtl .ui-datepicker-prev {\n\tright: 2px;\n\tleft: auto;\n}\n.ui-datepicker-rtl .ui-datepicker-next {\n\tleft: 2px;\n\tright: auto;\n}\n.ui-datepicker-rtl .ui-datepicker-prev:hover {\n\tright: 1px;\n\tleft: auto;\n}\n.ui-datepicker-rtl .ui-datepicker-next:hover {\n\tleft: 1px;\n\tright: auto;\n}\n.ui-datepicker-rtl .ui-datepicker-buttonpane {\n\tclear: right;\n}\n.ui-datepicker-rtl .ui-datepicker-buttonpane button {\n\tfloat: left;\n}\n.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,\n.ui-datepicker-rtl .ui-datepicker-group {\n\tfloat: right;\n}\n.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,\n.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header {\n\tborder-right-width: 0;\n\tborder-left-width: 1px;\n}\n\n/* Icons */\n.ui-datepicker .ui-icon {\n\tdisplay: block;\n\ttext-indent: -99999px;\n\toverflow: hidden;\n\tbackground-repeat: no-repeat;\n\tleft: .5em;\n\ttop: .3em;\n}\n.ui-dialog {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tpadding: .2em;\n\toutline: 0;\n}\n.ui-dialog .ui-dialog-titlebar {\n\tpadding: .4em 1em;\n\tposition: relative;\n}\n.ui-dialog .ui-dialog-title {\n\tfloat: left;\n\tmargin: .1em 0;\n\twhite-space: nowrap;\n\twidth: 90%;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n}\n.ui-dialog .ui-dialog-titlebar-close {\n\tposition: absolute;\n\tright: .3em;\n\ttop: 50%;\n\twidth: 20px;\n\tmargin: -10px 0 0 0;\n\tpadding: 1px;\n\theight: 20px;\n}\n.ui-dialog .ui-dialog-content {\n\tposition: relative;\n\tborder: 0;\n\tpadding: .5em 1em;\n\tbackground: none;\n\toverflow: auto;\n}\n.ui-dialog .ui-dialog-buttonpane {\n\ttext-align: left;\n\tborder-width: 1px 0 0 0;\n\tbackground-image: none;\n\tmargin-top: .5em;\n\tpadding: .3em 1em .5em .4em;\n}\n.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {\n\tfloat: right;\n}\n.ui-dialog .ui-dialog-buttonpane button {\n\tmargin: .5em .4em .5em 0;\n\tcursor: pointer;\n}\n.ui-dialog .ui-resizable-n {\n\theight: 2px;\n\ttop: 0;\n}\n.ui-dialog .ui-resizable-e {\n\twidth: 2px;\n\tright: 0;\n}\n.ui-dialog .ui-resizable-s {\n\theight: 2px;\n\tbottom: 0;\n}\n.ui-dialog .ui-resizable-w {\n\twidth: 2px;\n\tleft: 0;\n}\n.ui-dialog .ui-resizable-se,\n.ui-dialog .ui-resizable-sw,\n.ui-dialog .ui-resizable-ne,\n.ui-dialog .ui-resizable-nw {\n\twidth: 7px;\n\theight: 7px;\n}\n.ui-dialog .ui-resizable-se {\n\tright: 0;\n\tbottom: 0;\n}\n.ui-dialog .ui-resizable-sw {\n\tleft: 0;\n\tbottom: 0;\n}\n.ui-dialog .ui-resizable-ne {\n\tright: 0;\n\ttop: 0;\n}\n.ui-dialog .ui-resizable-nw {\n\tleft: 0;\n\ttop: 0;\n}\n.ui-draggable .ui-dialog-titlebar {\n\tcursor: move;\n}\n.ui-draggable-handle {\n\t-ms-touch-action: none;\n\ttouch-action: none;\n}\n.ui-resizable {\n\tposition: relative;\n}\n.ui-resizable-handle {\n\tposition: absolute;\n\tfont-size: 0.1px;\n\tdisplay: block;\n\t-ms-touch-action: none;\n\ttouch-action: none;\n}\n.ui-resizable-disabled .ui-resizable-handle,\n.ui-resizable-autohide .ui-resizable-handle {\n\tdisplay: none;\n}\n.ui-resizable-n {\n\tcursor: n-resize;\n\theight: 7px;\n\twidth: 100%;\n\ttop: -5px;\n\tleft: 0;\n}\n.ui-resizable-s {\n\tcursor: s-resize;\n\theight: 7px;\n\twidth: 100%;\n\tbottom: -5px;\n\tleft: 0;\n}\n.ui-resizable-e {\n\tcursor: e-resize;\n\twidth: 7px;\n\tright: -5px;\n\ttop: 0;\n\theight: 100%;\n}\n.ui-resizable-w {\n\tcursor: w-resize;\n\twidth: 7px;\n\tleft: -5px;\n\ttop: 0;\n\theight: 100%;\n}\n.ui-resizable-se {\n\tcursor: se-resize;\n\twidth: 12px;\n\theight: 12px;\n\tright: 1px;\n\tbottom: 1px;\n}\n.ui-resizable-sw {\n\tcursor: sw-resize;\n\twidth: 9px;\n\theight: 9px;\n\tleft: -5px;\n\tbottom: -5px;\n}\n.ui-resizable-nw {\n\tcursor: nw-resize;\n\twidth: 9px;\n\theight: 9px;\n\tleft: -5px;\n\ttop: -5px;\n}\n.ui-resizable-ne {\n\tcursor: ne-resize;\n\twidth: 9px;\n\theight: 9px;\n\tright: -5px;\n\ttop: -5px;\n}\n.ui-progressbar {\n\theight: 2em;\n\ttext-align: left;\n\toverflow: hidden;\n}\n.ui-progressbar .ui-progressbar-value {\n\tmargin: -1px;\n\theight: 100%;\n}\n.ui-progressbar .ui-progressbar-overlay {\n\tbackground: url(${___CSS_LOADER_URL_REPLACEMENT_1___});\n\theight: 100%;\n\t-ms-filter: \"alpha(opacity=25)\"; /* support: IE8 */\n\topacity: 0.25;\n}\n.ui-progressbar-indeterminate .ui-progressbar-value {\n\tbackground-image: none;\n}\n.ui-selectable {\n\t-ms-touch-action: none;\n\ttouch-action: none;\n}\n.ui-selectable-helper {\n\tposition: absolute;\n\tz-index: 100;\n\tborder: 1px dotted black;\n}\n.ui-selectmenu-menu {\n\tpadding: 0;\n\tmargin: 0;\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tdisplay: none;\n}\n.ui-selectmenu-menu .ui-menu {\n\toverflow: auto;\n\toverflow-x: hidden;\n\tpadding-bottom: 1px;\n}\n.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup {\n\tfont-size: 1em;\n\tfont-weight: bold;\n\tline-height: 1.5;\n\tpadding: 2px 0.4em;\n\tmargin: 0.5em 0 0 0;\n\theight: auto;\n\tborder: 0;\n}\n.ui-selectmenu-open {\n\tdisplay: block;\n}\n.ui-selectmenu-text {\n\tdisplay: block;\n\tmargin-right: 20px;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n}\n.ui-selectmenu-button.ui-button {\n\ttext-align: left;\n\twhite-space: nowrap;\n\twidth: 14em;\n}\n.ui-selectmenu-icon.ui-icon {\n\tfloat: right;\n\tmargin-top: 0;\n}\n.ui-slider {\n\tposition: relative;\n\ttext-align: left;\n}\n.ui-slider .ui-slider-handle {\n\tposition: absolute;\n\tz-index: 2;\n\twidth: 1.2em;\n\theight: 1.2em;\n\tcursor: pointer;\n\t-ms-touch-action: none;\n\ttouch-action: none;\n}\n.ui-slider .ui-slider-range {\n\tposition: absolute;\n\tz-index: 1;\n\tfont-size: .7em;\n\tdisplay: block;\n\tborder: 0;\n\tbackground-position: 0 0;\n}\n\n/* support: IE8 - See #6727 */\n.ui-slider.ui-state-disabled .ui-slider-handle,\n.ui-slider.ui-state-disabled .ui-slider-range {\n\tfilter: inherit;\n}\n\n.ui-slider-horizontal {\n\theight: .8em;\n}\n.ui-slider-horizontal .ui-slider-handle {\n\ttop: -.3em;\n\tmargin-left: -.6em;\n}\n.ui-slider-horizontal .ui-slider-range {\n\ttop: 0;\n\theight: 100%;\n}\n.ui-slider-horizontal .ui-slider-range-min {\n\tleft: 0;\n}\n.ui-slider-horizontal .ui-slider-range-max {\n\tright: 0;\n}\n\n.ui-slider-vertical {\n\twidth: .8em;\n\theight: 100px;\n}\n.ui-slider-vertical .ui-slider-handle {\n\tleft: -.3em;\n\tmargin-left: 0;\n\tmargin-bottom: -.6em;\n}\n.ui-slider-vertical .ui-slider-range {\n\tleft: 0;\n\twidth: 100%;\n}\n.ui-slider-vertical .ui-slider-range-min {\n\tbottom: 0;\n}\n.ui-slider-vertical .ui-slider-range-max {\n\ttop: 0;\n}\n.ui-sortable-handle {\n\t-ms-touch-action: none;\n\ttouch-action: none;\n}\n.ui-spinner {\n\tposition: relative;\n\tdisplay: inline-block;\n\toverflow: hidden;\n\tpadding: 0;\n\tvertical-align: middle;\n}\n.ui-spinner-input {\n\tborder: none;\n\tbackground: none;\n\tcolor: inherit;\n\tpadding: .222em 0;\n\tmargin: .2em 0;\n\tvertical-align: middle;\n\tmargin-left: .4em;\n\tmargin-right: 2em;\n}\n.ui-spinner-button {\n\twidth: 1.6em;\n\theight: 50%;\n\tfont-size: .5em;\n\tpadding: 0;\n\tmargin: 0;\n\ttext-align: center;\n\tposition: absolute;\n\tcursor: default;\n\tdisplay: block;\n\toverflow: hidden;\n\tright: 0;\n}\n/* more specificity required here to override default borders */\n.ui-spinner a.ui-spinner-button {\n\tborder-top-style: none;\n\tborder-bottom-style: none;\n\tborder-right-style: none;\n}\n.ui-spinner-up {\n\ttop: 0;\n}\n.ui-spinner-down {\n\tbottom: 0;\n}\n.ui-tabs {\n\tposition: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as \"fixed\") */\n\tpadding: .2em;\n}\n.ui-tabs .ui-tabs-nav {\n\tmargin: 0;\n\tpadding: .2em .2em 0;\n}\n.ui-tabs .ui-tabs-nav li {\n\tlist-style: none;\n\tfloat: left;\n\tposition: relative;\n\ttop: 0;\n\tmargin: 1px .2em 0 0;\n\tborder-bottom-width: 0;\n\tpadding: 0;\n\twhite-space: nowrap;\n}\n.ui-tabs .ui-tabs-nav .ui-tabs-anchor {\n\tfloat: left;\n\tpadding: .5em 1em;\n\ttext-decoration: none;\n}\n.ui-tabs .ui-tabs-nav li.ui-tabs-active {\n\tmargin-bottom: -1px;\n\tpadding-bottom: 1px;\n}\n.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,\n.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,\n.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor {\n\tcursor: text;\n}\n.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor {\n\tcursor: pointer;\n}\n.ui-tabs .ui-tabs-panel {\n\tdisplay: block;\n\tborder-width: 0;\n\tpadding: 1em 1.4em;\n\tbackground: none;\n}\n.ui-tooltip {\n\tpadding: 8px;\n\tposition: absolute;\n\tz-index: 9999;\n\tmax-width: 300px;\n}\nbody .ui-tooltip {\n\tborder-width: 2px;\n}\n\n/* Component containers\n----------------------------------*/\n.ui-widget {\n\tfont-family: Arial,Helvetica,sans-serif;\n\tfont-size: 1em;\n}\n.ui-widget .ui-widget {\n\tfont-size: 1em;\n}\n.ui-widget input,\n.ui-widget select,\n.ui-widget textarea,\n.ui-widget button {\n\tfont-family: Arial,Helvetica,sans-serif;\n\tfont-size: 1em;\n}\n.ui-widget.ui-widget-content {\n\tborder: 1px solid #c5c5c5;\n}\n.ui-widget-content {\n\tborder: 1px solid #dddddd;\n\tbackground: #ffffff;\n\tcolor: #333333;\n}\n.ui-widget-content a {\n\tcolor: #333333;\n}\n.ui-widget-header {\n\tborder: 1px solid #dddddd;\n\tbackground: #e9e9e9;\n\tcolor: #333333;\n\tfont-weight: bold;\n}\n.ui-widget-header a {\n\tcolor: #333333;\n}\n\n/* Interaction states\n----------------------------------*/\n.ui-state-default,\n.ui-widget-content .ui-state-default,\n.ui-widget-header .ui-state-default,\n.ui-button,\n\n/* We use html here because we need a greater specificity to make sure disabled\nworks properly when clicked or hovered */\nhtml .ui-button.ui-state-disabled:hover,\nhtml .ui-button.ui-state-disabled:active {\n\tborder: 1px solid #c5c5c5;\n\tbackground: #f6f6f6;\n\tfont-weight: normal;\n\tcolor: #454545;\n}\n.ui-state-default a,\n.ui-state-default a:link,\n.ui-state-default a:visited,\na.ui-button,\na:link.ui-button,\na:visited.ui-button,\n.ui-button {\n\tcolor: #454545;\n\ttext-decoration: none;\n}\n.ui-state-hover,\n.ui-widget-content .ui-state-hover,\n.ui-widget-header .ui-state-hover,\n.ui-state-focus,\n.ui-widget-content .ui-state-focus,\n.ui-widget-header .ui-state-focus,\n.ui-button:hover,\n.ui-button:focus {\n\tborder: 1px solid #cccccc;\n\tbackground: #ededed;\n\tfont-weight: normal;\n\tcolor: #2b2b2b;\n}\n.ui-state-hover a,\n.ui-state-hover a:hover,\n.ui-state-hover a:link,\n.ui-state-hover a:visited,\n.ui-state-focus a,\n.ui-state-focus a:hover,\n.ui-state-focus a:link,\n.ui-state-focus a:visited,\na.ui-button:hover,\na.ui-button:focus {\n\tcolor: #2b2b2b;\n\ttext-decoration: none;\n}\n\n.ui-visual-focus {\n\tbox-shadow: 0 0 3px 1px rgb(94, 158, 214);\n}\n.ui-state-active,\n.ui-widget-content .ui-state-active,\n.ui-widget-header .ui-state-active,\na.ui-button:active,\n.ui-button:active,\n.ui-button.ui-state-active:hover {\n\tborder: 1px solid #003eff;\n\tbackground: #007fff;\n\tfont-weight: normal;\n\tcolor: #ffffff;\n}\n.ui-icon-background,\n.ui-state-active .ui-icon-background {\n\tborder: #003eff;\n\tbackground-color: #ffffff;\n}\n.ui-state-active a,\n.ui-state-active a:link,\n.ui-state-active a:visited {\n\tcolor: #ffffff;\n\ttext-decoration: none;\n}\n\n/* Interaction Cues\n----------------------------------*/\n.ui-state-highlight,\n.ui-widget-content .ui-state-highlight,\n.ui-widget-header .ui-state-highlight {\n\tborder: 1px solid #dad55e;\n\tbackground: #fffa90;\n\tcolor: #777620;\n}\n.ui-state-checked {\n\tborder: 1px solid #dad55e;\n\tbackground: #fffa90;\n}\n.ui-state-highlight a,\n.ui-widget-content .ui-state-highlight a,\n.ui-widget-header .ui-state-highlight a {\n\tcolor: #777620;\n}\n.ui-state-error,\n.ui-widget-content .ui-state-error,\n.ui-widget-header .ui-state-error {\n\tborder: 1px solid #f1a899;\n\tbackground: #fddfdf;\n\tcolor: #5f3f3f;\n}\n.ui-state-error a,\n.ui-widget-content .ui-state-error a,\n.ui-widget-header .ui-state-error a {\n\tcolor: #5f3f3f;\n}\n.ui-state-error-text,\n.ui-widget-content .ui-state-error-text,\n.ui-widget-header .ui-state-error-text {\n\tcolor: #5f3f3f;\n}\n.ui-priority-primary,\n.ui-widget-content .ui-priority-primary,\n.ui-widget-header .ui-priority-primary {\n\tfont-weight: bold;\n}\n.ui-priority-secondary,\n.ui-widget-content .ui-priority-secondary,\n.ui-widget-header .ui-priority-secondary {\n\topacity: .7;\n\t-ms-filter: \"alpha(opacity=70)\"; /* support: IE8 */\n\tfont-weight: normal;\n}\n.ui-state-disabled,\n.ui-widget-content .ui-state-disabled,\n.ui-widget-header .ui-state-disabled {\n\topacity: .35;\n\t-ms-filter: \"alpha(opacity=35)\"; /* support: IE8 */\n\tbackground-image: none;\n}\n.ui-state-disabled .ui-icon {\n\t-ms-filter: \"alpha(opacity=35)\"; /* support: IE8 - See #6059 */\n}\n\n/* Icons\n----------------------------------*/\n\n/* states and images */\n.ui-icon {\n\twidth: 16px;\n\theight: 16px;\n}\n.ui-icon,\n.ui-widget-content .ui-icon {\n\tbackground-image: url(${___CSS_LOADER_URL_REPLACEMENT_2___});\n}\n.ui-widget-header .ui-icon {\n\tbackground-image: url(${___CSS_LOADER_URL_REPLACEMENT_2___});\n}\n.ui-state-hover .ui-icon,\n.ui-state-focus .ui-icon,\n.ui-button:hover .ui-icon,\n.ui-button:focus .ui-icon {\n\tbackground-image: url(${___CSS_LOADER_URL_REPLACEMENT_3___});\n}\n.ui-state-active .ui-icon,\n.ui-button:active .ui-icon {\n\tbackground-image: url(${___CSS_LOADER_URL_REPLACEMENT_4___});\n}\n.ui-state-highlight .ui-icon,\n.ui-button .ui-state-highlight.ui-icon {\n\tbackground-image: url(${___CSS_LOADER_URL_REPLACEMENT_5___});\n}\n.ui-state-error .ui-icon,\n.ui-state-error-text .ui-icon {\n\tbackground-image: url(${___CSS_LOADER_URL_REPLACEMENT_6___});\n}\n.ui-button .ui-icon {\n\tbackground-image: url(${___CSS_LOADER_URL_REPLACEMENT_7___});\n}\n\n/* positioning */\n/* Three classes needed to override \\`.ui-button:hover .ui-icon\\` */\n.ui-icon-blank.ui-icon-blank.ui-icon-blank {\n\tbackground-image: none;\n}\n.ui-icon-caret-1-n { background-position: 0 0; }\n.ui-icon-caret-1-ne { background-position: -16px 0; }\n.ui-icon-caret-1-e { background-position: -32px 0; }\n.ui-icon-caret-1-se { background-position: -48px 0; }\n.ui-icon-caret-1-s { background-position: -65px 0; }\n.ui-icon-caret-1-sw { background-position: -80px 0; }\n.ui-icon-caret-1-w { background-position: -96px 0; }\n.ui-icon-caret-1-nw { background-position: -112px 0; }\n.ui-icon-caret-2-n-s { background-position: -128px 0; }\n.ui-icon-caret-2-e-w { background-position: -144px 0; }\n.ui-icon-triangle-1-n { background-position: 0 -16px; }\n.ui-icon-triangle-1-ne { background-position: -16px -16px; }\n.ui-icon-triangle-1-e { background-position: -32px -16px; }\n.ui-icon-triangle-1-se { background-position: -48px -16px; }\n.ui-icon-triangle-1-s { background-position: -65px -16px; }\n.ui-icon-triangle-1-sw { background-position: -80px -16px; }\n.ui-icon-triangle-1-w { background-position: -96px -16px; }\n.ui-icon-triangle-1-nw { background-position: -112px -16px; }\n.ui-icon-triangle-2-n-s { background-position: -128px -16px; }\n.ui-icon-triangle-2-e-w { background-position: -144px -16px; }\n.ui-icon-arrow-1-n { background-position: 0 -32px; }\n.ui-icon-arrow-1-ne { background-position: -16px -32px; }\n.ui-icon-arrow-1-e { background-position: -32px -32px; }\n.ui-icon-arrow-1-se { background-position: -48px -32px; }\n.ui-icon-arrow-1-s { background-position: -65px -32px; }\n.ui-icon-arrow-1-sw { background-position: -80px -32px; }\n.ui-icon-arrow-1-w { background-position: -96px -32px; }\n.ui-icon-arrow-1-nw { background-position: -112px -32px; }\n.ui-icon-arrow-2-n-s { background-position: -128px -32px; }\n.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }\n.ui-icon-arrow-2-e-w { background-position: -160px -32px; }\n.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }\n.ui-icon-arrowstop-1-n { background-position: -192px -32px; }\n.ui-icon-arrowstop-1-e { background-position: -208px -32px; }\n.ui-icon-arrowstop-1-s { background-position: -224px -32px; }\n.ui-icon-arrowstop-1-w { background-position: -240px -32px; }\n.ui-icon-arrowthick-1-n { background-position: 1px -48px; }\n.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }\n.ui-icon-arrowthick-1-e { background-position: -32px -48px; }\n.ui-icon-arrowthick-1-se { background-position: -48px -48px; }\n.ui-icon-arrowthick-1-s { background-position: -64px -48px; }\n.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }\n.ui-icon-arrowthick-1-w { background-position: -96px -48px; }\n.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }\n.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }\n.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }\n.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }\n.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }\n.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }\n.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }\n.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }\n.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }\n.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }\n.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }\n.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }\n.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }\n.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }\n.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }\n.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }\n.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }\n.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }\n.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }\n.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }\n.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }\n.ui-icon-arrow-4 { background-position: 0 -80px; }\n.ui-icon-arrow-4-diag { background-position: -16px -80px; }\n.ui-icon-extlink { background-position: -32px -80px; }\n.ui-icon-newwin { background-position: -48px -80px; }\n.ui-icon-refresh { background-position: -64px -80px; }\n.ui-icon-shuffle { background-position: -80px -80px; }\n.ui-icon-transfer-e-w { background-position: -96px -80px; }\n.ui-icon-transferthick-e-w { background-position: -112px -80px; }\n.ui-icon-folder-collapsed { background-position: 0 -96px; }\n.ui-icon-folder-open { background-position: -16px -96px; }\n.ui-icon-document { background-position: -32px -96px; }\n.ui-icon-document-b { background-position: -48px -96px; }\n.ui-icon-note { background-position: -64px -96px; }\n.ui-icon-mail-closed { background-position: -80px -96px; }\n.ui-icon-mail-open { background-position: -96px -96px; }\n.ui-icon-suitcase { background-position: -112px -96px; }\n.ui-icon-comment { background-position: -128px -96px; }\n.ui-icon-person { background-position: -144px -96px; }\n.ui-icon-print { background-position: -160px -96px; }\n.ui-icon-trash { background-position: -176px -96px; }\n.ui-icon-locked { background-position: -192px -96px; }\n.ui-icon-unlocked { background-position: -208px -96px; }\n.ui-icon-bookmark { background-position: -224px -96px; }\n.ui-icon-tag { background-position: -240px -96px; }\n.ui-icon-home { background-position: 0 -112px; }\n.ui-icon-flag { background-position: -16px -112px; }\n.ui-icon-calendar { background-position: -32px -112px; }\n.ui-icon-cart { background-position: -48px -112px; }\n.ui-icon-pencil { background-position: -64px -112px; }\n.ui-icon-clock { background-position: -80px -112px; }\n.ui-icon-disk { background-position: -96px -112px; }\n.ui-icon-calculator { background-position: -112px -112px; }\n.ui-icon-zoomin { background-position: -128px -112px; }\n.ui-icon-zoomout { background-position: -144px -112px; }\n.ui-icon-search { background-position: -160px -112px; }\n.ui-icon-wrench { background-position: -176px -112px; }\n.ui-icon-gear { background-position: -192px -112px; }\n.ui-icon-heart { background-position: -208px -112px; }\n.ui-icon-star { background-position: -224px -112px; }\n.ui-icon-link { background-position: -240px -112px; }\n.ui-icon-cancel { background-position: 0 -128px; }\n.ui-icon-plus { background-position: -16px -128px; }\n.ui-icon-plusthick { background-position: -32px -128px; }\n.ui-icon-minus { background-position: -48px -128px; }\n.ui-icon-minusthick { background-position: -64px -128px; }\n.ui-icon-close { background-position: -80px -128px; }\n.ui-icon-closethick { background-position: -96px -128px; }\n.ui-icon-key { background-position: -112px -128px; }\n.ui-icon-lightbulb { background-position: -128px -128px; }\n.ui-icon-scissors { background-position: -144px -128px; }\n.ui-icon-clipboard { background-position: -160px -128px; }\n.ui-icon-copy { background-position: -176px -128px; }\n.ui-icon-contact { background-position: -192px -128px; }\n.ui-icon-image { background-position: -208px -128px; }\n.ui-icon-video { background-position: -224px -128px; }\n.ui-icon-script { background-position: -240px -128px; }\n.ui-icon-alert { background-position: 0 -144px; }\n.ui-icon-info { background-position: -16px -144px; }\n.ui-icon-notice { background-position: -32px -144px; }\n.ui-icon-help { background-position: -48px -144px; }\n.ui-icon-check { background-position: -64px -144px; }\n.ui-icon-bullet { background-position: -80px -144px; }\n.ui-icon-radio-on { background-position: -96px -144px; }\n.ui-icon-radio-off { background-position: -112px -144px; }\n.ui-icon-pin-w { background-position: -128px -144px; }\n.ui-icon-pin-s { background-position: -144px -144px; }\n.ui-icon-play { background-position: 0 -160px; }\n.ui-icon-pause { background-position: -16px -160px; }\n.ui-icon-seek-next { background-position: -32px -160px; }\n.ui-icon-seek-prev { background-position: -48px -160px; }\n.ui-icon-seek-end { background-position: -64px -160px; }\n.ui-icon-seek-start { background-position: -80px -160px; }\n/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */\n.ui-icon-seek-first { background-position: -80px -160px; }\n.ui-icon-stop { background-position: -96px -160px; }\n.ui-icon-eject { background-position: -112px -160px; }\n.ui-icon-volume-off { background-position: -128px -160px; }\n.ui-icon-volume-on { background-position: -144px -160px; }\n.ui-icon-power { background-position: 0 -176px; }\n.ui-icon-signal-diag { background-position: -16px -176px; }\n.ui-icon-signal { background-position: -32px -176px; }\n.ui-icon-battery-0 { background-position: -48px -176px; }\n.ui-icon-battery-1 { background-position: -64px -176px; }\n.ui-icon-battery-2 { background-position: -80px -176px; }\n.ui-icon-battery-3 { background-position: -96px -176px; }\n.ui-icon-circle-plus { background-position: 0 -192px; }\n.ui-icon-circle-minus { background-position: -16px -192px; }\n.ui-icon-circle-close { background-position: -32px -192px; }\n.ui-icon-circle-triangle-e { background-position: -48px -192px; }\n.ui-icon-circle-triangle-s { background-position: -64px -192px; }\n.ui-icon-circle-triangle-w { background-position: -80px -192px; }\n.ui-icon-circle-triangle-n { background-position: -96px -192px; }\n.ui-icon-circle-arrow-e { background-position: -112px -192px; }\n.ui-icon-circle-arrow-s { background-position: -128px -192px; }\n.ui-icon-circle-arrow-w { background-position: -144px -192px; }\n.ui-icon-circle-arrow-n { background-position: -160px -192px; }\n.ui-icon-circle-zoomin { background-position: -176px -192px; }\n.ui-icon-circle-zoomout { background-position: -192px -192px; }\n.ui-icon-circle-check { background-position: -208px -192px; }\n.ui-icon-circlesmall-plus { background-position: 0 -208px; }\n.ui-icon-circlesmall-minus { background-position: -16px -208px; }\n.ui-icon-circlesmall-close { background-position: -32px -208px; }\n.ui-icon-squaresmall-plus { background-position: -48px -208px; }\n.ui-icon-squaresmall-minus { background-position: -64px -208px; }\n.ui-icon-squaresmall-close { background-position: -80px -208px; }\n.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }\n.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }\n.ui-icon-grip-solid-vertical { background-position: -32px -224px; }\n.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }\n.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }\n.ui-icon-grip-diagonal-se { background-position: -80px -224px; }\n\n\n/* Misc visuals\n----------------------------------*/\n\n/* Corner radius */\n.ui-corner-all,\n.ui-corner-top,\n.ui-corner-left,\n.ui-corner-tl {\n\tborder-top-left-radius: 3px;\n}\n.ui-corner-all,\n.ui-corner-top,\n.ui-corner-right,\n.ui-corner-tr {\n\tborder-top-right-radius: 3px;\n}\n.ui-corner-all,\n.ui-corner-bottom,\n.ui-corner-left,\n.ui-corner-bl {\n\tborder-bottom-left-radius: 3px;\n}\n.ui-corner-all,\n.ui-corner-bottom,\n.ui-corner-right,\n.ui-corner-br {\n\tborder-bottom-right-radius: 3px;\n}\n\n/* Overlays */\n.ui-widget-overlay {\n\tbackground: #aaaaaa;\n\topacity: .003;\n\t-ms-filter: \"alpha(opacity=.3)\"; /* support: IE8 */\n}\n.ui-widget-shadow {\n\t-webkit-box-shadow: 0px 0px 5px #666666;\n\tbox-shadow: 0px 0px 5px #666666;\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/jquery-ui-dist/jquery-ui.css\"],\"names\":[],\"mappings\":\"AAAA;;;;oEAIoE;;AAEpE;mCACmC;AACnC;CACC,aAAa;AACd;AACA;CACC,SAAS;CACT,mBAAmB;CACnB,WAAW;CACX,YAAY;CACZ,gBAAgB;CAChB,UAAU;CACV,kBAAkB;CAClB,UAAU;AACX;AACA;CACC,SAAS;CACT,UAAU;CACV,SAAS;CACT,UAAU;CACV,gBAAgB;CAChB,qBAAqB;CACrB,eAAe;CACf,gBAAgB;AACjB;AACA;;CAEC,WAAW;CACX,cAAc;CACd,yBAAyB;AAC1B;AACA;CACC,WAAW;AACZ;AACA;CACC,WAAW;CACX,YAAY;CACZ,MAAM;CACN,OAAO;CACP,kBAAkB;CAClB,UAAU;CACV,8BAA8B,EAAE,iBAAiB;AAClD;;AAEA;CACC,YAAY;AACb;;;AAGA;mCACmC;AACnC;CACC,0BAA0B;CAC1B,oBAAoB;AACrB;;;AAGA;mCACmC;AACnC;CACC,qBAAqB;CACrB,sBAAsB;CACtB,kBAAkB;CAClB,kBAAkB;CAClB,qBAAqB;CACrB,gBAAgB;CAChB,4BAA4B;AAC7B;;AAEA;CACC,SAAS;CACT,iBAAiB;CACjB,cAAc;AACf;;AAEA;mCACmC;;AAEnC,aAAa;AACb;CACC,eAAe;CACf,MAAM;CACN,OAAO;CACP,WAAW;CACX,YAAY;AACb;AACA;CACC,cAAc;CACd,eAAe;CACf,kBAAkB;CAClB,iBAAiB;CACjB,4BAA4B;CAC5B,eAAe;AAChB;AACA;CACC,kBAAkB;CAClB,aAAa;CACb,cAAc;AACf;AACA;CACC,kBAAkB;CAClB,MAAM;CACN,OAAO;CACP,eAAe;AAChB;AACA;CACC,gBAAgB;CAChB,UAAU;CACV,SAAS;CACT,cAAc;CACd,UAAU;AACX;AACA;CACC,kBAAkB;AACnB;AACA;CACC,SAAS;CACT,eAAe;CACf,6BAA6B;CAC7B,yDAAuG;AACxG;AACA;CACC,kBAAkB;CAClB,yBAAyB;AAC1B;AACA;CACC,aAAa;CACb,SAAS;CACT,YAAY;CACZ,cAAc;CACd,uBAAuB;AACxB;AACA;;CAEC,YAAY;AACb;;AAEA,iBAAiB;AACjB;CACC,kBAAkB;AACnB;AACA;CACC,iBAAiB;AAClB;;AAEA,iBAAiB;AACjB;CACC,kBAAkB;CAClB,MAAM;CACN,SAAS;CACT,UAAU;CACV,cAAc;AACf;;AAEA,kBAAkB;AAClB;CACC,UAAU;CACV,QAAQ;AACT;AACA;CACC,iBAAiB;CACjB,qBAAqB;CACrB,kBAAkB;CAClB,mBAAmB;CACnB,kBAAkB;CAClB,eAAe;CACf,sBAAsB;CACtB,kBAAkB;CAClB,yBAAyB;CACzB,sBAAsB;CACtB,qBAAqB;CACrB,iBAAiB;;CAEjB,sBAAsB;CACtB,iBAAiB;AAClB;;AAEA;;;;;CAKC,qBAAqB;AACtB;;AAEA,4DAA4D;AAC5D;CACC,UAAU;CACV,sBAAsB;CACtB,oBAAoB;CACpB,mBAAmB;AACpB;;AAEA,uCAAuC;AACvC;CACC,cAAc;AACf;;AAEA,2BAA2B;AAC3B;CACC,kBAAkB;CAClB,QAAQ;CACR,SAAS;CACT,gBAAgB;CAChB,iBAAiB;AAClB;;AAEA;CACC,UAAU;CACV,YAAY;CACZ,aAAa;CACb,oBAAoB;CACpB,mBAAmB;;AAEpB;;AAEA;CACC,WAAW;CACX,YAAY;CACZ,cAAc;CACd,mBAAmB;CACnB,iBAAiB;AAClB;;AAEA,gBAAgB;AAChB,4BAA4B;AAC5B;;CAEC,SAAS;CACT,UAAU;AACX;AACA;CACC,sBAAsB;CACtB,qBAAqB;AACtB;AACA;CACC,WAAW;CACX,cAAc;CACd,eAAe;AAChB;AACA;;CAEC,aAAa;AACd;AACA;CACC,cAAc;CACd,WAAW;CACX,WAAW;CACX,aAAa;CACb,gBAAgB;CAChB,gBAAgB;AACjB;AACA;CACC,sBAAsB;AACvB;AACA;CACC,iBAAiB;AAClB;AACA;CACC,cAAc;AACf;AACA;CACC,iBAAiB;AAClB;AACA;CACC,gBAAgB;AACjB;AACA;CACC,kBAAkB;AACnB;AACA;CACC,mBAAmB;AACpB;;AAEA,iCAAiC;AACjC;;CAEC,0CAA0C;CAC1C,UAAU;CACV,2BAA2B;AAC5B;AACA;CACC,uBAAuB;AACxB;;AAEA;CACC,kCAAkC;CAClC,oBAAoB;CACpB,YAAY;AACb;AACA;CACC,WAAW;CACX,YAAY;CACZ,kBAAkB;CAClB,iBAAiB;CACjB,YAAY;AACb;AACA;;CAEC,sBAAsB;CACtB,UAAU;CACV,WAAW;CACX,iBAAiB;CACjB,mBAAmB;AACpB;AACA;CACC,oBAAoB;AACrB;AACA;CACC,WAAW;CACX,oBAAoB;CACpB,aAAa;AACd;AACA;CACC,kBAAkB;CAClB,eAAe;AAChB;AACA;;CAEC,kBAAkB;CAClB,QAAQ;CACR,YAAY;CACZ,aAAa;AACd;AACA;;CAEC,QAAQ;AACT;AACA;CACC,SAAS;AACV;AACA;CACC,UAAU;AACX;AACA;CACC,SAAS;AACV;AACA;CACC,UAAU;AACX;AACA;;CAEC,cAAc;CACd,kBAAkB;CAClB,SAAS;CACT,iBAAiB;CACjB,QAAQ;CACR,gBAAgB;AACjB;AACA;CACC,eAAe;CACf,kBAAkB;CAClB,kBAAkB;AACnB;AACA;CACC,cAAc;CACd,aAAa;AACd;AACA;;CAEC,UAAU;AACX;AACA;CACC,WAAW;CACX,eAAe;CACf,yBAAyB;CACzB,gBAAgB;AACjB;AACA;CACC,kBAAkB;CAClB,kBAAkB;CAClB,iBAAiB;CACjB,SAAS;AACV;AACA;CACC,SAAS;CACT,YAAY;AACb;AACA;;CAEC,cAAc;CACd,aAAa;CACb,iBAAiB;CACjB,qBAAqB;AACtB;AACA;CACC,sBAAsB;CACtB,kBAAkB;CAClB,eAAe;CACf,cAAc;CACd,eAAe;CACf,gBAAgB;AACjB;AACA;CACC,YAAY;CACZ,sBAAsB;CACtB,eAAe;CACf,4BAA4B;CAC5B,WAAW;CACX,iBAAiB;AAClB;AACA;CACC,WAAW;AACZ;;AAEA,4BAA4B;AAC5B;CACC,WAAW;AACZ;AACA;CACC,WAAW;AACZ;AACA;CACC,UAAU;CACV,mBAAmB;AACpB;AACA;CACC,UAAU;AACX;AACA;CACC,YAAY;AACb;AACA;CACC,UAAU;AACX;AACA;;CAEC,oBAAoB;AACrB;AACA;CACC,WAAW;AACZ;AACA;CACC,WAAW;CACX,WAAW;CACX,YAAY;AACb;;AAEA,gBAAgB;AAChB;CACC,cAAc;AACf;AACA;CACC,UAAU;CACV,UAAU;AACX;AACA;CACC,SAAS;CACT,WAAW;AACZ;AACA;CACC,UAAU;CACV,UAAU;AACX;AACA;CACC,SAAS;CACT,WAAW;AACZ;AACA;CACC,YAAY;AACb;AACA;CACC,WAAW;AACZ;AACA;;CAEC,YAAY;AACb;AACA;;CAEC,qBAAqB;CACrB,sBAAsB;AACvB;;AAEA,UAAU;AACV;CACC,cAAc;CACd,qBAAqB;CACrB,gBAAgB;CAChB,4BAA4B;CAC5B,UAAU;CACV,SAAS;AACV;AACA;CACC,kBAAkB;CAClB,MAAM;CACN,OAAO;CACP,aAAa;CACb,UAAU;AACX;AACA;CACC,iBAAiB;CACjB,kBAAkB;AACnB;AACA;CACC,WAAW;CACX,cAAc;CACd,mBAAmB;CACnB,UAAU;CACV,gBAAgB;CAChB,uBAAuB;AACxB;AACA;CACC,kBAAkB;CAClB,WAAW;CACX,QAAQ;CACR,WAAW;CACX,mBAAmB;CACnB,YAAY;CACZ,YAAY;AACb;AACA;CACC,kBAAkB;CAClB,SAAS;CACT,iBAAiB;CACjB,gBAAgB;CAChB,cAAc;AACf;AACA;CACC,gBAAgB;CAChB,uBAAuB;CACvB,sBAAsB;CACtB,gBAAgB;CAChB,2BAA2B;AAC5B;AACA;CACC,YAAY;AACb;AACA;CACC,wBAAwB;CACxB,eAAe;AAChB;AACA;CACC,WAAW;CACX,MAAM;AACP;AACA;CACC,UAAU;CACV,QAAQ;AACT;AACA;CACC,WAAW;CACX,SAAS;AACV;AACA;CACC,UAAU;CACV,OAAO;AACR;AACA;;;;CAIC,UAAU;CACV,WAAW;AACZ;AACA;CACC,QAAQ;CACR,SAAS;AACV;AACA;CACC,OAAO;CACP,SAAS;AACV;AACA;CACC,QAAQ;CACR,MAAM;AACP;AACA;CACC,OAAO;CACP,MAAM;AACP;AACA;CACC,YAAY;AACb;AACA;CACC,sBAAsB;CACtB,kBAAkB;AACnB;AACA;CACC,kBAAkB;AACnB;AACA;CACC,kBAAkB;CAClB,gBAAgB;CAChB,cAAc;CACd,sBAAsB;CACtB,kBAAkB;AACnB;AACA;;CAEC,aAAa;AACd;AACA;CACC,gBAAgB;CAChB,WAAW;CACX,WAAW;CACX,SAAS;CACT,OAAO;AACR;AACA;CACC,gBAAgB;CAChB,WAAW;CACX,WAAW;CACX,YAAY;CACZ,OAAO;AACR;AACA;CACC,gBAAgB;CAChB,UAAU;CACV,WAAW;CACX,MAAM;CACN,YAAY;AACb;AACA;CACC,gBAAgB;CAChB,UAAU;CACV,UAAU;CACV,MAAM;CACN,YAAY;AACb;AACA;CACC,iBAAiB;CACjB,WAAW;CACX,YAAY;CACZ,UAAU;CACV,WAAW;AACZ;AACA;CACC,iBAAiB;CACjB,UAAU;CACV,WAAW;CACX,UAAU;CACV,YAAY;AACb;AACA;CACC,iBAAiB;CACjB,UAAU;CACV,WAAW;CACX,UAAU;CACV,SAAS;AACV;AACA;CACC,iBAAiB;CACjB,UAAU;CACV,WAAW;CACX,WAAW;CACX,SAAS;AACV;AACA;CACC,WAAW;CACX,gBAAgB;CAChB,gBAAgB;AACjB;AACA;CACC,YAAY;CACZ,YAAY;AACb;AACA;CACC,mDAAyzE;CACzzE,YAAY;CACZ,+BAA+B,EAAE,iBAAiB;CAClD,aAAa;AACd;AACA;CACC,sBAAsB;AACvB;AACA;CACC,sBAAsB;CACtB,kBAAkB;AACnB;AACA;CACC,kBAAkB;CAClB,YAAY;CACZ,wBAAwB;AACzB;AACA;CACC,UAAU;CACV,SAAS;CACT,kBAAkB;CAClB,MAAM;CACN,OAAO;CACP,aAAa;AACd;AACA;CACC,cAAc;CACd,kBAAkB;CAClB,mBAAmB;AACpB;AACA;CACC,cAAc;CACd,iBAAiB;CACjB,gBAAgB;CAChB,kBAAkB;CAClB,mBAAmB;CACnB,YAAY;CACZ,SAAS;AACV;AACA;CACC,cAAc;AACf;AACA;CACC,cAAc;CACd,kBAAkB;CAClB,gBAAgB;CAChB,uBAAuB;AACxB;AACA;CACC,gBAAgB;CAChB,mBAAmB;CACnB,WAAW;AACZ;AACA;CACC,YAAY;CACZ,aAAa;AACd;AACA;CACC,kBAAkB;CAClB,gBAAgB;AACjB;AACA;CACC,kBAAkB;CAClB,UAAU;CACV,YAAY;CACZ,aAAa;CACb,eAAe;CACf,sBAAsB;CACtB,kBAAkB;AACnB;AACA;CACC,kBAAkB;CAClB,UAAU;CACV,eAAe;CACf,cAAc;CACd,SAAS;CACT,wBAAwB;AACzB;;AAEA,6BAA6B;AAC7B;;CAEC,eAAe;AAChB;;AAEA;CACC,YAAY;AACb;AACA;CACC,UAAU;CACV,kBAAkB;AACnB;AACA;CACC,MAAM;CACN,YAAY;AACb;AACA;CACC,OAAO;AACR;AACA;CACC,QAAQ;AACT;;AAEA;CACC,WAAW;CACX,aAAa;AACd;AACA;CACC,WAAW;CACX,cAAc;CACd,oBAAoB;AACrB;AACA;CACC,OAAO;CACP,WAAW;AACZ;AACA;CACC,SAAS;AACV;AACA;CACC,MAAM;AACP;AACA;CACC,sBAAsB;CACtB,kBAAkB;AACnB;AACA;CACC,kBAAkB;CAClB,qBAAqB;CACrB,gBAAgB;CAChB,UAAU;CACV,sBAAsB;AACvB;AACA;CACC,YAAY;CACZ,gBAAgB;CAChB,cAAc;CACd,iBAAiB;CACjB,cAAc;CACd,sBAAsB;CACtB,iBAAiB;CACjB,iBAAiB;AAClB;AACA;CACC,YAAY;CACZ,WAAW;CACX,eAAe;CACf,UAAU;CACV,SAAS;CACT,kBAAkB;CAClB,kBAAkB;CAClB,eAAe;CACf,cAAc;CACd,gBAAgB;CAChB,QAAQ;AACT;AACA,+DAA+D;AAC/D;CACC,sBAAsB;CACtB,yBAAyB;CACzB,wBAAwB;AACzB;AACA;CACC,MAAM;AACP;AACA;CACC,SAAS;AACV;AACA;CACC,kBAAkB,CAAC,uIAAuI;CAC1J,aAAa;AACd;AACA;CACC,SAAS;CACT,oBAAoB;AACrB;AACA;CACC,gBAAgB;CAChB,WAAW;CACX,kBAAkB;CAClB,MAAM;CACN,oBAAoB;CACpB,sBAAsB;CACtB,UAAU;CACV,mBAAmB;AACpB;AACA;CACC,WAAW;CACX,iBAAiB;CACjB,qBAAqB;AACtB;AACA;CACC,mBAAmB;CACnB,mBAAmB;AACpB;AACA;;;CAGC,YAAY;AACb;AACA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\",\"sourcesContent\":[\"/*! jQuery UI - v1.13.3 - 2024-04-26\\n* https://jqueryui.com\\n* Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css\\n* To view and modify this theme, visit https://jqueryui.com/themeroller/?bgShadowXPos=&bgOverlayXPos=&bgErrorXPos=&bgHighlightXPos=&bgContentXPos=&bgHeaderXPos=&bgActiveXPos=&bgHoverXPos=&bgDefaultXPos=&bgShadowYPos=&bgOverlayYPos=&bgErrorYPos=&bgHighlightYPos=&bgContentYPos=&bgHeaderYPos=&bgActiveYPos=&bgHoverYPos=&bgDefaultYPos=&bgShadowRepeat=&bgOverlayRepeat=&bgErrorRepeat=&bgHighlightRepeat=&bgContentRepeat=&bgHeaderRepeat=&bgActiveRepeat=&bgHoverRepeat=&bgDefaultRepeat=&iconsHover=url(%22images%2Fui-icons_555555_256x240.png%22)&iconsHighlight=url(%22images%2Fui-icons_777620_256x240.png%22)&iconsHeader=url(%22images%2Fui-icons_444444_256x240.png%22)&iconsError=url(%22images%2Fui-icons_cc0000_256x240.png%22)&iconsDefault=url(%22images%2Fui-icons_777777_256x240.png%22)&iconsContent=url(%22images%2Fui-icons_444444_256x240.png%22)&iconsActive=url(%22images%2Fui-icons_ffffff_256x240.png%22)&bgImgUrlShadow=&bgImgUrlOverlay=&bgImgUrlHover=&bgImgUrlHighlight=&bgImgUrlHeader=&bgImgUrlError=&bgImgUrlDefault=&bgImgUrlContent=&bgImgUrlActive=&opacityFilterShadow=%22alpha(opacity%3D30)%22&opacityFilterOverlay=%22alpha(opacity%3D30)%22&opacityShadowPerc=30&opacityOverlayPerc=30&iconColorHover=%23555555&iconColorHighlight=%23777620&iconColorHeader=%23444444&iconColorError=%23cc0000&iconColorDefault=%23777777&iconColorContent=%23444444&iconColorActive=%23ffffff&bgImgOpacityShadow=0&bgImgOpacityOverlay=0&bgImgOpacityError=95&bgImgOpacityHighlight=55&bgImgOpacityContent=75&bgImgOpacityHeader=75&bgImgOpacityActive=65&bgImgOpacityHover=75&bgImgOpacityDefault=75&bgTextureShadow=flat&bgTextureOverlay=flat&bgTextureError=flat&bgTextureHighlight=flat&bgTextureContent=flat&bgTextureHeader=flat&bgTextureActive=flat&bgTextureHover=flat&bgTextureDefault=flat&cornerRadius=3px&fwDefault=normal&ffDefault=Arial%2CHelvetica%2Csans-serif&fsDefault=1em&cornerRadiusShadow=8px&thicknessShadow=5px&offsetLeftShadow=0px&offsetTopShadow=0px&opacityShadow=.3&bgColorShadow=%23666666&opacityOverlay=.3&bgColorOverlay=%23aaaaaa&fcError=%235f3f3f&borderColorError=%23f1a899&bgColorError=%23fddfdf&fcHighlight=%23777620&borderColorHighlight=%23dad55e&bgColorHighlight=%23fffa90&fcContent=%23333333&borderColorContent=%23dddddd&bgColorContent=%23ffffff&fcHeader=%23333333&borderColorHeader=%23dddddd&bgColorHeader=%23e9e9e9&fcActive=%23ffffff&borderColorActive=%23003eff&bgColorActive=%23007fff&fcHover=%232b2b2b&borderColorHover=%23cccccc&bgColorHover=%23ededed&fcDefault=%23454545&borderColorDefault=%23c5c5c5&bgColorDefault=%23f6f6f6\\n* Copyright OpenJS Foundation and other contributors; Licensed MIT */\\n\\n/* Layout helpers\\n----------------------------------*/\\n.ui-helper-hidden {\\n\\tdisplay: none;\\n}\\n.ui-helper-hidden-accessible {\\n\\tborder: 0;\\n\\tclip: rect(0 0 0 0);\\n\\theight: 1px;\\n\\tmargin: -1px;\\n\\toverflow: hidden;\\n\\tpadding: 0;\\n\\tposition: absolute;\\n\\twidth: 1px;\\n}\\n.ui-helper-reset {\\n\\tmargin: 0;\\n\\tpadding: 0;\\n\\tborder: 0;\\n\\toutline: 0;\\n\\tline-height: 1.3;\\n\\ttext-decoration: none;\\n\\tfont-size: 100%;\\n\\tlist-style: none;\\n}\\n.ui-helper-clearfix:before,\\n.ui-helper-clearfix:after {\\n\\tcontent: \\\"\\\";\\n\\tdisplay: table;\\n\\tborder-collapse: collapse;\\n}\\n.ui-helper-clearfix:after {\\n\\tclear: both;\\n}\\n.ui-helper-zfix {\\n\\twidth: 100%;\\n\\theight: 100%;\\n\\ttop: 0;\\n\\tleft: 0;\\n\\tposition: absolute;\\n\\topacity: 0;\\n\\t-ms-filter: \\\"alpha(opacity=0)\\\"; /* support: IE8 */\\n}\\n\\n.ui-front {\\n\\tz-index: 100;\\n}\\n\\n\\n/* Interaction Cues\\n----------------------------------*/\\n.ui-state-disabled {\\n\\tcursor: default !important;\\n\\tpointer-events: none;\\n}\\n\\n\\n/* Icons\\n----------------------------------*/\\n.ui-icon {\\n\\tdisplay: inline-block;\\n\\tvertical-align: middle;\\n\\tmargin-top: -.25em;\\n\\tposition: relative;\\n\\ttext-indent: -99999px;\\n\\toverflow: hidden;\\n\\tbackground-repeat: no-repeat;\\n}\\n\\n.ui-widget-icon-block {\\n\\tleft: 50%;\\n\\tmargin-left: -8px;\\n\\tdisplay: block;\\n}\\n\\n/* Misc visuals\\n----------------------------------*/\\n\\n/* Overlays */\\n.ui-widget-overlay {\\n\\tposition: fixed;\\n\\ttop: 0;\\n\\tleft: 0;\\n\\twidth: 100%;\\n\\theight: 100%;\\n}\\n.ui-accordion .ui-accordion-header {\\n\\tdisplay: block;\\n\\tcursor: pointer;\\n\\tposition: relative;\\n\\tmargin: 2px 0 0 0;\\n\\tpadding: .5em .5em .5em .7em;\\n\\tfont-size: 100%;\\n}\\n.ui-accordion .ui-accordion-content {\\n\\tpadding: 1em 2.2em;\\n\\tborder-top: 0;\\n\\toverflow: auto;\\n}\\n.ui-autocomplete {\\n\\tposition: absolute;\\n\\ttop: 0;\\n\\tleft: 0;\\n\\tcursor: default;\\n}\\n.ui-menu {\\n\\tlist-style: none;\\n\\tpadding: 0;\\n\\tmargin: 0;\\n\\tdisplay: block;\\n\\toutline: 0;\\n}\\n.ui-menu .ui-menu {\\n\\tposition: absolute;\\n}\\n.ui-menu .ui-menu-item {\\n\\tmargin: 0;\\n\\tcursor: pointer;\\n\\t/* support: IE10, see #8844 */\\n\\tlist-style-image: url(\\\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\\\");\\n}\\n.ui-menu .ui-menu-item-wrapper {\\n\\tposition: relative;\\n\\tpadding: 3px 1em 3px .4em;\\n}\\n.ui-menu .ui-menu-divider {\\n\\tmargin: 5px 0;\\n\\theight: 0;\\n\\tfont-size: 0;\\n\\tline-height: 0;\\n\\tborder-width: 1px 0 0 0;\\n}\\n.ui-menu .ui-state-focus,\\n.ui-menu .ui-state-active {\\n\\tmargin: -1px;\\n}\\n\\n/* icon support */\\n.ui-menu-icons {\\n\\tposition: relative;\\n}\\n.ui-menu-icons .ui-menu-item-wrapper {\\n\\tpadding-left: 2em;\\n}\\n\\n/* left-aligned */\\n.ui-menu .ui-icon {\\n\\tposition: absolute;\\n\\ttop: 0;\\n\\tbottom: 0;\\n\\tleft: .2em;\\n\\tmargin: auto 0;\\n}\\n\\n/* right-aligned */\\n.ui-menu .ui-menu-icon {\\n\\tleft: auto;\\n\\tright: 0;\\n}\\n.ui-button {\\n\\tpadding: .4em 1em;\\n\\tdisplay: inline-block;\\n\\tposition: relative;\\n\\tline-height: normal;\\n\\tmargin-right: .1em;\\n\\tcursor: pointer;\\n\\tvertical-align: middle;\\n\\ttext-align: center;\\n\\t-webkit-user-select: none;\\n\\t-moz-user-select: none;\\n\\t-ms-user-select: none;\\n\\tuser-select: none;\\n\\n\\t/* Support: IE <= 11 */\\n\\toverflow: visible;\\n}\\n\\n.ui-button,\\n.ui-button:link,\\n.ui-button:visited,\\n.ui-button:hover,\\n.ui-button:active {\\n\\ttext-decoration: none;\\n}\\n\\n/* to make room for the icon, a width needs to be set here */\\n.ui-button-icon-only {\\n\\twidth: 2em;\\n\\tbox-sizing: border-box;\\n\\ttext-indent: -9999px;\\n\\twhite-space: nowrap;\\n}\\n\\n/* no icon support for input elements */\\ninput.ui-button.ui-button-icon-only {\\n\\ttext-indent: 0;\\n}\\n\\n/* button icon element(s) */\\n.ui-button-icon-only .ui-icon {\\n\\tposition: absolute;\\n\\ttop: 50%;\\n\\tleft: 50%;\\n\\tmargin-top: -8px;\\n\\tmargin-left: -8px;\\n}\\n\\n.ui-button.ui-icon-notext .ui-icon {\\n\\tpadding: 0;\\n\\twidth: 2.1em;\\n\\theight: 2.1em;\\n\\ttext-indent: -9999px;\\n\\twhite-space: nowrap;\\n\\n}\\n\\ninput.ui-button.ui-icon-notext .ui-icon {\\n\\twidth: auto;\\n\\theight: auto;\\n\\ttext-indent: 0;\\n\\twhite-space: normal;\\n\\tpadding: .4em 1em;\\n}\\n\\n/* workarounds */\\n/* Support: Firefox 5 - 40 */\\ninput.ui-button::-moz-focus-inner,\\nbutton.ui-button::-moz-focus-inner {\\n\\tborder: 0;\\n\\tpadding: 0;\\n}\\n.ui-controlgroup {\\n\\tvertical-align: middle;\\n\\tdisplay: inline-block;\\n}\\n.ui-controlgroup > .ui-controlgroup-item {\\n\\tfloat: left;\\n\\tmargin-left: 0;\\n\\tmargin-right: 0;\\n}\\n.ui-controlgroup > .ui-controlgroup-item:focus,\\n.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus {\\n\\tz-index: 9999;\\n}\\n.ui-controlgroup-vertical > .ui-controlgroup-item {\\n\\tdisplay: block;\\n\\tfloat: none;\\n\\twidth: 100%;\\n\\tmargin-top: 0;\\n\\tmargin-bottom: 0;\\n\\ttext-align: left;\\n}\\n.ui-controlgroup-vertical .ui-controlgroup-item {\\n\\tbox-sizing: border-box;\\n}\\n.ui-controlgroup .ui-controlgroup-label {\\n\\tpadding: .4em 1em;\\n}\\n.ui-controlgroup .ui-controlgroup-label span {\\n\\tfont-size: 80%;\\n}\\n.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item {\\n\\tborder-left: none;\\n}\\n.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item {\\n\\tborder-top: none;\\n}\\n.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content {\\n\\tborder-right: none;\\n}\\n.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content {\\n\\tborder-bottom: none;\\n}\\n\\n/* Spinner specific style fixes */\\n.ui-controlgroup-vertical .ui-spinner-input {\\n\\n\\t/* Support: IE8 only, Android < 4.4 only */\\n\\twidth: 75%;\\n\\twidth: calc( 100% - 2.4em );\\n}\\n.ui-controlgroup-vertical .ui-spinner .ui-spinner-up {\\n\\tborder-top-style: solid;\\n}\\n\\n.ui-checkboxradio-label .ui-icon-background {\\n\\tbox-shadow: inset 1px 1px 1px #ccc;\\n\\tborder-radius: .12em;\\n\\tborder: none;\\n}\\n.ui-checkboxradio-radio-label .ui-icon-background {\\n\\twidth: 16px;\\n\\theight: 16px;\\n\\tborder-radius: 1em;\\n\\toverflow: visible;\\n\\tborder: none;\\n}\\n.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,\\n.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon {\\n\\tbackground-image: none;\\n\\twidth: 8px;\\n\\theight: 8px;\\n\\tborder-width: 4px;\\n\\tborder-style: solid;\\n}\\n.ui-checkboxradio-disabled {\\n\\tpointer-events: none;\\n}\\n.ui-datepicker {\\n\\twidth: 17em;\\n\\tpadding: .2em .2em 0;\\n\\tdisplay: none;\\n}\\n.ui-datepicker .ui-datepicker-header {\\n\\tposition: relative;\\n\\tpadding: .2em 0;\\n}\\n.ui-datepicker .ui-datepicker-prev,\\n.ui-datepicker .ui-datepicker-next {\\n\\tposition: absolute;\\n\\ttop: 2px;\\n\\twidth: 1.8em;\\n\\theight: 1.8em;\\n}\\n.ui-datepicker .ui-datepicker-prev-hover,\\n.ui-datepicker .ui-datepicker-next-hover {\\n\\ttop: 1px;\\n}\\n.ui-datepicker .ui-datepicker-prev {\\n\\tleft: 2px;\\n}\\n.ui-datepicker .ui-datepicker-next {\\n\\tright: 2px;\\n}\\n.ui-datepicker .ui-datepicker-prev-hover {\\n\\tleft: 1px;\\n}\\n.ui-datepicker .ui-datepicker-next-hover {\\n\\tright: 1px;\\n}\\n.ui-datepicker .ui-datepicker-prev span,\\n.ui-datepicker .ui-datepicker-next span {\\n\\tdisplay: block;\\n\\tposition: absolute;\\n\\tleft: 50%;\\n\\tmargin-left: -8px;\\n\\ttop: 50%;\\n\\tmargin-top: -8px;\\n}\\n.ui-datepicker .ui-datepicker-title {\\n\\tmargin: 0 2.3em;\\n\\tline-height: 1.8em;\\n\\ttext-align: center;\\n}\\n.ui-datepicker .ui-datepicker-title select {\\n\\tfont-size: 1em;\\n\\tmargin: 1px 0;\\n}\\n.ui-datepicker select.ui-datepicker-month,\\n.ui-datepicker select.ui-datepicker-year {\\n\\twidth: 45%;\\n}\\n.ui-datepicker table {\\n\\twidth: 100%;\\n\\tfont-size: .9em;\\n\\tborder-collapse: collapse;\\n\\tmargin: 0 0 .4em;\\n}\\n.ui-datepicker th {\\n\\tpadding: .7em .3em;\\n\\ttext-align: center;\\n\\tfont-weight: bold;\\n\\tborder: 0;\\n}\\n.ui-datepicker td {\\n\\tborder: 0;\\n\\tpadding: 1px;\\n}\\n.ui-datepicker td span,\\n.ui-datepicker td a {\\n\\tdisplay: block;\\n\\tpadding: .2em;\\n\\ttext-align: right;\\n\\ttext-decoration: none;\\n}\\n.ui-datepicker .ui-datepicker-buttonpane {\\n\\tbackground-image: none;\\n\\tmargin: .7em 0 0 0;\\n\\tpadding: 0 .2em;\\n\\tborder-left: 0;\\n\\tborder-right: 0;\\n\\tborder-bottom: 0;\\n}\\n.ui-datepicker .ui-datepicker-buttonpane button {\\n\\tfloat: right;\\n\\tmargin: .5em .2em .4em;\\n\\tcursor: pointer;\\n\\tpadding: .2em .6em .3em .6em;\\n\\twidth: auto;\\n\\toverflow: visible;\\n}\\n.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current {\\n\\tfloat: left;\\n}\\n\\n/* with multiple calendars */\\n.ui-datepicker.ui-datepicker-multi {\\n\\twidth: auto;\\n}\\n.ui-datepicker-multi .ui-datepicker-group {\\n\\tfloat: left;\\n}\\n.ui-datepicker-multi .ui-datepicker-group table {\\n\\twidth: 95%;\\n\\tmargin: 0 auto .4em;\\n}\\n.ui-datepicker-multi-2 .ui-datepicker-group {\\n\\twidth: 50%;\\n}\\n.ui-datepicker-multi-3 .ui-datepicker-group {\\n\\twidth: 33.3%;\\n}\\n.ui-datepicker-multi-4 .ui-datepicker-group {\\n\\twidth: 25%;\\n}\\n.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,\\n.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header {\\n\\tborder-left-width: 0;\\n}\\n.ui-datepicker-multi .ui-datepicker-buttonpane {\\n\\tclear: left;\\n}\\n.ui-datepicker-row-break {\\n\\tclear: both;\\n\\twidth: 100%;\\n\\tfont-size: 0;\\n}\\n\\n/* RTL support */\\n.ui-datepicker-rtl {\\n\\tdirection: rtl;\\n}\\n.ui-datepicker-rtl .ui-datepicker-prev {\\n\\tright: 2px;\\n\\tleft: auto;\\n}\\n.ui-datepicker-rtl .ui-datepicker-next {\\n\\tleft: 2px;\\n\\tright: auto;\\n}\\n.ui-datepicker-rtl .ui-datepicker-prev:hover {\\n\\tright: 1px;\\n\\tleft: auto;\\n}\\n.ui-datepicker-rtl .ui-datepicker-next:hover {\\n\\tleft: 1px;\\n\\tright: auto;\\n}\\n.ui-datepicker-rtl .ui-datepicker-buttonpane {\\n\\tclear: right;\\n}\\n.ui-datepicker-rtl .ui-datepicker-buttonpane button {\\n\\tfloat: left;\\n}\\n.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,\\n.ui-datepicker-rtl .ui-datepicker-group {\\n\\tfloat: right;\\n}\\n.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,\\n.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header {\\n\\tborder-right-width: 0;\\n\\tborder-left-width: 1px;\\n}\\n\\n/* Icons */\\n.ui-datepicker .ui-icon {\\n\\tdisplay: block;\\n\\ttext-indent: -99999px;\\n\\toverflow: hidden;\\n\\tbackground-repeat: no-repeat;\\n\\tleft: .5em;\\n\\ttop: .3em;\\n}\\n.ui-dialog {\\n\\tposition: absolute;\\n\\ttop: 0;\\n\\tleft: 0;\\n\\tpadding: .2em;\\n\\toutline: 0;\\n}\\n.ui-dialog .ui-dialog-titlebar {\\n\\tpadding: .4em 1em;\\n\\tposition: relative;\\n}\\n.ui-dialog .ui-dialog-title {\\n\\tfloat: left;\\n\\tmargin: .1em 0;\\n\\twhite-space: nowrap;\\n\\twidth: 90%;\\n\\toverflow: hidden;\\n\\ttext-overflow: ellipsis;\\n}\\n.ui-dialog .ui-dialog-titlebar-close {\\n\\tposition: absolute;\\n\\tright: .3em;\\n\\ttop: 50%;\\n\\twidth: 20px;\\n\\tmargin: -10px 0 0 0;\\n\\tpadding: 1px;\\n\\theight: 20px;\\n}\\n.ui-dialog .ui-dialog-content {\\n\\tposition: relative;\\n\\tborder: 0;\\n\\tpadding: .5em 1em;\\n\\tbackground: none;\\n\\toverflow: auto;\\n}\\n.ui-dialog .ui-dialog-buttonpane {\\n\\ttext-align: left;\\n\\tborder-width: 1px 0 0 0;\\n\\tbackground-image: none;\\n\\tmargin-top: .5em;\\n\\tpadding: .3em 1em .5em .4em;\\n}\\n.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {\\n\\tfloat: right;\\n}\\n.ui-dialog .ui-dialog-buttonpane button {\\n\\tmargin: .5em .4em .5em 0;\\n\\tcursor: pointer;\\n}\\n.ui-dialog .ui-resizable-n {\\n\\theight: 2px;\\n\\ttop: 0;\\n}\\n.ui-dialog .ui-resizable-e {\\n\\twidth: 2px;\\n\\tright: 0;\\n}\\n.ui-dialog .ui-resizable-s {\\n\\theight: 2px;\\n\\tbottom: 0;\\n}\\n.ui-dialog .ui-resizable-w {\\n\\twidth: 2px;\\n\\tleft: 0;\\n}\\n.ui-dialog .ui-resizable-se,\\n.ui-dialog .ui-resizable-sw,\\n.ui-dialog .ui-resizable-ne,\\n.ui-dialog .ui-resizable-nw {\\n\\twidth: 7px;\\n\\theight: 7px;\\n}\\n.ui-dialog .ui-resizable-se {\\n\\tright: 0;\\n\\tbottom: 0;\\n}\\n.ui-dialog .ui-resizable-sw {\\n\\tleft: 0;\\n\\tbottom: 0;\\n}\\n.ui-dialog .ui-resizable-ne {\\n\\tright: 0;\\n\\ttop: 0;\\n}\\n.ui-dialog .ui-resizable-nw {\\n\\tleft: 0;\\n\\ttop: 0;\\n}\\n.ui-draggable .ui-dialog-titlebar {\\n\\tcursor: move;\\n}\\n.ui-draggable-handle {\\n\\t-ms-touch-action: none;\\n\\ttouch-action: none;\\n}\\n.ui-resizable {\\n\\tposition: relative;\\n}\\n.ui-resizable-handle {\\n\\tposition: absolute;\\n\\tfont-size: 0.1px;\\n\\tdisplay: block;\\n\\t-ms-touch-action: none;\\n\\ttouch-action: none;\\n}\\n.ui-resizable-disabled .ui-resizable-handle,\\n.ui-resizable-autohide .ui-resizable-handle {\\n\\tdisplay: none;\\n}\\n.ui-resizable-n {\\n\\tcursor: n-resize;\\n\\theight: 7px;\\n\\twidth: 100%;\\n\\ttop: -5px;\\n\\tleft: 0;\\n}\\n.ui-resizable-s {\\n\\tcursor: s-resize;\\n\\theight: 7px;\\n\\twidth: 100%;\\n\\tbottom: -5px;\\n\\tleft: 0;\\n}\\n.ui-resizable-e {\\n\\tcursor: e-resize;\\n\\twidth: 7px;\\n\\tright: -5px;\\n\\ttop: 0;\\n\\theight: 100%;\\n}\\n.ui-resizable-w {\\n\\tcursor: w-resize;\\n\\twidth: 7px;\\n\\tleft: -5px;\\n\\ttop: 0;\\n\\theight: 100%;\\n}\\n.ui-resizable-se {\\n\\tcursor: se-resize;\\n\\twidth: 12px;\\n\\theight: 12px;\\n\\tright: 1px;\\n\\tbottom: 1px;\\n}\\n.ui-resizable-sw {\\n\\tcursor: sw-resize;\\n\\twidth: 9px;\\n\\theight: 9px;\\n\\tleft: -5px;\\n\\tbottom: -5px;\\n}\\n.ui-resizable-nw {\\n\\tcursor: nw-resize;\\n\\twidth: 9px;\\n\\theight: 9px;\\n\\tleft: -5px;\\n\\ttop: -5px;\\n}\\n.ui-resizable-ne {\\n\\tcursor: ne-resize;\\n\\twidth: 9px;\\n\\theight: 9px;\\n\\tright: -5px;\\n\\ttop: -5px;\\n}\\n.ui-progressbar {\\n\\theight: 2em;\\n\\ttext-align: left;\\n\\toverflow: hidden;\\n}\\n.ui-progressbar .ui-progressbar-value {\\n\\tmargin: -1px;\\n\\theight: 100%;\\n}\\n.ui-progressbar .ui-progressbar-overlay {\\n\\tbackground: url(\\\"data:image/gif;base64,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\\\");\\n\\theight: 100%;\\n\\t-ms-filter: \\\"alpha(opacity=25)\\\"; /* support: IE8 */\\n\\topacity: 0.25;\\n}\\n.ui-progressbar-indeterminate .ui-progressbar-value {\\n\\tbackground-image: none;\\n}\\n.ui-selectable {\\n\\t-ms-touch-action: none;\\n\\ttouch-action: none;\\n}\\n.ui-selectable-helper {\\n\\tposition: absolute;\\n\\tz-index: 100;\\n\\tborder: 1px dotted black;\\n}\\n.ui-selectmenu-menu {\\n\\tpadding: 0;\\n\\tmargin: 0;\\n\\tposition: absolute;\\n\\ttop: 0;\\n\\tleft: 0;\\n\\tdisplay: none;\\n}\\n.ui-selectmenu-menu .ui-menu {\\n\\toverflow: auto;\\n\\toverflow-x: hidden;\\n\\tpadding-bottom: 1px;\\n}\\n.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup {\\n\\tfont-size: 1em;\\n\\tfont-weight: bold;\\n\\tline-height: 1.5;\\n\\tpadding: 2px 0.4em;\\n\\tmargin: 0.5em 0 0 0;\\n\\theight: auto;\\n\\tborder: 0;\\n}\\n.ui-selectmenu-open {\\n\\tdisplay: block;\\n}\\n.ui-selectmenu-text {\\n\\tdisplay: block;\\n\\tmargin-right: 20px;\\n\\toverflow: hidden;\\n\\ttext-overflow: ellipsis;\\n}\\n.ui-selectmenu-button.ui-button {\\n\\ttext-align: left;\\n\\twhite-space: nowrap;\\n\\twidth: 14em;\\n}\\n.ui-selectmenu-icon.ui-icon {\\n\\tfloat: right;\\n\\tmargin-top: 0;\\n}\\n.ui-slider {\\n\\tposition: relative;\\n\\ttext-align: left;\\n}\\n.ui-slider .ui-slider-handle {\\n\\tposition: absolute;\\n\\tz-index: 2;\\n\\twidth: 1.2em;\\n\\theight: 1.2em;\\n\\tcursor: pointer;\\n\\t-ms-touch-action: none;\\n\\ttouch-action: none;\\n}\\n.ui-slider .ui-slider-range {\\n\\tposition: absolute;\\n\\tz-index: 1;\\n\\tfont-size: .7em;\\n\\tdisplay: block;\\n\\tborder: 0;\\n\\tbackground-position: 0 0;\\n}\\n\\n/* support: IE8 - See #6727 */\\n.ui-slider.ui-state-disabled .ui-slider-handle,\\n.ui-slider.ui-state-disabled .ui-slider-range {\\n\\tfilter: inherit;\\n}\\n\\n.ui-slider-horizontal {\\n\\theight: .8em;\\n}\\n.ui-slider-horizontal .ui-slider-handle {\\n\\ttop: -.3em;\\n\\tmargin-left: -.6em;\\n}\\n.ui-slider-horizontal .ui-slider-range {\\n\\ttop: 0;\\n\\theight: 100%;\\n}\\n.ui-slider-horizontal .ui-slider-range-min {\\n\\tleft: 0;\\n}\\n.ui-slider-horizontal .ui-slider-range-max {\\n\\tright: 0;\\n}\\n\\n.ui-slider-vertical {\\n\\twidth: .8em;\\n\\theight: 100px;\\n}\\n.ui-slider-vertical .ui-slider-handle {\\n\\tleft: -.3em;\\n\\tmargin-left: 0;\\n\\tmargin-bottom: -.6em;\\n}\\n.ui-slider-vertical .ui-slider-range {\\n\\tleft: 0;\\n\\twidth: 100%;\\n}\\n.ui-slider-vertical .ui-slider-range-min {\\n\\tbottom: 0;\\n}\\n.ui-slider-vertical .ui-slider-range-max {\\n\\ttop: 0;\\n}\\n.ui-sortable-handle {\\n\\t-ms-touch-action: none;\\n\\ttouch-action: none;\\n}\\n.ui-spinner {\\n\\tposition: relative;\\n\\tdisplay: inline-block;\\n\\toverflow: hidden;\\n\\tpadding: 0;\\n\\tvertical-align: middle;\\n}\\n.ui-spinner-input {\\n\\tborder: none;\\n\\tbackground: none;\\n\\tcolor: inherit;\\n\\tpadding: .222em 0;\\n\\tmargin: .2em 0;\\n\\tvertical-align: middle;\\n\\tmargin-left: .4em;\\n\\tmargin-right: 2em;\\n}\\n.ui-spinner-button {\\n\\twidth: 1.6em;\\n\\theight: 50%;\\n\\tfont-size: .5em;\\n\\tpadding: 0;\\n\\tmargin: 0;\\n\\ttext-align: center;\\n\\tposition: absolute;\\n\\tcursor: default;\\n\\tdisplay: block;\\n\\toverflow: hidden;\\n\\tright: 0;\\n}\\n/* more specificity required here to override default borders */\\n.ui-spinner a.ui-spinner-button {\\n\\tborder-top-style: none;\\n\\tborder-bottom-style: none;\\n\\tborder-right-style: none;\\n}\\n.ui-spinner-up {\\n\\ttop: 0;\\n}\\n.ui-spinner-down {\\n\\tbottom: 0;\\n}\\n.ui-tabs {\\n\\tposition: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as \\\"fixed\\\") */\\n\\tpadding: .2em;\\n}\\n.ui-tabs .ui-tabs-nav {\\n\\tmargin: 0;\\n\\tpadding: .2em .2em 0;\\n}\\n.ui-tabs .ui-tabs-nav li {\\n\\tlist-style: none;\\n\\tfloat: left;\\n\\tposition: relative;\\n\\ttop: 0;\\n\\tmargin: 1px .2em 0 0;\\n\\tborder-bottom-width: 0;\\n\\tpadding: 0;\\n\\twhite-space: nowrap;\\n}\\n.ui-tabs .ui-tabs-nav .ui-tabs-anchor {\\n\\tfloat: left;\\n\\tpadding: .5em 1em;\\n\\ttext-decoration: none;\\n}\\n.ui-tabs .ui-tabs-nav li.ui-tabs-active {\\n\\tmargin-bottom: -1px;\\n\\tpadding-bottom: 1px;\\n}\\n.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,\\n.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,\\n.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor {\\n\\tcursor: text;\\n}\\n.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor {\\n\\tcursor: pointer;\\n}\\n.ui-tabs .ui-tabs-panel {\\n\\tdisplay: block;\\n\\tborder-width: 0;\\n\\tpadding: 1em 1.4em;\\n\\tbackground: none;\\n}\\n.ui-tooltip {\\n\\tpadding: 8px;\\n\\tposition: absolute;\\n\\tz-index: 9999;\\n\\tmax-width: 300px;\\n}\\nbody .ui-tooltip {\\n\\tborder-width: 2px;\\n}\\n\\n/* Component containers\\n----------------------------------*/\\n.ui-widget {\\n\\tfont-family: Arial,Helvetica,sans-serif;\\n\\tfont-size: 1em;\\n}\\n.ui-widget .ui-widget {\\n\\tfont-size: 1em;\\n}\\n.ui-widget input,\\n.ui-widget select,\\n.ui-widget textarea,\\n.ui-widget button {\\n\\tfont-family: Arial,Helvetica,sans-serif;\\n\\tfont-size: 1em;\\n}\\n.ui-widget.ui-widget-content {\\n\\tborder: 1px solid #c5c5c5;\\n}\\n.ui-widget-content {\\n\\tborder: 1px solid #dddddd;\\n\\tbackground: #ffffff;\\n\\tcolor: #333333;\\n}\\n.ui-widget-content a {\\n\\tcolor: #333333;\\n}\\n.ui-widget-header {\\n\\tborder: 1px solid #dddddd;\\n\\tbackground: #e9e9e9;\\n\\tcolor: #333333;\\n\\tfont-weight: bold;\\n}\\n.ui-widget-header a {\\n\\tcolor: #333333;\\n}\\n\\n/* Interaction states\\n----------------------------------*/\\n.ui-state-default,\\n.ui-widget-content .ui-state-default,\\n.ui-widget-header .ui-state-default,\\n.ui-button,\\n\\n/* We use html here because we need a greater specificity to make sure disabled\\nworks properly when clicked or hovered */\\nhtml .ui-button.ui-state-disabled:hover,\\nhtml .ui-button.ui-state-disabled:active {\\n\\tborder: 1px solid #c5c5c5;\\n\\tbackground: #f6f6f6;\\n\\tfont-weight: normal;\\n\\tcolor: #454545;\\n}\\n.ui-state-default a,\\n.ui-state-default a:link,\\n.ui-state-default a:visited,\\na.ui-button,\\na:link.ui-button,\\na:visited.ui-button,\\n.ui-button {\\n\\tcolor: #454545;\\n\\ttext-decoration: none;\\n}\\n.ui-state-hover,\\n.ui-widget-content .ui-state-hover,\\n.ui-widget-header .ui-state-hover,\\n.ui-state-focus,\\n.ui-widget-content .ui-state-focus,\\n.ui-widget-header .ui-state-focus,\\n.ui-button:hover,\\n.ui-button:focus {\\n\\tborder: 1px solid #cccccc;\\n\\tbackground: #ededed;\\n\\tfont-weight: normal;\\n\\tcolor: #2b2b2b;\\n}\\n.ui-state-hover a,\\n.ui-state-hover a:hover,\\n.ui-state-hover a:link,\\n.ui-state-hover a:visited,\\n.ui-state-focus a,\\n.ui-state-focus a:hover,\\n.ui-state-focus a:link,\\n.ui-state-focus a:visited,\\na.ui-button:hover,\\na.ui-button:focus {\\n\\tcolor: #2b2b2b;\\n\\ttext-decoration: none;\\n}\\n\\n.ui-visual-focus {\\n\\tbox-shadow: 0 0 3px 1px rgb(94, 158, 214);\\n}\\n.ui-state-active,\\n.ui-widget-content .ui-state-active,\\n.ui-widget-header .ui-state-active,\\na.ui-button:active,\\n.ui-button:active,\\n.ui-button.ui-state-active:hover {\\n\\tborder: 1px solid #003eff;\\n\\tbackground: #007fff;\\n\\tfont-weight: normal;\\n\\tcolor: #ffffff;\\n}\\n.ui-icon-background,\\n.ui-state-active .ui-icon-background {\\n\\tborder: #003eff;\\n\\tbackground-color: #ffffff;\\n}\\n.ui-state-active a,\\n.ui-state-active a:link,\\n.ui-state-active a:visited {\\n\\tcolor: #ffffff;\\n\\ttext-decoration: none;\\n}\\n\\n/* Interaction Cues\\n----------------------------------*/\\n.ui-state-highlight,\\n.ui-widget-content .ui-state-highlight,\\n.ui-widget-header .ui-state-highlight {\\n\\tborder: 1px solid #dad55e;\\n\\tbackground: #fffa90;\\n\\tcolor: #777620;\\n}\\n.ui-state-checked {\\n\\tborder: 1px solid #dad55e;\\n\\tbackground: #fffa90;\\n}\\n.ui-state-highlight a,\\n.ui-widget-content .ui-state-highlight a,\\n.ui-widget-header .ui-state-highlight a {\\n\\tcolor: #777620;\\n}\\n.ui-state-error,\\n.ui-widget-content .ui-state-error,\\n.ui-widget-header .ui-state-error {\\n\\tborder: 1px solid #f1a899;\\n\\tbackground: #fddfdf;\\n\\tcolor: #5f3f3f;\\n}\\n.ui-state-error a,\\n.ui-widget-content .ui-state-error a,\\n.ui-widget-header .ui-state-error a {\\n\\tcolor: #5f3f3f;\\n}\\n.ui-state-error-text,\\n.ui-widget-content .ui-state-error-text,\\n.ui-widget-header .ui-state-error-text {\\n\\tcolor: #5f3f3f;\\n}\\n.ui-priority-primary,\\n.ui-widget-content .ui-priority-primary,\\n.ui-widget-header .ui-priority-primary {\\n\\tfont-weight: bold;\\n}\\n.ui-priority-secondary,\\n.ui-widget-content .ui-priority-secondary,\\n.ui-widget-header .ui-priority-secondary {\\n\\topacity: .7;\\n\\t-ms-filter: \\\"alpha(opacity=70)\\\"; /* support: IE8 */\\n\\tfont-weight: normal;\\n}\\n.ui-state-disabled,\\n.ui-widget-content .ui-state-disabled,\\n.ui-widget-header .ui-state-disabled {\\n\\topacity: .35;\\n\\t-ms-filter: \\\"alpha(opacity=35)\\\"; /* support: IE8 */\\n\\tbackground-image: none;\\n}\\n.ui-state-disabled .ui-icon {\\n\\t-ms-filter: \\\"alpha(opacity=35)\\\"; /* support: IE8 - See #6059 */\\n}\\n\\n/* Icons\\n----------------------------------*/\\n\\n/* states and images */\\n.ui-icon {\\n\\twidth: 16px;\\n\\theight: 16px;\\n}\\n.ui-icon,\\n.ui-widget-content .ui-icon {\\n\\tbackground-image: url(\\\"images/ui-icons_444444_256x240.png\\\");\\n}\\n.ui-widget-header .ui-icon {\\n\\tbackground-image: url(\\\"images/ui-icons_444444_256x240.png\\\");\\n}\\n.ui-state-hover .ui-icon,\\n.ui-state-focus .ui-icon,\\n.ui-button:hover .ui-icon,\\n.ui-button:focus .ui-icon {\\n\\tbackground-image: url(\\\"images/ui-icons_555555_256x240.png\\\");\\n}\\n.ui-state-active .ui-icon,\\n.ui-button:active .ui-icon {\\n\\tbackground-image: url(\\\"images/ui-icons_ffffff_256x240.png\\\");\\n}\\n.ui-state-highlight .ui-icon,\\n.ui-button .ui-state-highlight.ui-icon {\\n\\tbackground-image: url(\\\"images/ui-icons_777620_256x240.png\\\");\\n}\\n.ui-state-error .ui-icon,\\n.ui-state-error-text .ui-icon {\\n\\tbackground-image: url(\\\"images/ui-icons_cc0000_256x240.png\\\");\\n}\\n.ui-button .ui-icon {\\n\\tbackground-image: url(\\\"images/ui-icons_777777_256x240.png\\\");\\n}\\n\\n/* positioning */\\n/* Three classes needed to override `.ui-button:hover .ui-icon` */\\n.ui-icon-blank.ui-icon-blank.ui-icon-blank {\\n\\tbackground-image: none;\\n}\\n.ui-icon-caret-1-n { background-position: 0 0; }\\n.ui-icon-caret-1-ne { background-position: -16px 0; }\\n.ui-icon-caret-1-e { background-position: -32px 0; }\\n.ui-icon-caret-1-se { background-position: -48px 0; }\\n.ui-icon-caret-1-s { background-position: -65px 0; }\\n.ui-icon-caret-1-sw { background-position: -80px 0; }\\n.ui-icon-caret-1-w { background-position: -96px 0; }\\n.ui-icon-caret-1-nw { background-position: -112px 0; }\\n.ui-icon-caret-2-n-s { background-position: -128px 0; }\\n.ui-icon-caret-2-e-w { background-position: -144px 0; }\\n.ui-icon-triangle-1-n { background-position: 0 -16px; }\\n.ui-icon-triangle-1-ne { background-position: -16px -16px; }\\n.ui-icon-triangle-1-e { background-position: -32px -16px; }\\n.ui-icon-triangle-1-se { background-position: -48px -16px; }\\n.ui-icon-triangle-1-s { background-position: -65px -16px; }\\n.ui-icon-triangle-1-sw { background-position: -80px -16px; }\\n.ui-icon-triangle-1-w { background-position: -96px -16px; }\\n.ui-icon-triangle-1-nw { background-position: -112px -16px; }\\n.ui-icon-triangle-2-n-s { background-position: -128px -16px; }\\n.ui-icon-triangle-2-e-w { background-position: -144px -16px; }\\n.ui-icon-arrow-1-n { background-position: 0 -32px; }\\n.ui-icon-arrow-1-ne { background-position: -16px -32px; }\\n.ui-icon-arrow-1-e { background-position: -32px -32px; }\\n.ui-icon-arrow-1-se { background-position: -48px -32px; }\\n.ui-icon-arrow-1-s { background-position: -65px -32px; }\\n.ui-icon-arrow-1-sw { background-position: -80px -32px; }\\n.ui-icon-arrow-1-w { background-position: -96px -32px; }\\n.ui-icon-arrow-1-nw { background-position: -112px -32px; }\\n.ui-icon-arrow-2-n-s { background-position: -128px -32px; }\\n.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }\\n.ui-icon-arrow-2-e-w { background-position: -160px -32px; }\\n.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }\\n.ui-icon-arrowstop-1-n { background-position: -192px -32px; }\\n.ui-icon-arrowstop-1-e { background-position: -208px -32px; }\\n.ui-icon-arrowstop-1-s { background-position: -224px -32px; }\\n.ui-icon-arrowstop-1-w { background-position: -240px -32px; }\\n.ui-icon-arrowthick-1-n { background-position: 1px -48px; }\\n.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }\\n.ui-icon-arrowthick-1-e { background-position: -32px -48px; }\\n.ui-icon-arrowthick-1-se { background-position: -48px -48px; }\\n.ui-icon-arrowthick-1-s { background-position: -64px -48px; }\\n.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }\\n.ui-icon-arrowthick-1-w { background-position: -96px -48px; }\\n.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }\\n.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }\\n.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }\\n.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }\\n.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }\\n.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }\\n.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }\\n.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }\\n.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }\\n.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }\\n.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }\\n.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }\\n.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }\\n.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }\\n.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }\\n.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }\\n.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }\\n.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }\\n.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }\\n.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }\\n.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }\\n.ui-icon-arrow-4 { background-position: 0 -80px; }\\n.ui-icon-arrow-4-diag { background-position: -16px -80px; }\\n.ui-icon-extlink { background-position: -32px -80px; }\\n.ui-icon-newwin { background-position: -48px -80px; }\\n.ui-icon-refresh { background-position: -64px -80px; }\\n.ui-icon-shuffle { background-position: -80px -80px; }\\n.ui-icon-transfer-e-w { background-position: -96px -80px; }\\n.ui-icon-transferthick-e-w { background-position: -112px -80px; }\\n.ui-icon-folder-collapsed { background-position: 0 -96px; }\\n.ui-icon-folder-open { background-position: -16px -96px; }\\n.ui-icon-document { background-position: -32px -96px; }\\n.ui-icon-document-b { background-position: -48px -96px; }\\n.ui-icon-note { background-position: -64px -96px; }\\n.ui-icon-mail-closed { background-position: -80px -96px; }\\n.ui-icon-mail-open { background-position: -96px -96px; }\\n.ui-icon-suitcase { background-position: -112px -96px; }\\n.ui-icon-comment { background-position: -128px -96px; }\\n.ui-icon-person { background-position: -144px -96px; }\\n.ui-icon-print { background-position: -160px -96px; }\\n.ui-icon-trash { background-position: -176px -96px; }\\n.ui-icon-locked { background-position: -192px -96px; }\\n.ui-icon-unlocked { background-position: -208px -96px; }\\n.ui-icon-bookmark { background-position: -224px -96px; }\\n.ui-icon-tag { background-position: -240px -96px; }\\n.ui-icon-home { background-position: 0 -112px; }\\n.ui-icon-flag { background-position: -16px -112px; }\\n.ui-icon-calendar { background-position: -32px -112px; }\\n.ui-icon-cart { background-position: -48px -112px; }\\n.ui-icon-pencil { background-position: -64px -112px; }\\n.ui-icon-clock { background-position: -80px -112px; }\\n.ui-icon-disk { background-position: -96px -112px; }\\n.ui-icon-calculator { background-position: -112px -112px; }\\n.ui-icon-zoomin { background-position: -128px -112px; }\\n.ui-icon-zoomout { background-position: -144px -112px; }\\n.ui-icon-search { background-position: -160px -112px; }\\n.ui-icon-wrench { background-position: -176px -112px; }\\n.ui-icon-gear { background-position: -192px -112px; }\\n.ui-icon-heart { background-position: -208px -112px; }\\n.ui-icon-star { background-position: -224px -112px; }\\n.ui-icon-link { background-position: -240px -112px; }\\n.ui-icon-cancel { background-position: 0 -128px; }\\n.ui-icon-plus { background-position: -16px -128px; }\\n.ui-icon-plusthick { background-position: -32px -128px; }\\n.ui-icon-minus { background-position: -48px -128px; }\\n.ui-icon-minusthick { background-position: -64px -128px; }\\n.ui-icon-close { background-position: -80px -128px; }\\n.ui-icon-closethick { background-position: -96px -128px; }\\n.ui-icon-key { background-position: -112px -128px; }\\n.ui-icon-lightbulb { background-position: -128px -128px; }\\n.ui-icon-scissors { background-position: -144px -128px; }\\n.ui-icon-clipboard { background-position: -160px -128px; }\\n.ui-icon-copy { background-position: -176px -128px; }\\n.ui-icon-contact { background-position: -192px -128px; }\\n.ui-icon-image { background-position: -208px -128px; }\\n.ui-icon-video { background-position: -224px -128px; }\\n.ui-icon-script { background-position: -240px -128px; }\\n.ui-icon-alert { background-position: 0 -144px; }\\n.ui-icon-info { background-position: -16px -144px; }\\n.ui-icon-notice { background-position: -32px -144px; }\\n.ui-icon-help { background-position: -48px -144px; }\\n.ui-icon-check { background-position: -64px -144px; }\\n.ui-icon-bullet { background-position: -80px -144px; }\\n.ui-icon-radio-on { background-position: -96px -144px; }\\n.ui-icon-radio-off { background-position: -112px -144px; }\\n.ui-icon-pin-w { background-position: -128px -144px; }\\n.ui-icon-pin-s { background-position: -144px -144px; }\\n.ui-icon-play { background-position: 0 -160px; }\\n.ui-icon-pause { background-position: -16px -160px; }\\n.ui-icon-seek-next { background-position: -32px -160px; }\\n.ui-icon-seek-prev { background-position: -48px -160px; }\\n.ui-icon-seek-end { background-position: -64px -160px; }\\n.ui-icon-seek-start { background-position: -80px -160px; }\\n/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */\\n.ui-icon-seek-first { background-position: -80px -160px; }\\n.ui-icon-stop { background-position: -96px -160px; }\\n.ui-icon-eject { background-position: -112px -160px; }\\n.ui-icon-volume-off { background-position: -128px -160px; }\\n.ui-icon-volume-on { background-position: -144px -160px; }\\n.ui-icon-power { background-position: 0 -176px; }\\n.ui-icon-signal-diag { background-position: -16px -176px; }\\n.ui-icon-signal { background-position: -32px -176px; }\\n.ui-icon-battery-0 { background-position: -48px -176px; }\\n.ui-icon-battery-1 { background-position: -64px -176px; }\\n.ui-icon-battery-2 { background-position: -80px -176px; }\\n.ui-icon-battery-3 { background-position: -96px -176px; }\\n.ui-icon-circle-plus { background-position: 0 -192px; }\\n.ui-icon-circle-minus { background-position: -16px -192px; }\\n.ui-icon-circle-close { background-position: -32px -192px; }\\n.ui-icon-circle-triangle-e { background-position: -48px -192px; }\\n.ui-icon-circle-triangle-s { background-position: -64px -192px; }\\n.ui-icon-circle-triangle-w { background-position: -80px -192px; }\\n.ui-icon-circle-triangle-n { background-position: -96px -192px; }\\n.ui-icon-circle-arrow-e { background-position: -112px -192px; }\\n.ui-icon-circle-arrow-s { background-position: -128px -192px; }\\n.ui-icon-circle-arrow-w { background-position: -144px -192px; }\\n.ui-icon-circle-arrow-n { background-position: -160px -192px; }\\n.ui-icon-circle-zoomin { background-position: -176px -192px; }\\n.ui-icon-circle-zoomout { background-position: -192px -192px; }\\n.ui-icon-circle-check { background-position: -208px -192px; }\\n.ui-icon-circlesmall-plus { background-position: 0 -208px; }\\n.ui-icon-circlesmall-minus { background-position: -16px -208px; }\\n.ui-icon-circlesmall-close { background-position: -32px -208px; }\\n.ui-icon-squaresmall-plus { background-position: -48px -208px; }\\n.ui-icon-squaresmall-minus { background-position: -64px -208px; }\\n.ui-icon-squaresmall-close { background-position: -80px -208px; }\\n.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }\\n.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }\\n.ui-icon-grip-solid-vertical { background-position: -32px -224px; }\\n.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }\\n.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }\\n.ui-icon-grip-diagonal-se { background-position: -80px -224px; }\\n\\n\\n/* Misc visuals\\n----------------------------------*/\\n\\n/* Corner radius */\\n.ui-corner-all,\\n.ui-corner-top,\\n.ui-corner-left,\\n.ui-corner-tl {\\n\\tborder-top-left-radius: 3px;\\n}\\n.ui-corner-all,\\n.ui-corner-top,\\n.ui-corner-right,\\n.ui-corner-tr {\\n\\tborder-top-right-radius: 3px;\\n}\\n.ui-corner-all,\\n.ui-corner-bottom,\\n.ui-corner-left,\\n.ui-corner-bl {\\n\\tborder-bottom-left-radius: 3px;\\n}\\n.ui-corner-all,\\n.ui-corner-bottom,\\n.ui-corner-right,\\n.ui-corner-br {\\n\\tborder-bottom-right-radius: 3px;\\n}\\n\\n/* Overlays */\\n.ui-widget-overlay {\\n\\tbackground: #aaaaaa;\\n\\topacity: .003;\\n\\t-ms-filter: \\\"alpha(opacity=.3)\\\"; /* support: IE8 */\\n}\\n.ui-widget-shadow {\\n\\t-webkit-box-shadow: 0px 0px 5px #666666;\\n\\tbox-shadow: 0px 0px 5px #666666;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"images/ui-icons_444444_256x240.png\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_1___ = new URL(\"images/ui-icons_555555_256x240.png\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_2___ = new URL(\"images/ui-icons_ffffff_256x240.png\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_3___ = new URL(\"images/ui-icons_777620_256x240.png\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_4___ = new URL(\"images/ui-icons_cc0000_256x240.png\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_5___ = new URL(\"images/ui-icons_777777_256x240.png\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_1___);\nvar ___CSS_LOADER_URL_REPLACEMENT_2___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_2___);\nvar ___CSS_LOADER_URL_REPLACEMENT_3___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_3___);\nvar ___CSS_LOADER_URL_REPLACEMENT_4___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_4___);\nvar ___CSS_LOADER_URL_REPLACEMENT_5___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_5___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*!\n * jQuery UI CSS Framework 1.13.3\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n *\n * https://api.jqueryui.com/category/theming/\n *\n * To view and modify this theme, visit https://jqueryui.com/themeroller/?bgShadowXPos=&bgOverlayXPos=&bgErrorXPos=&bgHighlightXPos=&bgContentXPos=&bgHeaderXPos=&bgActiveXPos=&bgHoverXPos=&bgDefaultXPos=&bgShadowYPos=&bgOverlayYPos=&bgErrorYPos=&bgHighlightYPos=&bgContentYPos=&bgHeaderYPos=&bgActiveYPos=&bgHoverYPos=&bgDefaultYPos=&bgShadowRepeat=&bgOverlayRepeat=&bgErrorRepeat=&bgHighlightRepeat=&bgContentRepeat=&bgHeaderRepeat=&bgActiveRepeat=&bgHoverRepeat=&bgDefaultRepeat=&iconsHover=url(%22images%2Fui-icons_555555_256x240.png%22)&iconsHighlight=url(%22images%2Fui-icons_777620_256x240.png%22)&iconsHeader=url(%22images%2Fui-icons_444444_256x240.png%22)&iconsError=url(%22images%2Fui-icons_cc0000_256x240.png%22)&iconsDefault=url(%22images%2Fui-icons_777777_256x240.png%22)&iconsContent=url(%22images%2Fui-icons_444444_256x240.png%22)&iconsActive=url(%22images%2Fui-icons_ffffff_256x240.png%22)&bgImgUrlShadow=&bgImgUrlOverlay=&bgImgUrlHover=&bgImgUrlHighlight=&bgImgUrlHeader=&bgImgUrlError=&bgImgUrlDefault=&bgImgUrlContent=&bgImgUrlActive=&opacityFilterShadow=%22alpha(opacity%3D30)%22&opacityFilterOverlay=%22alpha(opacity%3D30)%22&opacityShadowPerc=30&opacityOverlayPerc=30&iconColorHover=%23555555&iconColorHighlight=%23777620&iconColorHeader=%23444444&iconColorError=%23cc0000&iconColorDefault=%23777777&iconColorContent=%23444444&iconColorActive=%23ffffff&bgImgOpacityShadow=0&bgImgOpacityOverlay=0&bgImgOpacityError=95&bgImgOpacityHighlight=55&bgImgOpacityContent=75&bgImgOpacityHeader=75&bgImgOpacityActive=65&bgImgOpacityHover=75&bgImgOpacityDefault=75&bgTextureShadow=flat&bgTextureOverlay=flat&bgTextureError=flat&bgTextureHighlight=flat&bgTextureContent=flat&bgTextureHeader=flat&bgTextureActive=flat&bgTextureHover=flat&bgTextureDefault=flat&cornerRadius=3px&fwDefault=normal&ffDefault=Arial%2CHelvetica%2Csans-serif&fsDefault=1em&cornerRadiusShadow=8px&thicknessShadow=5px&offsetLeftShadow=0px&offsetTopShadow=0px&opacityShadow=.3&bgColorShadow=%23666666&opacityOverlay=.3&bgColorOverlay=%23aaaaaa&fcError=%235f3f3f&borderColorError=%23f1a899&bgColorError=%23fddfdf&fcHighlight=%23777620&borderColorHighlight=%23dad55e&bgColorHighlight=%23fffa90&fcContent=%23333333&borderColorContent=%23dddddd&bgColorContent=%23ffffff&fcHeader=%23333333&borderColorHeader=%23dddddd&bgColorHeader=%23e9e9e9&fcActive=%23ffffff&borderColorActive=%23003eff&bgColorActive=%23007fff&fcHover=%232b2b2b&borderColorHover=%23cccccc&bgColorHover=%23ededed&fcDefault=%23454545&borderColorDefault=%23c5c5c5&bgColorDefault=%23f6f6f6\n */\n\n\n/* Component containers\n----------------------------------*/\n.ui-widget {\n\tfont-family: Arial,Helvetica,sans-serif;\n\tfont-size: 1em;\n}\n.ui-widget .ui-widget {\n\tfont-size: 1em;\n}\n.ui-widget input,\n.ui-widget select,\n.ui-widget textarea,\n.ui-widget button {\n\tfont-family: Arial,Helvetica,sans-serif;\n\tfont-size: 1em;\n}\n.ui-widget.ui-widget-content {\n\tborder: 1px solid #c5c5c5;\n}\n.ui-widget-content {\n\tborder: 1px solid #dddddd;\n\tbackground: #ffffff;\n\tcolor: #333333;\n}\n.ui-widget-content a {\n\tcolor: #333333;\n}\n.ui-widget-header {\n\tborder: 1px solid #dddddd;\n\tbackground: #e9e9e9;\n\tcolor: #333333;\n\tfont-weight: bold;\n}\n.ui-widget-header a {\n\tcolor: #333333;\n}\n\n/* Interaction states\n----------------------------------*/\n.ui-state-default,\n.ui-widget-content .ui-state-default,\n.ui-widget-header .ui-state-default,\n.ui-button,\n\n/* We use html here because we need a greater specificity to make sure disabled\nworks properly when clicked or hovered */\nhtml .ui-button.ui-state-disabled:hover,\nhtml .ui-button.ui-state-disabled:active {\n\tborder: 1px solid #c5c5c5;\n\tbackground: #f6f6f6;\n\tfont-weight: normal;\n\tcolor: #454545;\n}\n.ui-state-default a,\n.ui-state-default a:link,\n.ui-state-default a:visited,\na.ui-button,\na:link.ui-button,\na:visited.ui-button,\n.ui-button {\n\tcolor: #454545;\n\ttext-decoration: none;\n}\n.ui-state-hover,\n.ui-widget-content .ui-state-hover,\n.ui-widget-header .ui-state-hover,\n.ui-state-focus,\n.ui-widget-content .ui-state-focus,\n.ui-widget-header .ui-state-focus,\n.ui-button:hover,\n.ui-button:focus {\n\tborder: 1px solid #cccccc;\n\tbackground: #ededed;\n\tfont-weight: normal;\n\tcolor: #2b2b2b;\n}\n.ui-state-hover a,\n.ui-state-hover a:hover,\n.ui-state-hover a:link,\n.ui-state-hover a:visited,\n.ui-state-focus a,\n.ui-state-focus a:hover,\n.ui-state-focus a:link,\n.ui-state-focus a:visited,\na.ui-button:hover,\na.ui-button:focus {\n\tcolor: #2b2b2b;\n\ttext-decoration: none;\n}\n\n.ui-visual-focus {\n\tbox-shadow: 0 0 3px 1px rgb(94, 158, 214);\n}\n.ui-state-active,\n.ui-widget-content .ui-state-active,\n.ui-widget-header .ui-state-active,\na.ui-button:active,\n.ui-button:active,\n.ui-button.ui-state-active:hover {\n\tborder: 1px solid #003eff;\n\tbackground: #007fff;\n\tfont-weight: normal;\n\tcolor: #ffffff;\n}\n.ui-icon-background,\n.ui-state-active .ui-icon-background {\n\tborder: #003eff;\n\tbackground-color: #ffffff;\n}\n.ui-state-active a,\n.ui-state-active a:link,\n.ui-state-active a:visited {\n\tcolor: #ffffff;\n\ttext-decoration: none;\n}\n\n/* Interaction Cues\n----------------------------------*/\n.ui-state-highlight,\n.ui-widget-content .ui-state-highlight,\n.ui-widget-header .ui-state-highlight {\n\tborder: 1px solid #dad55e;\n\tbackground: #fffa90;\n\tcolor: #777620;\n}\n.ui-state-checked {\n\tborder: 1px solid #dad55e;\n\tbackground: #fffa90;\n}\n.ui-state-highlight a,\n.ui-widget-content .ui-state-highlight a,\n.ui-widget-header .ui-state-highlight a {\n\tcolor: #777620;\n}\n.ui-state-error,\n.ui-widget-content .ui-state-error,\n.ui-widget-header .ui-state-error {\n\tborder: 1px solid #f1a899;\n\tbackground: #fddfdf;\n\tcolor: #5f3f3f;\n}\n.ui-state-error a,\n.ui-widget-content .ui-state-error a,\n.ui-widget-header .ui-state-error a {\n\tcolor: #5f3f3f;\n}\n.ui-state-error-text,\n.ui-widget-content .ui-state-error-text,\n.ui-widget-header .ui-state-error-text {\n\tcolor: #5f3f3f;\n}\n.ui-priority-primary,\n.ui-widget-content .ui-priority-primary,\n.ui-widget-header .ui-priority-primary {\n\tfont-weight: bold;\n}\n.ui-priority-secondary,\n.ui-widget-content .ui-priority-secondary,\n.ui-widget-header .ui-priority-secondary {\n\topacity: .7;\n\t-ms-filter: \"alpha(opacity=70)\"; /* support: IE8 */\n\tfont-weight: normal;\n}\n.ui-state-disabled,\n.ui-widget-content .ui-state-disabled,\n.ui-widget-header .ui-state-disabled {\n\topacity: .35;\n\t-ms-filter: \"alpha(opacity=35)\"; /* support: IE8 */\n\tbackground-image: none;\n}\n.ui-state-disabled .ui-icon {\n\t-ms-filter: \"alpha(opacity=35)\"; /* support: IE8 - See #6059 */\n}\n\n/* Icons\n----------------------------------*/\n\n/* states and images */\n.ui-icon {\n\twidth: 16px;\n\theight: 16px;\n}\n.ui-icon,\n.ui-widget-content .ui-icon {\n\tbackground-image: url(${___CSS_LOADER_URL_REPLACEMENT_0___});\n}\n.ui-widget-header .ui-icon {\n\tbackground-image: url(${___CSS_LOADER_URL_REPLACEMENT_0___});\n}\n.ui-state-hover .ui-icon,\n.ui-state-focus .ui-icon,\n.ui-button:hover .ui-icon,\n.ui-button:focus .ui-icon {\n\tbackground-image: url(${___CSS_LOADER_URL_REPLACEMENT_1___});\n}\n.ui-state-active .ui-icon,\n.ui-button:active .ui-icon {\n\tbackground-image: url(${___CSS_LOADER_URL_REPLACEMENT_2___});\n}\n.ui-state-highlight .ui-icon,\n.ui-button .ui-state-highlight.ui-icon {\n\tbackground-image: url(${___CSS_LOADER_URL_REPLACEMENT_3___});\n}\n.ui-state-error .ui-icon,\n.ui-state-error-text .ui-icon {\n\tbackground-image: url(${___CSS_LOADER_URL_REPLACEMENT_4___});\n}\n.ui-button .ui-icon {\n\tbackground-image: url(${___CSS_LOADER_URL_REPLACEMENT_5___});\n}\n\n/* positioning */\n/* Three classes needed to override \\`.ui-button:hover .ui-icon\\` */\n.ui-icon-blank.ui-icon-blank.ui-icon-blank {\n\tbackground-image: none;\n}\n.ui-icon-caret-1-n { background-position: 0 0; }\n.ui-icon-caret-1-ne { background-position: -16px 0; }\n.ui-icon-caret-1-e { background-position: -32px 0; }\n.ui-icon-caret-1-se { background-position: -48px 0; }\n.ui-icon-caret-1-s { background-position: -65px 0; }\n.ui-icon-caret-1-sw { background-position: -80px 0; }\n.ui-icon-caret-1-w { background-position: -96px 0; }\n.ui-icon-caret-1-nw { background-position: -112px 0; }\n.ui-icon-caret-2-n-s { background-position: -128px 0; }\n.ui-icon-caret-2-e-w { background-position: -144px 0; }\n.ui-icon-triangle-1-n { background-position: 0 -16px; }\n.ui-icon-triangle-1-ne { background-position: -16px -16px; }\n.ui-icon-triangle-1-e { background-position: -32px -16px; }\n.ui-icon-triangle-1-se { background-position: -48px -16px; }\n.ui-icon-triangle-1-s { background-position: -65px -16px; }\n.ui-icon-triangle-1-sw { background-position: -80px -16px; }\n.ui-icon-triangle-1-w { background-position: -96px -16px; }\n.ui-icon-triangle-1-nw { background-position: -112px -16px; }\n.ui-icon-triangle-2-n-s { background-position: -128px -16px; }\n.ui-icon-triangle-2-e-w { background-position: -144px -16px; }\n.ui-icon-arrow-1-n { background-position: 0 -32px; }\n.ui-icon-arrow-1-ne { background-position: -16px -32px; }\n.ui-icon-arrow-1-e { background-position: -32px -32px; }\n.ui-icon-arrow-1-se { background-position: -48px -32px; }\n.ui-icon-arrow-1-s { background-position: -65px -32px; }\n.ui-icon-arrow-1-sw { background-position: -80px -32px; }\n.ui-icon-arrow-1-w { background-position: -96px -32px; }\n.ui-icon-arrow-1-nw { background-position: -112px -32px; }\n.ui-icon-arrow-2-n-s { background-position: -128px -32px; }\n.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }\n.ui-icon-arrow-2-e-w { background-position: -160px -32px; }\n.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }\n.ui-icon-arrowstop-1-n { background-position: -192px -32px; }\n.ui-icon-arrowstop-1-e { background-position: -208px -32px; }\n.ui-icon-arrowstop-1-s { background-position: -224px -32px; }\n.ui-icon-arrowstop-1-w { background-position: -240px -32px; }\n.ui-icon-arrowthick-1-n { background-position: 1px -48px; }\n.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }\n.ui-icon-arrowthick-1-e { background-position: -32px -48px; }\n.ui-icon-arrowthick-1-se { background-position: -48px -48px; }\n.ui-icon-arrowthick-1-s { background-position: -64px -48px; }\n.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }\n.ui-icon-arrowthick-1-w { background-position: -96px -48px; }\n.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }\n.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }\n.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }\n.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }\n.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }\n.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }\n.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }\n.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }\n.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }\n.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }\n.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }\n.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }\n.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }\n.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }\n.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }\n.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }\n.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }\n.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }\n.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }\n.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }\n.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }\n.ui-icon-arrow-4 { background-position: 0 -80px; }\n.ui-icon-arrow-4-diag { background-position: -16px -80px; }\n.ui-icon-extlink { background-position: -32px -80px; }\n.ui-icon-newwin { background-position: -48px -80px; }\n.ui-icon-refresh { background-position: -64px -80px; }\n.ui-icon-shuffle { background-position: -80px -80px; }\n.ui-icon-transfer-e-w { background-position: -96px -80px; }\n.ui-icon-transferthick-e-w { background-position: -112px -80px; }\n.ui-icon-folder-collapsed { background-position: 0 -96px; }\n.ui-icon-folder-open { background-position: -16px -96px; }\n.ui-icon-document { background-position: -32px -96px; }\n.ui-icon-document-b { background-position: -48px -96px; }\n.ui-icon-note { background-position: -64px -96px; }\n.ui-icon-mail-closed { background-position: -80px -96px; }\n.ui-icon-mail-open { background-position: -96px -96px; }\n.ui-icon-suitcase { background-position: -112px -96px; }\n.ui-icon-comment { background-position: -128px -96px; }\n.ui-icon-person { background-position: -144px -96px; }\n.ui-icon-print { background-position: -160px -96px; }\n.ui-icon-trash { background-position: -176px -96px; }\n.ui-icon-locked { background-position: -192px -96px; }\n.ui-icon-unlocked { background-position: -208px -96px; }\n.ui-icon-bookmark { background-position: -224px -96px; }\n.ui-icon-tag { background-position: -240px -96px; }\n.ui-icon-home { background-position: 0 -112px; }\n.ui-icon-flag { background-position: -16px -112px; }\n.ui-icon-calendar { background-position: -32px -112px; }\n.ui-icon-cart { background-position: -48px -112px; }\n.ui-icon-pencil { background-position: -64px -112px; }\n.ui-icon-clock { background-position: -80px -112px; }\n.ui-icon-disk { background-position: -96px -112px; }\n.ui-icon-calculator { background-position: -112px -112px; }\n.ui-icon-zoomin { background-position: -128px -112px; }\n.ui-icon-zoomout { background-position: -144px -112px; }\n.ui-icon-search { background-position: -160px -112px; }\n.ui-icon-wrench { background-position: -176px -112px; }\n.ui-icon-gear { background-position: -192px -112px; }\n.ui-icon-heart { background-position: -208px -112px; }\n.ui-icon-star { background-position: -224px -112px; }\n.ui-icon-link { background-position: -240px -112px; }\n.ui-icon-cancel { background-position: 0 -128px; }\n.ui-icon-plus { background-position: -16px -128px; }\n.ui-icon-plusthick { background-position: -32px -128px; }\n.ui-icon-minus { background-position: -48px -128px; }\n.ui-icon-minusthick { background-position: -64px -128px; }\n.ui-icon-close { background-position: -80px -128px; }\n.ui-icon-closethick { background-position: -96px -128px; }\n.ui-icon-key { background-position: -112px -128px; }\n.ui-icon-lightbulb { background-position: -128px -128px; }\n.ui-icon-scissors { background-position: -144px -128px; }\n.ui-icon-clipboard { background-position: -160px -128px; }\n.ui-icon-copy { background-position: -176px -128px; }\n.ui-icon-contact { background-position: -192px -128px; }\n.ui-icon-image { background-position: -208px -128px; }\n.ui-icon-video { background-position: -224px -128px; }\n.ui-icon-script { background-position: -240px -128px; }\n.ui-icon-alert { background-position: 0 -144px; }\n.ui-icon-info { background-position: -16px -144px; }\n.ui-icon-notice { background-position: -32px -144px; }\n.ui-icon-help { background-position: -48px -144px; }\n.ui-icon-check { background-position: -64px -144px; }\n.ui-icon-bullet { background-position: -80px -144px; }\n.ui-icon-radio-on { background-position: -96px -144px; }\n.ui-icon-radio-off { background-position: -112px -144px; }\n.ui-icon-pin-w { background-position: -128px -144px; }\n.ui-icon-pin-s { background-position: -144px -144px; }\n.ui-icon-play { background-position: 0 -160px; }\n.ui-icon-pause { background-position: -16px -160px; }\n.ui-icon-seek-next { background-position: -32px -160px; }\n.ui-icon-seek-prev { background-position: -48px -160px; }\n.ui-icon-seek-end { background-position: -64px -160px; }\n.ui-icon-seek-start { background-position: -80px -160px; }\n/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */\n.ui-icon-seek-first { background-position: -80px -160px; }\n.ui-icon-stop { background-position: -96px -160px; }\n.ui-icon-eject { background-position: -112px -160px; }\n.ui-icon-volume-off { background-position: -128px -160px; }\n.ui-icon-volume-on { background-position: -144px -160px; }\n.ui-icon-power { background-position: 0 -176px; }\n.ui-icon-signal-diag { background-position: -16px -176px; }\n.ui-icon-signal { background-position: -32px -176px; }\n.ui-icon-battery-0 { background-position: -48px -176px; }\n.ui-icon-battery-1 { background-position: -64px -176px; }\n.ui-icon-battery-2 { background-position: -80px -176px; }\n.ui-icon-battery-3 { background-position: -96px -176px; }\n.ui-icon-circle-plus { background-position: 0 -192px; }\n.ui-icon-circle-minus { background-position: -16px -192px; }\n.ui-icon-circle-close { background-position: -32px -192px; }\n.ui-icon-circle-triangle-e { background-position: -48px -192px; }\n.ui-icon-circle-triangle-s { background-position: -64px -192px; }\n.ui-icon-circle-triangle-w { background-position: -80px -192px; }\n.ui-icon-circle-triangle-n { background-position: -96px -192px; }\n.ui-icon-circle-arrow-e { background-position: -112px -192px; }\n.ui-icon-circle-arrow-s { background-position: -128px -192px; }\n.ui-icon-circle-arrow-w { background-position: -144px -192px; }\n.ui-icon-circle-arrow-n { background-position: -160px -192px; }\n.ui-icon-circle-zoomin { background-position: -176px -192px; }\n.ui-icon-circle-zoomout { background-position: -192px -192px; }\n.ui-icon-circle-check { background-position: -208px -192px; }\n.ui-icon-circlesmall-plus { background-position: 0 -208px; }\n.ui-icon-circlesmall-minus { background-position: -16px -208px; }\n.ui-icon-circlesmall-close { background-position: -32px -208px; }\n.ui-icon-squaresmall-plus { background-position: -48px -208px; }\n.ui-icon-squaresmall-minus { background-position: -64px -208px; }\n.ui-icon-squaresmall-close { background-position: -80px -208px; }\n.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }\n.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }\n.ui-icon-grip-solid-vertical { background-position: -32px -224px; }\n.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }\n.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }\n.ui-icon-grip-diagonal-se { background-position: -80px -224px; }\n\n\n/* Misc visuals\n----------------------------------*/\n\n/* Corner radius */\n.ui-corner-all,\n.ui-corner-top,\n.ui-corner-left,\n.ui-corner-tl {\n\tborder-top-left-radius: 3px;\n}\n.ui-corner-all,\n.ui-corner-top,\n.ui-corner-right,\n.ui-corner-tr {\n\tborder-top-right-radius: 3px;\n}\n.ui-corner-all,\n.ui-corner-bottom,\n.ui-corner-left,\n.ui-corner-bl {\n\tborder-bottom-left-radius: 3px;\n}\n.ui-corner-all,\n.ui-corner-bottom,\n.ui-corner-right,\n.ui-corner-br {\n\tborder-bottom-right-radius: 3px;\n}\n\n/* Overlays */\n.ui-widget-overlay {\n\tbackground: #aaaaaa;\n\topacity: .003;\n\t-ms-filter: \"alpha(opacity=.3)\"; /* support: IE8 */\n}\n.ui-widget-shadow {\n\t-webkit-box-shadow: 0px 0px 5px #666666;\n\tbox-shadow: 0px 0px 5px #666666;\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/jquery-ui-dist/jquery-ui.theme.css\"],\"names\":[],\"mappings\":\"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\",\"sourcesContent\":[\"/*!\\n * jQuery UI CSS Framework 1.13.3\\n * https://jqueryui.com\\n *\\n * Copyright OpenJS Foundation and other contributors\\n * Released under the MIT license.\\n * https://jquery.org/license\\n *\\n * https://api.jqueryui.com/category/theming/\\n *\\n * To view and modify this theme, visit https://jqueryui.com/themeroller/?bgShadowXPos=&bgOverlayXPos=&bgErrorXPos=&bgHighlightXPos=&bgContentXPos=&bgHeaderXPos=&bgActiveXPos=&bgHoverXPos=&bgDefaultXPos=&bgShadowYPos=&bgOverlayYPos=&bgErrorYPos=&bgHighlightYPos=&bgContentYPos=&bgHeaderYPos=&bgActiveYPos=&bgHoverYPos=&bgDefaultYPos=&bgShadowRepeat=&bgOverlayRepeat=&bgErrorRepeat=&bgHighlightRepeat=&bgContentRepeat=&bgHeaderRepeat=&bgActiveRepeat=&bgHoverRepeat=&bgDefaultRepeat=&iconsHover=url(%22images%2Fui-icons_555555_256x240.png%22)&iconsHighlight=url(%22images%2Fui-icons_777620_256x240.png%22)&iconsHeader=url(%22images%2Fui-icons_444444_256x240.png%22)&iconsError=url(%22images%2Fui-icons_cc0000_256x240.png%22)&iconsDefault=url(%22images%2Fui-icons_777777_256x240.png%22)&iconsContent=url(%22images%2Fui-icons_444444_256x240.png%22)&iconsActive=url(%22images%2Fui-icons_ffffff_256x240.png%22)&bgImgUrlShadow=&bgImgUrlOverlay=&bgImgUrlHover=&bgImgUrlHighlight=&bgImgUrlHeader=&bgImgUrlError=&bgImgUrlDefault=&bgImgUrlContent=&bgImgUrlActive=&opacityFilterShadow=%22alpha(opacity%3D30)%22&opacityFilterOverlay=%22alpha(opacity%3D30)%22&opacityShadowPerc=30&opacityOverlayPerc=30&iconColorHover=%23555555&iconColorHighlight=%23777620&iconColorHeader=%23444444&iconColorError=%23cc0000&iconColorDefault=%23777777&iconColorContent=%23444444&iconColorActive=%23ffffff&bgImgOpacityShadow=0&bgImgOpacityOverlay=0&bgImgOpacityError=95&bgImgOpacityHighlight=55&bgImgOpacityContent=75&bgImgOpacityHeader=75&bgImgOpacityActive=65&bgImgOpacityHover=75&bgImgOpacityDefault=75&bgTextureShadow=flat&bgTextureOverlay=flat&bgTextureError=flat&bgTextureHighlight=flat&bgTextureContent=flat&bgTextureHeader=flat&bgTextureActive=flat&bgTextureHover=flat&bgTextureDefault=flat&cornerRadius=3px&fwDefault=normal&ffDefault=Arial%2CHelvetica%2Csans-serif&fsDefault=1em&cornerRadiusShadow=8px&thicknessShadow=5px&offsetLeftShadow=0px&offsetTopShadow=0px&opacityShadow=.3&bgColorShadow=%23666666&opacityOverlay=.3&bgColorOverlay=%23aaaaaa&fcError=%235f3f3f&borderColorError=%23f1a899&bgColorError=%23fddfdf&fcHighlight=%23777620&borderColorHighlight=%23dad55e&bgColorHighlight=%23fffa90&fcContent=%23333333&borderColorContent=%23dddddd&bgColorContent=%23ffffff&fcHeader=%23333333&borderColorHeader=%23dddddd&bgColorHeader=%23e9e9e9&fcActive=%23ffffff&borderColorActive=%23003eff&bgColorActive=%23007fff&fcHover=%232b2b2b&borderColorHover=%23cccccc&bgColorHover=%23ededed&fcDefault=%23454545&borderColorDefault=%23c5c5c5&bgColorDefault=%23f6f6f6\\n */\\n\\n\\n/* Component containers\\n----------------------------------*/\\n.ui-widget {\\n\\tfont-family: Arial,Helvetica,sans-serif;\\n\\tfont-size: 1em;\\n}\\n.ui-widget .ui-widget {\\n\\tfont-size: 1em;\\n}\\n.ui-widget input,\\n.ui-widget select,\\n.ui-widget textarea,\\n.ui-widget button {\\n\\tfont-family: Arial,Helvetica,sans-serif;\\n\\tfont-size: 1em;\\n}\\n.ui-widget.ui-widget-content {\\n\\tborder: 1px solid #c5c5c5;\\n}\\n.ui-widget-content {\\n\\tborder: 1px solid #dddddd;\\n\\tbackground: #ffffff;\\n\\tcolor: #333333;\\n}\\n.ui-widget-content a {\\n\\tcolor: #333333;\\n}\\n.ui-widget-header {\\n\\tborder: 1px solid #dddddd;\\n\\tbackground: #e9e9e9;\\n\\tcolor: #333333;\\n\\tfont-weight: bold;\\n}\\n.ui-widget-header a {\\n\\tcolor: #333333;\\n}\\n\\n/* Interaction states\\n----------------------------------*/\\n.ui-state-default,\\n.ui-widget-content .ui-state-default,\\n.ui-widget-header .ui-state-default,\\n.ui-button,\\n\\n/* We use html here because we need a greater specificity to make sure disabled\\nworks properly when clicked or hovered */\\nhtml .ui-button.ui-state-disabled:hover,\\nhtml .ui-button.ui-state-disabled:active {\\n\\tborder: 1px solid #c5c5c5;\\n\\tbackground: #f6f6f6;\\n\\tfont-weight: normal;\\n\\tcolor: #454545;\\n}\\n.ui-state-default a,\\n.ui-state-default a:link,\\n.ui-state-default a:visited,\\na.ui-button,\\na:link.ui-button,\\na:visited.ui-button,\\n.ui-button {\\n\\tcolor: #454545;\\n\\ttext-decoration: none;\\n}\\n.ui-state-hover,\\n.ui-widget-content .ui-state-hover,\\n.ui-widget-header .ui-state-hover,\\n.ui-state-focus,\\n.ui-widget-content .ui-state-focus,\\n.ui-widget-header .ui-state-focus,\\n.ui-button:hover,\\n.ui-button:focus {\\n\\tborder: 1px solid #cccccc;\\n\\tbackground: #ededed;\\n\\tfont-weight: normal;\\n\\tcolor: #2b2b2b;\\n}\\n.ui-state-hover a,\\n.ui-state-hover a:hover,\\n.ui-state-hover a:link,\\n.ui-state-hover a:visited,\\n.ui-state-focus a,\\n.ui-state-focus a:hover,\\n.ui-state-focus a:link,\\n.ui-state-focus a:visited,\\na.ui-button:hover,\\na.ui-button:focus {\\n\\tcolor: #2b2b2b;\\n\\ttext-decoration: none;\\n}\\n\\n.ui-visual-focus {\\n\\tbox-shadow: 0 0 3px 1px rgb(94, 158, 214);\\n}\\n.ui-state-active,\\n.ui-widget-content .ui-state-active,\\n.ui-widget-header .ui-state-active,\\na.ui-button:active,\\n.ui-button:active,\\n.ui-button.ui-state-active:hover {\\n\\tborder: 1px solid #003eff;\\n\\tbackground: #007fff;\\n\\tfont-weight: normal;\\n\\tcolor: #ffffff;\\n}\\n.ui-icon-background,\\n.ui-state-active .ui-icon-background {\\n\\tborder: #003eff;\\n\\tbackground-color: #ffffff;\\n}\\n.ui-state-active a,\\n.ui-state-active a:link,\\n.ui-state-active a:visited {\\n\\tcolor: #ffffff;\\n\\ttext-decoration: none;\\n}\\n\\n/* Interaction Cues\\n----------------------------------*/\\n.ui-state-highlight,\\n.ui-widget-content .ui-state-highlight,\\n.ui-widget-header .ui-state-highlight {\\n\\tborder: 1px solid #dad55e;\\n\\tbackground: #fffa90;\\n\\tcolor: #777620;\\n}\\n.ui-state-checked {\\n\\tborder: 1px solid #dad55e;\\n\\tbackground: #fffa90;\\n}\\n.ui-state-highlight a,\\n.ui-widget-content .ui-state-highlight a,\\n.ui-widget-header .ui-state-highlight a {\\n\\tcolor: #777620;\\n}\\n.ui-state-error,\\n.ui-widget-content .ui-state-error,\\n.ui-widget-header .ui-state-error {\\n\\tborder: 1px solid #f1a899;\\n\\tbackground: #fddfdf;\\n\\tcolor: #5f3f3f;\\n}\\n.ui-state-error a,\\n.ui-widget-content .ui-state-error a,\\n.ui-widget-header .ui-state-error a {\\n\\tcolor: #5f3f3f;\\n}\\n.ui-state-error-text,\\n.ui-widget-content .ui-state-error-text,\\n.ui-widget-header .ui-state-error-text {\\n\\tcolor: #5f3f3f;\\n}\\n.ui-priority-primary,\\n.ui-widget-content .ui-priority-primary,\\n.ui-widget-header .ui-priority-primary {\\n\\tfont-weight: bold;\\n}\\n.ui-priority-secondary,\\n.ui-widget-content .ui-priority-secondary,\\n.ui-widget-header .ui-priority-secondary {\\n\\topacity: .7;\\n\\t-ms-filter: \\\"alpha(opacity=70)\\\"; /* support: IE8 */\\n\\tfont-weight: normal;\\n}\\n.ui-state-disabled,\\n.ui-widget-content .ui-state-disabled,\\n.ui-widget-header .ui-state-disabled {\\n\\topacity: .35;\\n\\t-ms-filter: \\\"alpha(opacity=35)\\\"; /* support: IE8 */\\n\\tbackground-image: none;\\n}\\n.ui-state-disabled .ui-icon {\\n\\t-ms-filter: \\\"alpha(opacity=35)\\\"; /* support: IE8 - See #6059 */\\n}\\n\\n/* Icons\\n----------------------------------*/\\n\\n/* states and images */\\n.ui-icon {\\n\\twidth: 16px;\\n\\theight: 16px;\\n}\\n.ui-icon,\\n.ui-widget-content .ui-icon {\\n\\tbackground-image: url(\\\"images/ui-icons_444444_256x240.png\\\");\\n}\\n.ui-widget-header .ui-icon {\\n\\tbackground-image: url(\\\"images/ui-icons_444444_256x240.png\\\");\\n}\\n.ui-state-hover .ui-icon,\\n.ui-state-focus .ui-icon,\\n.ui-button:hover .ui-icon,\\n.ui-button:focus .ui-icon {\\n\\tbackground-image: url(\\\"images/ui-icons_555555_256x240.png\\\");\\n}\\n.ui-state-active .ui-icon,\\n.ui-button:active .ui-icon {\\n\\tbackground-image: url(\\\"images/ui-icons_ffffff_256x240.png\\\");\\n}\\n.ui-state-highlight .ui-icon,\\n.ui-button .ui-state-highlight.ui-icon {\\n\\tbackground-image: url(\\\"images/ui-icons_777620_256x240.png\\\");\\n}\\n.ui-state-error .ui-icon,\\n.ui-state-error-text .ui-icon {\\n\\tbackground-image: url(\\\"images/ui-icons_cc0000_256x240.png\\\");\\n}\\n.ui-button .ui-icon {\\n\\tbackground-image: url(\\\"images/ui-icons_777777_256x240.png\\\");\\n}\\n\\n/* positioning */\\n/* Three classes needed to override `.ui-button:hover .ui-icon` */\\n.ui-icon-blank.ui-icon-blank.ui-icon-blank {\\n\\tbackground-image: none;\\n}\\n.ui-icon-caret-1-n { background-position: 0 0; }\\n.ui-icon-caret-1-ne { background-position: -16px 0; }\\n.ui-icon-caret-1-e { background-position: -32px 0; }\\n.ui-icon-caret-1-se { background-position: -48px 0; }\\n.ui-icon-caret-1-s { background-position: -65px 0; }\\n.ui-icon-caret-1-sw { background-position: -80px 0; }\\n.ui-icon-caret-1-w { background-position: -96px 0; }\\n.ui-icon-caret-1-nw { background-position: -112px 0; }\\n.ui-icon-caret-2-n-s { background-position: -128px 0; }\\n.ui-icon-caret-2-e-w { background-position: -144px 0; }\\n.ui-icon-triangle-1-n { background-position: 0 -16px; }\\n.ui-icon-triangle-1-ne { background-position: -16px -16px; }\\n.ui-icon-triangle-1-e { background-position: -32px -16px; }\\n.ui-icon-triangle-1-se { background-position: -48px -16px; }\\n.ui-icon-triangle-1-s { background-position: -65px -16px; }\\n.ui-icon-triangle-1-sw { background-position: -80px -16px; }\\n.ui-icon-triangle-1-w { background-position: -96px -16px; }\\n.ui-icon-triangle-1-nw { background-position: -112px -16px; }\\n.ui-icon-triangle-2-n-s { background-position: -128px -16px; }\\n.ui-icon-triangle-2-e-w { background-position: -144px -16px; }\\n.ui-icon-arrow-1-n { background-position: 0 -32px; }\\n.ui-icon-arrow-1-ne { background-position: -16px -32px; }\\n.ui-icon-arrow-1-e { background-position: -32px -32px; }\\n.ui-icon-arrow-1-se { background-position: -48px -32px; }\\n.ui-icon-arrow-1-s { background-position: -65px -32px; }\\n.ui-icon-arrow-1-sw { background-position: -80px -32px; }\\n.ui-icon-arrow-1-w { background-position: -96px -32px; }\\n.ui-icon-arrow-1-nw { background-position: -112px -32px; }\\n.ui-icon-arrow-2-n-s { background-position: -128px -32px; }\\n.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }\\n.ui-icon-arrow-2-e-w { background-position: -160px -32px; }\\n.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }\\n.ui-icon-arrowstop-1-n { background-position: -192px -32px; }\\n.ui-icon-arrowstop-1-e { background-position: -208px -32px; }\\n.ui-icon-arrowstop-1-s { background-position: -224px -32px; }\\n.ui-icon-arrowstop-1-w { background-position: -240px -32px; }\\n.ui-icon-arrowthick-1-n { background-position: 1px -48px; }\\n.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }\\n.ui-icon-arrowthick-1-e { background-position: -32px -48px; }\\n.ui-icon-arrowthick-1-se { background-position: -48px -48px; }\\n.ui-icon-arrowthick-1-s { background-position: -64px -48px; }\\n.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }\\n.ui-icon-arrowthick-1-w { background-position: -96px -48px; }\\n.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }\\n.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }\\n.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }\\n.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }\\n.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }\\n.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }\\n.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }\\n.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }\\n.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }\\n.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }\\n.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }\\n.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }\\n.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }\\n.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }\\n.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }\\n.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }\\n.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }\\n.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }\\n.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }\\n.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }\\n.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }\\n.ui-icon-arrow-4 { background-position: 0 -80px; }\\n.ui-icon-arrow-4-diag { background-position: -16px -80px; }\\n.ui-icon-extlink { background-position: -32px -80px; }\\n.ui-icon-newwin { background-position: -48px -80px; }\\n.ui-icon-refresh { background-position: -64px -80px; }\\n.ui-icon-shuffle { background-position: -80px -80px; }\\n.ui-icon-transfer-e-w { background-position: -96px -80px; }\\n.ui-icon-transferthick-e-w { background-position: -112px -80px; }\\n.ui-icon-folder-collapsed { background-position: 0 -96px; }\\n.ui-icon-folder-open { background-position: -16px -96px; }\\n.ui-icon-document { background-position: -32px -96px; }\\n.ui-icon-document-b { background-position: -48px -96px; }\\n.ui-icon-note { background-position: -64px -96px; }\\n.ui-icon-mail-closed { background-position: -80px -96px; }\\n.ui-icon-mail-open { background-position: -96px -96px; }\\n.ui-icon-suitcase { background-position: -112px -96px; }\\n.ui-icon-comment { background-position: -128px -96px; }\\n.ui-icon-person { background-position: -144px -96px; }\\n.ui-icon-print { background-position: -160px -96px; }\\n.ui-icon-trash { background-position: -176px -96px; }\\n.ui-icon-locked { background-position: -192px -96px; }\\n.ui-icon-unlocked { background-position: -208px -96px; }\\n.ui-icon-bookmark { background-position: -224px -96px; }\\n.ui-icon-tag { background-position: -240px -96px; }\\n.ui-icon-home { background-position: 0 -112px; }\\n.ui-icon-flag { background-position: -16px -112px; }\\n.ui-icon-calendar { background-position: -32px -112px; }\\n.ui-icon-cart { background-position: -48px -112px; }\\n.ui-icon-pencil { background-position: -64px -112px; }\\n.ui-icon-clock { background-position: -80px -112px; }\\n.ui-icon-disk { background-position: -96px -112px; }\\n.ui-icon-calculator { background-position: -112px -112px; }\\n.ui-icon-zoomin { background-position: -128px -112px; }\\n.ui-icon-zoomout { background-position: -144px -112px; }\\n.ui-icon-search { background-position: -160px -112px; }\\n.ui-icon-wrench { background-position: -176px -112px; }\\n.ui-icon-gear { background-position: -192px -112px; }\\n.ui-icon-heart { background-position: -208px -112px; }\\n.ui-icon-star { background-position: -224px -112px; }\\n.ui-icon-link { background-position: -240px -112px; }\\n.ui-icon-cancel { background-position: 0 -128px; }\\n.ui-icon-plus { background-position: -16px -128px; }\\n.ui-icon-plusthick { background-position: -32px -128px; }\\n.ui-icon-minus { background-position: -48px -128px; }\\n.ui-icon-minusthick { background-position: -64px -128px; }\\n.ui-icon-close { background-position: -80px -128px; }\\n.ui-icon-closethick { background-position: -96px -128px; }\\n.ui-icon-key { background-position: -112px -128px; }\\n.ui-icon-lightbulb { background-position: -128px -128px; }\\n.ui-icon-scissors { background-position: -144px -128px; }\\n.ui-icon-clipboard { background-position: -160px -128px; }\\n.ui-icon-copy { background-position: -176px -128px; }\\n.ui-icon-contact { background-position: -192px -128px; }\\n.ui-icon-image { background-position: -208px -128px; }\\n.ui-icon-video { background-position: -224px -128px; }\\n.ui-icon-script { background-position: -240px -128px; }\\n.ui-icon-alert { background-position: 0 -144px; }\\n.ui-icon-info { background-position: -16px -144px; }\\n.ui-icon-notice { background-position: -32px -144px; }\\n.ui-icon-help { background-position: -48px -144px; }\\n.ui-icon-check { background-position: -64px -144px; }\\n.ui-icon-bullet { background-position: -80px -144px; }\\n.ui-icon-radio-on { background-position: -96px -144px; }\\n.ui-icon-radio-off { background-position: -112px -144px; }\\n.ui-icon-pin-w { background-position: -128px -144px; }\\n.ui-icon-pin-s { background-position: -144px -144px; }\\n.ui-icon-play { background-position: 0 -160px; }\\n.ui-icon-pause { background-position: -16px -160px; }\\n.ui-icon-seek-next { background-position: -32px -160px; }\\n.ui-icon-seek-prev { background-position: -48px -160px; }\\n.ui-icon-seek-end { background-position: -64px -160px; }\\n.ui-icon-seek-start { background-position: -80px -160px; }\\n/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */\\n.ui-icon-seek-first { background-position: -80px -160px; }\\n.ui-icon-stop { background-position: -96px -160px; }\\n.ui-icon-eject { background-position: -112px -160px; }\\n.ui-icon-volume-off { background-position: -128px -160px; }\\n.ui-icon-volume-on { background-position: -144px -160px; }\\n.ui-icon-power { background-position: 0 -176px; }\\n.ui-icon-signal-diag { background-position: -16px -176px; }\\n.ui-icon-signal { background-position: -32px -176px; }\\n.ui-icon-battery-0 { background-position: -48px -176px; }\\n.ui-icon-battery-1 { background-position: -64px -176px; }\\n.ui-icon-battery-2 { background-position: -80px -176px; }\\n.ui-icon-battery-3 { background-position: -96px -176px; }\\n.ui-icon-circle-plus { background-position: 0 -192px; }\\n.ui-icon-circle-minus { background-position: -16px -192px; }\\n.ui-icon-circle-close { background-position: -32px -192px; }\\n.ui-icon-circle-triangle-e { background-position: -48px -192px; }\\n.ui-icon-circle-triangle-s { background-position: -64px -192px; }\\n.ui-icon-circle-triangle-w { background-position: -80px -192px; }\\n.ui-icon-circle-triangle-n { background-position: -96px -192px; }\\n.ui-icon-circle-arrow-e { background-position: -112px -192px; }\\n.ui-icon-circle-arrow-s { background-position: -128px -192px; }\\n.ui-icon-circle-arrow-w { background-position: -144px -192px; }\\n.ui-icon-circle-arrow-n { background-position: -160px -192px; }\\n.ui-icon-circle-zoomin { background-position: -176px -192px; }\\n.ui-icon-circle-zoomout { background-position: -192px -192px; }\\n.ui-icon-circle-check { background-position: -208px -192px; }\\n.ui-icon-circlesmall-plus { background-position: 0 -208px; }\\n.ui-icon-circlesmall-minus { background-position: -16px -208px; }\\n.ui-icon-circlesmall-close { background-position: -32px -208px; }\\n.ui-icon-squaresmall-plus { background-position: -48px -208px; }\\n.ui-icon-squaresmall-minus { background-position: -64px -208px; }\\n.ui-icon-squaresmall-close { background-position: -80px -208px; }\\n.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }\\n.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }\\n.ui-icon-grip-solid-vertical { background-position: -32px -224px; }\\n.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }\\n.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }\\n.ui-icon-grip-diagonal-se { background-position: -80px -224px; }\\n\\n\\n/* Misc visuals\\n----------------------------------*/\\n\\n/* Corner radius */\\n.ui-corner-all,\\n.ui-corner-top,\\n.ui-corner-left,\\n.ui-corner-tl {\\n\\tborder-top-left-radius: 3px;\\n}\\n.ui-corner-all,\\n.ui-corner-top,\\n.ui-corner-right,\\n.ui-corner-tr {\\n\\tborder-top-right-radius: 3px;\\n}\\n.ui-corner-all,\\n.ui-corner-bottom,\\n.ui-corner-left,\\n.ui-corner-bl {\\n\\tborder-bottom-left-radius: 3px;\\n}\\n.ui-corner-all,\\n.ui-corner-bottom,\\n.ui-corner-right,\\n.ui-corner-br {\\n\\tborder-bottom-right-radius: 3px;\\n}\\n\\n/* Overlays */\\n.ui-widget-overlay {\\n\\tbackground: #aaaaaa;\\n\\topacity: .003;\\n\\t-ms-filter: \\\"alpha(opacity=.3)\\\"; /* support: IE8 */\\n}\\n.ui-widget-shadow {\\n\\t-webkit-box-shadow: 0px 0px 5px #666666;\\n\\tbox-shadow: 0px 0px 5px #666666;\\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\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"images/ui-icons_1d2d44_256x240.png\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_1___ = new URL(\"images/ui-icons_ffffff_256x240.png\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_2___ = new URL(\"images/ui-icons_ffd27a_256x240.png\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_3___ = new URL(\"images/ui-bg_diagonals-thick_20_666666_40x40.png\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_4___ = new URL(\"images/ui-bg_flat_10_000000_40x100.png\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_1___);\nvar ___CSS_LOADER_URL_REPLACEMENT_2___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_2___);\nvar ___CSS_LOADER_URL_REPLACEMENT_3___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_3___);\nvar ___CSS_LOADER_URL_REPLACEMENT_4___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_4___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.ui-widget-content{border:1px solid var(--color-border);background:var(--color-main-background) none;color:var(--color-main-text)}.ui-widget-content a{color:var(--color-main-text)}.ui-widget-header{border:none;color:var(--color-main-text);background-image:none}.ui-widget-header a{color:var(--color-main-text)}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid var(--color-border);background:var(--color-main-background) none;font-weight:bold;color:#555}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#555}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #ddd;background:var(--color-main-background) none;font-weight:bold;color:var(--color-main-text)}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited{color:var(--color-main-text)}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid var(--color-primary-element);background:var(--color-main-background) none;font-weight:bold;color:var(--color-main-text)}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:var(--color-main-text)}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid var(--color-main-background);background:var(--color-main-background) none;color:var(--color-text-light);font-weight:600}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:var(--color-text-lighter)}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:var(--color-error);background:var(--color-error) none;color:#fff}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#fff}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#fff}.ui-state-default .ui-icon{background-image:url(${___CSS_LOADER_URL_REPLACEMENT_0___})}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url(${___CSS_LOADER_URL_REPLACEMENT_0___})}.ui-state-active .ui-icon{background-image:url(${___CSS_LOADER_URL_REPLACEMENT_0___})}.ui-state-highlight .ui-icon{background-image:url(${___CSS_LOADER_URL_REPLACEMENT_1___})}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url(${___CSS_LOADER_URL_REPLACEMENT_2___})}.ui-icon.ui-icon-none{display:none}.ui-widget-overlay{background:#666 url(${___CSS_LOADER_URL_REPLACEMENT_3___}) 50% 50% repeat;opacity:.5}.ui-widget-shadow{margin:-5px 0 0 -5px;padding:5px;background:#000 url(${___CSS_LOADER_URL_REPLACEMENT_4___}) 50% 50% repeat-x;opacity:.2;border-radius:5px}.ui-tabs{border:none}.ui-tabs .ui-tabs-nav.ui-corner-all{border-end-start-radius:0;border-end-end-radius:0}.ui-tabs .ui-tabs-nav{background:none;margin-bottom:15px}.ui-tabs .ui-tabs-nav .ui-state-default{border:none;border-bottom:1px solid rgba(0,0,0,0);font-weight:normal;margin:0 !important;padding:0 !important}.ui-tabs .ui-tabs-nav .ui-state-hover,.ui-tabs .ui-tabs-nav .ui-state-active{border:none;border-bottom:1px solid var(--color-main-text);color:var(--color-main-text)}.ui-tabs .ui-tabs-nav .ui-state-hover a,.ui-tabs .ui-tabs-nav .ui-state-hover a:link,.ui-tabs .ui-tabs-nav .ui-state-hover a:hover,.ui-tabs .ui-tabs-nav .ui-state-hover a:visited,.ui-tabs .ui-tabs-nav .ui-state-active a,.ui-tabs .ui-tabs-nav .ui-state-active a:link,.ui-tabs .ui-tabs-nav .ui-state-active a:hover,.ui-tabs .ui-tabs-nav .ui-state-active a:visited{color:var(--color-main-text)}.ui-tabs .ui-tabs-nav .ui-state-active{font-weight:bold}.ui-autocomplete.ui-menu{padding:0}.ui-autocomplete.ui-menu.item-count-1,.ui-autocomplete.ui-menu.item-count-2{overflow-y:hidden}.ui-autocomplete.ui-menu .ui-menu-item a{color:var(--color-text-lighter);display:block;padding:4px;padding-inline-start:14px}.ui-autocomplete.ui-menu .ui-menu-item a.ui-state-focus,.ui-autocomplete.ui-menu .ui-menu-item a.ui-state-active{box-shadow:inset 4px 0 var(--color-primary-element);color:var(--color-main-text)}.ui-autocomplete.ui-widget-content{background:var(--color-main-background);border-top:none}.ui-autocomplete.ui-corner-all{border-radius:0;border-end-start-radius:var(--border-radius);border-end-end-radius:var(--border-radius)}.ui-autocomplete .ui-state-hover,.ui-autocomplete .ui-widget-content .ui-state-hover,.ui-autocomplete .ui-widget-header .ui-state-hover,.ui-autocomplete .ui-state-focus,.ui-autocomplete .ui-widget-content .ui-state-focus,.ui-autocomplete .ui-widget-header .ui-state-focus{border:1px solid rgba(0,0,0,0);background:inherit;color:var(--color-primary-element)}.ui-autocomplete .ui-menu-item a{border-radius:0 !important}.ui-button.primary{background-color:var(--color-primary-element);color:var(--color-primary-element-text);border:1px solid var(--color-primary-element-text)}.ui-button:hover{font-weight:bold !important}.ui-draggable-handle,.ui-selectable{touch-action:pan-y}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/jquery/css/jquery-ui-fixes.scss\"],\"names\":[],\"mappings\":\"AAMA,mBACC,oCAAA,CACA,4CAAA,CACA,4BAAA,CAED,qBACC,4BAAA,CAED,kBACC,WAAA,CACA,4BAAA,CACA,qBAAA,CAED,oBACC,4BAAA,CAKD,2FAGC,oCAAA,CACA,4CAAA,CACA,gBAAA,CACA,UAAA,CAED,yEAGC,UAAA,CAED,0KAMC,qBAAA,CACA,4CAAA,CACA,gBAAA,CACA,4BAAA,CAED,2FAIC,4BAAA,CAED,wFAGC,6CAAA,CACA,4CAAA,CACA,gBAAA,CACA,4BAAA,CAED,sEAGC,4BAAA,CAKD,iGAGC,6CAAA,CACA,4CAAA,CACA,6BAAA,CACA,eAAA,CAED,uGAGC,+BAAA,CAED,qFAGC,yBAAA,CACA,kCAAA,CACA,UAAA,CAED,2FAGC,UAAA,CAED,oGAGC,UAAA,CAKD,2BACC,wDAAA,CAED,kDAEC,wDAAA,CAED,0BACC,wDAAA,CAED,6BACC,wDAAA,CAED,uDAEC,wDAAA,CAED,sBACC,YAAA,CAMD,mBACC,sEAAA,CACA,UAAA,CAED,kBACC,oBAAA,CACA,WAAA,CACA,wEAAA,CACA,UAAA,CACA,iBAAA,CAID,SACC,WAAA,CAEA,oCACC,yBAAA,CACA,uBAAA,CAGD,sBACC,eAAA,CACA,kBAAA,CAEA,wCACC,WAAA,CACA,qCAAA,CACA,kBAAA,CACA,mBAAA,CACA,oBAAA,CAGD,6EAEC,WAAA,CACA,8CAAA,CACA,4BAAA,CACA,0WACC,4BAAA,CAGF,uCACC,gBAAA,CAOF,yBACC,SAAA,CAIA,4EAEC,iBAAA,CAGD,yCACC,+BAAA,CACA,aAAA,CACA,WAAA,CACA,yBAAA,CAEA,iHACC,mDAAA,CACA,4BAAA,CAKH,mCACC,uCAAA,CACA,eAAA,CAGD,+BACC,eAAA,CACA,4CAAA,CACA,0CAAA,CAGD,gRAKC,8BAAA,CACA,kBAAA,CACA,kCAAA,CAIA,iCACC,0BAAA,CAKH,mBACC,6CAAA,CACA,uCAAA,CACA,kDAAA,CAID,iBACI,2BAAA,CAKJ,oCAEC,kBAAA\",\"sourcesContent\":[\"/**\\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\\n * SPDX-License-Identifier: AGPL-3.0-or-later\\n */\\n/* Component containers\\n----------------------------------*/\\n.ui-widget-content {\\n\\tborder: 1px solid var(--color-border);\\n\\tbackground: var(--color-main-background) none;\\n\\tcolor: var(--color-main-text);\\n}\\n.ui-widget-content a {\\n\\tcolor: var(--color-main-text);\\n}\\n.ui-widget-header {\\n\\tborder: none;\\n\\tcolor: var(--color-main-text);\\n\\tbackground-image: none;\\n}\\n.ui-widget-header a {\\n\\tcolor: var(--color-main-text);\\n}\\n\\n/* Interaction states\\n----------------------------------*/\\n.ui-state-default,\\n.ui-widget-content .ui-state-default,\\n.ui-widget-header .ui-state-default {\\n\\tborder: 1px solid var(--color-border);\\n\\tbackground: var(--color-main-background) none;\\n\\tfont-weight: bold;\\n\\tcolor: #555;\\n}\\n.ui-state-default a,\\n.ui-state-default a:link,\\n.ui-state-default a:visited {\\n\\tcolor: #555;\\n}\\n.ui-state-hover,\\n.ui-widget-content .ui-state-hover,\\n.ui-widget-header .ui-state-hover,\\n.ui-state-focus,\\n.ui-widget-content .ui-state-focus,\\n.ui-widget-header .ui-state-focus {\\n\\tborder: 1px solid #ddd;\\n\\tbackground: var(--color-main-background) none;\\n\\tfont-weight: bold;\\n\\tcolor: var(--color-main-text);\\n}\\n.ui-state-hover a,\\n.ui-state-hover a:hover,\\n.ui-state-hover a:link,\\n.ui-state-hover a:visited {\\n\\tcolor: var(--color-main-text);\\n}\\n.ui-state-active,\\n.ui-widget-content .ui-state-active,\\n.ui-widget-header .ui-state-active {\\n\\tborder: 1px solid var(--color-primary-element);\\n\\tbackground: var(--color-main-background) none;\\n\\tfont-weight: bold;\\n\\tcolor: var(--color-main-text);\\n}\\n.ui-state-active a,\\n.ui-state-active a:link,\\n.ui-state-active a:visited {\\n\\tcolor: var(--color-main-text);\\n}\\n\\n/* Interaction Cues\\n----------------------------------*/\\n.ui-state-highlight,\\n.ui-widget-content .ui-state-highlight,\\n.ui-widget-header .ui-state-highlight {\\n\\tborder: 1px solid var(--color-main-background);\\n\\tbackground: var(--color-main-background) none;\\n\\tcolor: var(--color-text-light);\\n\\tfont-weight: 600;\\n}\\n.ui-state-highlight a,\\n.ui-widget-content .ui-state-highlight a,\\n.ui-widget-header .ui-state-highlight a {\\n\\tcolor: var(--color-text-lighter);\\n}\\n.ui-state-error,\\n.ui-widget-content .ui-state-error,\\n.ui-widget-header .ui-state-error {\\n\\tborder: var(--color-error);\\n\\tbackground: var(--color-error) none;\\n\\tcolor: #ffffff;\\n}\\n.ui-state-error a,\\n.ui-widget-content .ui-state-error a,\\n.ui-widget-header .ui-state-error a {\\n\\tcolor: #ffffff;\\n}\\n.ui-state-error-text,\\n.ui-widget-content .ui-state-error-text,\\n.ui-widget-header .ui-state-error-text {\\n\\tcolor: #ffffff;\\n}\\n\\n/* Icons\\n----------------------------------*/\\n.ui-state-default .ui-icon {\\n\\tbackground-image: url('images/ui-icons_1d2d44_256x240.png');\\n}\\n.ui-state-hover .ui-icon,\\n.ui-state-focus .ui-icon {\\n\\tbackground-image: url('images/ui-icons_1d2d44_256x240.png');\\n}\\n.ui-state-active .ui-icon {\\n\\tbackground-image: url('images/ui-icons_1d2d44_256x240.png');\\n}\\n.ui-state-highlight .ui-icon {\\n\\tbackground-image: url('images/ui-icons_ffffff_256x240.png');\\n}\\n.ui-state-error .ui-icon,\\n.ui-state-error-text .ui-icon {\\n\\tbackground-image: url('images/ui-icons_ffd27a_256x240.png');\\n}\\n.ui-icon.ui-icon-none {\\n\\tdisplay: none;\\n}\\n\\n/* Misc visuals\\n----------------------------------*/\\n/* Overlays */\\n.ui-widget-overlay {\\n\\tbackground: #666666 url('images/ui-bg_diagonals-thick_20_666666_40x40.png') 50% 50% repeat;\\n\\topacity: .5;\\n}\\n.ui-widget-shadow {\\n\\tmargin: -5px 0 0 -5px;\\n\\tpadding: 5px;\\n\\tbackground: #000000 url('images/ui-bg_flat_10_000000_40x100.png') 50% 50% repeat-x;\\n\\topacity: .2;\\n\\tborder-radius: 5px;\\n}\\n\\n/* Tabs customizations */\\n.ui-tabs {\\n\\tborder: none;\\n\\n\\t.ui-tabs-nav.ui-corner-all {\\n\\t\\tborder-end-start-radius: 0;\\n\\t\\tborder-end-end-radius: 0;\\n\\t}\\n\\n\\t.ui-tabs-nav {\\n\\t\\tbackground: none;\\n\\t\\tmargin-bottom: 15px;\\n\\n\\t\\t.ui-state-default {\\n\\t\\t\\tborder: none;\\n\\t\\t\\tborder-bottom: 1px solid transparent;\\n\\t\\t\\tfont-weight: normal;\\n\\t\\t\\tmargin: 0 !important;\\n\\t\\t\\tpadding: 0 !important;\\n\\t\\t}\\n\\n\\t\\t.ui-state-hover,\\n\\t\\t.ui-state-active {\\n\\t\\t\\tborder: none;\\n\\t\\t\\tborder-bottom: 1px solid var(--color-main-text);\\n\\t\\t\\tcolor: var(--color-main-text);\\n\\t\\t\\ta, a:link, a:hover, a:visited {\\n\\t\\t\\t\\tcolor: var(--color-main-text);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\t.ui-state-active {\\n\\t\\t\\tfont-weight: bold;\\n\\t\\t}\\n\\t}\\n}\\n\\n/* Select menus */\\n.ui-autocomplete {\\n\\t&.ui-menu {\\n\\t\\tpadding: 0;\\n\\n\\t\\t/* scrolling starts from three items,\\n\\t\\t * so hide overflow and scrollbars for a clean layout */\\n\\t\\t&.item-count-1,\\n\\t\\t&.item-count-2 {\\n\\t\\t\\toverflow-y: hidden;\\n\\t\\t}\\n\\n\\t\\t.ui-menu-item a {\\n\\t\\t\\tcolor: var(--color-text-lighter);\\n\\t\\t\\tdisplay: block;\\n\\t\\t\\tpadding: 4px;\\n\\t\\t\\tpadding-inline-start: 14px;\\n\\n\\t\\t\\t&.ui-state-focus, &.ui-state-active {\\n\\t\\t\\t\\tbox-shadow: inset 4px 0 var(--color-primary-element);\\n\\t\\t\\t\\tcolor: var(--color-main-text);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&.ui-widget-content {\\n\\t\\tbackground: var(--color-main-background);\\n\\t\\tborder-top: none;\\n\\t}\\n\\n\\t&.ui-corner-all {\\n\\t\\tborder-radius: 0;\\n\\t\\tborder-end-start-radius: var(--border-radius);\\n\\t\\tborder-end-end-radius: var(--border-radius);\\n\\t}\\n\\n\\t.ui-state-hover, .ui-widget-content .ui-state-hover,\\n\\t.ui-widget-header .ui-state-hover,\\n\\t.ui-state-focus,\\n\\t.ui-widget-content .ui-state-focus,\\n\\t.ui-widget-header .ui-state-focus {\\n\\t\\tborder: 1px solid transparent;\\n\\t\\tbackground: inherit;\\n\\t\\tcolor: var(--color-primary-element);\\n\\t}\\n\\n\\t.ui-menu-item {\\n\\t\\ta {\\n\\t\\t\\tborder-radius: 0 !important;\\n\\t\\t}\\n\\t}\\n}\\n\\n.ui-button.primary {\\n\\tbackground-color: var(--color-primary-element);\\n\\tcolor: var(--color-primary-element-text);\\n\\tborder: 1px solid var(--color-primary-element-text);\\n}\\n\\n// fix ui-buttons on hover\\n.ui-button:hover {\\n font-weight:bold !important;\\n}\\n\\n\\n/* DRAGGABLE */\\n.ui-draggable-handle,\\n.ui-selectable {\\n\\ttouch-action: pan-y;\\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, `.oc-dialog{background:var(--color-main-background);color:var(--color-text-light);border-radius:var(--border-radius-large);box-shadow:0 0 30px var(--color-box-shadow);padding:24px;z-index:100001;font-size:100%;box-sizing:border-box;min-width:200px;top:50%;inset-inline-start:50%;transform:translate(-50%, -50%);max-height:calc(100% - 20px);max-width:calc(100% - 20px);overflow:auto}.oc-dialog-title{background:var(--color-main-background)}.oc-dialog-buttonrow{position:relative;display:flex;background:rgba(0,0,0,0);right:0;bottom:0;padding:0;padding-top:10px;box-sizing:border-box;width:100%;background-image:linear-gradient(rgba(255, 255, 255, 0), var(--color-main-background))}.oc-dialog-buttonrow.twobuttons{justify-content:space-between}.oc-dialog-buttonrow.onebutton,.oc-dialog-buttonrow.twobuttons.aside{justify-content:flex-end}.oc-dialog-buttonrow button{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;height:44px;min-width:44px}.oc-dialog-close{position:absolute;width:44px !important;height:44px !important;top:4px;right:4px;padding:25px;background:var(--icon-close-dark) no-repeat center;opacity:.5;border-radius:var(--border-radius-pill)}.oc-dialog-close:hover,.oc-dialog-close:focus,.oc-dialog-close:active{opacity:1}.oc-dialog-dim{background-color:#000;opacity:.2;z-index:100001;position:fixed;top:0;left:0;width:100%;height:100%}body.theme--dark .oc-dialog-dim{opacity:.8}.oc-dialog-content{width:100%;max-width:550px}.oc-dialog.password-confirmation .oc-dialog-content{width:auto}.oc-dialog.password-confirmation .oc-dialog-content input[type=password]{width:100%}.oc-dialog.password-confirmation .oc-dialog-content label{display:none}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/jquery/css/jquery.ocdialog.scss\"],\"names\":[],\"mappings\":\"AAIA,WACC,uCAAA,CACA,6BAAA,CACA,wCAAA,CACA,2CAAA,CACA,YAAA,CACA,cAAA,CACA,cAAA,CACA,qBAAA,CACA,eAAA,CACA,OAAA,CACA,sBAAA,CACA,+BAAA,CACA,4BAAA,CACA,2BAAA,CACA,aAAA,CAED,iBACC,uCAAA,CAED,qBACC,iBAAA,CACA,YAAA,CACA,wBAAA,CACA,OAAA,CACA,QAAA,CACA,SAAA,CACA,gBAAA,CACA,qBAAA,CACA,UAAA,CACA,sFAAA,CAEA,gCACO,6BAAA,CAGP,qEAEC,wBAAA,CAGD,4BACI,kBAAA,CACA,eAAA,CACH,sBAAA,CACA,WAAA,CACA,cAAA,CAIF,iBACC,iBAAA,CACA,qBAAA,CACA,sBAAA,CACA,OAAA,CACA,SAAA,CACA,YAAA,CACA,kDAAA,CACA,UAAA,CACA,uCAAA,CAEA,sEAGC,SAAA,CAIF,eACC,qBAAA,CACA,UAAA,CACA,cAAA,CACA,cAAA,CACA,KAAA,CACA,MAAA,CACA,UAAA,CACA,WAAA,CAGD,gCACC,UAAA,CAGD,mBACC,UAAA,CACA,eAAA,CAIA,oDACC,UAAA,CAEA,yEACC,UAAA,CAED,0DACC,YAAA\",\"sourcesContent\":[\"/**\\n * SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors\\n * SPDX-License-Identifier: AGPL-3.0-or-later\\n */\\n.oc-dialog {\\n\\tbackground: var(--color-main-background);\\n\\tcolor: var(--color-text-light);\\n\\tborder-radius: var(--border-radius-large);\\n\\tbox-shadow: 0 0 30px var(--color-box-shadow);\\n\\tpadding: 24px;\\n\\tz-index: 100001;\\n\\tfont-size: 100%;\\n\\tbox-sizing: border-box;\\n\\tmin-width: 200px;\\n\\ttop: 50%;\\n\\tinset-inline-start: 50%;\\n\\ttransform: translate(-50%, -50%);\\n\\tmax-height: calc(100% - 20px);\\n\\tmax-width: calc(100% - 20px);\\n\\toverflow: auto;\\n}\\n.oc-dialog-title {\\n\\tbackground: var(--color-main-background);\\n}\\n.oc-dialog-buttonrow {\\n\\tposition: relative;\\n\\tdisplay: flex;\\n\\tbackground: transparent;\\n\\tright: 0;\\n\\tbottom: 0;\\n\\tpadding: 0;\\n\\tpadding-top: 10px;\\n\\tbox-sizing: border-box;\\n\\twidth: 100%;\\n\\tbackground-image: linear-gradient(rgba(255, 255, 255, 0.0), var(--color-main-background));\\n\\n\\t&.twobuttons {\\n justify-content: space-between;\\n }\\n\\n\\t&.onebutton,\\n\\t&.twobuttons.aside {\\n\\t\\tjustify-content: flex-end;\\n\\t}\\n\\n\\tbutton {\\n\\t white-space: nowrap;\\n\\t overflow: hidden;\\n\\t\\ttext-overflow: ellipsis;\\n\\t\\theight: 44px;\\n\\t\\tmin-width: 44px;\\n\\t}\\n}\\n\\n.oc-dialog-close {\\n\\tposition: absolute;\\n\\twidth: 44px !important;\\n\\theight: 44px !important;\\n\\ttop: 4px;\\n\\tright: 4px;\\n\\tpadding: 25px;\\n\\tbackground: var(--icon-close-dark) no-repeat center;\\n\\topacity: .5;\\n\\tborder-radius: var(--border-radius-pill);\\n\\n\\t&:hover,\\n\\t&:focus,\\n\\t&:active {\\n\\t\\topacity: 1;\\n\\t}\\n}\\n\\n.oc-dialog-dim {\\n\\tbackground-color: #000;\\n\\topacity: .2;\\n\\tz-index: 100001;\\n\\tposition: fixed;\\n\\ttop: 0;\\n\\tleft: 0;\\n\\twidth: 100%;\\n\\theight: 100%;\\n}\\n\\nbody.theme--dark .oc-dialog-dim {\\n\\topacity: .8;\\n}\\n\\n.oc-dialog-content {\\n\\twidth: 100%;\\n\\tmax-width: 550px;\\n}\\n\\n.oc-dialog.password-confirmation {\\n\\t.oc-dialog-content {\\n\\t\\twidth: auto;\\n\\n\\t\\tinput[type=password] {\\n\\t\\t\\twidth: 100%;\\n\\t\\t}\\n\\t\\tlabel {\\n\\t\\t\\tdisplay: none;\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"select2.png\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_1___ = new URL(\"select2-spinner.gif\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_2___ = new URL(\"select2x2.png\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_1___);\nvar ___CSS_LOADER_URL_REPLACEMENT_2___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_2___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*\nVersion: @@ver@@ Timestamp: @@timestamp@@\n*/\n.select2-container {\n margin: 0;\n position: relative;\n display: inline-block;\n /* inline-block for ie7 */\n zoom: 1;\n *display: inline;\n vertical-align: middle;\n}\n\n.select2-container,\n.select2-drop,\n.select2-search,\n.select2-search input {\n /*\n Force border-box so that % widths fit the parent\n container without overlap because of margin/padding.\n More Info : http://www.quirksmode.org/css/box.html\n */\n -webkit-box-sizing: border-box; /* webkit */\n -moz-box-sizing: border-box; /* firefox */\n box-sizing: border-box; /* css3 */\n}\n\n.select2-container .select2-choice {\n display: block;\n height: 26px;\n padding: 0 0 0 8px;\n overflow: hidden;\n position: relative;\n\n border: 1px solid #aaa;\n white-space: nowrap;\n line-height: 26px;\n color: #444;\n text-decoration: none;\n\n border-radius: 4px;\n\n background-clip: padding-box;\n\n -webkit-touch-callout: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n\n background-color: #fff;\n background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #eee), color-stop(0.5, #fff));\n background-image: -webkit-linear-gradient(center bottom, #eee 0%, #fff 50%);\n background-image: -moz-linear-gradient(center bottom, #eee 0%, #fff 50%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#ffffff', endColorstr = '#eeeeee', GradientType = 0);\n background-image: linear-gradient(to top, #eee 0%, #fff 50%);\n}\n\nhtml[dir=\"rtl\"] .select2-container .select2-choice {\n padding: 0 8px 0 0;\n}\n\n.select2-container.select2-drop-above .select2-choice {\n border-bottom-color: #aaa;\n\n border-radius: 0 0 4px 4px;\n\n background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #eee), color-stop(0.9, #fff));\n background-image: -webkit-linear-gradient(center bottom, #eee 0%, #fff 90%);\n background-image: -moz-linear-gradient(center bottom, #eee 0%, #fff 90%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#eeeeee', GradientType=0);\n background-image: linear-gradient(to bottom, #eee 0%, #fff 90%);\n}\n\n.select2-container.select2-allowclear .select2-choice .select2-chosen {\n margin-right: 42px;\n}\n\n.select2-container .select2-choice > .select2-chosen {\n margin-right: 26px;\n display: block;\n overflow: hidden;\n\n white-space: nowrap;\n\n text-overflow: ellipsis;\n float: none;\n width: auto;\n}\n\nhtml[dir=\"rtl\"] .select2-container .select2-choice > .select2-chosen {\n margin-left: 26px;\n margin-right: 0;\n}\n\n.select2-container .select2-choice abbr {\n display: none;\n width: 12px;\n height: 12px;\n position: absolute;\n right: 24px;\n top: 8px;\n\n font-size: 1px;\n text-decoration: none;\n\n border: 0;\n background: url(${___CSS_LOADER_URL_REPLACEMENT_0___}) right top no-repeat;\n cursor: pointer;\n outline: 0;\n}\n\n.select2-container.select2-allowclear .select2-choice abbr {\n display: inline-block;\n}\n\n.select2-container .select2-choice abbr:hover {\n background-position: right -11px;\n cursor: pointer;\n}\n\n.select2-drop-mask {\n border: 0;\n margin: 0;\n padding: 0;\n position: fixed;\n left: 0;\n top: 0;\n min-height: 100%;\n min-width: 100%;\n height: auto;\n width: auto;\n opacity: 0;\n z-index: 9998;\n /* styles required for IE to work */\n background-color: #fff;\n filter: alpha(opacity=0);\n}\n\n.select2-drop {\n width: 100%;\n margin-top: -1px;\n position: absolute;\n z-index: 9999;\n top: 100%;\n\n background: #fff;\n color: #000;\n border: 1px solid #aaa;\n border-top: 0;\n\n border-radius: 0 0 4px 4px;\n\n -webkit-box-shadow: 0 4px 5px rgba(0, 0, 0, .15);\n box-shadow: 0 4px 5px rgba(0, 0, 0, .15);\n}\n\n.select2-drop.select2-drop-above {\n margin-top: 1px;\n border-top: 1px solid #aaa;\n border-bottom: 0;\n\n border-radius: 4px 4px 0 0;\n\n -webkit-box-shadow: 0 -4px 5px rgba(0, 0, 0, .15);\n box-shadow: 0 -4px 5px rgba(0, 0, 0, .15);\n}\n\n.select2-drop-active {\n border: 1px solid #5897fb;\n border-top: none;\n}\n\n.select2-drop.select2-drop-above.select2-drop-active {\n border-top: 1px solid #5897fb;\n}\n\n.select2-drop-auto-width {\n border-top: 1px solid #aaa;\n width: auto;\n}\n\n.select2-drop-auto-width .select2-search {\n padding-top: 4px;\n}\n\n.select2-container .select2-choice .select2-arrow {\n display: inline-block;\n width: 18px;\n height: 100%;\n position: absolute;\n right: 0;\n top: 0;\n\n border-left: 1px solid #aaa;\n border-radius: 0 4px 4px 0;\n\n background-clip: padding-box;\n\n background: #ccc;\n background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #ccc), color-stop(0.6, #eee));\n background-image: -webkit-linear-gradient(center bottom, #ccc 0%, #eee 60%);\n background-image: -moz-linear-gradient(center bottom, #ccc 0%, #eee 60%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#eeeeee', endColorstr = '#cccccc', GradientType = 0);\n background-image: linear-gradient(to top, #ccc 0%, #eee 60%);\n}\n\nhtml[dir=\"rtl\"] .select2-container .select2-choice .select2-arrow {\n left: 0;\n right: auto;\n\n border-left: none;\n border-right: 1px solid #aaa;\n border-radius: 4px 0 0 4px;\n}\n\n.select2-container .select2-choice .select2-arrow b {\n display: block;\n width: 100%;\n height: 100%;\n background: url(${___CSS_LOADER_URL_REPLACEMENT_0___}) no-repeat 0 1px;\n}\n\nhtml[dir=\"rtl\"] .select2-container .select2-choice .select2-arrow b {\n background-position: 2px 1px;\n}\n\n.select2-search {\n display: inline-block;\n width: 100%;\n min-height: 26px;\n margin: 0;\n padding-left: 4px;\n padding-right: 4px;\n\n position: relative;\n z-index: 10000;\n\n white-space: nowrap;\n}\n\n.select2-search input {\n width: 100%;\n height: auto !important;\n min-height: 26px;\n padding: 4px 20px 4px 5px;\n margin: 0;\n\n outline: 0;\n font-family: sans-serif;\n font-size: 1em;\n\n border: 1px solid #aaa;\n border-radius: 0;\n\n -webkit-box-shadow: none;\n box-shadow: none;\n\n background: #fff url(${___CSS_LOADER_URL_REPLACEMENT_0___}) no-repeat 100% -22px;\n background: url(${___CSS_LOADER_URL_REPLACEMENT_0___}) no-repeat 100% -22px, -webkit-gradient(linear, left bottom, left top, color-stop(0.85, #fff), color-stop(0.99, #eee));\n background: url(${___CSS_LOADER_URL_REPLACEMENT_0___}) no-repeat 100% -22px, -webkit-linear-gradient(center bottom, #fff 85%, #eee 99%);\n background: url(${___CSS_LOADER_URL_REPLACEMENT_0___}) no-repeat 100% -22px, -moz-linear-gradient(center bottom, #fff 85%, #eee 99%);\n background: url(${___CSS_LOADER_URL_REPLACEMENT_0___}) no-repeat 100% -22px, linear-gradient(to bottom, #fff 85%, #eee 99%) 0 0;\n}\n\nhtml[dir=\"rtl\"] .select2-search input {\n padding: 4px 5px 4px 20px;\n\n background: #fff url(${___CSS_LOADER_URL_REPLACEMENT_0___}) no-repeat -37px -22px;\n background: url(${___CSS_LOADER_URL_REPLACEMENT_0___}) no-repeat -37px -22px, -webkit-gradient(linear, left bottom, left top, color-stop(0.85, #fff), color-stop(0.99, #eee));\n background: url(${___CSS_LOADER_URL_REPLACEMENT_0___}) no-repeat -37px -22px, -webkit-linear-gradient(center bottom, #fff 85%, #eee 99%);\n background: url(${___CSS_LOADER_URL_REPLACEMENT_0___}) no-repeat -37px -22px, -moz-linear-gradient(center bottom, #fff 85%, #eee 99%);\n background: url(${___CSS_LOADER_URL_REPLACEMENT_0___}) no-repeat -37px -22px, linear-gradient(to bottom, #fff 85%, #eee 99%) 0 0;\n}\n\n.select2-drop.select2-drop-above .select2-search input {\n margin-top: 4px;\n}\n\n.select2-search input.select2-active {\n background: #fff url(${___CSS_LOADER_URL_REPLACEMENT_1___}) no-repeat 100%;\n background: url(${___CSS_LOADER_URL_REPLACEMENT_1___}) no-repeat 100%, -webkit-gradient(linear, left bottom, left top, color-stop(0.85, #fff), color-stop(0.99, #eee));\n background: url(${___CSS_LOADER_URL_REPLACEMENT_1___}) no-repeat 100%, -webkit-linear-gradient(center bottom, #fff 85%, #eee 99%);\n background: url(${___CSS_LOADER_URL_REPLACEMENT_1___}) no-repeat 100%, -moz-linear-gradient(center bottom, #fff 85%, #eee 99%);\n background: url(${___CSS_LOADER_URL_REPLACEMENT_1___}) no-repeat 100%, linear-gradient(to bottom, #fff 85%, #eee 99%) 0 0;\n}\n\n.select2-container-active .select2-choice,\n.select2-container-active .select2-choices {\n border: 1px solid #5897fb;\n outline: none;\n\n -webkit-box-shadow: 0 0 5px rgba(0, 0, 0, .3);\n box-shadow: 0 0 5px rgba(0, 0, 0, .3);\n}\n\n.select2-dropdown-open .select2-choice {\n border-bottom-color: transparent;\n -webkit-box-shadow: 0 1px 0 #fff inset;\n box-shadow: 0 1px 0 #fff inset;\n\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n\n background-color: #eee;\n background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #fff), color-stop(0.5, #eee));\n background-image: -webkit-linear-gradient(center bottom, #fff 0%, #eee 50%);\n background-image: -moz-linear-gradient(center bottom, #fff 0%, #eee 50%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#ffffff', GradientType=0);\n background-image: linear-gradient(to top, #fff 0%, #eee 50%);\n}\n\n.select2-dropdown-open.select2-drop-above .select2-choice,\n.select2-dropdown-open.select2-drop-above .select2-choices {\n border: 1px solid #5897fb;\n border-top-color: transparent;\n\n background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #fff), color-stop(0.5, #eee));\n background-image: -webkit-linear-gradient(center top, #fff 0%, #eee 50%);\n background-image: -moz-linear-gradient(center top, #fff 0%, #eee 50%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#ffffff', GradientType=0);\n background-image: linear-gradient(to bottom, #fff 0%, #eee 50%);\n}\n\n.select2-dropdown-open .select2-choice .select2-arrow {\n background: transparent;\n border-left: none;\n filter: none;\n}\nhtml[dir=\"rtl\"] .select2-dropdown-open .select2-choice .select2-arrow {\n border-right: none;\n}\n\n.select2-dropdown-open .select2-choice .select2-arrow b {\n background-position: -18px 1px;\n}\n\nhtml[dir=\"rtl\"] .select2-dropdown-open .select2-choice .select2-arrow b {\n background-position: -16px 1px;\n}\n\n.select2-hidden-accessible {\n border: 0;\n clip: rect(0 0 0 0);\n height: 1px;\n margin: -1px;\n overflow: hidden;\n padding: 0;\n position: absolute;\n width: 1px;\n}\n\n/* results */\n.select2-results {\n max-height: 200px;\n padding: 0 0 0 4px;\n margin: 4px 4px 4px 0;\n position: relative;\n overflow-x: hidden;\n overflow-y: auto;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\n\nhtml[dir=\"rtl\"] .select2-results {\n padding: 0 4px 0 0;\n margin: 4px 0 4px 4px;\n}\n\n.select2-results ul.select2-result-sub {\n margin: 0;\n padding-left: 0;\n}\n\n.select2-results li {\n list-style: none;\n display: list-item;\n background-image: none;\n}\n\n.select2-results li.select2-result-with-children > .select2-result-label {\n font-weight: bold;\n}\n\n.select2-results .select2-result-label {\n padding: 3px 7px 4px;\n margin: 0;\n cursor: pointer;\n\n min-height: 1em;\n\n -webkit-touch-callout: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n\n.select2-results-dept-1 .select2-result-label { padding-left: 20px }\n.select2-results-dept-2 .select2-result-label { padding-left: 40px }\n.select2-results-dept-3 .select2-result-label { padding-left: 60px }\n.select2-results-dept-4 .select2-result-label { padding-left: 80px }\n.select2-results-dept-5 .select2-result-label { padding-left: 100px }\n.select2-results-dept-6 .select2-result-label { padding-left: 110px }\n.select2-results-dept-7 .select2-result-label { padding-left: 120px }\n\n.select2-results .select2-highlighted {\n background: #3875d7;\n color: #fff;\n}\n\n.select2-results li em {\n background: #feffde;\n font-style: normal;\n}\n\n.select2-results .select2-highlighted em {\n background: transparent;\n}\n\n.select2-results .select2-highlighted ul {\n background: #fff;\n color: #000;\n}\n\n.select2-results .select2-no-results,\n.select2-results .select2-searching,\n.select2-results .select2-ajax-error,\n.select2-results .select2-selection-limit {\n background: #f4f4f4;\n display: list-item;\n padding-left: 5px;\n}\n\n/*\ndisabled look for disabled choices in the results dropdown\n*/\n.select2-results .select2-disabled.select2-highlighted {\n color: #666;\n background: #f4f4f4;\n display: list-item;\n cursor: default;\n}\n.select2-results .select2-disabled {\n background: #f4f4f4;\n display: list-item;\n cursor: default;\n}\n\n.select2-results .select2-selected {\n display: none;\n}\n\n.select2-more-results.select2-active {\n background: #f4f4f4 url(${___CSS_LOADER_URL_REPLACEMENT_1___}) no-repeat 100%;\n}\n\n.select2-results .select2-ajax-error {\n background: rgba(255, 50, 50, .2);\n}\n\n.select2-more-results {\n background: #f4f4f4;\n display: list-item;\n}\n\n/* disabled styles */\n\n.select2-container.select2-container-disabled .select2-choice {\n background-color: #f4f4f4;\n background-image: none;\n border: 1px solid #ddd;\n cursor: default;\n}\n\n.select2-container.select2-container-disabled .select2-choice .select2-arrow {\n background-color: #f4f4f4;\n background-image: none;\n border-left: 0;\n}\n\n.select2-container.select2-container-disabled .select2-choice abbr {\n display: none;\n}\n\n\n/* multiselect */\n\n.select2-container-multi .select2-choices {\n height: auto !important;\n height: 1%;\n margin: 0;\n padding: 0 5px 0 0;\n position: relative;\n\n border: 1px solid #aaa;\n cursor: text;\n overflow: hidden;\n\n background-color: #fff;\n background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(1%, #eee), color-stop(15%, #fff));\n background-image: -webkit-linear-gradient(top, #eee 1%, #fff 15%);\n background-image: -moz-linear-gradient(top, #eee 1%, #fff 15%);\n background-image: linear-gradient(to bottom, #eee 1%, #fff 15%);\n}\n\nhtml[dir=\"rtl\"] .select2-container-multi .select2-choices {\n padding: 0 0 0 5px;\n}\n\n.select2-locked {\n padding: 3px 5px 3px 5px !important;\n}\n\n.select2-container-multi .select2-choices {\n min-height: 26px;\n}\n\n.select2-container-multi.select2-container-active .select2-choices {\n border: 1px solid #5897fb;\n outline: none;\n\n -webkit-box-shadow: 0 0 5px rgba(0, 0, 0, .3);\n box-shadow: 0 0 5px rgba(0, 0, 0, .3);\n}\n.select2-container-multi .select2-choices li {\n float: left;\n list-style: none;\n}\nhtml[dir=\"rtl\"] .select2-container-multi .select2-choices li\n{\n float: right;\n}\n.select2-container-multi .select2-choices .select2-search-field {\n margin: 0;\n padding: 0;\n white-space: nowrap;\n}\n\n.select2-container-multi .select2-choices .select2-search-field input {\n padding: 5px;\n margin: 1px 0;\n\n font-family: sans-serif;\n font-size: 100%;\n color: #666;\n outline: 0;\n border: 0;\n -webkit-box-shadow: none;\n box-shadow: none;\n background: transparent !important;\n}\n\n.select2-container-multi .select2-choices .select2-search-field input.select2-active {\n background: #fff url(${___CSS_LOADER_URL_REPLACEMENT_1___}) no-repeat 100% !important;\n}\n\n.select2-default {\n color: #999 !important;\n}\n\n.select2-container-multi .select2-choices .select2-search-choice {\n padding: 3px 5px 3px 18px;\n margin: 3px 0 3px 5px;\n position: relative;\n\n line-height: 13px;\n color: #333;\n cursor: default;\n border: 1px solid #aaaaaa;\n\n border-radius: 3px;\n\n -webkit-box-shadow: 0 0 2px #fff inset, 0 1px 0 rgba(0, 0, 0, 0.05);\n box-shadow: 0 0 2px #fff inset, 0 1px 0 rgba(0, 0, 0, 0.05);\n\n background-clip: padding-box;\n\n -webkit-touch-callout: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n\n background-color: #e4e4e4;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#f4f4f4', GradientType=0);\n background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(20%, #f4f4f4), color-stop(50%, #f0f0f0), color-stop(52%, #e8e8e8), color-stop(100%, #eee));\n background-image: -webkit-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eee 100%);\n background-image: -moz-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eee 100%);\n background-image: linear-gradient(to bottom, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eee 100%);\n}\nhtml[dir=\"rtl\"] .select2-container-multi .select2-choices .select2-search-choice\n{\n margin: 3px 5px 3px 0;\n padding: 3px 18px 3px 5px;\n}\n.select2-container-multi .select2-choices .select2-search-choice .select2-chosen {\n cursor: default;\n}\n.select2-container-multi .select2-choices .select2-search-choice-focus {\n background: #d4d4d4;\n}\n\n.select2-search-choice-close {\n display: block;\n width: 12px;\n height: 13px;\n position: absolute;\n right: 3px;\n top: 4px;\n\n font-size: 1px;\n outline: none;\n background: url(${___CSS_LOADER_URL_REPLACEMENT_0___}) right top no-repeat;\n}\nhtml[dir=\"rtl\"] .select2-search-choice-close {\n right: auto;\n left: 3px;\n}\n\n.select2-container-multi .select2-search-choice-close {\n left: 3px;\n}\n\nhtml[dir=\"rtl\"] .select2-container-multi .select2-search-choice-close {\n left: auto;\n right: 2px;\n}\n\n.select2-container-multi .select2-choices .select2-search-choice .select2-search-choice-close:hover {\n background-position: right -11px;\n}\n.select2-container-multi .select2-choices .select2-search-choice-focus .select2-search-choice-close {\n background-position: right -11px;\n}\n\n/* disabled styles */\n.select2-container-multi.select2-container-disabled .select2-choices {\n background-color: #f4f4f4;\n background-image: none;\n border: 1px solid #ddd;\n cursor: default;\n}\n\n.select2-container-multi.select2-container-disabled .select2-choices .select2-search-choice {\n padding: 3px 5px 3px 5px;\n border: 1px solid #ddd;\n background-image: none;\n background-color: #f4f4f4;\n}\n\n.select2-container-multi.select2-container-disabled .select2-choices .select2-search-choice .select2-search-choice-close { display: none;\n background: none;\n}\n/* end multiselect */\n\n\n.select2-result-selectable .select2-match,\n.select2-result-unselectable .select2-match {\n text-decoration: underline;\n}\n\n.select2-offscreen, .select2-offscreen:focus {\n clip: rect(0 0 0 0) !important;\n width: 1px !important;\n height: 1px !important;\n border: 0 !important;\n margin: 0 !important;\n padding: 0 !important;\n overflow: hidden !important;\n position: absolute !important;\n outline: 0 !important;\n left: 0px !important;\n top: 0px !important;\n}\n\n.select2-display-none {\n display: none;\n}\n\n.select2-measure-scrollbar {\n position: absolute;\n top: -10000px;\n left: -10000px;\n width: 100px;\n height: 100px;\n overflow: scroll;\n}\n\n/* Retina-ize icons */\n\n@media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (min-resolution: 2dppx) {\n .select2-search input,\n .select2-search-choice-close,\n .select2-container .select2-choice abbr,\n .select2-container .select2-choice .select2-arrow b {\n background-image: url(${___CSS_LOADER_URL_REPLACEMENT_2___}) !important;\n background-repeat: no-repeat !important;\n background-size: 60px 40px !important;\n }\n\n .select2-search input {\n background-position: 100% -21px !important;\n }\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/select2/select2.css\"],\"names\":[],\"mappings\":\"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\",\"sourcesContent\":[\"/*\\nVersion: @@ver@@ Timestamp: @@timestamp@@\\n*/\\n.select2-container {\\n margin: 0;\\n position: relative;\\n display: inline-block;\\n /* inline-block for ie7 */\\n zoom: 1;\\n *display: inline;\\n vertical-align: middle;\\n}\\n\\n.select2-container,\\n.select2-drop,\\n.select2-search,\\n.select2-search input {\\n /*\\n Force border-box so that % widths fit the parent\\n container without overlap because of margin/padding.\\n More Info : http://www.quirksmode.org/css/box.html\\n */\\n -webkit-box-sizing: border-box; /* webkit */\\n -moz-box-sizing: border-box; /* firefox */\\n box-sizing: border-box; /* css3 */\\n}\\n\\n.select2-container .select2-choice {\\n display: block;\\n height: 26px;\\n padding: 0 0 0 8px;\\n overflow: hidden;\\n position: relative;\\n\\n border: 1px solid #aaa;\\n white-space: nowrap;\\n line-height: 26px;\\n color: #444;\\n text-decoration: none;\\n\\n border-radius: 4px;\\n\\n background-clip: padding-box;\\n\\n -webkit-touch-callout: none;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -ms-user-select: none;\\n user-select: none;\\n\\n background-color: #fff;\\n background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #eee), color-stop(0.5, #fff));\\n background-image: -webkit-linear-gradient(center bottom, #eee 0%, #fff 50%);\\n background-image: -moz-linear-gradient(center bottom, #eee 0%, #fff 50%);\\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#ffffff', endColorstr = '#eeeeee', GradientType = 0);\\n background-image: linear-gradient(to top, #eee 0%, #fff 50%);\\n}\\n\\nhtml[dir=\\\"rtl\\\"] .select2-container .select2-choice {\\n padding: 0 8px 0 0;\\n}\\n\\n.select2-container.select2-drop-above .select2-choice {\\n border-bottom-color: #aaa;\\n\\n border-radius: 0 0 4px 4px;\\n\\n background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #eee), color-stop(0.9, #fff));\\n background-image: -webkit-linear-gradient(center bottom, #eee 0%, #fff 90%);\\n background-image: -moz-linear-gradient(center bottom, #eee 0%, #fff 90%);\\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#eeeeee', GradientType=0);\\n background-image: linear-gradient(to bottom, #eee 0%, #fff 90%);\\n}\\n\\n.select2-container.select2-allowclear .select2-choice .select2-chosen {\\n margin-right: 42px;\\n}\\n\\n.select2-container .select2-choice > .select2-chosen {\\n margin-right: 26px;\\n display: block;\\n overflow: hidden;\\n\\n white-space: nowrap;\\n\\n text-overflow: ellipsis;\\n float: none;\\n width: auto;\\n}\\n\\nhtml[dir=\\\"rtl\\\"] .select2-container .select2-choice > .select2-chosen {\\n margin-left: 26px;\\n margin-right: 0;\\n}\\n\\n.select2-container .select2-choice abbr {\\n display: none;\\n width: 12px;\\n height: 12px;\\n position: absolute;\\n right: 24px;\\n top: 8px;\\n\\n font-size: 1px;\\n text-decoration: none;\\n\\n border: 0;\\n background: url('select2.png') right top no-repeat;\\n cursor: pointer;\\n outline: 0;\\n}\\n\\n.select2-container.select2-allowclear .select2-choice abbr {\\n display: inline-block;\\n}\\n\\n.select2-container .select2-choice abbr:hover {\\n background-position: right -11px;\\n cursor: pointer;\\n}\\n\\n.select2-drop-mask {\\n border: 0;\\n margin: 0;\\n padding: 0;\\n position: fixed;\\n left: 0;\\n top: 0;\\n min-height: 100%;\\n min-width: 100%;\\n height: auto;\\n width: auto;\\n opacity: 0;\\n z-index: 9998;\\n /* styles required for IE to work */\\n background-color: #fff;\\n filter: alpha(opacity=0);\\n}\\n\\n.select2-drop {\\n width: 100%;\\n margin-top: -1px;\\n position: absolute;\\n z-index: 9999;\\n top: 100%;\\n\\n background: #fff;\\n color: #000;\\n border: 1px solid #aaa;\\n border-top: 0;\\n\\n border-radius: 0 0 4px 4px;\\n\\n -webkit-box-shadow: 0 4px 5px rgba(0, 0, 0, .15);\\n box-shadow: 0 4px 5px rgba(0, 0, 0, .15);\\n}\\n\\n.select2-drop.select2-drop-above {\\n margin-top: 1px;\\n border-top: 1px solid #aaa;\\n border-bottom: 0;\\n\\n border-radius: 4px 4px 0 0;\\n\\n -webkit-box-shadow: 0 -4px 5px rgba(0, 0, 0, .15);\\n box-shadow: 0 -4px 5px rgba(0, 0, 0, .15);\\n}\\n\\n.select2-drop-active {\\n border: 1px solid #5897fb;\\n border-top: none;\\n}\\n\\n.select2-drop.select2-drop-above.select2-drop-active {\\n border-top: 1px solid #5897fb;\\n}\\n\\n.select2-drop-auto-width {\\n border-top: 1px solid #aaa;\\n width: auto;\\n}\\n\\n.select2-drop-auto-width .select2-search {\\n padding-top: 4px;\\n}\\n\\n.select2-container .select2-choice .select2-arrow {\\n display: inline-block;\\n width: 18px;\\n height: 100%;\\n position: absolute;\\n right: 0;\\n top: 0;\\n\\n border-left: 1px solid #aaa;\\n border-radius: 0 4px 4px 0;\\n\\n background-clip: padding-box;\\n\\n background: #ccc;\\n background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #ccc), color-stop(0.6, #eee));\\n background-image: -webkit-linear-gradient(center bottom, #ccc 0%, #eee 60%);\\n background-image: -moz-linear-gradient(center bottom, #ccc 0%, #eee 60%);\\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#eeeeee', endColorstr = '#cccccc', GradientType = 0);\\n background-image: linear-gradient(to top, #ccc 0%, #eee 60%);\\n}\\n\\nhtml[dir=\\\"rtl\\\"] .select2-container .select2-choice .select2-arrow {\\n left: 0;\\n right: auto;\\n\\n border-left: none;\\n border-right: 1px solid #aaa;\\n border-radius: 4px 0 0 4px;\\n}\\n\\n.select2-container .select2-choice .select2-arrow b {\\n display: block;\\n width: 100%;\\n height: 100%;\\n background: url('select2.png') no-repeat 0 1px;\\n}\\n\\nhtml[dir=\\\"rtl\\\"] .select2-container .select2-choice .select2-arrow b {\\n background-position: 2px 1px;\\n}\\n\\n.select2-search {\\n display: inline-block;\\n width: 100%;\\n min-height: 26px;\\n margin: 0;\\n padding-left: 4px;\\n padding-right: 4px;\\n\\n position: relative;\\n z-index: 10000;\\n\\n white-space: nowrap;\\n}\\n\\n.select2-search input {\\n width: 100%;\\n height: auto !important;\\n min-height: 26px;\\n padding: 4px 20px 4px 5px;\\n margin: 0;\\n\\n outline: 0;\\n font-family: sans-serif;\\n font-size: 1em;\\n\\n border: 1px solid #aaa;\\n border-radius: 0;\\n\\n -webkit-box-shadow: none;\\n box-shadow: none;\\n\\n background: #fff url('select2.png') no-repeat 100% -22px;\\n background: url('select2.png') no-repeat 100% -22px, -webkit-gradient(linear, left bottom, left top, color-stop(0.85, #fff), color-stop(0.99, #eee));\\n background: url('select2.png') no-repeat 100% -22px, -webkit-linear-gradient(center bottom, #fff 85%, #eee 99%);\\n background: url('select2.png') no-repeat 100% -22px, -moz-linear-gradient(center bottom, #fff 85%, #eee 99%);\\n background: url('select2.png') no-repeat 100% -22px, linear-gradient(to bottom, #fff 85%, #eee 99%) 0 0;\\n}\\n\\nhtml[dir=\\\"rtl\\\"] .select2-search input {\\n padding: 4px 5px 4px 20px;\\n\\n background: #fff url('select2.png') no-repeat -37px -22px;\\n background: url('select2.png') no-repeat -37px -22px, -webkit-gradient(linear, left bottom, left top, color-stop(0.85, #fff), color-stop(0.99, #eee));\\n background: url('select2.png') no-repeat -37px -22px, -webkit-linear-gradient(center bottom, #fff 85%, #eee 99%);\\n background: url('select2.png') no-repeat -37px -22px, -moz-linear-gradient(center bottom, #fff 85%, #eee 99%);\\n background: url('select2.png') no-repeat -37px -22px, linear-gradient(to bottom, #fff 85%, #eee 99%) 0 0;\\n}\\n\\n.select2-drop.select2-drop-above .select2-search input {\\n margin-top: 4px;\\n}\\n\\n.select2-search input.select2-active {\\n background: #fff url('select2-spinner.gif') no-repeat 100%;\\n background: url('select2-spinner.gif') no-repeat 100%, -webkit-gradient(linear, left bottom, left top, color-stop(0.85, #fff), color-stop(0.99, #eee));\\n background: url('select2-spinner.gif') no-repeat 100%, -webkit-linear-gradient(center bottom, #fff 85%, #eee 99%);\\n background: url('select2-spinner.gif') no-repeat 100%, -moz-linear-gradient(center bottom, #fff 85%, #eee 99%);\\n background: url('select2-spinner.gif') no-repeat 100%, linear-gradient(to bottom, #fff 85%, #eee 99%) 0 0;\\n}\\n\\n.select2-container-active .select2-choice,\\n.select2-container-active .select2-choices {\\n border: 1px solid #5897fb;\\n outline: none;\\n\\n -webkit-box-shadow: 0 0 5px rgba(0, 0, 0, .3);\\n box-shadow: 0 0 5px rgba(0, 0, 0, .3);\\n}\\n\\n.select2-dropdown-open .select2-choice {\\n border-bottom-color: transparent;\\n -webkit-box-shadow: 0 1px 0 #fff inset;\\n box-shadow: 0 1px 0 #fff inset;\\n\\n border-bottom-left-radius: 0;\\n border-bottom-right-radius: 0;\\n\\n background-color: #eee;\\n background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #fff), color-stop(0.5, #eee));\\n background-image: -webkit-linear-gradient(center bottom, #fff 0%, #eee 50%);\\n background-image: -moz-linear-gradient(center bottom, #fff 0%, #eee 50%);\\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#ffffff', GradientType=0);\\n background-image: linear-gradient(to top, #fff 0%, #eee 50%);\\n}\\n\\n.select2-dropdown-open.select2-drop-above .select2-choice,\\n.select2-dropdown-open.select2-drop-above .select2-choices {\\n border: 1px solid #5897fb;\\n border-top-color: transparent;\\n\\n background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #fff), color-stop(0.5, #eee));\\n background-image: -webkit-linear-gradient(center top, #fff 0%, #eee 50%);\\n background-image: -moz-linear-gradient(center top, #fff 0%, #eee 50%);\\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#ffffff', GradientType=0);\\n background-image: linear-gradient(to bottom, #fff 0%, #eee 50%);\\n}\\n\\n.select2-dropdown-open .select2-choice .select2-arrow {\\n background: transparent;\\n border-left: none;\\n filter: none;\\n}\\nhtml[dir=\\\"rtl\\\"] .select2-dropdown-open .select2-choice .select2-arrow {\\n border-right: none;\\n}\\n\\n.select2-dropdown-open .select2-choice .select2-arrow b {\\n background-position: -18px 1px;\\n}\\n\\nhtml[dir=\\\"rtl\\\"] .select2-dropdown-open .select2-choice .select2-arrow b {\\n background-position: -16px 1px;\\n}\\n\\n.select2-hidden-accessible {\\n border: 0;\\n clip: rect(0 0 0 0);\\n height: 1px;\\n margin: -1px;\\n overflow: hidden;\\n padding: 0;\\n position: absolute;\\n width: 1px;\\n}\\n\\n/* results */\\n.select2-results {\\n max-height: 200px;\\n padding: 0 0 0 4px;\\n margin: 4px 4px 4px 0;\\n position: relative;\\n overflow-x: hidden;\\n overflow-y: auto;\\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\\n}\\n\\nhtml[dir=\\\"rtl\\\"] .select2-results {\\n padding: 0 4px 0 0;\\n margin: 4px 0 4px 4px;\\n}\\n\\n.select2-results ul.select2-result-sub {\\n margin: 0;\\n padding-left: 0;\\n}\\n\\n.select2-results li {\\n list-style: none;\\n display: list-item;\\n background-image: none;\\n}\\n\\n.select2-results li.select2-result-with-children > .select2-result-label {\\n font-weight: bold;\\n}\\n\\n.select2-results .select2-result-label {\\n padding: 3px 7px 4px;\\n margin: 0;\\n cursor: pointer;\\n\\n min-height: 1em;\\n\\n -webkit-touch-callout: none;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -ms-user-select: none;\\n user-select: none;\\n}\\n\\n.select2-results-dept-1 .select2-result-label { padding-left: 20px }\\n.select2-results-dept-2 .select2-result-label { padding-left: 40px }\\n.select2-results-dept-3 .select2-result-label { padding-left: 60px }\\n.select2-results-dept-4 .select2-result-label { padding-left: 80px }\\n.select2-results-dept-5 .select2-result-label { padding-left: 100px }\\n.select2-results-dept-6 .select2-result-label { padding-left: 110px }\\n.select2-results-dept-7 .select2-result-label { padding-left: 120px }\\n\\n.select2-results .select2-highlighted {\\n background: #3875d7;\\n color: #fff;\\n}\\n\\n.select2-results li em {\\n background: #feffde;\\n font-style: normal;\\n}\\n\\n.select2-results .select2-highlighted em {\\n background: transparent;\\n}\\n\\n.select2-results .select2-highlighted ul {\\n background: #fff;\\n color: #000;\\n}\\n\\n.select2-results .select2-no-results,\\n.select2-results .select2-searching,\\n.select2-results .select2-ajax-error,\\n.select2-results .select2-selection-limit {\\n background: #f4f4f4;\\n display: list-item;\\n padding-left: 5px;\\n}\\n\\n/*\\ndisabled look for disabled choices in the results dropdown\\n*/\\n.select2-results .select2-disabled.select2-highlighted {\\n color: #666;\\n background: #f4f4f4;\\n display: list-item;\\n cursor: default;\\n}\\n.select2-results .select2-disabled {\\n background: #f4f4f4;\\n display: list-item;\\n cursor: default;\\n}\\n\\n.select2-results .select2-selected {\\n display: none;\\n}\\n\\n.select2-more-results.select2-active {\\n background: #f4f4f4 url('select2-spinner.gif') no-repeat 100%;\\n}\\n\\n.select2-results .select2-ajax-error {\\n background: rgba(255, 50, 50, .2);\\n}\\n\\n.select2-more-results {\\n background: #f4f4f4;\\n display: list-item;\\n}\\n\\n/* disabled styles */\\n\\n.select2-container.select2-container-disabled .select2-choice {\\n background-color: #f4f4f4;\\n background-image: none;\\n border: 1px solid #ddd;\\n cursor: default;\\n}\\n\\n.select2-container.select2-container-disabled .select2-choice .select2-arrow {\\n background-color: #f4f4f4;\\n background-image: none;\\n border-left: 0;\\n}\\n\\n.select2-container.select2-container-disabled .select2-choice abbr {\\n display: none;\\n}\\n\\n\\n/* multiselect */\\n\\n.select2-container-multi .select2-choices {\\n height: auto !important;\\n height: 1%;\\n margin: 0;\\n padding: 0 5px 0 0;\\n position: relative;\\n\\n border: 1px solid #aaa;\\n cursor: text;\\n overflow: hidden;\\n\\n background-color: #fff;\\n background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(1%, #eee), color-stop(15%, #fff));\\n background-image: -webkit-linear-gradient(top, #eee 1%, #fff 15%);\\n background-image: -moz-linear-gradient(top, #eee 1%, #fff 15%);\\n background-image: linear-gradient(to bottom, #eee 1%, #fff 15%);\\n}\\n\\nhtml[dir=\\\"rtl\\\"] .select2-container-multi .select2-choices {\\n padding: 0 0 0 5px;\\n}\\n\\n.select2-locked {\\n padding: 3px 5px 3px 5px !important;\\n}\\n\\n.select2-container-multi .select2-choices {\\n min-height: 26px;\\n}\\n\\n.select2-container-multi.select2-container-active .select2-choices {\\n border: 1px solid #5897fb;\\n outline: none;\\n\\n -webkit-box-shadow: 0 0 5px rgba(0, 0, 0, .3);\\n box-shadow: 0 0 5px rgba(0, 0, 0, .3);\\n}\\n.select2-container-multi .select2-choices li {\\n float: left;\\n list-style: none;\\n}\\nhtml[dir=\\\"rtl\\\"] .select2-container-multi .select2-choices li\\n{\\n float: right;\\n}\\n.select2-container-multi .select2-choices .select2-search-field {\\n margin: 0;\\n padding: 0;\\n white-space: nowrap;\\n}\\n\\n.select2-container-multi .select2-choices .select2-search-field input {\\n padding: 5px;\\n margin: 1px 0;\\n\\n font-family: sans-serif;\\n font-size: 100%;\\n color: #666;\\n outline: 0;\\n border: 0;\\n -webkit-box-shadow: none;\\n box-shadow: none;\\n background: transparent !important;\\n}\\n\\n.select2-container-multi .select2-choices .select2-search-field input.select2-active {\\n background: #fff url('select2-spinner.gif') no-repeat 100% !important;\\n}\\n\\n.select2-default {\\n color: #999 !important;\\n}\\n\\n.select2-container-multi .select2-choices .select2-search-choice {\\n padding: 3px 5px 3px 18px;\\n margin: 3px 0 3px 5px;\\n position: relative;\\n\\n line-height: 13px;\\n color: #333;\\n cursor: default;\\n border: 1px solid #aaaaaa;\\n\\n border-radius: 3px;\\n\\n -webkit-box-shadow: 0 0 2px #fff inset, 0 1px 0 rgba(0, 0, 0, 0.05);\\n box-shadow: 0 0 2px #fff inset, 0 1px 0 rgba(0, 0, 0, 0.05);\\n\\n background-clip: padding-box;\\n\\n -webkit-touch-callout: none;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -ms-user-select: none;\\n user-select: none;\\n\\n background-color: #e4e4e4;\\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#f4f4f4', GradientType=0);\\n background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(20%, #f4f4f4), color-stop(50%, #f0f0f0), color-stop(52%, #e8e8e8), color-stop(100%, #eee));\\n background-image: -webkit-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eee 100%);\\n background-image: -moz-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eee 100%);\\n background-image: linear-gradient(to bottom, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eee 100%);\\n}\\nhtml[dir=\\\"rtl\\\"] .select2-container-multi .select2-choices .select2-search-choice\\n{\\n margin: 3px 5px 3px 0;\\n padding: 3px 18px 3px 5px;\\n}\\n.select2-container-multi .select2-choices .select2-search-choice .select2-chosen {\\n cursor: default;\\n}\\n.select2-container-multi .select2-choices .select2-search-choice-focus {\\n background: #d4d4d4;\\n}\\n\\n.select2-search-choice-close {\\n display: block;\\n width: 12px;\\n height: 13px;\\n position: absolute;\\n right: 3px;\\n top: 4px;\\n\\n font-size: 1px;\\n outline: none;\\n background: url('select2.png') right top no-repeat;\\n}\\nhtml[dir=\\\"rtl\\\"] .select2-search-choice-close {\\n right: auto;\\n left: 3px;\\n}\\n\\n.select2-container-multi .select2-search-choice-close {\\n left: 3px;\\n}\\n\\nhtml[dir=\\\"rtl\\\"] .select2-container-multi .select2-search-choice-close {\\n left: auto;\\n right: 2px;\\n}\\n\\n.select2-container-multi .select2-choices .select2-search-choice .select2-search-choice-close:hover {\\n background-position: right -11px;\\n}\\n.select2-container-multi .select2-choices .select2-search-choice-focus .select2-search-choice-close {\\n background-position: right -11px;\\n}\\n\\n/* disabled styles */\\n.select2-container-multi.select2-container-disabled .select2-choices {\\n background-color: #f4f4f4;\\n background-image: none;\\n border: 1px solid #ddd;\\n cursor: default;\\n}\\n\\n.select2-container-multi.select2-container-disabled .select2-choices .select2-search-choice {\\n padding: 3px 5px 3px 5px;\\n border: 1px solid #ddd;\\n background-image: none;\\n background-color: #f4f4f4;\\n}\\n\\n.select2-container-multi.select2-container-disabled .select2-choices .select2-search-choice .select2-search-choice-close { display: none;\\n background: none;\\n}\\n/* end multiselect */\\n\\n\\n.select2-result-selectable .select2-match,\\n.select2-result-unselectable .select2-match {\\n text-decoration: underline;\\n}\\n\\n.select2-offscreen, .select2-offscreen:focus {\\n clip: rect(0 0 0 0) !important;\\n width: 1px !important;\\n height: 1px !important;\\n border: 0 !important;\\n margin: 0 !important;\\n padding: 0 !important;\\n overflow: hidden !important;\\n position: absolute !important;\\n outline: 0 !important;\\n left: 0px !important;\\n top: 0px !important;\\n}\\n\\n.select2-display-none {\\n display: none;\\n}\\n\\n.select2-measure-scrollbar {\\n position: absolute;\\n top: -10000px;\\n left: -10000px;\\n width: 100px;\\n height: 100px;\\n overflow: scroll;\\n}\\n\\n/* Retina-ize icons */\\n\\n@media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (min-resolution: 2dppx) {\\n .select2-search input,\\n .select2-search-choice-close,\\n .select2-container .select2-choice abbr,\\n .select2-container .select2-choice .select2-arrow b {\\n background-image: url('select2x2.png') !important;\\n background-repeat: no-repeat !important;\\n background-size: 60px 40px !important;\\n }\\n\\n .select2-search input {\\n background-position: 100% -21px !important;\\n }\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../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 * Strengthify - show the weakness of a password (uses zxcvbn for this)\n * https://github.com/MorrisJobke/strengthify\n * Version: 0.5.9\n * License: The MIT License (MIT)\n * Copyright (c) 2013-2020 Morris Jobke \n */\n\n.strengthify-wrapper {\n position: relative;\n}\n\n.strengthify-wrapper > * {\n\t-ms-filter:\"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)\";\n\tfilter: alpha(opacity=0);\n\topacity: 0;\n\t-webkit-transition:all .5s ease-in-out;\n\t-moz-transition:all .5s ease-in-out;\n\ttransition:all .5s ease-in-out;\n}\n\n.strengthify-bg, .strengthify-container, .strengthify-separator {\n\theight: 3px;\n}\n\n.strengthify-bg, .strengthify-container {\n\tdisplay: block;\n\tposition: absolute;\n\twidth: 100%;\n}\n\n.strengthify-bg {\n\tbackground-color: #BBB;\n}\n\n.strengthify-separator {\n\tdisplay: inline-block;\n\tposition: absolute;\n\tbackground-color: #FFF;\n\twidth: 1px;\n\tz-index: 10;\n}\n\n.password-bad {\n\tbackground-color: #C33;\n}\n.password-medium {\n\tbackground-color: #F80;\n}\n.password-good {\n\tbackground-color: #3C3;\n}\n\ndiv[data-strengthifyMessage] {\n padding: 3px 8px;\n}\n\n.strengthify-tiles{\n\tfloat: right;\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/strengthify/strengthify.css\"],\"names\":[],\"mappings\":\"AAAA;;;;;;EAME;;AAEF;IACI,kBAAkB;AACtB;;AAEA;CACC,+DAA+D;CAC/D,wBAAwB;CACxB,UAAU;CACV,sCAAsC;CACtC,mCAAmC;CACnC,8BAA8B;AAC/B;;AAEA;CACC,WAAW;AACZ;;AAEA;CACC,cAAc;CACd,kBAAkB;CAClB,WAAW;AACZ;;AAEA;CACC,sBAAsB;AACvB;;AAEA;CACC,qBAAqB;CACrB,kBAAkB;CAClB,sBAAsB;CACtB,UAAU;CACV,WAAW;AACZ;;AAEA;CACC,sBAAsB;AACvB;AACA;CACC,sBAAsB;AACvB;AACA;CACC,sBAAsB;AACvB;;AAEA;IACI,gBAAgB;AACpB;;AAEA;CACC,YAAY;AACb\",\"sourcesContent\":[\"/**\\n * Strengthify - show the weakness of a password (uses zxcvbn for this)\\n * https://github.com/MorrisJobke/strengthify\\n * Version: 0.5.9\\n * License: The MIT License (MIT)\\n * Copyright (c) 2013-2020 Morris Jobke \\n */\\n\\n.strengthify-wrapper {\\n position: relative;\\n}\\n\\n.strengthify-wrapper > * {\\n\\t-ms-filter:\\\"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)\\\";\\n\\tfilter: alpha(opacity=0);\\n\\topacity: 0;\\n\\t-webkit-transition:all .5s ease-in-out;\\n\\t-moz-transition:all .5s ease-in-out;\\n\\ttransition:all .5s ease-in-out;\\n}\\n\\n.strengthify-bg, .strengthify-container, .strengthify-separator {\\n\\theight: 3px;\\n}\\n\\n.strengthify-bg, .strengthify-container {\\n\\tdisplay: block;\\n\\tposition: absolute;\\n\\twidth: 100%;\\n}\\n\\n.strengthify-bg {\\n\\tbackground-color: #BBB;\\n}\\n\\n.strengthify-separator {\\n\\tdisplay: inline-block;\\n\\tposition: absolute;\\n\\tbackground-color: #FFF;\\n\\twidth: 1px;\\n\\tz-index: 10;\\n}\\n\\n.password-bad {\\n\\tbackground-color: #C33;\\n}\\n.password-medium {\\n\\tbackground-color: #F80;\\n}\\n.password-good {\\n\\tbackground-color: #3C3;\\n}\\n\\ndiv[data-strengthifyMessage] {\\n padding: 3px 8px;\\n}\\n\\n.strengthify-tiles{\\n\\tfloat: right;\\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, `.account-menu-entry__icon[data-v-2e0a74a6]{height:16px;width:16px;margin:calc((var(--default-clickable-area) - 16px)/2);filter:var(--background-invert-if-dark)}.account-menu-entry__icon--active[data-v-2e0a74a6]{filter:var(--primary-invert-if-dark)}.account-menu-entry[data-v-2e0a74a6] .list-item-content__main{width:fit-content}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/AccountMenu/AccountMenuEntry.vue\"],\"names\":[],\"mappings\":\"AAEC,2CACC,WAAA,CACA,UAAA,CACA,qDAAA,CACA,uCAAA,CAEA,mDACC,oCAAA,CAIF,8DACC,iBAAA\",\"sourcesContent\":[\"\\n.account-menu-entry {\\n\\t&__icon {\\n\\t\\theight: 16px;\\n\\t\\twidth: 16px;\\n\\t\\tmargin: calc((var(--default-clickable-area) - 16px) / 2); // 16px icon size\\n\\t\\tfilter: var(--background-invert-if-dark);\\n\\n\\t\\t&--active {\\n\\t\\t\\tfilter: var(--primary-invert-if-dark);\\n\\t\\t}\\n\\t}\\n\\n\\t:deep(.list-item-content__main) {\\n\\t\\twidth: fit-content;\\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-menu[data-v-7661a89b]{--app-menu-entry-growth: calc(var(--default-grid-baseline) * 4);display:flex;flex:1 1;width:0}.app-menu__list[data-v-7661a89b]{display:flex;flex-wrap:nowrap;margin-inline:calc(var(--app-menu-entry-growth)/2)}.app-menu__overflow[data-v-7661a89b]{margin-block:auto}.app-menu__overflow[data-v-7661a89b] .button-vue--vue-tertiary{opacity:.7;margin:3px;filter:var(--background-image-invert-if-bright)}.app-menu__overflow[data-v-7661a89b] .button-vue--vue-tertiary:not([aria-expanded=true]){color:var(--color-background-plain-text)}.app-menu__overflow[data-v-7661a89b] .button-vue--vue-tertiary:not([aria-expanded=true]):hover{opacity:1;background-color:rgba(0,0,0,0) !important}.app-menu__overflow[data-v-7661a89b] .button-vue--vue-tertiary:focus-visible{opacity:1;outline:none !important}.app-menu__overflow-entry[data-v-7661a89b] .action-link__icon{filter:var(--background-invert-if-bright) !important}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/AppMenu.vue\"],\"names\":[],\"mappings\":\"AACA,2BAEC,+DAAA,CACA,YAAA,CACA,QAAA,CACA,OAAA,CAEA,iCACC,YAAA,CACA,gBAAA,CACA,kDAAA,CAGD,qCACC,iBAAA,CAGA,+DACC,UAAA,CACA,UAAA,CACA,+CAAA,CAGA,yFACC,wCAAA,CAEA,+FACC,SAAA,CACA,yCAAA,CAIF,6EACC,SAAA,CACA,uBAAA,CAMF,8DAEC,oDAAA\",\"sourcesContent\":[\"\\n.app-menu {\\n\\t// The size the currently focussed entry will grow to show the full name\\n\\t--app-menu-entry-growth: calc(var(--default-grid-baseline) * 4);\\n\\tdisplay: flex;\\n\\tflex: 1 1;\\n\\twidth: 0;\\n\\n\\t&__list {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-wrap: nowrap;\\n\\t\\tmargin-inline: calc(var(--app-menu-entry-growth) / 2);\\n\\t}\\n\\n\\t&__overflow {\\n\\t\\tmargin-block: auto;\\n\\n\\t\\t// Adjust the overflow NcActions styles as they are directly rendered on the background\\n\\t\\t:deep(.button-vue--vue-tertiary) {\\n\\t\\t\\topacity: .7;\\n\\t\\t\\tmargin: 3px;\\n\\t\\t\\tfilter: var(--background-image-invert-if-bright);\\n\\n\\t\\t\\t/* Remove all background and align text color if not expanded */\\n\\t\\t\\t&:not([aria-expanded=\\\"true\\\"]) {\\n\\t\\t\\t\\tcolor: var(--color-background-plain-text);\\n\\n\\t\\t\\t\\t&:hover {\\n\\t\\t\\t\\t\\topacity: 1;\\n\\t\\t\\t\\t\\tbackground-color: transparent !important;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t&:focus-visible {\\n\\t\\t\\t\\topacity: 1;\\n\\t\\t\\t\\toutline: none !important;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&__overflow-entry {\\n\\t\\t:deep(.action-link__icon) {\\n\\t\\t\\t// Icons are bright so invert them if bright color theme == bright background is used\\n\\t\\t\\tfilter: var(--background-invert-if-bright) !important;\\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-menu-entry[data-v-1c485052]{--app-menu-entry-font-size: 12px;width:var(--header-height);height:var(--header-height);position:relative}.app-menu-entry__link[data-v-1c485052]{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--color-background-plain-text);width:calc(100% - 4px);height:calc(100% - 4px);margin:2px}.app-menu-entry__label[data-v-1c485052]{opacity:0;position:absolute;font-size:var(--app-menu-entry-font-size);color:var(--color-background-plain-text);text-align:center;bottom:0;inset-inline-start:50%;top:50%;display:block;transform:translateX(-50%);max-width:100%;text-overflow:ellipsis;overflow:hidden;letter-spacing:-0.5px}.app-menu-entry__icon[data-v-1c485052]{font-size:var(--app-menu-entry-font-size)}.app-menu-entry--active .app-menu-entry__label[data-v-1c485052]{font-weight:bolder}.app-menu-entry--active[data-v-1c485052]::before{content:\" \";position:absolute;pointer-events:none;border-bottom-color:var(--color-main-background);transform:translateX(-50%);width:10px;height:5px;border-radius:3px;background-color:var(--color-background-plain-text);inset-inline-start:50%;bottom:8px;display:block;transition:all var(--animation-quick) ease-in-out;opacity:1}.app-menu-entry__icon[data-v-1c485052],.app-menu-entry__label[data-v-1c485052]{transition:all var(--animation-quick) ease-in-out}.app-menu-entry:hover .app-menu-entry__label[data-v-1c485052],.app-menu-entry:focus-within .app-menu-entry__label[data-v-1c485052]{font-weight:bold}.app-menu-entry--truncated:hover .app-menu-entry__label[data-v-1c485052],.app-menu-entry--truncated:focus-within .app-menu-entry__label[data-v-1c485052]{max-width:calc(var(--header-height) + var(--app-menu-entry-growth))}.app-menu-entry--truncated:hover+.app-menu-entry .app-menu-entry__label[data-v-1c485052],.app-menu-entry--truncated:focus-within+.app-menu-entry .app-menu-entry__label[data-v-1c485052]{font-weight:normal;max-width:calc(var(--header-height) - var(--app-menu-entry-growth))}.app-menu-entry:has(+.app-menu-entry--truncated:hover) .app-menu-entry__label[data-v-1c485052],.app-menu-entry:has(+.app-menu-entry--truncated:focus-within) .app-menu-entry__label[data-v-1c485052]{font-weight:normal;max-width:calc(var(--header-height) - var(--app-menu-entry-growth))}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/AppMenuEntry.vue\"],\"names\":[],\"mappings\":\"AACA,iCACC,gCAAA,CACA,0BAAA,CACA,2BAAA,CACA,iBAAA,CAEA,uCACC,iBAAA,CACA,YAAA,CACA,qBAAA,CACA,kBAAA,CACA,sBAAA,CAEA,wCAAA,CAEA,sBAAA,CACA,uBAAA,CACA,UAAA,CAGD,wCACC,SAAA,CACA,iBAAA,CACA,yCAAA,CAEA,wCAAA,CACA,iBAAA,CACA,QAAA,CACA,sBAAA,CACA,OAAA,CACA,aAAA,CACA,0BAAA,CACA,cAAA,CACA,sBAAA,CACA,eAAA,CACA,qBAAA,CAGD,uCACC,yCAAA,CAKA,gEACC,kBAAA,CAID,iDACC,WAAA,CACA,iBAAA,CACA,mBAAA,CACA,gDAAA,CACA,0BAAA,CACA,UAAA,CACA,UAAA,CACA,iBAAA,CACA,mDAAA,CACA,sBAAA,CACA,UAAA,CACA,aAAA,CACA,iDAAA,CACA,SAAA,CAIF,+EAEC,iDAAA,CAID,mIAEC,gBAAA,CAOA,yJACC,mEAAA,CAKA,yLACC,kBAAA,CACA,mEAAA,CAQF,qMACC,kBAAA,CACA,mEAAA\",\"sourcesContent\":[\"\\n.app-menu-entry {\\n\\t--app-menu-entry-font-size: 12px;\\n\\twidth: var(--header-height);\\n\\theight: var(--header-height);\\n\\tposition: relative;\\n\\n\\t&__link {\\n\\t\\tposition: relative;\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\talign-items: center;\\n\\t\\tjustify-content: center;\\n\\t\\t// Set color as this is shown directly on the background\\n\\t\\tcolor: var(--color-background-plain-text);\\n\\t\\t// Make space for focus-visible outline\\n\\t\\twidth: calc(100% - 4px);\\n\\t\\theight: calc(100% - 4px);\\n\\t\\tmargin: 2px;\\n\\t}\\n\\n\\t&__label {\\n\\t\\topacity: 0;\\n\\t\\tposition: absolute;\\n\\t\\tfont-size: var(--app-menu-entry-font-size);\\n\\t\\t// this is shown directly on the background\\n\\t\\tcolor: var(--color-background-plain-text);\\n\\t\\ttext-align: center;\\n\\t\\tbottom: 0;\\n\\t\\tinset-inline-start: 50%;\\n\\t\\ttop: 50%;\\n\\t\\tdisplay: block;\\n\\t\\ttransform: translateX(-50%);\\n\\t\\tmax-width: 100%;\\n\\t\\ttext-overflow: ellipsis;\\n\\t\\toverflow: hidden;\\n\\t\\tletter-spacing: -0.5px;\\n\\t}\\n\\n\\t&__icon {\\n\\t\\tfont-size: var(--app-menu-entry-font-size);\\n\\t}\\n\\n\\t&--active {\\n\\t\\t// When hover or focus, show the label and make it bolder than the other entries\\n\\t\\t.app-menu-entry__label {\\n\\t\\t\\tfont-weight: bolder;\\n\\t\\t}\\n\\n\\t\\t// When active show a line below the entry as an \\\"active\\\" indicator\\n\\t\\t&::before {\\n\\t\\t\\tcontent: \\\" \\\";\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\tpointer-events: none;\\n\\t\\t\\tborder-bottom-color: var(--color-main-background);\\n\\t\\t\\ttransform: translateX(-50%);\\n\\t\\t\\twidth: 10px;\\n\\t\\t\\theight: 5px;\\n\\t\\t\\tborder-radius: 3px;\\n\\t\\t\\tbackground-color: var(--color-background-plain-text);\\n\\t\\t\\tinset-inline-start: 50%;\\n\\t\\t\\tbottom: 8px;\\n\\t\\t\\tdisplay: block;\\n\\t\\t\\ttransition: all var(--animation-quick) ease-in-out;\\n\\t\\t\\topacity: 1;\\n\\t\\t}\\n\\t}\\n\\n\\t&__icon,\\n\\t&__label {\\n\\t\\ttransition: all var(--animation-quick) ease-in-out;\\n\\t}\\n\\n\\t// Make the hovered entry bold to see that it is hovered\\n\\t&:hover .app-menu-entry__label,\\n\\t&:focus-within .app-menu-entry__label {\\n\\t\\tfont-weight: bold;\\n\\t}\\n\\n\\t// Adjust the width when an entry is focussed\\n\\t// The focussed / hovered entry should grow, while both neighbors need to shrink\\n\\t&--truncated:hover,\\n\\t&--truncated:focus-within {\\n\\t\\t.app-menu-entry__label {\\n\\t\\t\\tmax-width: calc(var(--header-height) + var(--app-menu-entry-growth));\\n\\t\\t}\\n\\n\\t\\t// The next entry needs to shrink half the growth\\n\\t\\t+ .app-menu-entry {\\n\\t\\t\\t.app-menu-entry__label {\\n\\t\\t\\t\\tfont-weight: normal;\\n\\t\\t\\t\\tmax-width: calc(var(--header-height) - var(--app-menu-entry-growth));\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t// The previous entry needs to shrink half the growth\\n\\t&:has(+ .app-menu-entry--truncated:hover),\\n\\t&:has(+ .app-menu-entry--truncated:focus-within) {\\n\\t\\t.app-menu-entry__label {\\n\\t\\t\\tfont-weight: normal;\\n\\t\\t\\tmax-width: calc(var(--header-height) - var(--app-menu-entry-growth));\\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-menu-entry:hover .app-menu-entry__icon,.app-menu-entry:focus-within .app-menu-entry__icon,.app-menu__list:hover .app-menu-entry__icon,.app-menu__list:focus-within .app-menu-entry__icon{margin-block-end:1lh}.app-menu-entry:hover .app-menu-entry__label,.app-menu-entry:focus-within .app-menu-entry__label,.app-menu__list:hover .app-menu-entry__label,.app-menu__list:focus-within .app-menu-entry__label{opacity:1}.app-menu-entry:hover .app-menu-entry--active::before,.app-menu-entry:focus-within .app-menu-entry--active::before,.app-menu__list:hover .app-menu-entry--active::before,.app-menu__list:focus-within .app-menu-entry--active::before{opacity:0}.app-menu-entry:hover .app-menu-icon__unread,.app-menu-entry:focus-within .app-menu-icon__unread,.app-menu__list:hover .app-menu-icon__unread,.app-menu__list:focus-within .app-menu-icon__unread{opacity:0}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/AppMenuEntry.vue\"],\"names\":[],\"mappings\":\"AAOC,8LACC,oBAAA,CAID,kMACC,SAAA,CAID,sOACC,SAAA,CAGD,kMACC,SAAA\",\"sourcesContent\":[\"\\n// Showing the label\\n.app-menu-entry:hover,\\n.app-menu-entry:focus-within,\\n.app-menu__list:hover,\\n.app-menu__list:focus-within {\\n\\t// Move icon up so that the name does not overflow the icon\\n\\t.app-menu-entry__icon {\\n\\t\\tmargin-block-end: 1lh;\\n\\t}\\n\\n\\t// Make the label visible\\n\\t.app-menu-entry__label {\\n\\t\\topacity: 1;\\n\\t}\\n\\n\\t// Hide indicator when the text is shown\\n\\t.app-menu-entry--active::before {\\n\\t\\topacity: 0;\\n\\t}\\n\\n\\t.app-menu-icon__unread {\\n\\t\\topacity: 0;\\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-menu-icon[data-v-e7078f90]{box-sizing:border-box;position:relative;height:20px;width:20px}.app-menu-icon__icon[data-v-e7078f90]{transition:margin .1s ease-in-out;height:20px;width:20px;filter:var(--background-image-invert-if-bright)}.app-menu-icon__unread[data-v-e7078f90]{color:var(--color-error);position:absolute;inset-block-end:15px;inset-inline-end:-5px;transition:all .1s ease-in-out}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/AppMenuIcon.vue\"],\"names\":[],\"mappings\":\"AAIA,gCACC,qBAAA,CACA,iBAAA,CAEA,WAPW,CAQX,UARW,CAUX,sCACC,iCAAA,CACA,WAZU,CAaV,UAbU,CAcV,+CAAA,CAGD,wCACC,wBAAA,CACA,iBAAA,CAEA,oBAAA,CACA,qBAAA,CACA,8BAAA\",\"sourcesContent\":[\"\\n$icon-size: 20px;\\n$unread-indicator-size: 10px;\\n\\n.app-menu-icon {\\n\\tbox-sizing: border-box;\\n\\tposition: relative;\\n\\n\\theight: $icon-size;\\n\\twidth: $icon-size;\\n\\n\\t&__icon {\\n\\t\\ttransition: margin 0.1s ease-in-out;\\n\\t\\theight: $icon-size;\\n\\t\\twidth: $icon-size;\\n\\t\\tfilter: var(--background-image-invert-if-bright);\\n\\t}\\n\\n\\t&__unread {\\n\\t\\tcolor: var(--color-error);\\n\\t\\tposition: absolute;\\n\\t\\t// Align the dot to the top right corner of the icon\\n\\t\\tinset-block-end: calc($icon-size + ($unread-indicator-size / -2));\\n\\t\\tinset-inline-end: calc($unread-indicator-size / -2);\\n\\t\\ttransition: all 0.1s ease-in-out;\\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, `.contact[data-v-97ebdcaa]{display:flex;position:relative;align-items:center;padding:3px;padding-inline-start:10px}.contact__action__icon[data-v-97ebdcaa]{width:20px;height:20px;padding:12px;filter:var(--background-invert-if-dark)}.contact__avatar[data-v-97ebdcaa]{display:inherit}.contact__body[data-v-97ebdcaa]{flex-grow:1;padding-inline-start:10px;margin-inline-start:10px;min-width:0}.contact__body div[data-v-97ebdcaa]{position:relative;width:100%;overflow-x:hidden;text-overflow:ellipsis;margin:-1px 0}.contact__body div[data-v-97ebdcaa]:first-of-type{margin-top:0}.contact__body div[data-v-97ebdcaa]:last-of-type{margin-bottom:0}.contact__body__last-message[data-v-97ebdcaa],.contact__body__status-message[data-v-97ebdcaa],.contact__body__email-address[data-v-97ebdcaa]{color:var(--color-text-maxcontrast)}.contact__body[data-v-97ebdcaa]:focus-visible{box-shadow:0 0 0 4px var(--color-main-background) !important;outline:2px solid var(--color-main-text) !important}.contact .other-actions[data-v-97ebdcaa]{width:16px;height:16px;cursor:pointer}.contact .other-actions img[data-v-97ebdcaa]{filter:var(--background-invert-if-dark)}.contact button.other-actions[data-v-97ebdcaa]{width:44px}.contact button.other-actions[data-v-97ebdcaa]:focus{border-color:rgba(0,0,0,0);box-shadow:0 0 0 2px var(--color-main-text)}.contact button.other-actions[data-v-97ebdcaa]:focus-visible{border-radius:var(--border-radius-pill)}.contact .menu[data-v-97ebdcaa]{top:47px;margin-inline-end:13px}.contact .popovermenu[data-v-97ebdcaa]::after{inset-inline-end:2px}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/ContactsMenu/Contact.vue\"],\"names\":[],\"mappings\":\"AACA,0BACC,YAAA,CACA,iBAAA,CACA,kBAAA,CACA,WAAA,CACA,yBAAA,CAGC,wCACC,UAAA,CACA,WAAA,CACA,YAAA,CACA,uCAAA,CAIF,kCACC,eAAA,CAGD,gCACC,WAAA,CACA,yBAAA,CACA,wBAAA,CACA,WAAA,CAEA,oCACC,iBAAA,CACA,UAAA,CACA,iBAAA,CACA,sBAAA,CACA,aAAA,CAED,kDACC,YAAA,CAED,iDACC,eAAA,CAGD,6IACC,mCAAA,CAGD,8CACC,4DAAA,CACA,mDAAA,CAIF,yCACC,UAAA,CACA,WAAA,CACA,cAAA,CAEA,6CACC,uCAAA,CAIF,+CACC,UAAA,CAEA,qDACC,0BAAA,CACA,2CAAA,CAGD,6DACC,uCAAA,CAKF,gCACC,QAAA,CACA,sBAAA,CAGD,8CACC,oBAAA\",\"sourcesContent\":[\"\\n.contact {\\n\\tdisplay: flex;\\n\\tposition: relative;\\n\\talign-items: center;\\n\\tpadding: 3px;\\n\\tpadding-inline-start: 10px;\\n\\n\\t&__action {\\n\\t\\t&__icon {\\n\\t\\t\\twidth: 20px;\\n\\t\\t\\theight: 20px;\\n\\t\\t\\tpadding: 12px;\\n\\t\\t\\tfilter: var(--background-invert-if-dark);\\n\\t\\t}\\n\\t}\\n\\n\\t&__avatar {\\n\\t\\tdisplay: inherit;\\n\\t}\\n\\n\\t&__body {\\n\\t\\tflex-grow: 1;\\n\\t\\tpadding-inline-start: 10px;\\n\\t\\tmargin-inline-start: 10px;\\n\\t\\tmin-width: 0;\\n\\n\\t\\tdiv {\\n\\t\\t\\tposition: relative;\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\toverflow-x: hidden;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\tmargin: -1px 0;\\n\\t\\t}\\n\\t\\tdiv:first-of-type {\\n\\t\\t\\tmargin-top: 0;\\n\\t\\t}\\n\\t\\tdiv:last-of-type {\\n\\t\\t\\tmargin-bottom: 0;\\n\\t\\t}\\n\\n\\t\\t&__last-message, &__status-message, &__email-address {\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t}\\n\\n\\t\\t&:focus-visible {\\n\\t\\t\\tbox-shadow: 0 0 0 4px var(--color-main-background) !important;\\n\\t\\t\\toutline: 2px solid var(--color-main-text) !important;\\n\\t\\t}\\n\\t}\\n\\n\\t.other-actions {\\n\\t\\twidth: 16px;\\n\\t\\theight: 16px;\\n\\t\\tcursor: pointer;\\n\\n\\t\\timg {\\n\\t\\t\\tfilter: var(--background-invert-if-dark);\\n\\t\\t}\\n\\t}\\n\\n\\tbutton.other-actions {\\n\\t\\twidth: 44px;\\n\\n\\t\\t&:focus {\\n\\t\\t\\tborder-color: transparent;\\n\\t\\t\\tbox-shadow: 0 0 0 2px var(--color-main-text);\\n\\t\\t}\\n\\n\\t\\t&:focus-visible {\\n\\t\\t\\tborder-radius: var(--border-radius-pill);\\n\\t\\t}\\n\\t}\\n\\n\\t/* actions menu */\\n\\t.menu {\\n\\t\\ttop: 47px;\\n\\t\\tmargin-inline-end: 13px;\\n\\t}\\n\\n\\t.popovermenu::after {\\n\\t\\tinset-inline-end: 2px;\\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, `[data-v-a886d77a] #header-menu-user-menu{padding:0 !important}.account-menu[data-v-a886d77a] button{opacity:1 !important}.account-menu[data-v-a886d77a] button:focus-visible .account-menu__avatar{border:var(--border-width-input-focused) solid var(--color-background-plain-text)}.account-menu[data-v-a886d77a] .header-menu__content{width:fit-content !important}.account-menu__avatar[data-v-a886d77a]:hover{border:var(--border-width-input-focused) solid var(--color-background-plain-text)}.account-menu__list[data-v-a886d77a]{display:inline-flex;flex-direction:column;padding-block:var(--default-grid-baseline) 0;padding-inline:0 var(--default-grid-baseline)}.account-menu__list[data-v-a886d77a]> li{box-sizing:border-box;flex:0 1}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/views/AccountMenu.vue\"],\"names\":[],\"mappings\":\"AACA,yCACC,oBAAA,CAIA,sCAGC,oBAAA,CAKC,0EACC,iFAAA,CAMH,qDACC,4BAAA,CAIA,6CAEC,iFAAA,CAIF,qCACC,mBAAA,CACA,qBAAA,CACA,4CAAA,CACA,6CAAA,CAEA,yCACC,qBAAA,CAEA,QAAA\",\"sourcesContent\":[\"\\n:deep(#header-menu-user-menu) {\\n\\tpadding: 0 !important;\\n}\\n\\n.account-menu {\\n\\t:deep(button) {\\n\\t\\t// Normally header menus are slightly translucent when not active\\n\\t\\t// this is generally ok but for the avatar this is weird so fix the opacity\\n\\t\\topacity: 1 !important;\\n\\n\\t\\t// The avatar is just the \\\"icon\\\" of the button\\n\\t\\t// So we add the focus-visible manually\\n\\t\\t&:focus-visible {\\n\\t\\t\\t.account-menu__avatar {\\n\\t\\t\\t\\tborder: var(--border-width-input-focused) solid var(--color-background-plain-text);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t// Ensure we do not wast space, as the header menu sets a default width of 350px\\n\\t:deep(.header-menu__content) {\\n\\t\\twidth: fit-content !important;\\n\\t}\\n\\n\\t&__avatar {\\n\\t\\t&:hover {\\n\\t\\t\\t// Add hover styles similar to the focus-visible style\\n\\t\\t\\tborder: var(--border-width-input-focused) solid var(--color-background-plain-text);\\n\\t\\t}\\n\\t}\\n\\n\\t&__list {\\n\\t\\tdisplay: inline-flex;\\n\\t\\tflex-direction: column;\\n\\t\\tpadding-block: var(--default-grid-baseline) 0;\\n\\t\\tpadding-inline: 0 var(--default-grid-baseline);\\n\\n\\t\\t> :deep(li) {\\n\\t\\t\\tbox-sizing: border-box;\\n\\t\\t\\t// basically \\\"fit-content\\\"\\n\\t\\t\\tflex: 0 1;\\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, `.contactsmenu[data-v-5cad18ba]{overflow-y:hidden}.contactsmenu__trigger-icon[data-v-5cad18ba]{color:var(--color-background-plain-text) !important}.contactsmenu__menu[data-v-5cad18ba]{display:flex;flex-direction:column;overflow:hidden;height:328px;max-height:inherit}.contactsmenu__menu label[for=contactsmenu__menu__search][data-v-5cad18ba]{font-weight:bold;font-size:19px;margin-inline-start:13px}.contactsmenu__menu__input-wrapper[data-v-5cad18ba]{padding:10px;z-index:2;top:0}.contactsmenu__menu__search[data-v-5cad18ba]{width:100%;height:34px;margin-top:0 !important}.contactsmenu__menu__content[data-v-5cad18ba]{overflow-y:auto;margin-top:10px;flex:1 1 auto}.contactsmenu__menu__content__footer[data-v-5cad18ba]{display:flex;flex-direction:column;align-items:center}.contactsmenu__menu a[data-v-5cad18ba]:focus-visible{box-shadow:inset 0 0 0 2px var(--color-main-text) !important}.contactsmenu[data-v-5cad18ba] .empty-content{margin:0 !important}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/views/ContactsMenu.vue\"],\"names\":[],\"mappings\":\"AACA,+BACC,iBAAA,CAEA,6CACC,mDAAA,CAGD,qCACC,YAAA,CACA,qBAAA,CACA,eAAA,CACA,YAAA,CACA,kBAAA,CAEA,2EACC,gBAAA,CACA,cAAA,CACA,wBAAA,CAGD,oDACC,YAAA,CACA,SAAA,CACA,KAAA,CAGD,6CACC,UAAA,CACA,WAAA,CACA,uBAAA,CAGD,8CACC,eAAA,CACA,eAAA,CACA,aAAA,CAEA,sDACC,YAAA,CACA,qBAAA,CACA,kBAAA,CAKD,qDACC,4DAAA,CAKH,8CACC,mBAAA\",\"sourcesContent\":[\"\\n.contactsmenu {\\n\\toverflow-y: hidden;\\n\\n\\t&__trigger-icon {\\n\\t\\tcolor: var(--color-background-plain-text) !important;\\n\\t}\\n\\n\\t&__menu {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\toverflow: hidden;\\n\\t\\theight: calc(50px * 6 + 2px + 26px);\\n\\t\\tmax-height: inherit;\\n\\n\\t\\tlabel[for=\\\"contactsmenu__menu__search\\\"] {\\n\\t\\t\\tfont-weight: bold;\\n\\t\\t\\tfont-size: 19px;\\n\\t\\t\\tmargin-inline-start: 13px;\\n\\t\\t}\\n\\n\\t\\t&__input-wrapper {\\n\\t\\t\\tpadding: 10px;\\n\\t\\t\\tz-index: 2;\\n\\t\\t\\ttop: 0;\\n\\t\\t}\\n\\n\\t\\t&__search {\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\theight: 34px;\\n\\t\\t\\tmargin-top: 0!important;\\n\\t\\t}\\n\\n\\t\\t&__content {\\n\\t\\t\\toverflow-y: auto;\\n\\t\\t\\tmargin-top: 10px;\\n\\t\\t\\tflex: 1 1 auto;\\n\\n\\t\\t\\t&__footer {\\n\\t\\t\\t\\tdisplay: flex;\\n\\t\\t\\t\\tflex-direction: column;\\n\\t\\t\\t\\talign-items: center;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\ta {\\n\\t\\t\\t&:focus-visible {\\n\\t\\t\\t\\tbox-shadow: inset 0 0 0 2px var(--color-main-text) !important; // override rule in core/css/headers.scss #header a:focus-visible\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t:deep(.empty-content) {\\n\\t\\tmargin: 0 !important;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","/*\n * vim: expandtab shiftwidth=4 softtabstop=4\n */\n\n/* global dav */\nvar dav = dav || {}\n\ndav._XML_CHAR_MAP = {\n '<': '<',\n '>': '>',\n '&': '&',\n '\"': '"',\n \"'\": '''\n};\n\ndav._escapeXml = function(s) {\n return s.replace(/[<>&\"']/g, function (ch) {\n return dav._XML_CHAR_MAP[ch];\n });\n};\n\ndav.Client = function(options) {\n var i;\n for(i in options) {\n this[i] = options[i];\n }\n\n};\n\ndav.Client.prototype = {\n\n baseUrl : null,\n\n userName : null,\n\n password : null,\n\n\n xmlNamespaces : {\n 'DAV:' : 'd'\n },\n\n /**\n * Generates a propFind request.\n *\n * @param {string} url Url to do the propfind request on\n * @param {Array} properties List of properties to retrieve.\n * @param {string} depth \"0\", \"1\" or \"infinity\"\n * @param {Object} [headers] headers\n * @return {Promise}\n */\n propFind : function(url, properties, depth, headers) {\n\n if(typeof depth === \"undefined\") {\n depth = '0';\n }\n\n // depth header must be a string, in case a number was passed in\n depth = '' + depth;\n\n headers = headers || {};\n\n headers['Depth'] = depth;\n headers['Content-Type'] = 'application/xml; charset=utf-8';\n\n var body =\n '\\n' +\n '\\n';\n\n for(var ii in properties) {\n if (!properties.hasOwnProperty(ii)) {\n continue;\n }\n\n var property = this.parseClarkNotation(properties[ii]);\n if (this.xmlNamespaces[property.namespace]) {\n body+=' <' + this.xmlNamespaces[property.namespace] + ':' + property.name + ' />\\n';\n } else {\n body+=' \\n';\n }\n\n }\n body+=' \\n';\n body+='';\n\n return this.request('PROPFIND', url, headers, body).then(\n function(result) {\n\n if (depth === '0') {\n return {\n status: result.status,\n body: result.body[0],\n xhr: result.xhr\n };\n } else {\n return {\n status: result.status,\n body: result.body,\n xhr: result.xhr\n };\n }\n\n }.bind(this)\n );\n\n },\n\n /**\n * Renders a \"d:set\" block for the given properties.\n *\n * @param {Object.} properties\n * @return {String} XML \"\" block\n */\n _renderPropSet: function(properties) {\n var body = ' \\n' +\n ' \\n';\n\n for(var ii in properties) {\n if (!properties.hasOwnProperty(ii)) {\n continue;\n }\n\n var property = this.parseClarkNotation(ii);\n var propName;\n var propValue = properties[ii];\n if (this.xmlNamespaces[property.namespace]) {\n propName = this.xmlNamespaces[property.namespace] + ':' + property.name;\n } else {\n propName = 'x:' + property.name + ' xmlns:x=\"' + property.namespace + '\"';\n }\n\n // FIXME: hard-coded for now until we allow properties to\n // specify whether to be escaped or not\n if (propName !== 'd:resourcetype') {\n propValue = dav._escapeXml(propValue);\n }\n body += ' <' + propName + '>' + propValue + '\\n';\n }\n body +=' \\n';\n body +=' \\n';\n return body;\n },\n\n /**\n * Generates a propPatch request.\n *\n * @param {string} url Url to do the proppatch request on\n * @param {Object.} properties List of properties to store.\n * @param {Object} [headers] headers\n * @return {Promise}\n */\n propPatch : function(url, properties, headers) {\n headers = headers || {};\n\n headers['Content-Type'] = 'application/xml; charset=utf-8';\n\n var body =\n '\\n' +\n '} [properties] list of properties to store.\n * @param {Object} [headers] headers\n * @return {Promise}\n */\n mkcol : function(url, properties, headers) {\n var body = '';\n headers = headers || {};\n headers['Content-Type'] = 'application/xml; charset=utf-8';\n\n if (properties) {\n body =\n '\\n' +\n ' 0) {\n var subNodes = [];\n // filter out text nodes\n for (var j = 0; j < propNode.childNodes.length; j++) {\n var node = propNode.childNodes[j];\n if (node.nodeType === 1) {\n subNodes.push(node);\n }\n }\n if (subNodes.length) {\n content = subNodes;\n }\n }\n\n return content || propNode.textContent || propNode.text || '';\n },\n\n /**\n * Parses a multi-status response body.\n *\n * @param {string} xmlBody\n * @param {Array}\n */\n parseMultiStatus : function(xmlBody) {\n\n var parser = new DOMParser();\n var doc = parser.parseFromString(xmlBody, \"application/xml\");\n\n var resolver = function(foo) {\n var ii;\n for(ii in this.xmlNamespaces) {\n if (this.xmlNamespaces[ii] === foo) {\n return ii;\n }\n }\n }.bind(this);\n\n var responseIterator = doc.evaluate('/d:multistatus/d:response', doc, resolver, XPathResult.ANY_TYPE, null);\n\n var result = [];\n var responseNode = responseIterator.iterateNext();\n\n while(responseNode) {\n\n var response = {\n href : null,\n propStat : []\n };\n\n response.href = doc.evaluate('string(d:href)', responseNode, resolver, XPathResult.ANY_TYPE, null).stringValue;\n\n var propStatIterator = doc.evaluate('d:propstat', responseNode, resolver, XPathResult.ANY_TYPE, null);\n var propStatNode = propStatIterator.iterateNext();\n\n while(propStatNode) {\n var propStat = {\n status : doc.evaluate('string(d:status)', propStatNode, resolver, XPathResult.ANY_TYPE, null).stringValue,\n properties : {},\n };\n\n var propIterator = doc.evaluate('d:prop/*', propStatNode, resolver, XPathResult.ANY_TYPE, null);\n\n var propNode = propIterator.iterateNext();\n while(propNode) {\n var content = this._parsePropNode(propNode);\n propStat.properties['{' + propNode.namespaceURI + '}' + propNode.localName] = content;\n propNode = propIterator.iterateNext();\n\n }\n response.propStat.push(propStat);\n propStatNode = propStatIterator.iterateNext();\n\n\n }\n\n result.push(response);\n responseNode = responseIterator.iterateNext();\n\n }\n\n return result;\n\n },\n\n /**\n * Takes a relative url, and maps it to an absolute url, using the baseUrl\n *\n * @param {string} url\n * @return {string}\n */\n resolveUrl : function(url) {\n\n // Note: this is rudamentary.. not sure yet if it handles every case.\n if (/^https?:\\/\\//i.test(url)) {\n // absolute\n return url;\n }\n\n var baseParts = this.parseUrl(this.baseUrl);\n if (url.charAt('/')) {\n // Url starts with a slash\n return baseParts.root + url;\n }\n\n // Url does not start with a slash, we need grab the base url right up until the last slash.\n var newUrl = baseParts.root + '/';\n if (baseParts.path.lastIndexOf('/')!==-1) {\n newUrl = newUrl = baseParts.path.subString(0, baseParts.path.lastIndexOf('/')) + '/';\n }\n newUrl+=url;\n return url;\n\n },\n\n /**\n * Parses a url and returns its individual components.\n *\n * @param {String} url\n * @return {Object}\n */\n parseUrl : function(url) {\n\n var parts = url.match(/^(?:([A-Za-z]+):)?(\\/{0,3})([0-9.\\-A-Za-z]+)(?::(\\d+))?(?:\\/([^?#]*))?(?:\\?([^#]*))?(?:#(.*))?$/);\n var result = {\n url : parts[0],\n scheme : parts[1],\n host : parts[3],\n port : parts[4],\n path : parts[5],\n query : parts[6],\n fragment : parts[7],\n };\n result.root =\n result.scheme + '://' +\n result.host +\n (result.port ? ':' + result.port : '');\n\n return result;\n\n },\n\n parseClarkNotation : function(propertyName) {\n\n var result = propertyName.match(/^{([^}]+)}(.*)$/);\n if (!result) {\n return;\n }\n\n return {\n name : result[2],\n namespace : result[1]\n };\n\n }\n\n};\n\nif (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\n module.exports.Client = dav.Client;\n}\n","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"
          • \\n\t\\n\t\t\"\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"icon\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":2},\"end\":{\"line\":3,\"column\":41}}})) != null ? stack1 : \"\")\n + \"\\n\t\t\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"title\") || (depth0 != null ? lookupProperty(depth0,\"title\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"title\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":4,\"column\":8},\"end\":{\"line\":4,\"column\":17}}}) : helper)))\n + \"\\n\t\\n
          • \\n\";\n},\"useData\":true});","/*! jQuery UI - v1.13.3 - 2024-04-26\n* https://jqueryui.com\n* Includes: widget.js, position.js, data.js, disable-selection.js, effect.js, effects/effect-blind.js, effects/effect-bounce.js, effects/effect-clip.js, effects/effect-drop.js, effects/effect-explode.js, effects/effect-fade.js, effects/effect-fold.js, effects/effect-highlight.js, effects/effect-puff.js, effects/effect-pulsate.js, effects/effect-scale.js, effects/effect-shake.js, effects/effect-size.js, effects/effect-slide.js, effects/effect-transfer.js, focusable.js, form-reset-mixin.js, jquery-patch.js, keycode.js, labels.js, scroll-parent.js, tabbable.js, unique-id.js, widgets/accordion.js, widgets/autocomplete.js, widgets/button.js, widgets/checkboxradio.js, widgets/controlgroup.js, widgets/datepicker.js, widgets/dialog.js, widgets/draggable.js, widgets/droppable.js, widgets/menu.js, widgets/mouse.js, widgets/progressbar.js, widgets/resizable.js, widgets/selectable.js, widgets/selectmenu.js, widgets/slider.js, widgets/sortable.js, widgets/spinner.js, widgets/tabs.js, widgets/tooltip.js\n* Copyright OpenJS Foundation and other contributors; Licensed MIT */\n\n( function( factory ) {\n\t\"use strict\";\n\t\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [ \"jquery\" ], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n} )( function( $ ) {\n\"use strict\";\n\n$.ui = $.ui || {};\n\nvar version = $.ui.version = \"1.13.3\";\n\n\n/*!\n * jQuery UI Widget 1.13.3\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n//>>label: Widget\n//>>group: Core\n//>>description: Provides a factory for creating stateful widgets with a common API.\n//>>docs: https://api.jqueryui.com/jQuery.widget/\n//>>demos: https://jqueryui.com/widget/\n\n\nvar widgetUuid = 0;\nvar widgetHasOwnProperty = Array.prototype.hasOwnProperty;\nvar widgetSlice = Array.prototype.slice;\n\n$.cleanData = ( function( orig ) {\n\treturn function( elems ) {\n\t\tvar events, elem, i;\n\t\tfor ( i = 0; ( elem = elems[ i ] ) != null; i++ ) {\n\n\t\t\t// Only trigger remove when necessary to save time\n\t\t\tevents = $._data( elem, \"events\" );\n\t\t\tif ( events && events.remove ) {\n\t\t\t\t$( elem ).triggerHandler( \"remove\" );\n\t\t\t}\n\t\t}\n\t\torig( elems );\n\t};\n} )( $.cleanData );\n\n$.widget = function( name, base, prototype ) {\n\tvar existingConstructor, constructor, basePrototype;\n\n\t// ProxiedPrototype allows the provided prototype to remain unmodified\n\t// so that it can be used as a mixin for multiple widgets (#8876)\n\tvar proxiedPrototype = {};\n\n\tvar namespace = name.split( \".\" )[ 0 ];\n\tname = name.split( \".\" )[ 1 ];\n\tvar fullName = namespace + \"-\" + name;\n\n\tif ( !prototype ) {\n\t\tprototype = base;\n\t\tbase = $.Widget;\n\t}\n\n\tif ( Array.isArray( prototype ) ) {\n\t\tprototype = $.extend.apply( null, [ {} ].concat( prototype ) );\n\t}\n\n\t// Create selector for plugin\n\t$.expr.pseudos[ fullName.toLowerCase() ] = function( elem ) {\n\t\treturn !!$.data( elem, fullName );\n\t};\n\n\t$[ namespace ] = $[ namespace ] || {};\n\texistingConstructor = $[ namespace ][ name ];\n\tconstructor = $[ namespace ][ name ] = function( options, element ) {\n\n\t\t// Allow instantiation without \"new\" keyword\n\t\tif ( !this || !this._createWidget ) {\n\t\t\treturn new constructor( options, element );\n\t\t}\n\n\t\t// Allow instantiation without initializing for simple inheritance\n\t\t// must use \"new\" keyword (the code above always passes args)\n\t\tif ( arguments.length ) {\n\t\t\tthis._createWidget( options, element );\n\t\t}\n\t};\n\n\t// Extend with the existing constructor to carry over any static properties\n\t$.extend( constructor, existingConstructor, {\n\t\tversion: prototype.version,\n\n\t\t// Copy the object used to create the prototype in case we need to\n\t\t// redefine the widget later\n\t\t_proto: $.extend( {}, prototype ),\n\n\t\t// Track widgets that inherit from this widget in case this widget is\n\t\t// redefined after a widget inherits from it\n\t\t_childConstructors: []\n\t} );\n\n\tbasePrototype = new base();\n\n\t// We need to make the options hash a property directly on the new instance\n\t// otherwise we'll modify the options hash on the prototype that we're\n\t// inheriting from\n\tbasePrototype.options = $.widget.extend( {}, basePrototype.options );\n\t$.each( prototype, function( prop, value ) {\n\t\tif ( typeof value !== \"function\" ) {\n\t\t\tproxiedPrototype[ prop ] = value;\n\t\t\treturn;\n\t\t}\n\t\tproxiedPrototype[ prop ] = ( function() {\n\t\t\tfunction _super() {\n\t\t\t\treturn base.prototype[ prop ].apply( this, arguments );\n\t\t\t}\n\n\t\t\tfunction _superApply( args ) {\n\t\t\t\treturn base.prototype[ prop ].apply( this, args );\n\t\t\t}\n\n\t\t\treturn function() {\n\t\t\t\tvar __super = this._super;\n\t\t\t\tvar __superApply = this._superApply;\n\t\t\t\tvar returnValue;\n\n\t\t\t\tthis._super = _super;\n\t\t\t\tthis._superApply = _superApply;\n\n\t\t\t\treturnValue = value.apply( this, arguments );\n\n\t\t\t\tthis._super = __super;\n\t\t\t\tthis._superApply = __superApply;\n\n\t\t\t\treturn returnValue;\n\t\t\t};\n\t\t} )();\n\t} );\n\tconstructor.prototype = $.widget.extend( basePrototype, {\n\n\t\t// TODO: remove support for widgetEventPrefix\n\t\t// always use the name + a colon as the prefix, e.g., draggable:start\n\t\t// don't prefix for widgets that aren't DOM-based\n\t\twidgetEventPrefix: existingConstructor ? ( basePrototype.widgetEventPrefix || name ) : name\n\t}, proxiedPrototype, {\n\t\tconstructor: constructor,\n\t\tnamespace: namespace,\n\t\twidgetName: name,\n\t\twidgetFullName: fullName\n\t} );\n\n\t// If this widget is being redefined then we need to find all widgets that\n\t// are inheriting from it and redefine all of them so that they inherit from\n\t// the new version of this widget. We're essentially trying to replace one\n\t// level in the prototype chain.\n\tif ( existingConstructor ) {\n\t\t$.each( existingConstructor._childConstructors, function( i, child ) {\n\t\t\tvar childPrototype = child.prototype;\n\n\t\t\t// Redefine the child widget using the same prototype that was\n\t\t\t// originally used, but inherit from the new version of the base\n\t\t\t$.widget( childPrototype.namespace + \".\" + childPrototype.widgetName, constructor,\n\t\t\t\tchild._proto );\n\t\t} );\n\n\t\t// Remove the list of existing child constructors from the old constructor\n\t\t// so the old child constructors can be garbage collected\n\t\tdelete existingConstructor._childConstructors;\n\t} else {\n\t\tbase._childConstructors.push( constructor );\n\t}\n\n\t$.widget.bridge( name, constructor );\n\n\treturn constructor;\n};\n\n$.widget.extend = function( target ) {\n\tvar input = widgetSlice.call( arguments, 1 );\n\tvar inputIndex = 0;\n\tvar inputLength = input.length;\n\tvar key;\n\tvar value;\n\n\tfor ( ; inputIndex < inputLength; inputIndex++ ) {\n\t\tfor ( key in input[ inputIndex ] ) {\n\t\t\tvalue = input[ inputIndex ][ key ];\n\t\t\tif ( widgetHasOwnProperty.call( input[ inputIndex ], key ) && value !== undefined ) {\n\n\t\t\t\t// Clone objects\n\t\t\t\tif ( $.isPlainObject( value ) ) {\n\t\t\t\t\ttarget[ key ] = $.isPlainObject( target[ key ] ) ?\n\t\t\t\t\t\t$.widget.extend( {}, target[ key ], value ) :\n\n\t\t\t\t\t\t// Don't extend strings, arrays, etc. with objects\n\t\t\t\t\t\t$.widget.extend( {}, value );\n\n\t\t\t\t// Copy everything else by reference\n\t\t\t\t} else {\n\t\t\t\t\ttarget[ key ] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn target;\n};\n\n$.widget.bridge = function( name, object ) {\n\tvar fullName = object.prototype.widgetFullName || name;\n\t$.fn[ name ] = function( options ) {\n\t\tvar isMethodCall = typeof options === \"string\";\n\t\tvar args = widgetSlice.call( arguments, 1 );\n\t\tvar returnValue = this;\n\n\t\tif ( isMethodCall ) {\n\n\t\t\t// If this is an empty collection, we need to have the instance method\n\t\t\t// return undefined instead of the jQuery instance\n\t\t\tif ( !this.length && options === \"instance\" ) {\n\t\t\t\treturnValue = undefined;\n\t\t\t} else {\n\t\t\t\tthis.each( function() {\n\t\t\t\t\tvar methodValue;\n\t\t\t\t\tvar instance = $.data( this, fullName );\n\n\t\t\t\t\tif ( options === \"instance\" ) {\n\t\t\t\t\t\treturnValue = instance;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( !instance ) {\n\t\t\t\t\t\treturn $.error( \"cannot call methods on \" + name +\n\t\t\t\t\t\t\t\" prior to initialization; \" +\n\t\t\t\t\t\t\t\"attempted to call method '\" + options + \"'\" );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( typeof instance[ options ] !== \"function\" ||\n\t\t\t\t\t\toptions.charAt( 0 ) === \"_\" ) {\n\t\t\t\t\t\treturn $.error( \"no such method '\" + options + \"' for \" + name +\n\t\t\t\t\t\t\t\" widget instance\" );\n\t\t\t\t\t}\n\n\t\t\t\t\tmethodValue = instance[ options ].apply( instance, args );\n\n\t\t\t\t\tif ( methodValue !== instance && methodValue !== undefined ) {\n\t\t\t\t\t\treturnValue = methodValue && methodValue.jquery ?\n\t\t\t\t\t\t\treturnValue.pushStack( methodValue.get() ) :\n\t\t\t\t\t\t\tmethodValue;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t}\n\t\t} else {\n\n\t\t\t// Allow multiple hashes to be passed on init\n\t\t\tif ( args.length ) {\n\t\t\t\toptions = $.widget.extend.apply( null, [ options ].concat( args ) );\n\t\t\t}\n\n\t\t\tthis.each( function() {\n\t\t\t\tvar instance = $.data( this, fullName );\n\t\t\t\tif ( instance ) {\n\t\t\t\t\tinstance.option( options || {} );\n\t\t\t\t\tif ( instance._init ) {\n\t\t\t\t\t\tinstance._init();\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t$.data( this, fullName, new object( options, this ) );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn returnValue;\n\t};\n};\n\n$.Widget = function( /* options, element */ ) {};\n$.Widget._childConstructors = [];\n\n$.Widget.prototype = {\n\twidgetName: \"widget\",\n\twidgetEventPrefix: \"\",\n\tdefaultElement: \"
            \",\n\n\toptions: {\n\t\tclasses: {},\n\t\tdisabled: false,\n\n\t\t// Callbacks\n\t\tcreate: null\n\t},\n\n\t_createWidget: function( options, element ) {\n\t\telement = $( element || this.defaultElement || this )[ 0 ];\n\t\tthis.element = $( element );\n\t\tthis.uuid = widgetUuid++;\n\t\tthis.eventNamespace = \".\" + this.widgetName + this.uuid;\n\n\t\tthis.bindings = $();\n\t\tthis.hoverable = $();\n\t\tthis.focusable = $();\n\t\tthis.classesElementLookup = {};\n\n\t\tif ( element !== this ) {\n\t\t\t$.data( element, this.widgetFullName, this );\n\t\t\tthis._on( true, this.element, {\n\t\t\t\tremove: function( event ) {\n\t\t\t\t\tif ( event.target === element ) {\n\t\t\t\t\t\tthis.destroy();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t\tthis.document = $( element.style ?\n\n\t\t\t\t// Element within the document\n\t\t\t\telement.ownerDocument :\n\n\t\t\t\t// Element is window or document\n\t\t\t\telement.document || element );\n\t\t\tthis.window = $( this.document[ 0 ].defaultView || this.document[ 0 ].parentWindow );\n\t\t}\n\n\t\tthis.options = $.widget.extend( {},\n\t\t\tthis.options,\n\t\t\tthis._getCreateOptions(),\n\t\t\toptions );\n\n\t\tthis._create();\n\n\t\tif ( this.options.disabled ) {\n\t\t\tthis._setOptionDisabled( this.options.disabled );\n\t\t}\n\n\t\tthis._trigger( \"create\", null, this._getCreateEventData() );\n\t\tthis._init();\n\t},\n\n\t_getCreateOptions: function() {\n\t\treturn {};\n\t},\n\n\t_getCreateEventData: $.noop,\n\n\t_create: $.noop,\n\n\t_init: $.noop,\n\n\tdestroy: function() {\n\t\tvar that = this;\n\n\t\tthis._destroy();\n\t\t$.each( this.classesElementLookup, function( key, value ) {\n\t\t\tthat._removeClass( value, key );\n\t\t} );\n\n\t\t// We can probably remove the unbind calls in 2.0\n\t\t// all event bindings should go through this._on()\n\t\tthis.element\n\t\t\t.off( this.eventNamespace )\n\t\t\t.removeData( this.widgetFullName );\n\t\tthis.widget()\n\t\t\t.off( this.eventNamespace )\n\t\t\t.removeAttr( \"aria-disabled\" );\n\n\t\t// Clean up events and states\n\t\tthis.bindings.off( this.eventNamespace );\n\t},\n\n\t_destroy: $.noop,\n\n\twidget: function() {\n\t\treturn this.element;\n\t},\n\n\toption: function( key, value ) {\n\t\tvar options = key;\n\t\tvar parts;\n\t\tvar curOption;\n\t\tvar i;\n\n\t\tif ( arguments.length === 0 ) {\n\n\t\t\t// Don't return a reference to the internal hash\n\t\t\treturn $.widget.extend( {}, this.options );\n\t\t}\n\n\t\tif ( typeof key === \"string\" ) {\n\n\t\t\t// Handle nested keys, e.g., \"foo.bar\" => { foo: { bar: ___ } }\n\t\t\toptions = {};\n\t\t\tparts = key.split( \".\" );\n\t\t\tkey = parts.shift();\n\t\t\tif ( parts.length ) {\n\t\t\t\tcurOption = options[ key ] = $.widget.extend( {}, this.options[ key ] );\n\t\t\t\tfor ( i = 0; i < parts.length - 1; i++ ) {\n\t\t\t\t\tcurOption[ parts[ i ] ] = curOption[ parts[ i ] ] || {};\n\t\t\t\t\tcurOption = curOption[ parts[ i ] ];\n\t\t\t\t}\n\t\t\t\tkey = parts.pop();\n\t\t\t\tif ( arguments.length === 1 ) {\n\t\t\t\t\treturn curOption[ key ] === undefined ? null : curOption[ key ];\n\t\t\t\t}\n\t\t\t\tcurOption[ key ] = value;\n\t\t\t} else {\n\t\t\t\tif ( arguments.length === 1 ) {\n\t\t\t\t\treturn this.options[ key ] === undefined ? null : this.options[ key ];\n\t\t\t\t}\n\t\t\t\toptions[ key ] = value;\n\t\t\t}\n\t\t}\n\n\t\tthis._setOptions( options );\n\n\t\treturn this;\n\t},\n\n\t_setOptions: function( options ) {\n\t\tvar key;\n\n\t\tfor ( key in options ) {\n\t\t\tthis._setOption( key, options[ key ] );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tif ( key === \"classes\" ) {\n\t\t\tthis._setOptionClasses( value );\n\t\t}\n\n\t\tthis.options[ key ] = value;\n\n\t\tif ( key === \"disabled\" ) {\n\t\t\tthis._setOptionDisabled( value );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\t_setOptionClasses: function( value ) {\n\t\tvar classKey, elements, currentElements;\n\n\t\tfor ( classKey in value ) {\n\t\t\tcurrentElements = this.classesElementLookup[ classKey ];\n\t\t\tif ( value[ classKey ] === this.options.classes[ classKey ] ||\n\t\t\t\t\t!currentElements ||\n\t\t\t\t\t!currentElements.length ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// We are doing this to create a new jQuery object because the _removeClass() call\n\t\t\t// on the next line is going to destroy the reference to the current elements being\n\t\t\t// tracked. We need to save a copy of this collection so that we can add the new classes\n\t\t\t// below.\n\t\t\telements = $( currentElements.get() );\n\t\t\tthis._removeClass( currentElements, classKey );\n\n\t\t\t// We don't use _addClass() here, because that uses this.options.classes\n\t\t\t// for generating the string of classes. We want to use the value passed in from\n\t\t\t// _setOption(), this is the new value of the classes option which was passed to\n\t\t\t// _setOption(). We pass this value directly to _classes().\n\t\t\telements.addClass( this._classes( {\n\t\t\t\telement: elements,\n\t\t\t\tkeys: classKey,\n\t\t\t\tclasses: value,\n\t\t\t\tadd: true\n\t\t\t} ) );\n\t\t}\n\t},\n\n\t_setOptionDisabled: function( value ) {\n\t\tthis._toggleClass( this.widget(), this.widgetFullName + \"-disabled\", null, !!value );\n\n\t\t// If the widget is becoming disabled, then nothing is interactive\n\t\tif ( value ) {\n\t\t\tthis._removeClass( this.hoverable, null, \"ui-state-hover\" );\n\t\t\tthis._removeClass( this.focusable, null, \"ui-state-focus\" );\n\t\t}\n\t},\n\n\tenable: function() {\n\t\treturn this._setOptions( { disabled: false } );\n\t},\n\n\tdisable: function() {\n\t\treturn this._setOptions( { disabled: true } );\n\t},\n\n\t_classes: function( options ) {\n\t\tvar full = [];\n\t\tvar that = this;\n\n\t\toptions = $.extend( {\n\t\t\telement: this.element,\n\t\t\tclasses: this.options.classes || {}\n\t\t}, options );\n\n\t\tfunction bindRemoveEvent() {\n\t\t\tvar nodesToBind = [];\n\n\t\t\toptions.element.each( function( _, element ) {\n\t\t\t\tvar isTracked = $.map( that.classesElementLookup, function( elements ) {\n\t\t\t\t\treturn elements;\n\t\t\t\t} )\n\t\t\t\t\t.some( function( elements ) {\n\t\t\t\t\t\treturn elements.is( element );\n\t\t\t\t\t} );\n\n\t\t\t\tif ( !isTracked ) {\n\t\t\t\t\tnodesToBind.push( element );\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tthat._on( $( nodesToBind ), {\n\t\t\t\tremove: \"_untrackClassesElement\"\n\t\t\t} );\n\t\t}\n\n\t\tfunction processClassString( classes, checkOption ) {\n\t\t\tvar current, i;\n\t\t\tfor ( i = 0; i < classes.length; i++ ) {\n\t\t\t\tcurrent = that.classesElementLookup[ classes[ i ] ] || $();\n\t\t\t\tif ( options.add ) {\n\t\t\t\t\tbindRemoveEvent();\n\t\t\t\t\tcurrent = $( $.uniqueSort( current.get().concat( options.element.get() ) ) );\n\t\t\t\t} else {\n\t\t\t\t\tcurrent = $( current.not( options.element ).get() );\n\t\t\t\t}\n\t\t\t\tthat.classesElementLookup[ classes[ i ] ] = current;\n\t\t\t\tfull.push( classes[ i ] );\n\t\t\t\tif ( checkOption && options.classes[ classes[ i ] ] ) {\n\t\t\t\t\tfull.push( options.classes[ classes[ i ] ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( options.keys ) {\n\t\t\tprocessClassString( options.keys.match( /\\S+/g ) || [], true );\n\t\t}\n\t\tif ( options.extra ) {\n\t\t\tprocessClassString( options.extra.match( /\\S+/g ) || [] );\n\t\t}\n\n\t\treturn full.join( \" \" );\n\t},\n\n\t_untrackClassesElement: function( event ) {\n\t\tvar that = this;\n\t\t$.each( that.classesElementLookup, function( key, value ) {\n\t\t\tif ( $.inArray( event.target, value ) !== -1 ) {\n\t\t\t\tthat.classesElementLookup[ key ] = $( value.not( event.target ).get() );\n\t\t\t}\n\t\t} );\n\n\t\tthis._off( $( event.target ) );\n\t},\n\n\t_removeClass: function( element, keys, extra ) {\n\t\treturn this._toggleClass( element, keys, extra, false );\n\t},\n\n\t_addClass: function( element, keys, extra ) {\n\t\treturn this._toggleClass( element, keys, extra, true );\n\t},\n\n\t_toggleClass: function( element, keys, extra, add ) {\n\t\tadd = ( typeof add === \"boolean\" ) ? add : extra;\n\t\tvar shift = ( typeof element === \"string\" || element === null ),\n\t\t\toptions = {\n\t\t\t\textra: shift ? keys : extra,\n\t\t\t\tkeys: shift ? element : keys,\n\t\t\t\telement: shift ? this.element : element,\n\t\t\t\tadd: add\n\t\t\t};\n\t\toptions.element.toggleClass( this._classes( options ), add );\n\t\treturn this;\n\t},\n\n\t_on: function( suppressDisabledCheck, element, handlers ) {\n\t\tvar delegateElement;\n\t\tvar instance = this;\n\n\t\t// No suppressDisabledCheck flag, shuffle arguments\n\t\tif ( typeof suppressDisabledCheck !== \"boolean\" ) {\n\t\t\thandlers = element;\n\t\t\telement = suppressDisabledCheck;\n\t\t\tsuppressDisabledCheck = false;\n\t\t}\n\n\t\t// No element argument, shuffle and use this.element\n\t\tif ( !handlers ) {\n\t\t\thandlers = element;\n\t\t\telement = this.element;\n\t\t\tdelegateElement = this.widget();\n\t\t} else {\n\t\t\telement = delegateElement = $( element );\n\t\t\tthis.bindings = this.bindings.add( element );\n\t\t}\n\n\t\t$.each( handlers, function( event, handler ) {\n\t\t\tfunction handlerProxy() {\n\n\t\t\t\t// Allow widgets to customize the disabled handling\n\t\t\t\t// - disabled as an array instead of boolean\n\t\t\t\t// - disabled class as method for disabling individual parts\n\t\t\t\tif ( !suppressDisabledCheck &&\n\t\t\t\t\t\t( instance.options.disabled === true ||\n\t\t\t\t\t\t$( this ).hasClass( \"ui-state-disabled\" ) ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\treturn ( typeof handler === \"string\" ? instance[ handler ] : handler )\n\t\t\t\t\t.apply( instance, arguments );\n\t\t\t}\n\n\t\t\t// Copy the guid so direct unbinding works\n\t\t\tif ( typeof handler !== \"string\" ) {\n\t\t\t\thandlerProxy.guid = handler.guid =\n\t\t\t\t\thandler.guid || handlerProxy.guid || $.guid++;\n\t\t\t}\n\n\t\t\tvar match = event.match( /^([\\w:-]*)\\s*(.*)$/ );\n\t\t\tvar eventName = match[ 1 ] + instance.eventNamespace;\n\t\t\tvar selector = match[ 2 ];\n\n\t\t\tif ( selector ) {\n\t\t\t\tdelegateElement.on( eventName, selector, handlerProxy );\n\t\t\t} else {\n\t\t\t\telement.on( eventName, handlerProxy );\n\t\t\t}\n\t\t} );\n\t},\n\n\t_off: function( element, eventName ) {\n\t\teventName = ( eventName || \"\" ).split( \" \" ).join( this.eventNamespace + \" \" ) +\n\t\t\tthis.eventNamespace;\n\t\telement.off( eventName );\n\n\t\t// Clear the stack to avoid memory leaks (#10056)\n\t\tthis.bindings = $( this.bindings.not( element ).get() );\n\t\tthis.focusable = $( this.focusable.not( element ).get() );\n\t\tthis.hoverable = $( this.hoverable.not( element ).get() );\n\t},\n\n\t_delay: function( handler, delay ) {\n\t\tfunction handlerProxy() {\n\t\t\treturn ( typeof handler === \"string\" ? instance[ handler ] : handler )\n\t\t\t\t.apply( instance, arguments );\n\t\t}\n\t\tvar instance = this;\n\t\treturn setTimeout( handlerProxy, delay || 0 );\n\t},\n\n\t_hoverable: function( element ) {\n\t\tthis.hoverable = this.hoverable.add( element );\n\t\tthis._on( element, {\n\t\t\tmouseenter: function( event ) {\n\t\t\t\tthis._addClass( $( event.currentTarget ), null, \"ui-state-hover\" );\n\t\t\t},\n\t\t\tmouseleave: function( event ) {\n\t\t\t\tthis._removeClass( $( event.currentTarget ), null, \"ui-state-hover\" );\n\t\t\t}\n\t\t} );\n\t},\n\n\t_focusable: function( element ) {\n\t\tthis.focusable = this.focusable.add( element );\n\t\tthis._on( element, {\n\t\t\tfocusin: function( event ) {\n\t\t\t\tthis._addClass( $( event.currentTarget ), null, \"ui-state-focus\" );\n\t\t\t},\n\t\t\tfocusout: function( event ) {\n\t\t\t\tthis._removeClass( $( event.currentTarget ), null, \"ui-state-focus\" );\n\t\t\t}\n\t\t} );\n\t},\n\n\t_trigger: function( type, event, data ) {\n\t\tvar prop, orig;\n\t\tvar callback = this.options[ type ];\n\n\t\tdata = data || {};\n\t\tevent = $.Event( event );\n\t\tevent.type = ( type === this.widgetEventPrefix ?\n\t\t\ttype :\n\t\t\tthis.widgetEventPrefix + type ).toLowerCase();\n\n\t\t// The original event may come from any element\n\t\t// so we need to reset the target on the new event\n\t\tevent.target = this.element[ 0 ];\n\n\t\t// Copy original event properties over to the new event\n\t\torig = event.originalEvent;\n\t\tif ( orig ) {\n\t\t\tfor ( prop in orig ) {\n\t\t\t\tif ( !( prop in event ) ) {\n\t\t\t\t\tevent[ prop ] = orig[ prop ];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.element.trigger( event, data );\n\t\treturn !( typeof callback === \"function\" &&\n\t\t\tcallback.apply( this.element[ 0 ], [ event ].concat( data ) ) === false ||\n\t\t\tevent.isDefaultPrevented() );\n\t}\n};\n\n$.each( { show: \"fadeIn\", hide: \"fadeOut\" }, function( method, defaultEffect ) {\n\t$.Widget.prototype[ \"_\" + method ] = function( element, options, callback ) {\n\t\tif ( typeof options === \"string\" ) {\n\t\t\toptions = { effect: options };\n\t\t}\n\n\t\tvar hasOptions;\n\t\tvar effectName = !options ?\n\t\t\tmethod :\n\t\t\toptions === true || typeof options === \"number\" ?\n\t\t\t\tdefaultEffect :\n\t\t\t\toptions.effect || defaultEffect;\n\n\t\toptions = options || {};\n\t\tif ( typeof options === \"number\" ) {\n\t\t\toptions = { duration: options };\n\t\t} else if ( options === true ) {\n\t\t\toptions = {};\n\t\t}\n\n\t\thasOptions = !$.isEmptyObject( options );\n\t\toptions.complete = callback;\n\n\t\tif ( options.delay ) {\n\t\t\telement.delay( options.delay );\n\t\t}\n\n\t\tif ( hasOptions && $.effects && $.effects.effect[ effectName ] ) {\n\t\t\telement[ method ]( options );\n\t\t} else if ( effectName !== method && element[ effectName ] ) {\n\t\t\telement[ effectName ]( options.duration, options.easing, callback );\n\t\t} else {\n\t\t\telement.queue( function( next ) {\n\t\t\t\t$( this )[ method ]();\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback.call( element[ 0 ] );\n\t\t\t\t}\n\t\t\t\tnext();\n\t\t\t} );\n\t\t}\n\t};\n} );\n\nvar widget = $.widget;\n\n\n/*!\n * jQuery UI Position 1.13.3\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n *\n * https://api.jqueryui.com/position/\n */\n\n//>>label: Position\n//>>group: Core\n//>>description: Positions elements relative to other elements.\n//>>docs: https://api.jqueryui.com/position/\n//>>demos: https://jqueryui.com/position/\n\n\n( function() {\nvar cachedScrollbarWidth,\n\tmax = Math.max,\n\tabs = Math.abs,\n\trhorizontal = /left|center|right/,\n\trvertical = /top|center|bottom/,\n\troffset = /[\\+\\-]\\d+(\\.[\\d]+)?%?/,\n\trposition = /^\\w+/,\n\trpercent = /%$/,\n\t_position = $.fn.position;\n\nfunction getOffsets( offsets, width, height ) {\n\treturn [\n\t\tparseFloat( offsets[ 0 ] ) * ( rpercent.test( offsets[ 0 ] ) ? width / 100 : 1 ),\n\t\tparseFloat( offsets[ 1 ] ) * ( rpercent.test( offsets[ 1 ] ) ? height / 100 : 1 )\n\t];\n}\n\nfunction parseCss( element, property ) {\n\treturn parseInt( $.css( element, property ), 10 ) || 0;\n}\n\nfunction isWindow( obj ) {\n\treturn obj != null && obj === obj.window;\n}\n\nfunction getDimensions( elem ) {\n\tvar raw = elem[ 0 ];\n\tif ( raw.nodeType === 9 ) {\n\t\treturn {\n\t\t\twidth: elem.width(),\n\t\t\theight: elem.height(),\n\t\t\toffset: { top: 0, left: 0 }\n\t\t};\n\t}\n\tif ( isWindow( raw ) ) {\n\t\treturn {\n\t\t\twidth: elem.width(),\n\t\t\theight: elem.height(),\n\t\t\toffset: { top: elem.scrollTop(), left: elem.scrollLeft() }\n\t\t};\n\t}\n\tif ( raw.preventDefault ) {\n\t\treturn {\n\t\t\twidth: 0,\n\t\t\theight: 0,\n\t\t\toffset: { top: raw.pageY, left: raw.pageX }\n\t\t};\n\t}\n\treturn {\n\t\twidth: elem.outerWidth(),\n\t\theight: elem.outerHeight(),\n\t\toffset: elem.offset()\n\t};\n}\n\n$.position = {\n\tscrollbarWidth: function() {\n\t\tif ( cachedScrollbarWidth !== undefined ) {\n\t\t\treturn cachedScrollbarWidth;\n\t\t}\n\t\tvar w1, w2,\n\t\t\tdiv = $( \"
            \" +\n\t\t\t\t\"
            \" ),\n\t\t\tinnerDiv = div.children()[ 0 ];\n\n\t\t$( \"body\" ).append( div );\n\t\tw1 = innerDiv.offsetWidth;\n\t\tdiv.css( \"overflow\", \"scroll\" );\n\n\t\tw2 = innerDiv.offsetWidth;\n\n\t\tif ( w1 === w2 ) {\n\t\t\tw2 = div[ 0 ].clientWidth;\n\t\t}\n\n\t\tdiv.remove();\n\n\t\treturn ( cachedScrollbarWidth = w1 - w2 );\n\t},\n\tgetScrollInfo: function( within ) {\n\t\tvar overflowX = within.isWindow || within.isDocument ? \"\" :\n\t\t\t\twithin.element.css( \"overflow-x\" ),\n\t\t\toverflowY = within.isWindow || within.isDocument ? \"\" :\n\t\t\t\twithin.element.css( \"overflow-y\" ),\n\t\t\thasOverflowX = overflowX === \"scroll\" ||\n\t\t\t\t( overflowX === \"auto\" && within.width < within.element[ 0 ].scrollWidth ),\n\t\t\thasOverflowY = overflowY === \"scroll\" ||\n\t\t\t\t( overflowY === \"auto\" && within.height < within.element[ 0 ].scrollHeight );\n\t\treturn {\n\t\t\twidth: hasOverflowY ? $.position.scrollbarWidth() : 0,\n\t\t\theight: hasOverflowX ? $.position.scrollbarWidth() : 0\n\t\t};\n\t},\n\tgetWithinInfo: function( element ) {\n\t\tvar withinElement = $( element || window ),\n\t\t\tisElemWindow = isWindow( withinElement[ 0 ] ),\n\t\t\tisDocument = !!withinElement[ 0 ] && withinElement[ 0 ].nodeType === 9,\n\t\t\thasOffset = !isElemWindow && !isDocument;\n\t\treturn {\n\t\t\telement: withinElement,\n\t\t\tisWindow: isElemWindow,\n\t\t\tisDocument: isDocument,\n\t\t\toffset: hasOffset ? $( element ).offset() : { left: 0, top: 0 },\n\t\t\tscrollLeft: withinElement.scrollLeft(),\n\t\t\tscrollTop: withinElement.scrollTop(),\n\t\t\twidth: withinElement.outerWidth(),\n\t\t\theight: withinElement.outerHeight()\n\t\t};\n\t}\n};\n\n$.fn.position = function( options ) {\n\tif ( !options || !options.of ) {\n\t\treturn _position.apply( this, arguments );\n\t}\n\n\t// Make a copy, we don't want to modify arguments\n\toptions = $.extend( {}, options );\n\n\tvar atOffset, targetWidth, targetHeight, targetOffset, basePosition, dimensions,\n\n\t\t// Make sure string options are treated as CSS selectors\n\t\ttarget = typeof options.of === \"string\" ?\n\t\t\t$( document ).find( options.of ) :\n\t\t\t$( options.of ),\n\n\t\twithin = $.position.getWithinInfo( options.within ),\n\t\tscrollInfo = $.position.getScrollInfo( within ),\n\t\tcollision = ( options.collision || \"flip\" ).split( \" \" ),\n\t\toffsets = {};\n\n\tdimensions = getDimensions( target );\n\tif ( target[ 0 ].preventDefault ) {\n\n\t\t// Force left top to allow flipping\n\t\toptions.at = \"left top\";\n\t}\n\ttargetWidth = dimensions.width;\n\ttargetHeight = dimensions.height;\n\ttargetOffset = dimensions.offset;\n\n\t// Clone to reuse original targetOffset later\n\tbasePosition = $.extend( {}, targetOffset );\n\n\t// Force my and at to have valid horizontal and vertical positions\n\t// if a value is missing or invalid, it will be converted to center\n\t$.each( [ \"my\", \"at\" ], function() {\n\t\tvar pos = ( options[ this ] || \"\" ).split( \" \" ),\n\t\t\thorizontalOffset,\n\t\t\tverticalOffset;\n\n\t\tif ( pos.length === 1 ) {\n\t\t\tpos = rhorizontal.test( pos[ 0 ] ) ?\n\t\t\t\tpos.concat( [ \"center\" ] ) :\n\t\t\t\trvertical.test( pos[ 0 ] ) ?\n\t\t\t\t\t[ \"center\" ].concat( pos ) :\n\t\t\t\t\t[ \"center\", \"center\" ];\n\t\t}\n\t\tpos[ 0 ] = rhorizontal.test( pos[ 0 ] ) ? pos[ 0 ] : \"center\";\n\t\tpos[ 1 ] = rvertical.test( pos[ 1 ] ) ? pos[ 1 ] : \"center\";\n\n\t\t// Calculate offsets\n\t\thorizontalOffset = roffset.exec( pos[ 0 ] );\n\t\tverticalOffset = roffset.exec( pos[ 1 ] );\n\t\toffsets[ this ] = [\n\t\t\thorizontalOffset ? horizontalOffset[ 0 ] : 0,\n\t\t\tverticalOffset ? verticalOffset[ 0 ] : 0\n\t\t];\n\n\t\t// Reduce to just the positions without the offsets\n\t\toptions[ this ] = [\n\t\t\trposition.exec( pos[ 0 ] )[ 0 ],\n\t\t\trposition.exec( pos[ 1 ] )[ 0 ]\n\t\t];\n\t} );\n\n\t// Normalize collision option\n\tif ( collision.length === 1 ) {\n\t\tcollision[ 1 ] = collision[ 0 ];\n\t}\n\n\tif ( options.at[ 0 ] === \"right\" ) {\n\t\tbasePosition.left += targetWidth;\n\t} else if ( options.at[ 0 ] === \"center\" ) {\n\t\tbasePosition.left += targetWidth / 2;\n\t}\n\n\tif ( options.at[ 1 ] === \"bottom\" ) {\n\t\tbasePosition.top += targetHeight;\n\t} else if ( options.at[ 1 ] === \"center\" ) {\n\t\tbasePosition.top += targetHeight / 2;\n\t}\n\n\tatOffset = getOffsets( offsets.at, targetWidth, targetHeight );\n\tbasePosition.left += atOffset[ 0 ];\n\tbasePosition.top += atOffset[ 1 ];\n\n\treturn this.each( function() {\n\t\tvar collisionPosition, using,\n\t\t\telem = $( this ),\n\t\t\telemWidth = elem.outerWidth(),\n\t\t\telemHeight = elem.outerHeight(),\n\t\t\tmarginLeft = parseCss( this, \"marginLeft\" ),\n\t\t\tmarginTop = parseCss( this, \"marginTop\" ),\n\t\t\tcollisionWidth = elemWidth + marginLeft + parseCss( this, \"marginRight\" ) +\n\t\t\t\tscrollInfo.width,\n\t\t\tcollisionHeight = elemHeight + marginTop + parseCss( this, \"marginBottom\" ) +\n\t\t\t\tscrollInfo.height,\n\t\t\tposition = $.extend( {}, basePosition ),\n\t\t\tmyOffset = getOffsets( offsets.my, elem.outerWidth(), elem.outerHeight() );\n\n\t\tif ( options.my[ 0 ] === \"right\" ) {\n\t\t\tposition.left -= elemWidth;\n\t\t} else if ( options.my[ 0 ] === \"center\" ) {\n\t\t\tposition.left -= elemWidth / 2;\n\t\t}\n\n\t\tif ( options.my[ 1 ] === \"bottom\" ) {\n\t\t\tposition.top -= elemHeight;\n\t\t} else if ( options.my[ 1 ] === \"center\" ) {\n\t\t\tposition.top -= elemHeight / 2;\n\t\t}\n\n\t\tposition.left += myOffset[ 0 ];\n\t\tposition.top += myOffset[ 1 ];\n\n\t\tcollisionPosition = {\n\t\t\tmarginLeft: marginLeft,\n\t\t\tmarginTop: marginTop\n\t\t};\n\n\t\t$.each( [ \"left\", \"top\" ], function( i, dir ) {\n\t\t\tif ( $.ui.position[ collision[ i ] ] ) {\n\t\t\t\t$.ui.position[ collision[ i ] ][ dir ]( position, {\n\t\t\t\t\ttargetWidth: targetWidth,\n\t\t\t\t\ttargetHeight: targetHeight,\n\t\t\t\t\telemWidth: elemWidth,\n\t\t\t\t\telemHeight: elemHeight,\n\t\t\t\t\tcollisionPosition: collisionPosition,\n\t\t\t\t\tcollisionWidth: collisionWidth,\n\t\t\t\t\tcollisionHeight: collisionHeight,\n\t\t\t\t\toffset: [ atOffset[ 0 ] + myOffset[ 0 ], atOffset [ 1 ] + myOffset[ 1 ] ],\n\t\t\t\t\tmy: options.my,\n\t\t\t\t\tat: options.at,\n\t\t\t\t\twithin: within,\n\t\t\t\t\telem: elem\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\n\t\tif ( options.using ) {\n\n\t\t\t// Adds feedback as second argument to using callback, if present\n\t\t\tusing = function( props ) {\n\t\t\t\tvar left = targetOffset.left - position.left,\n\t\t\t\t\tright = left + targetWidth - elemWidth,\n\t\t\t\t\ttop = targetOffset.top - position.top,\n\t\t\t\t\tbottom = top + targetHeight - elemHeight,\n\t\t\t\t\tfeedback = {\n\t\t\t\t\t\ttarget: {\n\t\t\t\t\t\t\telement: target,\n\t\t\t\t\t\t\tleft: targetOffset.left,\n\t\t\t\t\t\t\ttop: targetOffset.top,\n\t\t\t\t\t\t\twidth: targetWidth,\n\t\t\t\t\t\t\theight: targetHeight\n\t\t\t\t\t\t},\n\t\t\t\t\t\telement: {\n\t\t\t\t\t\t\telement: elem,\n\t\t\t\t\t\t\tleft: position.left,\n\t\t\t\t\t\t\ttop: position.top,\n\t\t\t\t\t\t\twidth: elemWidth,\n\t\t\t\t\t\t\theight: elemHeight\n\t\t\t\t\t\t},\n\t\t\t\t\t\thorizontal: right < 0 ? \"left\" : left > 0 ? \"right\" : \"center\",\n\t\t\t\t\t\tvertical: bottom < 0 ? \"top\" : top > 0 ? \"bottom\" : \"middle\"\n\t\t\t\t\t};\n\t\t\t\tif ( targetWidth < elemWidth && abs( left + right ) < targetWidth ) {\n\t\t\t\t\tfeedback.horizontal = \"center\";\n\t\t\t\t}\n\t\t\t\tif ( targetHeight < elemHeight && abs( top + bottom ) < targetHeight ) {\n\t\t\t\t\tfeedback.vertical = \"middle\";\n\t\t\t\t}\n\t\t\t\tif ( max( abs( left ), abs( right ) ) > max( abs( top ), abs( bottom ) ) ) {\n\t\t\t\t\tfeedback.important = \"horizontal\";\n\t\t\t\t} else {\n\t\t\t\t\tfeedback.important = \"vertical\";\n\t\t\t\t}\n\t\t\t\toptions.using.call( this, props, feedback );\n\t\t\t};\n\t\t}\n\n\t\telem.offset( $.extend( position, { using: using } ) );\n\t} );\n};\n\n$.ui.position = {\n\tfit: {\n\t\tleft: function( position, data ) {\n\t\t\tvar within = data.within,\n\t\t\t\twithinOffset = within.isWindow ? within.scrollLeft : within.offset.left,\n\t\t\t\touterWidth = within.width,\n\t\t\t\tcollisionPosLeft = position.left - data.collisionPosition.marginLeft,\n\t\t\t\toverLeft = withinOffset - collisionPosLeft,\n\t\t\t\toverRight = collisionPosLeft + data.collisionWidth - outerWidth - withinOffset,\n\t\t\t\tnewOverRight;\n\n\t\t\t// Element is wider than within\n\t\t\tif ( data.collisionWidth > outerWidth ) {\n\n\t\t\t\t// Element is initially over the left side of within\n\t\t\t\tif ( overLeft > 0 && overRight <= 0 ) {\n\t\t\t\t\tnewOverRight = position.left + overLeft + data.collisionWidth - outerWidth -\n\t\t\t\t\t\twithinOffset;\n\t\t\t\t\tposition.left += overLeft - newOverRight;\n\n\t\t\t\t// Element is initially over right side of within\n\t\t\t\t} else if ( overRight > 0 && overLeft <= 0 ) {\n\t\t\t\t\tposition.left = withinOffset;\n\n\t\t\t\t// Element is initially over both left and right sides of within\n\t\t\t\t} else {\n\t\t\t\t\tif ( overLeft > overRight ) {\n\t\t\t\t\t\tposition.left = withinOffset + outerWidth - data.collisionWidth;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tposition.left = withinOffset;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Too far left -> align with left edge\n\t\t\t} else if ( overLeft > 0 ) {\n\t\t\t\tposition.left += overLeft;\n\n\t\t\t// Too far right -> align with right edge\n\t\t\t} else if ( overRight > 0 ) {\n\t\t\t\tposition.left -= overRight;\n\n\t\t\t// Adjust based on position and margin\n\t\t\t} else {\n\t\t\t\tposition.left = max( position.left - collisionPosLeft, position.left );\n\t\t\t}\n\t\t},\n\t\ttop: function( position, data ) {\n\t\t\tvar within = data.within,\n\t\t\t\twithinOffset = within.isWindow ? within.scrollTop : within.offset.top,\n\t\t\t\touterHeight = data.within.height,\n\t\t\t\tcollisionPosTop = position.top - data.collisionPosition.marginTop,\n\t\t\t\toverTop = withinOffset - collisionPosTop,\n\t\t\t\toverBottom = collisionPosTop + data.collisionHeight - outerHeight - withinOffset,\n\t\t\t\tnewOverBottom;\n\n\t\t\t// Element is taller than within\n\t\t\tif ( data.collisionHeight > outerHeight ) {\n\n\t\t\t\t// Element is initially over the top of within\n\t\t\t\tif ( overTop > 0 && overBottom <= 0 ) {\n\t\t\t\t\tnewOverBottom = position.top + overTop + data.collisionHeight - outerHeight -\n\t\t\t\t\t\twithinOffset;\n\t\t\t\t\tposition.top += overTop - newOverBottom;\n\n\t\t\t\t// Element is initially over bottom of within\n\t\t\t\t} else if ( overBottom > 0 && overTop <= 0 ) {\n\t\t\t\t\tposition.top = withinOffset;\n\n\t\t\t\t// Element is initially over both top and bottom of within\n\t\t\t\t} else {\n\t\t\t\t\tif ( overTop > overBottom ) {\n\t\t\t\t\t\tposition.top = withinOffset + outerHeight - data.collisionHeight;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tposition.top = withinOffset;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Too far up -> align with top\n\t\t\t} else if ( overTop > 0 ) {\n\t\t\t\tposition.top += overTop;\n\n\t\t\t// Too far down -> align with bottom edge\n\t\t\t} else if ( overBottom > 0 ) {\n\t\t\t\tposition.top -= overBottom;\n\n\t\t\t// Adjust based on position and margin\n\t\t\t} else {\n\t\t\t\tposition.top = max( position.top - collisionPosTop, position.top );\n\t\t\t}\n\t\t}\n\t},\n\tflip: {\n\t\tleft: function( position, data ) {\n\t\t\tvar within = data.within,\n\t\t\t\twithinOffset = within.offset.left + within.scrollLeft,\n\t\t\t\touterWidth = within.width,\n\t\t\t\toffsetLeft = within.isWindow ? within.scrollLeft : within.offset.left,\n\t\t\t\tcollisionPosLeft = position.left - data.collisionPosition.marginLeft,\n\t\t\t\toverLeft = collisionPosLeft - offsetLeft,\n\t\t\t\toverRight = collisionPosLeft + data.collisionWidth - outerWidth - offsetLeft,\n\t\t\t\tmyOffset = data.my[ 0 ] === \"left\" ?\n\t\t\t\t\t-data.elemWidth :\n\t\t\t\t\tdata.my[ 0 ] === \"right\" ?\n\t\t\t\t\t\tdata.elemWidth :\n\t\t\t\t\t\t0,\n\t\t\t\tatOffset = data.at[ 0 ] === \"left\" ?\n\t\t\t\t\tdata.targetWidth :\n\t\t\t\t\tdata.at[ 0 ] === \"right\" ?\n\t\t\t\t\t\t-data.targetWidth :\n\t\t\t\t\t\t0,\n\t\t\t\toffset = -2 * data.offset[ 0 ],\n\t\t\t\tnewOverRight,\n\t\t\t\tnewOverLeft;\n\n\t\t\tif ( overLeft < 0 ) {\n\t\t\t\tnewOverRight = position.left + myOffset + atOffset + offset + data.collisionWidth -\n\t\t\t\t\touterWidth - withinOffset;\n\t\t\t\tif ( newOverRight < 0 || newOverRight < abs( overLeft ) ) {\n\t\t\t\t\tposition.left += myOffset + atOffset + offset;\n\t\t\t\t}\n\t\t\t} else if ( overRight > 0 ) {\n\t\t\t\tnewOverLeft = position.left - data.collisionPosition.marginLeft + myOffset +\n\t\t\t\t\tatOffset + offset - offsetLeft;\n\t\t\t\tif ( newOverLeft > 0 || abs( newOverLeft ) < overRight ) {\n\t\t\t\t\tposition.left += myOffset + atOffset + offset;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\ttop: function( position, data ) {\n\t\t\tvar within = data.within,\n\t\t\t\twithinOffset = within.offset.top + within.scrollTop,\n\t\t\t\touterHeight = within.height,\n\t\t\t\toffsetTop = within.isWindow ? within.scrollTop : within.offset.top,\n\t\t\t\tcollisionPosTop = position.top - data.collisionPosition.marginTop,\n\t\t\t\toverTop = collisionPosTop - offsetTop,\n\t\t\t\toverBottom = collisionPosTop + data.collisionHeight - outerHeight - offsetTop,\n\t\t\t\ttop = data.my[ 1 ] === \"top\",\n\t\t\t\tmyOffset = top ?\n\t\t\t\t\t-data.elemHeight :\n\t\t\t\t\tdata.my[ 1 ] === \"bottom\" ?\n\t\t\t\t\t\tdata.elemHeight :\n\t\t\t\t\t\t0,\n\t\t\t\tatOffset = data.at[ 1 ] === \"top\" ?\n\t\t\t\t\tdata.targetHeight :\n\t\t\t\t\tdata.at[ 1 ] === \"bottom\" ?\n\t\t\t\t\t\t-data.targetHeight :\n\t\t\t\t\t\t0,\n\t\t\t\toffset = -2 * data.offset[ 1 ],\n\t\t\t\tnewOverTop,\n\t\t\t\tnewOverBottom;\n\t\t\tif ( overTop < 0 ) {\n\t\t\t\tnewOverBottom = position.top + myOffset + atOffset + offset + data.collisionHeight -\n\t\t\t\t\touterHeight - withinOffset;\n\t\t\t\tif ( newOverBottom < 0 || newOverBottom < abs( overTop ) ) {\n\t\t\t\t\tposition.top += myOffset + atOffset + offset;\n\t\t\t\t}\n\t\t\t} else if ( overBottom > 0 ) {\n\t\t\t\tnewOverTop = position.top - data.collisionPosition.marginTop + myOffset + atOffset +\n\t\t\t\t\toffset - offsetTop;\n\t\t\t\tif ( newOverTop > 0 || abs( newOverTop ) < overBottom ) {\n\t\t\t\t\tposition.top += myOffset + atOffset + offset;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tflipfit: {\n\t\tleft: function() {\n\t\t\t$.ui.position.flip.left.apply( this, arguments );\n\t\t\t$.ui.position.fit.left.apply( this, arguments );\n\t\t},\n\t\ttop: function() {\n\t\t\t$.ui.position.flip.top.apply( this, arguments );\n\t\t\t$.ui.position.fit.top.apply( this, arguments );\n\t\t}\n\t}\n};\n\n} )();\n\nvar position = $.ui.position;\n\n\n/*!\n * jQuery UI :data 1.13.3\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n//>>label: :data Selector\n//>>group: Core\n//>>description: Selects elements which have data stored under the specified key.\n//>>docs: https://api.jqueryui.com/data-selector/\n\n\nvar data = $.extend( $.expr.pseudos, {\n\tdata: $.expr.createPseudo ?\n\t\t$.expr.createPseudo( function( dataName ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn !!$.data( elem, dataName );\n\t\t\t};\n\t\t} ) :\n\n\t\t// Support: jQuery <1.8\n\t\tfunction( elem, i, match ) {\n\t\t\treturn !!$.data( elem, match[ 3 ] );\n\t\t}\n} );\n\n/*!\n * jQuery UI Disable Selection 1.13.3\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n//>>label: disableSelection\n//>>group: Core\n//>>description: Disable selection of text content within the set of matched elements.\n//>>docs: https://api.jqueryui.com/disableSelection/\n\n// This file is deprecated\n\nvar disableSelection = $.fn.extend( {\n\tdisableSelection: ( function() {\n\t\tvar eventType = \"onselectstart\" in document.createElement( \"div\" ) ?\n\t\t\t\"selectstart\" :\n\t\t\t\"mousedown\";\n\n\t\treturn function() {\n\t\t\treturn this.on( eventType + \".ui-disableSelection\", function( event ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t} );\n\t\t};\n\t} )(),\n\n\tenableSelection: function() {\n\t\treturn this.off( \".ui-disableSelection\" );\n\t}\n} );\n\n\n\n// Create a local jQuery because jQuery Color relies on it and the\n// global may not exist with AMD and a custom build (#10199).\n// This module is a noop if used as a regular AMD module.\n// eslint-disable-next-line no-unused-vars\nvar jQuery = $;\n\n\n/*!\n * jQuery Color Animations v2.2.0\n * https://github.com/jquery/jquery-color\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n *\n * Date: Sun May 10 09:02:36 2020 +0200\n */\n\n\n\n\tvar stepHooks = \"backgroundColor borderBottomColor borderLeftColor borderRightColor \" +\n\t\t\"borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor\",\n\n\tclass2type = {},\n\ttoString = class2type.toString,\n\n\t// plusequals test for += 100 -= 100\n\trplusequals = /^([\\-+])=\\s*(\\d+\\.?\\d*)/,\n\n\t// a set of RE's that can match strings and generate color tuples.\n\tstringParsers = [ {\n\t\t\tre: /rgba?\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*(?:,\\s*(\\d?(?:\\.\\d+)?)\\s*)?\\)/,\n\t\t\tparse: function( execResult ) {\n\t\t\t\treturn [\n\t\t\t\t\texecResult[ 1 ],\n\t\t\t\t\texecResult[ 2 ],\n\t\t\t\t\texecResult[ 3 ],\n\t\t\t\t\texecResult[ 4 ]\n\t\t\t\t];\n\t\t\t}\n\t\t}, {\n\t\t\tre: /rgba?\\(\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*(?:,\\s*(\\d?(?:\\.\\d+)?)\\s*)?\\)/,\n\t\t\tparse: function( execResult ) {\n\t\t\t\treturn [\n\t\t\t\t\texecResult[ 1 ] * 2.55,\n\t\t\t\t\texecResult[ 2 ] * 2.55,\n\t\t\t\t\texecResult[ 3 ] * 2.55,\n\t\t\t\t\texecResult[ 4 ]\n\t\t\t\t];\n\t\t\t}\n\t\t}, {\n\n\t\t\t// this regex ignores A-F because it's compared against an already lowercased string\n\t\t\tre: /#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})?/,\n\t\t\tparse: function( execResult ) {\n\t\t\t\treturn [\n\t\t\t\t\tparseInt( execResult[ 1 ], 16 ),\n\t\t\t\t\tparseInt( execResult[ 2 ], 16 ),\n\t\t\t\t\tparseInt( execResult[ 3 ], 16 ),\n\t\t\t\t\texecResult[ 4 ] ?\n\t\t\t\t\t\t( parseInt( execResult[ 4 ], 16 ) / 255 ).toFixed( 2 ) :\n\t\t\t\t\t\t1\n\t\t\t\t];\n\t\t\t}\n\t\t}, {\n\n\t\t\t// this regex ignores A-F because it's compared against an already lowercased string\n\t\t\tre: /#([a-f0-9])([a-f0-9])([a-f0-9])([a-f0-9])?/,\n\t\t\tparse: function( execResult ) {\n\t\t\t\treturn [\n\t\t\t\t\tparseInt( execResult[ 1 ] + execResult[ 1 ], 16 ),\n\t\t\t\t\tparseInt( execResult[ 2 ] + execResult[ 2 ], 16 ),\n\t\t\t\t\tparseInt( execResult[ 3 ] + execResult[ 3 ], 16 ),\n\t\t\t\t\texecResult[ 4 ] ?\n\t\t\t\t\t\t( parseInt( execResult[ 4 ] + execResult[ 4 ], 16 ) / 255 )\n\t\t\t\t\t\t\t.toFixed( 2 ) :\n\t\t\t\t\t\t1\n\t\t\t\t];\n\t\t\t}\n\t\t}, {\n\t\t\tre: /hsla?\\(\\s*(\\d+(?:\\.\\d+)?)\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*(?:,\\s*(\\d?(?:\\.\\d+)?)\\s*)?\\)/,\n\t\t\tspace: \"hsla\",\n\t\t\tparse: function( execResult ) {\n\t\t\t\treturn [\n\t\t\t\t\texecResult[ 1 ],\n\t\t\t\t\texecResult[ 2 ] / 100,\n\t\t\t\t\texecResult[ 3 ] / 100,\n\t\t\t\t\texecResult[ 4 ]\n\t\t\t\t];\n\t\t\t}\n\t\t} ],\n\n\t// jQuery.Color( )\n\tcolor = jQuery.Color = function( color, green, blue, alpha ) {\n\t\treturn new jQuery.Color.fn.parse( color, green, blue, alpha );\n\t},\n\tspaces = {\n\t\trgba: {\n\t\t\tprops: {\n\t\t\t\tred: {\n\t\t\t\t\tidx: 0,\n\t\t\t\t\ttype: \"byte\"\n\t\t\t\t},\n\t\t\t\tgreen: {\n\t\t\t\t\tidx: 1,\n\t\t\t\t\ttype: \"byte\"\n\t\t\t\t},\n\t\t\t\tblue: {\n\t\t\t\t\tidx: 2,\n\t\t\t\t\ttype: \"byte\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\thsla: {\n\t\t\tprops: {\n\t\t\t\thue: {\n\t\t\t\t\tidx: 0,\n\t\t\t\t\ttype: \"degrees\"\n\t\t\t\t},\n\t\t\t\tsaturation: {\n\t\t\t\t\tidx: 1,\n\t\t\t\t\ttype: \"percent\"\n\t\t\t\t},\n\t\t\t\tlightness: {\n\t\t\t\t\tidx: 2,\n\t\t\t\t\ttype: \"percent\"\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tpropTypes = {\n\t\t\"byte\": {\n\t\t\tfloor: true,\n\t\t\tmax: 255\n\t\t},\n\t\t\"percent\": {\n\t\t\tmax: 1\n\t\t},\n\t\t\"degrees\": {\n\t\t\tmod: 360,\n\t\t\tfloor: true\n\t\t}\n\t},\n\tsupport = color.support = {},\n\n\t// element for support tests\n\tsupportElem = jQuery( \"

            \" )[ 0 ],\n\n\t// colors = jQuery.Color.names\n\tcolors,\n\n\t// local aliases of functions called often\n\teach = jQuery.each;\n\n// determine rgba support immediately\nsupportElem.style.cssText = \"background-color:rgba(1,1,1,.5)\";\nsupport.rgba = supportElem.style.backgroundColor.indexOf( \"rgba\" ) > -1;\n\n// define cache name and alpha properties\n// for rgba and hsla spaces\neach( spaces, function( spaceName, space ) {\n\tspace.cache = \"_\" + spaceName;\n\tspace.props.alpha = {\n\t\tidx: 3,\n\t\ttype: \"percent\",\n\t\tdef: 1\n\t};\n} );\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\n\tfunction( _i, name ) {\n\t\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n\t} );\n\nfunction getType( obj ) {\n\tif ( obj == null ) {\n\t\treturn obj + \"\";\n\t}\n\n\treturn typeof obj === \"object\" ?\n\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\ttypeof obj;\n}\n\nfunction clamp( value, prop, allowEmpty ) {\n\tvar type = propTypes[ prop.type ] || {};\n\n\tif ( value == null ) {\n\t\treturn ( allowEmpty || !prop.def ) ? null : prop.def;\n\t}\n\n\t// ~~ is an short way of doing floor for positive numbers\n\tvalue = type.floor ? ~~value : parseFloat( value );\n\n\t// IE will pass in empty strings as value for alpha,\n\t// which will hit this case\n\tif ( isNaN( value ) ) {\n\t\treturn prop.def;\n\t}\n\n\tif ( type.mod ) {\n\n\t\t// we add mod before modding to make sure that negatives values\n\t\t// get converted properly: -10 -> 350\n\t\treturn ( value + type.mod ) % type.mod;\n\t}\n\n\t// for now all property types without mod have min and max\n\treturn Math.min( type.max, Math.max( 0, value ) );\n}\n\nfunction stringParse( string ) {\n\tvar inst = color(),\n\t\trgba = inst._rgba = [];\n\n\tstring = string.toLowerCase();\n\n\teach( stringParsers, function( _i, parser ) {\n\t\tvar parsed,\n\t\t\tmatch = parser.re.exec( string ),\n\t\t\tvalues = match && parser.parse( match ),\n\t\t\tspaceName = parser.space || \"rgba\";\n\n\t\tif ( values ) {\n\t\t\tparsed = inst[ spaceName ]( values );\n\n\t\t\t// if this was an rgba parse the assignment might happen twice\n\t\t\t// oh well....\n\t\t\tinst[ spaces[ spaceName ].cache ] = parsed[ spaces[ spaceName ].cache ];\n\t\t\trgba = inst._rgba = parsed._rgba;\n\n\t\t\t// exit each( stringParsers ) here because we matched\n\t\t\treturn false;\n\t\t}\n\t} );\n\n\t// Found a stringParser that handled it\n\tif ( rgba.length ) {\n\n\t\t// if this came from a parsed string, force \"transparent\" when alpha is 0\n\t\t// chrome, (and maybe others) return \"transparent\" as rgba(0,0,0,0)\n\t\tif ( rgba.join() === \"0,0,0,0\" ) {\n\t\t\tjQuery.extend( rgba, colors.transparent );\n\t\t}\n\t\treturn inst;\n\t}\n\n\t// named colors\n\treturn colors[ string ];\n}\n\ncolor.fn = jQuery.extend( color.prototype, {\n\tparse: function( red, green, blue, alpha ) {\n\t\tif ( red === undefined ) {\n\t\t\tthis._rgba = [ null, null, null, null ];\n\t\t\treturn this;\n\t\t}\n\t\tif ( red.jquery || red.nodeType ) {\n\t\t\tred = jQuery( red ).css( green );\n\t\t\tgreen = undefined;\n\t\t}\n\n\t\tvar inst = this,\n\t\t\ttype = getType( red ),\n\t\t\trgba = this._rgba = [];\n\n\t\t// more than 1 argument specified - assume ( red, green, blue, alpha )\n\t\tif ( green !== undefined ) {\n\t\t\tred = [ red, green, blue, alpha ];\n\t\t\ttype = \"array\";\n\t\t}\n\n\t\tif ( type === \"string\" ) {\n\t\t\treturn this.parse( stringParse( red ) || colors._default );\n\t\t}\n\n\t\tif ( type === \"array\" ) {\n\t\t\teach( spaces.rgba.props, function( _key, prop ) {\n\t\t\t\trgba[ prop.idx ] = clamp( red[ prop.idx ], prop );\n\t\t\t} );\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( type === \"object\" ) {\n\t\t\tif ( red instanceof color ) {\n\t\t\t\teach( spaces, function( _spaceName, space ) {\n\t\t\t\t\tif ( red[ space.cache ] ) {\n\t\t\t\t\t\tinst[ space.cache ] = red[ space.cache ].slice();\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t} else {\n\t\t\t\teach( spaces, function( _spaceName, space ) {\n\t\t\t\t\tvar cache = space.cache;\n\t\t\t\t\teach( space.props, function( key, prop ) {\n\n\t\t\t\t\t\t// if the cache doesn't exist, and we know how to convert\n\t\t\t\t\t\tif ( !inst[ cache ] && space.to ) {\n\n\t\t\t\t\t\t\t// if the value was null, we don't need to copy it\n\t\t\t\t\t\t\t// if the key was alpha, we don't need to copy it either\n\t\t\t\t\t\t\tif ( key === \"alpha\" || red[ key ] == null ) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tinst[ cache ] = space.to( inst._rgba );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// this is the only case where we allow nulls for ALL properties.\n\t\t\t\t\t\t// call clamp with alwaysAllowEmpty\n\t\t\t\t\t\tinst[ cache ][ prop.idx ] = clamp( red[ key ], prop, true );\n\t\t\t\t\t} );\n\n\t\t\t\t\t// everything defined but alpha?\n\t\t\t\t\tif ( inst[ cache ] && jQuery.inArray( null, inst[ cache ].slice( 0, 3 ) ) < 0 ) {\n\n\t\t\t\t\t\t// use the default of 1\n\t\t\t\t\t\tif ( inst[ cache ][ 3 ] == null ) {\n\t\t\t\t\t\t\tinst[ cache ][ 3 ] = 1;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( space.from ) {\n\t\t\t\t\t\t\tinst._rgba = space.from( inst[ cache ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t},\n\tis: function( compare ) {\n\t\tvar is = color( compare ),\n\t\t\tsame = true,\n\t\t\tinst = this;\n\n\t\teach( spaces, function( _, space ) {\n\t\t\tvar localCache,\n\t\t\t\tisCache = is[ space.cache ];\n\t\t\tif ( isCache ) {\n\t\t\t\tlocalCache = inst[ space.cache ] || space.to && space.to( inst._rgba ) || [];\n\t\t\t\teach( space.props, function( _, prop ) {\n\t\t\t\t\tif ( isCache[ prop.idx ] != null ) {\n\t\t\t\t\t\tsame = ( isCache[ prop.idx ] === localCache[ prop.idx ] );\n\t\t\t\t\t\treturn same;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t}\n\t\t\treturn same;\n\t\t} );\n\t\treturn same;\n\t},\n\t_space: function() {\n\t\tvar used = [],\n\t\t\tinst = this;\n\t\teach( spaces, function( spaceName, space ) {\n\t\t\tif ( inst[ space.cache ] ) {\n\t\t\t\tused.push( spaceName );\n\t\t\t}\n\t\t} );\n\t\treturn used.pop();\n\t},\n\ttransition: function( other, distance ) {\n\t\tvar end = color( other ),\n\t\t\tspaceName = end._space(),\n\t\t\tspace = spaces[ spaceName ],\n\t\t\tstartColor = this.alpha() === 0 ? color( \"transparent\" ) : this,\n\t\t\tstart = startColor[ space.cache ] || space.to( startColor._rgba ),\n\t\t\tresult = start.slice();\n\n\t\tend = end[ space.cache ];\n\t\teach( space.props, function( _key, prop ) {\n\t\t\tvar index = prop.idx,\n\t\t\t\tstartValue = start[ index ],\n\t\t\t\tendValue = end[ index ],\n\t\t\t\ttype = propTypes[ prop.type ] || {};\n\n\t\t\t// if null, don't override start value\n\t\t\tif ( endValue === null ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// if null - use end\n\t\t\tif ( startValue === null ) {\n\t\t\t\tresult[ index ] = endValue;\n\t\t\t} else {\n\t\t\t\tif ( type.mod ) {\n\t\t\t\t\tif ( endValue - startValue > type.mod / 2 ) {\n\t\t\t\t\t\tstartValue += type.mod;\n\t\t\t\t\t} else if ( startValue - endValue > type.mod / 2 ) {\n\t\t\t\t\t\tstartValue -= type.mod;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tresult[ index ] = clamp( ( endValue - startValue ) * distance + startValue, prop );\n\t\t\t}\n\t\t} );\n\t\treturn this[ spaceName ]( result );\n\t},\n\tblend: function( opaque ) {\n\n\t\t// if we are already opaque - return ourself\n\t\tif ( this._rgba[ 3 ] === 1 ) {\n\t\t\treturn this;\n\t\t}\n\n\t\tvar rgb = this._rgba.slice(),\n\t\t\ta = rgb.pop(),\n\t\t\tblend = color( opaque )._rgba;\n\n\t\treturn color( jQuery.map( rgb, function( v, i ) {\n\t\t\treturn ( 1 - a ) * blend[ i ] + a * v;\n\t\t} ) );\n\t},\n\ttoRgbaString: function() {\n\t\tvar prefix = \"rgba(\",\n\t\t\trgba = jQuery.map( this._rgba, function( v, i ) {\n\t\t\t\tif ( v != null ) {\n\t\t\t\t\treturn v;\n\t\t\t\t}\n\t\t\t\treturn i > 2 ? 1 : 0;\n\t\t\t} );\n\n\t\tif ( rgba[ 3 ] === 1 ) {\n\t\t\trgba.pop();\n\t\t\tprefix = \"rgb(\";\n\t\t}\n\n\t\treturn prefix + rgba.join() + \")\";\n\t},\n\ttoHslaString: function() {\n\t\tvar prefix = \"hsla(\",\n\t\t\thsla = jQuery.map( this.hsla(), function( v, i ) {\n\t\t\t\tif ( v == null ) {\n\t\t\t\t\tv = i > 2 ? 1 : 0;\n\t\t\t\t}\n\n\t\t\t\t// catch 1 and 2\n\t\t\t\tif ( i && i < 3 ) {\n\t\t\t\t\tv = Math.round( v * 100 ) + \"%\";\n\t\t\t\t}\n\t\t\t\treturn v;\n\t\t\t} );\n\n\t\tif ( hsla[ 3 ] === 1 ) {\n\t\t\thsla.pop();\n\t\t\tprefix = \"hsl(\";\n\t\t}\n\t\treturn prefix + hsla.join() + \")\";\n\t},\n\ttoHexString: function( includeAlpha ) {\n\t\tvar rgba = this._rgba.slice(),\n\t\t\talpha = rgba.pop();\n\n\t\tif ( includeAlpha ) {\n\t\t\trgba.push( ~~( alpha * 255 ) );\n\t\t}\n\n\t\treturn \"#\" + jQuery.map( rgba, function( v ) {\n\n\t\t\t// default to 0 when nulls exist\n\t\t\tv = ( v || 0 ).toString( 16 );\n\t\t\treturn v.length === 1 ? \"0\" + v : v;\n\t\t} ).join( \"\" );\n\t},\n\ttoString: function() {\n\t\treturn this._rgba[ 3 ] === 0 ? \"transparent\" : this.toRgbaString();\n\t}\n} );\ncolor.fn.parse.prototype = color.fn;\n\n// hsla conversions adapted from:\n// https://code.google.com/p/maashaack/source/browse/packages/graphics/trunk/src/graphics/colors/HUE2RGB.as?r=5021\n\nfunction hue2rgb( p, q, h ) {\n\th = ( h + 1 ) % 1;\n\tif ( h * 6 < 1 ) {\n\t\treturn p + ( q - p ) * h * 6;\n\t}\n\tif ( h * 2 < 1 ) {\n\t\treturn q;\n\t}\n\tif ( h * 3 < 2 ) {\n\t\treturn p + ( q - p ) * ( ( 2 / 3 ) - h ) * 6;\n\t}\n\treturn p;\n}\n\nspaces.hsla.to = function( rgba ) {\n\tif ( rgba[ 0 ] == null || rgba[ 1 ] == null || rgba[ 2 ] == null ) {\n\t\treturn [ null, null, null, rgba[ 3 ] ];\n\t}\n\tvar r = rgba[ 0 ] / 255,\n\t\tg = rgba[ 1 ] / 255,\n\t\tb = rgba[ 2 ] / 255,\n\t\ta = rgba[ 3 ],\n\t\tmax = Math.max( r, g, b ),\n\t\tmin = Math.min( r, g, b ),\n\t\tdiff = max - min,\n\t\tadd = max + min,\n\t\tl = add * 0.5,\n\t\th, s;\n\n\tif ( min === max ) {\n\t\th = 0;\n\t} else if ( r === max ) {\n\t\th = ( 60 * ( g - b ) / diff ) + 360;\n\t} else if ( g === max ) {\n\t\th = ( 60 * ( b - r ) / diff ) + 120;\n\t} else {\n\t\th = ( 60 * ( r - g ) / diff ) + 240;\n\t}\n\n\t// chroma (diff) == 0 means greyscale which, by definition, saturation = 0%\n\t// otherwise, saturation is based on the ratio of chroma (diff) to lightness (add)\n\tif ( diff === 0 ) {\n\t\ts = 0;\n\t} else if ( l <= 0.5 ) {\n\t\ts = diff / add;\n\t} else {\n\t\ts = diff / ( 2 - add );\n\t}\n\treturn [ Math.round( h ) % 360, s, l, a == null ? 1 : a ];\n};\n\nspaces.hsla.from = function( hsla ) {\n\tif ( hsla[ 0 ] == null || hsla[ 1 ] == null || hsla[ 2 ] == null ) {\n\t\treturn [ null, null, null, hsla[ 3 ] ];\n\t}\n\tvar h = hsla[ 0 ] / 360,\n\t\ts = hsla[ 1 ],\n\t\tl = hsla[ 2 ],\n\t\ta = hsla[ 3 ],\n\t\tq = l <= 0.5 ? l * ( 1 + s ) : l + s - l * s,\n\t\tp = 2 * l - q;\n\n\treturn [\n\t\tMath.round( hue2rgb( p, q, h + ( 1 / 3 ) ) * 255 ),\n\t\tMath.round( hue2rgb( p, q, h ) * 255 ),\n\t\tMath.round( hue2rgb( p, q, h - ( 1 / 3 ) ) * 255 ),\n\t\ta\n\t];\n};\n\n\neach( spaces, function( spaceName, space ) {\n\tvar props = space.props,\n\t\tcache = space.cache,\n\t\tto = space.to,\n\t\tfrom = space.from;\n\n\t// makes rgba() and hsla()\n\tcolor.fn[ spaceName ] = function( value ) {\n\n\t\t// generate a cache for this space if it doesn't exist\n\t\tif ( to && !this[ cache ] ) {\n\t\t\tthis[ cache ] = to( this._rgba );\n\t\t}\n\t\tif ( value === undefined ) {\n\t\t\treturn this[ cache ].slice();\n\t\t}\n\n\t\tvar ret,\n\t\t\ttype = getType( value ),\n\t\t\tarr = ( type === \"array\" || type === \"object\" ) ? value : arguments,\n\t\t\tlocal = this[ cache ].slice();\n\n\t\teach( props, function( key, prop ) {\n\t\t\tvar val = arr[ type === \"object\" ? key : prop.idx ];\n\t\t\tif ( val == null ) {\n\t\t\t\tval = local[ prop.idx ];\n\t\t\t}\n\t\t\tlocal[ prop.idx ] = clamp( val, prop );\n\t\t} );\n\n\t\tif ( from ) {\n\t\t\tret = color( from( local ) );\n\t\t\tret[ cache ] = local;\n\t\t\treturn ret;\n\t\t} else {\n\t\t\treturn color( local );\n\t\t}\n\t};\n\n\t// makes red() green() blue() alpha() hue() saturation() lightness()\n\teach( props, function( key, prop ) {\n\n\t\t// alpha is included in more than one space\n\t\tif ( color.fn[ key ] ) {\n\t\t\treturn;\n\t\t}\n\t\tcolor.fn[ key ] = function( value ) {\n\t\t\tvar local, cur, match, fn,\n\t\t\t\tvtype = getType( value );\n\n\t\t\tif ( key === \"alpha\" ) {\n\t\t\t\tfn = this._hsla ? \"hsla\" : \"rgba\";\n\t\t\t} else {\n\t\t\t\tfn = spaceName;\n\t\t\t}\n\t\t\tlocal = this[ fn ]();\n\t\t\tcur = local[ prop.idx ];\n\n\t\t\tif ( vtype === \"undefined\" ) {\n\t\t\t\treturn cur;\n\t\t\t}\n\n\t\t\tif ( vtype === \"function\" ) {\n\t\t\t\tvalue = value.call( this, cur );\n\t\t\t\tvtype = getType( value );\n\t\t\t}\n\t\t\tif ( value == null && prop.empty ) {\n\t\t\t\treturn this;\n\t\t\t}\n\t\t\tif ( vtype === \"string\" ) {\n\t\t\t\tmatch = rplusequals.exec( value );\n\t\t\t\tif ( match ) {\n\t\t\t\t\tvalue = cur + parseFloat( match[ 2 ] ) * ( match[ 1 ] === \"+\" ? 1 : -1 );\n\t\t\t\t}\n\t\t\t}\n\t\t\tlocal[ prop.idx ] = value;\n\t\t\treturn this[ fn ]( local );\n\t\t};\n\t} );\n} );\n\n// add cssHook and .fx.step function for each named hook.\n// accept a space separated string of properties\ncolor.hook = function( hook ) {\n\tvar hooks = hook.split( \" \" );\n\teach( hooks, function( _i, hook ) {\n\t\tjQuery.cssHooks[ hook ] = {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar parsed, curElem,\n\t\t\t\t\tbackgroundColor = \"\";\n\n\t\t\t\tif ( value !== \"transparent\" && ( getType( value ) !== \"string\" || ( parsed = stringParse( value ) ) ) ) {\n\t\t\t\t\tvalue = color( parsed || value );\n\t\t\t\t\tif ( !support.rgba && value._rgba[ 3 ] !== 1 ) {\n\t\t\t\t\t\tcurElem = hook === \"backgroundColor\" ? elem.parentNode : elem;\n\t\t\t\t\t\twhile (\n\t\t\t\t\t\t\t( backgroundColor === \"\" || backgroundColor === \"transparent\" ) &&\n\t\t\t\t\t\t\tcurElem && curElem.style\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tbackgroundColor = jQuery.css( curElem, \"backgroundColor\" );\n\t\t\t\t\t\t\t\tcurElem = curElem.parentNode;\n\t\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvalue = value.blend( backgroundColor && backgroundColor !== \"transparent\" ?\n\t\t\t\t\t\t\tbackgroundColor :\n\t\t\t\t\t\t\t\"_default\" );\n\t\t\t\t\t}\n\n\t\t\t\t\tvalue = value.toRgbaString();\n\t\t\t\t}\n\t\t\t\ttry {\n\t\t\t\t\telem.style[ hook ] = value;\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// wrapped to prevent IE from throwing errors on \"invalid\" values like 'auto' or 'inherit'\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\tjQuery.fx.step[ hook ] = function( fx ) {\n\t\t\tif ( !fx.colorInit ) {\n\t\t\t\tfx.start = color( fx.elem, hook );\n\t\t\t\tfx.end = color( fx.end );\n\t\t\t\tfx.colorInit = true;\n\t\t\t}\n\t\t\tjQuery.cssHooks[ hook ].set( fx.elem, fx.start.transition( fx.end, fx.pos ) );\n\t\t};\n\t} );\n\n};\n\ncolor.hook( stepHooks );\n\njQuery.cssHooks.borderColor = {\n\texpand: function( value ) {\n\t\tvar expanded = {};\n\n\t\teach( [ \"Top\", \"Right\", \"Bottom\", \"Left\" ], function( _i, part ) {\n\t\t\texpanded[ \"border\" + part + \"Color\" ] = value;\n\t\t} );\n\t\treturn expanded;\n\t}\n};\n\n// Basic color names only.\n// Usage of any of the other color names requires adding yourself or including\n// jquery.color.svg-names.js.\ncolors = jQuery.Color.names = {\n\n\t// 4.1. Basic color keywords\n\taqua: \"#00ffff\",\n\tblack: \"#000000\",\n\tblue: \"#0000ff\",\n\tfuchsia: \"#ff00ff\",\n\tgray: \"#808080\",\n\tgreen: \"#008000\",\n\tlime: \"#00ff00\",\n\tmaroon: \"#800000\",\n\tnavy: \"#000080\",\n\tolive: \"#808000\",\n\tpurple: \"#800080\",\n\tred: \"#ff0000\",\n\tsilver: \"#c0c0c0\",\n\tteal: \"#008080\",\n\twhite: \"#ffffff\",\n\tyellow: \"#ffff00\",\n\n\t// 4.2.3. \"transparent\" color keyword\n\ttransparent: [ null, null, null, 0 ],\n\n\t_default: \"#ffffff\"\n};\n\n\n/*!\n * jQuery UI Effects 1.13.3\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n//>>label: Effects Core\n//>>group: Effects\n/* eslint-disable max-len */\n//>>description: Extends the internal jQuery effects. Includes morphing and easing. Required by all other effects.\n/* eslint-enable max-len */\n//>>docs: https://api.jqueryui.com/category/effects-core/\n//>>demos: https://jqueryui.com/effect/\n\n\nvar dataSpace = \"ui-effects-\",\n\tdataSpaceStyle = \"ui-effects-style\",\n\tdataSpaceAnimated = \"ui-effects-animated\";\n\n$.effects = {\n\teffect: {}\n};\n\n/******************************************************************************/\n/****************************** CLASS ANIMATIONS ******************************/\n/******************************************************************************/\n( function() {\n\nvar classAnimationActions = [ \"add\", \"remove\", \"toggle\" ],\n\tshorthandStyles = {\n\t\tborder: 1,\n\t\tborderBottom: 1,\n\t\tborderColor: 1,\n\t\tborderLeft: 1,\n\t\tborderRight: 1,\n\t\tborderTop: 1,\n\t\tborderWidth: 1,\n\t\tmargin: 1,\n\t\tpadding: 1\n\t};\n\n$.each(\n\t[ \"borderLeftStyle\", \"borderRightStyle\", \"borderBottomStyle\", \"borderTopStyle\" ],\n\tfunction( _, prop ) {\n\t\t$.fx.step[ prop ] = function( fx ) {\n\t\t\tif ( fx.end !== \"none\" && !fx.setAttr || fx.pos === 1 && !fx.setAttr ) {\n\t\t\t\tjQuery.style( fx.elem, prop, fx.end );\n\t\t\t\tfx.setAttr = true;\n\t\t\t}\n\t\t};\n\t}\n);\n\nfunction camelCase( string ) {\n\treturn string.replace( /-([\\da-z])/gi, function( all, letter ) {\n\t\treturn letter.toUpperCase();\n\t} );\n}\n\nfunction getElementStyles( elem ) {\n\tvar key, len,\n\t\tstyle = elem.ownerDocument.defaultView ?\n\t\t\telem.ownerDocument.defaultView.getComputedStyle( elem, null ) :\n\t\t\telem.currentStyle,\n\t\tstyles = {};\n\n\tif ( style && style.length && style[ 0 ] && style[ style[ 0 ] ] ) {\n\t\tlen = style.length;\n\t\twhile ( len-- ) {\n\t\t\tkey = style[ len ];\n\t\t\tif ( typeof style[ key ] === \"string\" ) {\n\t\t\t\tstyles[ camelCase( key ) ] = style[ key ];\n\t\t\t}\n\t\t}\n\n\t// Support: Opera, IE <9\n\t} else {\n\t\tfor ( key in style ) {\n\t\t\tif ( typeof style[ key ] === \"string\" ) {\n\t\t\t\tstyles[ key ] = style[ key ];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn styles;\n}\n\nfunction styleDifference( oldStyle, newStyle ) {\n\tvar diff = {},\n\t\tname, value;\n\n\tfor ( name in newStyle ) {\n\t\tvalue = newStyle[ name ];\n\t\tif ( oldStyle[ name ] !== value ) {\n\t\t\tif ( !shorthandStyles[ name ] ) {\n\t\t\t\tif ( $.fx.step[ name ] || !isNaN( parseFloat( value ) ) ) {\n\t\t\t\t\tdiff[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn diff;\n}\n\n// Support: jQuery <1.8\nif ( !$.fn.addBack ) {\n\t$.fn.addBack = function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t};\n}\n\n$.effects.animateClass = function( value, duration, easing, callback ) {\n\tvar o = $.speed( duration, easing, callback );\n\n\treturn this.queue( function() {\n\t\tvar animated = $( this ),\n\t\t\tbaseClass = animated.attr( \"class\" ) || \"\",\n\t\t\tapplyClassChange,\n\t\t\tallAnimations = o.children ? animated.find( \"*\" ).addBack() : animated;\n\n\t\t// Map the animated objects to store the original styles.\n\t\tallAnimations = allAnimations.map( function() {\n\t\t\tvar el = $( this );\n\t\t\treturn {\n\t\t\t\tel: el,\n\t\t\t\tstart: getElementStyles( this )\n\t\t\t};\n\t\t} );\n\n\t\t// Apply class change\n\t\tapplyClassChange = function() {\n\t\t\t$.each( classAnimationActions, function( i, action ) {\n\t\t\t\tif ( value[ action ] ) {\n\t\t\t\t\tanimated[ action + \"Class\" ]( value[ action ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t};\n\t\tapplyClassChange();\n\n\t\t// Map all animated objects again - calculate new styles and diff\n\t\tallAnimations = allAnimations.map( function() {\n\t\t\tthis.end = getElementStyles( this.el[ 0 ] );\n\t\t\tthis.diff = styleDifference( this.start, this.end );\n\t\t\treturn this;\n\t\t} );\n\n\t\t// Apply original class\n\t\tanimated.attr( \"class\", baseClass );\n\n\t\t// Map all animated objects again - this time collecting a promise\n\t\tallAnimations = allAnimations.map( function() {\n\t\t\tvar styleInfo = this,\n\t\t\t\tdfd = $.Deferred(),\n\t\t\t\topts = $.extend( {}, o, {\n\t\t\t\t\tqueue: false,\n\t\t\t\t\tcomplete: function() {\n\t\t\t\t\t\tdfd.resolve( styleInfo );\n\t\t\t\t\t}\n\t\t\t\t} );\n\n\t\t\tthis.el.animate( this.diff, opts );\n\t\t\treturn dfd.promise();\n\t\t} );\n\n\t\t// Once all animations have completed:\n\t\t$.when.apply( $, allAnimations.get() ).done( function() {\n\n\t\t\t// Set the final class\n\t\t\tapplyClassChange();\n\n\t\t\t// For each animated element,\n\t\t\t// clear all css properties that were animated\n\t\t\t$.each( arguments, function() {\n\t\t\t\tvar el = this.el;\n\t\t\t\t$.each( this.diff, function( key ) {\n\t\t\t\t\tel.css( key, \"\" );\n\t\t\t\t} );\n\t\t\t} );\n\n\t\t\t// This is guarnteed to be there if you use jQuery.speed()\n\t\t\t// it also handles dequeuing the next anim...\n\t\t\to.complete.call( animated[ 0 ] );\n\t\t} );\n\t} );\n};\n\n$.fn.extend( {\n\taddClass: ( function( orig ) {\n\t\treturn function( classNames, speed, easing, callback ) {\n\t\t\treturn speed ?\n\t\t\t\t$.effects.animateClass.call( this,\n\t\t\t\t\t{ add: classNames }, speed, easing, callback ) :\n\t\t\t\torig.apply( this, arguments );\n\t\t};\n\t} )( $.fn.addClass ),\n\n\tremoveClass: ( function( orig ) {\n\t\treturn function( classNames, speed, easing, callback ) {\n\t\t\treturn arguments.length > 1 ?\n\t\t\t\t$.effects.animateClass.call( this,\n\t\t\t\t\t{ remove: classNames }, speed, easing, callback ) :\n\t\t\t\torig.apply( this, arguments );\n\t\t};\n\t} )( $.fn.removeClass ),\n\n\ttoggleClass: ( function( orig ) {\n\t\treturn function( classNames, force, speed, easing, callback ) {\n\t\t\tif ( typeof force === \"boolean\" || force === undefined ) {\n\t\t\t\tif ( !speed ) {\n\n\t\t\t\t\t// Without speed parameter\n\t\t\t\t\treturn orig.apply( this, arguments );\n\t\t\t\t} else {\n\t\t\t\t\treturn $.effects.animateClass.call( this,\n\t\t\t\t\t\t( force ? { add: classNames } : { remove: classNames } ),\n\t\t\t\t\t\tspeed, easing, callback );\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Without force parameter\n\t\t\t\treturn $.effects.animateClass.call( this,\n\t\t\t\t\t{ toggle: classNames }, force, speed, easing );\n\t\t\t}\n\t\t};\n\t} )( $.fn.toggleClass ),\n\n\tswitchClass: function( remove, add, speed, easing, callback ) {\n\t\treturn $.effects.animateClass.call( this, {\n\t\t\tadd: add,\n\t\t\tremove: remove\n\t\t}, speed, easing, callback );\n\t}\n} );\n\n} )();\n\n/******************************************************************************/\n/*********************************** EFFECTS **********************************/\n/******************************************************************************/\n\n( function() {\n\nif ( $.expr && $.expr.pseudos && $.expr.pseudos.animated ) {\n\t$.expr.pseudos.animated = ( function( orig ) {\n\t\treturn function( elem ) {\n\t\t\treturn !!$( elem ).data( dataSpaceAnimated ) || orig( elem );\n\t\t};\n\t} )( $.expr.pseudos.animated );\n}\n\nif ( $.uiBackCompat !== false ) {\n\t$.extend( $.effects, {\n\n\t\t// Saves a set of properties in a data storage\n\t\tsave: function( element, set ) {\n\t\t\tvar i = 0, length = set.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( set[ i ] !== null ) {\n\t\t\t\t\telement.data( dataSpace + set[ i ], element[ 0 ].style[ set[ i ] ] );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Restores a set of previously saved properties from a data storage\n\t\trestore: function( element, set ) {\n\t\t\tvar val, i = 0, length = set.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( set[ i ] !== null ) {\n\t\t\t\t\tval = element.data( dataSpace + set[ i ] );\n\t\t\t\t\telement.css( set[ i ], val );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tsetMode: function( el, mode ) {\n\t\t\tif ( mode === \"toggle\" ) {\n\t\t\t\tmode = el.is( \":hidden\" ) ? \"show\" : \"hide\";\n\t\t\t}\n\t\t\treturn mode;\n\t\t},\n\n\t\t// Wraps the element around a wrapper that copies position properties\n\t\tcreateWrapper: function( element ) {\n\n\t\t\t// If the element is already wrapped, return it\n\t\t\tif ( element.parent().is( \".ui-effects-wrapper\" ) ) {\n\t\t\t\treturn element.parent();\n\t\t\t}\n\n\t\t\t// Wrap the element\n\t\t\tvar props = {\n\t\t\t\t\twidth: element.outerWidth( true ),\n\t\t\t\t\theight: element.outerHeight( true ),\n\t\t\t\t\t\"float\": element.css( \"float\" )\n\t\t\t\t},\n\t\t\t\twrapper = $( \"

            \" )\n\t\t\t\t\t.addClass( \"ui-effects-wrapper\" )\n\t\t\t\t\t.css( {\n\t\t\t\t\t\tfontSize: \"100%\",\n\t\t\t\t\t\tbackground: \"transparent\",\n\t\t\t\t\t\tborder: \"none\",\n\t\t\t\t\t\tmargin: 0,\n\t\t\t\t\t\tpadding: 0\n\t\t\t\t\t} ),\n\n\t\t\t\t// Store the size in case width/height are defined in % - Fixes #5245\n\t\t\t\tsize = {\n\t\t\t\t\twidth: element.width(),\n\t\t\t\t\theight: element.height()\n\t\t\t\t},\n\t\t\t\tactive = document.activeElement;\n\n\t\t\t// Support: Firefox\n\t\t\t// Firefox incorrectly exposes anonymous content\n\t\t\t// https://bugzilla.mozilla.org/show_bug.cgi?id=561664\n\t\t\ttry {\n\t\t\t\t// eslint-disable-next-line no-unused-expressions\n\t\t\t\tactive.id;\n\t\t\t} catch ( e ) {\n\t\t\t\tactive = document.body;\n\t\t\t}\n\n\t\t\telement.wrap( wrapper );\n\n\t\t\t// Fixes #7595 - Elements lose focus when wrapped.\n\t\t\tif ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) {\n\t\t\t\t$( active ).trigger( \"focus\" );\n\t\t\t}\n\n\t\t\t// Hotfix for jQuery 1.4 since some change in wrap() seems to actually\n\t\t\t// lose the reference to the wrapped element\n\t\t\twrapper = element.parent();\n\n\t\t\t// Transfer positioning properties to the wrapper\n\t\t\tif ( element.css( \"position\" ) === \"static\" ) {\n\t\t\t\twrapper.css( { position: \"relative\" } );\n\t\t\t\telement.css( { position: \"relative\" } );\n\t\t\t} else {\n\t\t\t\t$.extend( props, {\n\t\t\t\t\tposition: element.css( \"position\" ),\n\t\t\t\t\tzIndex: element.css( \"z-index\" )\n\t\t\t\t} );\n\t\t\t\t$.each( [ \"top\", \"left\", \"bottom\", \"right\" ], function( i, pos ) {\n\t\t\t\t\tprops[ pos ] = element.css( pos );\n\t\t\t\t\tif ( isNaN( parseInt( props[ pos ], 10 ) ) ) {\n\t\t\t\t\t\tprops[ pos ] = \"auto\";\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\telement.css( {\n\t\t\t\t\tposition: \"relative\",\n\t\t\t\t\ttop: 0,\n\t\t\t\t\tleft: 0,\n\t\t\t\t\tright: \"auto\",\n\t\t\t\t\tbottom: \"auto\"\n\t\t\t\t} );\n\t\t\t}\n\t\t\telement.css( size );\n\n\t\t\treturn wrapper.css( props ).show();\n\t\t},\n\n\t\tremoveWrapper: function( element ) {\n\t\t\tvar active = document.activeElement;\n\n\t\t\tif ( element.parent().is( \".ui-effects-wrapper\" ) ) {\n\t\t\t\telement.parent().replaceWith( element );\n\n\t\t\t\t// Fixes #7595 - Elements lose focus when wrapped.\n\t\t\t\tif ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) {\n\t\t\t\t\t$( active ).trigger( \"focus\" );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn element;\n\t\t}\n\t} );\n}\n\n$.extend( $.effects, {\n\tversion: \"1.13.3\",\n\n\tdefine: function( name, mode, effect ) {\n\t\tif ( !effect ) {\n\t\t\teffect = mode;\n\t\t\tmode = \"effect\";\n\t\t}\n\n\t\t$.effects.effect[ name ] = effect;\n\t\t$.effects.effect[ name ].mode = mode;\n\n\t\treturn effect;\n\t},\n\n\tscaledDimensions: function( element, percent, direction ) {\n\t\tif ( percent === 0 ) {\n\t\t\treturn {\n\t\t\t\theight: 0,\n\t\t\t\twidth: 0,\n\t\t\t\touterHeight: 0,\n\t\t\t\touterWidth: 0\n\t\t\t};\n\t\t}\n\n\t\tvar x = direction !== \"horizontal\" ? ( ( percent || 100 ) / 100 ) : 1,\n\t\t\ty = direction !== \"vertical\" ? ( ( percent || 100 ) / 100 ) : 1;\n\n\t\treturn {\n\t\t\theight: element.height() * y,\n\t\t\twidth: element.width() * x,\n\t\t\touterHeight: element.outerHeight() * y,\n\t\t\touterWidth: element.outerWidth() * x\n\t\t};\n\n\t},\n\n\tclipToBox: function( animation ) {\n\t\treturn {\n\t\t\twidth: animation.clip.right - animation.clip.left,\n\t\t\theight: animation.clip.bottom - animation.clip.top,\n\t\t\tleft: animation.clip.left,\n\t\t\ttop: animation.clip.top\n\t\t};\n\t},\n\n\t// Injects recently queued functions to be first in line (after \"inprogress\")\n\tunshift: function( element, queueLength, count ) {\n\t\tvar queue = element.queue();\n\n\t\tif ( queueLength > 1 ) {\n\t\t\tqueue.splice.apply( queue,\n\t\t\t\t[ 1, 0 ].concat( queue.splice( queueLength, count ) ) );\n\t\t}\n\t\telement.dequeue();\n\t},\n\n\tsaveStyle: function( element ) {\n\t\telement.data( dataSpaceStyle, element[ 0 ].style.cssText );\n\t},\n\n\trestoreStyle: function( element ) {\n\t\telement[ 0 ].style.cssText = element.data( dataSpaceStyle ) || \"\";\n\t\telement.removeData( dataSpaceStyle );\n\t},\n\n\tmode: function( element, mode ) {\n\t\tvar hidden = element.is( \":hidden\" );\n\n\t\tif ( mode === \"toggle\" ) {\n\t\t\tmode = hidden ? \"show\" : \"hide\";\n\t\t}\n\t\tif ( hidden ? mode === \"hide\" : mode === \"show\" ) {\n\t\t\tmode = \"none\";\n\t\t}\n\t\treturn mode;\n\t},\n\n\t// Translates a [top,left] array into a baseline value\n\tgetBaseline: function( origin, original ) {\n\t\tvar y, x;\n\n\t\tswitch ( origin[ 0 ] ) {\n\t\tcase \"top\":\n\t\t\ty = 0;\n\t\t\tbreak;\n\t\tcase \"middle\":\n\t\t\ty = 0.5;\n\t\t\tbreak;\n\t\tcase \"bottom\":\n\t\t\ty = 1;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\ty = origin[ 0 ] / original.height;\n\t\t}\n\n\t\tswitch ( origin[ 1 ] ) {\n\t\tcase \"left\":\n\t\t\tx = 0;\n\t\t\tbreak;\n\t\tcase \"center\":\n\t\t\tx = 0.5;\n\t\t\tbreak;\n\t\tcase \"right\":\n\t\t\tx = 1;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tx = origin[ 1 ] / original.width;\n\t\t}\n\n\t\treturn {\n\t\t\tx: x,\n\t\t\ty: y\n\t\t};\n\t},\n\n\t// Creates a placeholder element so that the original element can be made absolute\n\tcreatePlaceholder: function( element ) {\n\t\tvar placeholder,\n\t\t\tcssPosition = element.css( \"position\" ),\n\t\t\tposition = element.position();\n\n\t\t// Lock in margins first to account for form elements, which\n\t\t// will change margin if you explicitly set height\n\t\t// see: https://jsfiddle.net/JZSMt/3/ https://bugs.webkit.org/show_bug.cgi?id=107380\n\t\t// Support: Safari\n\t\telement.css( {\n\t\t\tmarginTop: element.css( \"marginTop\" ),\n\t\t\tmarginBottom: element.css( \"marginBottom\" ),\n\t\t\tmarginLeft: element.css( \"marginLeft\" ),\n\t\t\tmarginRight: element.css( \"marginRight\" )\n\t\t} )\n\t\t.outerWidth( element.outerWidth() )\n\t\t.outerHeight( element.outerHeight() );\n\n\t\tif ( /^(static|relative)/.test( cssPosition ) ) {\n\t\t\tcssPosition = \"absolute\";\n\n\t\t\tplaceholder = $( \"<\" + element[ 0 ].nodeName + \">\" ).insertAfter( element ).css( {\n\n\t\t\t\t// Convert inline to inline block to account for inline elements\n\t\t\t\t// that turn to inline block based on content (like img)\n\t\t\t\tdisplay: /^(inline|ruby)/.test( element.css( \"display\" ) ) ?\n\t\t\t\t\t\"inline-block\" :\n\t\t\t\t\t\"block\",\n\t\t\t\tvisibility: \"hidden\",\n\n\t\t\t\t// Margins need to be set to account for margin collapse\n\t\t\t\tmarginTop: element.css( \"marginTop\" ),\n\t\t\t\tmarginBottom: element.css( \"marginBottom\" ),\n\t\t\t\tmarginLeft: element.css( \"marginLeft\" ),\n\t\t\t\tmarginRight: element.css( \"marginRight\" ),\n\t\t\t\t\"float\": element.css( \"float\" )\n\t\t\t} )\n\t\t\t.outerWidth( element.outerWidth() )\n\t\t\t.outerHeight( element.outerHeight() )\n\t\t\t.addClass( \"ui-effects-placeholder\" );\n\n\t\t\telement.data( dataSpace + \"placeholder\", placeholder );\n\t\t}\n\n\t\telement.css( {\n\t\t\tposition: cssPosition,\n\t\t\tleft: position.left,\n\t\t\ttop: position.top\n\t\t} );\n\n\t\treturn placeholder;\n\t},\n\n\tremovePlaceholder: function( element ) {\n\t\tvar dataKey = dataSpace + \"placeholder\",\n\t\t\t\tplaceholder = element.data( dataKey );\n\n\t\tif ( placeholder ) {\n\t\t\tplaceholder.remove();\n\t\t\telement.removeData( dataKey );\n\t\t}\n\t},\n\n\t// Removes a placeholder if it exists and restores\n\t// properties that were modified during placeholder creation\n\tcleanUp: function( element ) {\n\t\t$.effects.restoreStyle( element );\n\t\t$.effects.removePlaceholder( element );\n\t},\n\n\tsetTransition: function( element, list, factor, value ) {\n\t\tvalue = value || {};\n\t\t$.each( list, function( i, x ) {\n\t\t\tvar unit = element.cssUnit( x );\n\t\t\tif ( unit[ 0 ] > 0 ) {\n\t\t\t\tvalue[ x ] = unit[ 0 ] * factor + unit[ 1 ];\n\t\t\t}\n\t\t} );\n\t\treturn value;\n\t}\n} );\n\n// Return an effect options object for the given parameters:\nfunction _normalizeArguments( effect, options, speed, callback ) {\n\n\t// Allow passing all options as the first parameter\n\tif ( $.isPlainObject( effect ) ) {\n\t\toptions = effect;\n\t\teffect = effect.effect;\n\t}\n\n\t// Convert to an object\n\teffect = { effect: effect };\n\n\t// Catch (effect, null, ...)\n\tif ( options == null ) {\n\t\toptions = {};\n\t}\n\n\t// Catch (effect, callback)\n\tif ( typeof options === \"function\" ) {\n\t\tcallback = options;\n\t\tspeed = null;\n\t\toptions = {};\n\t}\n\n\t// Catch (effect, speed, ?)\n\tif ( typeof options === \"number\" || $.fx.speeds[ options ] ) {\n\t\tcallback = speed;\n\t\tspeed = options;\n\t\toptions = {};\n\t}\n\n\t// Catch (effect, options, callback)\n\tif ( typeof speed === \"function\" ) {\n\t\tcallback = speed;\n\t\tspeed = null;\n\t}\n\n\t// Add options to effect\n\tif ( options ) {\n\t\t$.extend( effect, options );\n\t}\n\n\tspeed = speed || options.duration;\n\teffect.duration = $.fx.off ? 0 :\n\t\ttypeof speed === \"number\" ? speed :\n\t\tspeed in $.fx.speeds ? $.fx.speeds[ speed ] :\n\t\t$.fx.speeds._default;\n\n\teffect.complete = callback || options.complete;\n\n\treturn effect;\n}\n\nfunction standardAnimationOption( option ) {\n\n\t// Valid standard speeds (nothing, number, named speed)\n\tif ( !option || typeof option === \"number\" || $.fx.speeds[ option ] ) {\n\t\treturn true;\n\t}\n\n\t// Invalid strings - treat as \"normal\" speed\n\tif ( typeof option === \"string\" && !$.effects.effect[ option ] ) {\n\t\treturn true;\n\t}\n\n\t// Complete callback\n\tif ( typeof option === \"function\" ) {\n\t\treturn true;\n\t}\n\n\t// Options hash (but not naming an effect)\n\tif ( typeof option === \"object\" && !option.effect ) {\n\t\treturn true;\n\t}\n\n\t// Didn't match any standard API\n\treturn false;\n}\n\n$.fn.extend( {\n\teffect: function( /* effect, options, speed, callback */ ) {\n\t\tvar args = _normalizeArguments.apply( this, arguments ),\n\t\t\teffectMethod = $.effects.effect[ args.effect ],\n\t\t\tdefaultMode = effectMethod.mode,\n\t\t\tqueue = args.queue,\n\t\t\tqueueName = queue || \"fx\",\n\t\t\tcomplete = args.complete,\n\t\t\tmode = args.mode,\n\t\t\tmodes = [],\n\t\t\tprefilter = function( next ) {\n\t\t\t\tvar el = $( this ),\n\t\t\t\t\tnormalizedMode = $.effects.mode( el, mode ) || defaultMode;\n\n\t\t\t\t// Sentinel for duck-punching the :animated pseudo-selector\n\t\t\t\tel.data( dataSpaceAnimated, true );\n\n\t\t\t\t// Save effect mode for later use,\n\t\t\t\t// we can't just call $.effects.mode again later,\n\t\t\t\t// as the .show() below destroys the initial state\n\t\t\t\tmodes.push( normalizedMode );\n\n\t\t\t\t// See $.uiBackCompat inside of run() for removal of defaultMode in 1.14\n\t\t\t\tif ( defaultMode && ( normalizedMode === \"show\" ||\n\t\t\t\t\t\t( normalizedMode === defaultMode && normalizedMode === \"hide\" ) ) ) {\n\t\t\t\t\tel.show();\n\t\t\t\t}\n\n\t\t\t\tif ( !defaultMode || normalizedMode !== \"none\" ) {\n\t\t\t\t\t$.effects.saveStyle( el );\n\t\t\t\t}\n\n\t\t\t\tif ( typeof next === \"function\" ) {\n\t\t\t\t\tnext();\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( $.fx.off || !effectMethod ) {\n\n\t\t\t// Delegate to the original method (e.g., .show()) if possible\n\t\t\tif ( mode ) {\n\t\t\t\treturn this[ mode ]( args.duration, complete );\n\t\t\t} else {\n\t\t\t\treturn this.each( function() {\n\t\t\t\t\tif ( complete ) {\n\t\t\t\t\t\tcomplete.call( this );\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\n\t\tfunction run( next ) {\n\t\t\tvar elem = $( this );\n\n\t\t\tfunction cleanup() {\n\t\t\t\telem.removeData( dataSpaceAnimated );\n\n\t\t\t\t$.effects.cleanUp( elem );\n\n\t\t\t\tif ( args.mode === \"hide\" ) {\n\t\t\t\t\telem.hide();\n\t\t\t\t}\n\n\t\t\t\tdone();\n\t\t\t}\n\n\t\t\tfunction done() {\n\t\t\t\tif ( typeof complete === \"function\" ) {\n\t\t\t\t\tcomplete.call( elem[ 0 ] );\n\t\t\t\t}\n\n\t\t\t\tif ( typeof next === \"function\" ) {\n\t\t\t\t\tnext();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override mode option on a per element basis,\n\t\t\t// as toggle can be either show or hide depending on element state\n\t\t\targs.mode = modes.shift();\n\n\t\t\tif ( $.uiBackCompat !== false && !defaultMode ) {\n\t\t\t\tif ( elem.is( \":hidden\" ) ? mode === \"hide\" : mode === \"show\" ) {\n\n\t\t\t\t\t// Call the core method to track \"olddisplay\" properly\n\t\t\t\t\telem[ mode ]();\n\t\t\t\t\tdone();\n\t\t\t\t} else {\n\t\t\t\t\teffectMethod.call( elem[ 0 ], args, done );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ( args.mode === \"none\" ) {\n\n\t\t\t\t\t// Call the core method to track \"olddisplay\" properly\n\t\t\t\t\telem[ mode ]();\n\t\t\t\t\tdone();\n\t\t\t\t} else {\n\t\t\t\t\teffectMethod.call( elem[ 0 ], args, cleanup );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Run prefilter on all elements first to ensure that\n\t\t// any showing or hiding happens before placeholder creation,\n\t\t// which ensures that any layout changes are correctly captured.\n\t\treturn queue === false ?\n\t\t\tthis.each( prefilter ).each( run ) :\n\t\t\tthis.queue( queueName, prefilter ).queue( queueName, run );\n\t},\n\n\tshow: ( function( orig ) {\n\t\treturn function( option ) {\n\t\t\tif ( standardAnimationOption( option ) ) {\n\t\t\t\treturn orig.apply( this, arguments );\n\t\t\t} else {\n\t\t\t\tvar args = _normalizeArguments.apply( this, arguments );\n\t\t\t\targs.mode = \"show\";\n\t\t\t\treturn this.effect.call( this, args );\n\t\t\t}\n\t\t};\n\t} )( $.fn.show ),\n\n\thide: ( function( orig ) {\n\t\treturn function( option ) {\n\t\t\tif ( standardAnimationOption( option ) ) {\n\t\t\t\treturn orig.apply( this, arguments );\n\t\t\t} else {\n\t\t\t\tvar args = _normalizeArguments.apply( this, arguments );\n\t\t\t\targs.mode = \"hide\";\n\t\t\t\treturn this.effect.call( this, args );\n\t\t\t}\n\t\t};\n\t} )( $.fn.hide ),\n\n\ttoggle: ( function( orig ) {\n\t\treturn function( option ) {\n\t\t\tif ( standardAnimationOption( option ) || typeof option === \"boolean\" ) {\n\t\t\t\treturn orig.apply( this, arguments );\n\t\t\t} else {\n\t\t\t\tvar args = _normalizeArguments.apply( this, arguments );\n\t\t\t\targs.mode = \"toggle\";\n\t\t\t\treturn this.effect.call( this, args );\n\t\t\t}\n\t\t};\n\t} )( $.fn.toggle ),\n\n\tcssUnit: function( key ) {\n\t\tvar style = this.css( key ),\n\t\t\tval = [];\n\n\t\t$.each( [ \"em\", \"px\", \"%\", \"pt\" ], function( i, unit ) {\n\t\t\tif ( style.indexOf( unit ) > 0 ) {\n\t\t\t\tval = [ parseFloat( style ), unit ];\n\t\t\t}\n\t\t} );\n\t\treturn val;\n\t},\n\n\tcssClip: function( clipObj ) {\n\t\tif ( clipObj ) {\n\t\t\treturn this.css( \"clip\", \"rect(\" + clipObj.top + \"px \" + clipObj.right + \"px \" +\n\t\t\t\tclipObj.bottom + \"px \" + clipObj.left + \"px)\" );\n\t\t}\n\t\treturn parseClip( this.css( \"clip\" ), this );\n\t},\n\n\ttransfer: function( options, done ) {\n\t\tvar element = $( this ),\n\t\t\ttarget = $( options.to ),\n\t\t\ttargetFixed = target.css( \"position\" ) === \"fixed\",\n\t\t\tbody = $( \"body\" ),\n\t\t\tfixTop = targetFixed ? body.scrollTop() : 0,\n\t\t\tfixLeft = targetFixed ? body.scrollLeft() : 0,\n\t\t\tendPosition = target.offset(),\n\t\t\tanimation = {\n\t\t\t\ttop: endPosition.top - fixTop,\n\t\t\t\tleft: endPosition.left - fixLeft,\n\t\t\t\theight: target.innerHeight(),\n\t\t\t\twidth: target.innerWidth()\n\t\t\t},\n\t\t\tstartPosition = element.offset(),\n\t\t\ttransfer = $( \"
            \" );\n\n\t\ttransfer\n\t\t\t.appendTo( \"body\" )\n\t\t\t.addClass( options.className )\n\t\t\t.css( {\n\t\t\t\ttop: startPosition.top - fixTop,\n\t\t\t\tleft: startPosition.left - fixLeft,\n\t\t\t\theight: element.innerHeight(),\n\t\t\t\twidth: element.innerWidth(),\n\t\t\t\tposition: targetFixed ? \"fixed\" : \"absolute\"\n\t\t\t} )\n\t\t\t.animate( animation, options.duration, options.easing, function() {\n\t\t\t\ttransfer.remove();\n\t\t\t\tif ( typeof done === \"function\" ) {\n\t\t\t\t\tdone();\n\t\t\t\t}\n\t\t\t} );\n\t}\n} );\n\nfunction parseClip( str, element ) {\n\t\tvar outerWidth = element.outerWidth(),\n\t\t\touterHeight = element.outerHeight(),\n\t\t\tclipRegex = /^rect\\((-?\\d*\\.?\\d*px|-?\\d+%|auto),?\\s*(-?\\d*\\.?\\d*px|-?\\d+%|auto),?\\s*(-?\\d*\\.?\\d*px|-?\\d+%|auto),?\\s*(-?\\d*\\.?\\d*px|-?\\d+%|auto)\\)$/,\n\t\t\tvalues = clipRegex.exec( str ) || [ \"\", 0, outerWidth, outerHeight, 0 ];\n\n\t\treturn {\n\t\t\ttop: parseFloat( values[ 1 ] ) || 0,\n\t\t\tright: values[ 2 ] === \"auto\" ? outerWidth : parseFloat( values[ 2 ] ),\n\t\t\tbottom: values[ 3 ] === \"auto\" ? outerHeight : parseFloat( values[ 3 ] ),\n\t\t\tleft: parseFloat( values[ 4 ] ) || 0\n\t\t};\n}\n\n$.fx.step.clip = function( fx ) {\n\tif ( !fx.clipInit ) {\n\t\tfx.start = $( fx.elem ).cssClip();\n\t\tif ( typeof fx.end === \"string\" ) {\n\t\t\tfx.end = parseClip( fx.end, fx.elem );\n\t\t}\n\t\tfx.clipInit = true;\n\t}\n\n\t$( fx.elem ).cssClip( {\n\t\ttop: fx.pos * ( fx.end.top - fx.start.top ) + fx.start.top,\n\t\tright: fx.pos * ( fx.end.right - fx.start.right ) + fx.start.right,\n\t\tbottom: fx.pos * ( fx.end.bottom - fx.start.bottom ) + fx.start.bottom,\n\t\tleft: fx.pos * ( fx.end.left - fx.start.left ) + fx.start.left\n\t} );\n};\n\n} )();\n\n/******************************************************************************/\n/*********************************** EASING ***********************************/\n/******************************************************************************/\n\n( function() {\n\n// Based on easing equations from Robert Penner (http://robertpenner.com/easing)\n\nvar baseEasings = {};\n\n$.each( [ \"Quad\", \"Cubic\", \"Quart\", \"Quint\", \"Expo\" ], function( i, name ) {\n\tbaseEasings[ name ] = function( p ) {\n\t\treturn Math.pow( p, i + 2 );\n\t};\n} );\n\n$.extend( baseEasings, {\n\tSine: function( p ) {\n\t\treturn 1 - Math.cos( p * Math.PI / 2 );\n\t},\n\tCirc: function( p ) {\n\t\treturn 1 - Math.sqrt( 1 - p * p );\n\t},\n\tElastic: function( p ) {\n\t\treturn p === 0 || p === 1 ? p :\n\t\t\t-Math.pow( 2, 8 * ( p - 1 ) ) * Math.sin( ( ( p - 1 ) * 80 - 7.5 ) * Math.PI / 15 );\n\t},\n\tBack: function( p ) {\n\t\treturn p * p * ( 3 * p - 2 );\n\t},\n\tBounce: function( p ) {\n\t\tvar pow2,\n\t\t\tbounce = 4;\n\n\t\twhile ( p < ( ( pow2 = Math.pow( 2, --bounce ) ) - 1 ) / 11 ) {}\n\t\treturn 1 / Math.pow( 4, 3 - bounce ) - 7.5625 * Math.pow( ( pow2 * 3 - 2 ) / 22 - p, 2 );\n\t}\n} );\n\n$.each( baseEasings, function( name, easeIn ) {\n\t$.easing[ \"easeIn\" + name ] = easeIn;\n\t$.easing[ \"easeOut\" + name ] = function( p ) {\n\t\treturn 1 - easeIn( 1 - p );\n\t};\n\t$.easing[ \"easeInOut\" + name ] = function( p ) {\n\t\treturn p < 0.5 ?\n\t\t\teaseIn( p * 2 ) / 2 :\n\t\t\t1 - easeIn( p * -2 + 2 ) / 2;\n\t};\n} );\n\n} )();\n\nvar effect = $.effects;\n\n\n/*!\n * jQuery UI Effects Blind 1.13.3\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n//>>label: Blind Effect\n//>>group: Effects\n//>>description: Blinds the element.\n//>>docs: https://api.jqueryui.com/blind-effect/\n//>>demos: https://jqueryui.com/effect/\n\n\nvar effectsEffectBlind = $.effects.define( \"blind\", \"hide\", function( options, done ) {\n\tvar map = {\n\t\t\tup: [ \"bottom\", \"top\" ],\n\t\t\tvertical: [ \"bottom\", \"top\" ],\n\t\t\tdown: [ \"top\", \"bottom\" ],\n\t\t\tleft: [ \"right\", \"left\" ],\n\t\t\thorizontal: [ \"right\", \"left\" ],\n\t\t\tright: [ \"left\", \"right\" ]\n\t\t},\n\t\telement = $( this ),\n\t\tdirection = options.direction || \"up\",\n\t\tstart = element.cssClip(),\n\t\tanimate = { clip: $.extend( {}, start ) },\n\t\tplaceholder = $.effects.createPlaceholder( element );\n\n\tanimate.clip[ map[ direction ][ 0 ] ] = animate.clip[ map[ direction ][ 1 ] ];\n\n\tif ( options.mode === \"show\" ) {\n\t\telement.cssClip( animate.clip );\n\t\tif ( placeholder ) {\n\t\t\tplaceholder.css( $.effects.clipToBox( animate ) );\n\t\t}\n\n\t\tanimate.clip = start;\n\t}\n\n\tif ( placeholder ) {\n\t\tplaceholder.animate( $.effects.clipToBox( animate ), options.duration, options.easing );\n\t}\n\n\telement.animate( animate, {\n\t\tqueue: false,\n\t\tduration: options.duration,\n\t\teasing: options.easing,\n\t\tcomplete: done\n\t} );\n} );\n\n\n/*!\n * jQuery UI Effects Bounce 1.13.3\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n//>>label: Bounce Effect\n//>>group: Effects\n//>>description: Bounces an element horizontally or vertically n times.\n//>>docs: https://api.jqueryui.com/bounce-effect/\n//>>demos: https://jqueryui.com/effect/\n\n\nvar effectsEffectBounce = $.effects.define( \"bounce\", function( options, done ) {\n\tvar upAnim, downAnim, refValue,\n\t\telement = $( this ),\n\n\t\t// Defaults:\n\t\tmode = options.mode,\n\t\thide = mode === \"hide\",\n\t\tshow = mode === \"show\",\n\t\tdirection = options.direction || \"up\",\n\t\tdistance = options.distance,\n\t\ttimes = options.times || 5,\n\n\t\t// Number of internal animations\n\t\tanims = times * 2 + ( show || hide ? 1 : 0 ),\n\t\tspeed = options.duration / anims,\n\t\teasing = options.easing,\n\n\t\t// Utility:\n\t\tref = ( direction === \"up\" || direction === \"down\" ) ? \"top\" : \"left\",\n\t\tmotion = ( direction === \"up\" || direction === \"left\" ),\n\t\ti = 0,\n\n\t\tqueuelen = element.queue().length;\n\n\t$.effects.createPlaceholder( element );\n\n\trefValue = element.css( ref );\n\n\t// Default distance for the BIGGEST bounce is the outer Distance / 3\n\tif ( !distance ) {\n\t\tdistance = element[ ref === \"top\" ? \"outerHeight\" : \"outerWidth\" ]() / 3;\n\t}\n\n\tif ( show ) {\n\t\tdownAnim = { opacity: 1 };\n\t\tdownAnim[ ref ] = refValue;\n\n\t\t// If we are showing, force opacity 0 and set the initial position\n\t\t// then do the \"first\" animation\n\t\telement\n\t\t\t.css( \"opacity\", 0 )\n\t\t\t.css( ref, motion ? -distance * 2 : distance * 2 )\n\t\t\t.animate( downAnim, speed, easing );\n\t}\n\n\t// Start at the smallest distance if we are hiding\n\tif ( hide ) {\n\t\tdistance = distance / Math.pow( 2, times - 1 );\n\t}\n\n\tdownAnim = {};\n\tdownAnim[ ref ] = refValue;\n\n\t// Bounces up/down/left/right then back to 0 -- times * 2 animations happen here\n\tfor ( ; i < times; i++ ) {\n\t\tupAnim = {};\n\t\tupAnim[ ref ] = ( motion ? \"-=\" : \"+=\" ) + distance;\n\n\t\telement\n\t\t\t.animate( upAnim, speed, easing )\n\t\t\t.animate( downAnim, speed, easing );\n\n\t\tdistance = hide ? distance * 2 : distance / 2;\n\t}\n\n\t// Last Bounce when Hiding\n\tif ( hide ) {\n\t\tupAnim = { opacity: 0 };\n\t\tupAnim[ ref ] = ( motion ? \"-=\" : \"+=\" ) + distance;\n\n\t\telement.animate( upAnim, speed, easing );\n\t}\n\n\telement.queue( done );\n\n\t$.effects.unshift( element, queuelen, anims + 1 );\n} );\n\n\n/*!\n * jQuery UI Effects Clip 1.13.3\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n//>>label: Clip Effect\n//>>group: Effects\n//>>description: Clips the element on and off like an old TV.\n//>>docs: https://api.jqueryui.com/clip-effect/\n//>>demos: https://jqueryui.com/effect/\n\n\nvar effectsEffectClip = $.effects.define( \"clip\", \"hide\", function( options, done ) {\n\tvar start,\n\t\tanimate = {},\n\t\telement = $( this ),\n\t\tdirection = options.direction || \"vertical\",\n\t\tboth = direction === \"both\",\n\t\thorizontal = both || direction === \"horizontal\",\n\t\tvertical = both || direction === \"vertical\";\n\n\tstart = element.cssClip();\n\tanimate.clip = {\n\t\ttop: vertical ? ( start.bottom - start.top ) / 2 : start.top,\n\t\tright: horizontal ? ( start.right - start.left ) / 2 : start.right,\n\t\tbottom: vertical ? ( start.bottom - start.top ) / 2 : start.bottom,\n\t\tleft: horizontal ? ( start.right - start.left ) / 2 : start.left\n\t};\n\n\t$.effects.createPlaceholder( element );\n\n\tif ( options.mode === \"show\" ) {\n\t\telement.cssClip( animate.clip );\n\t\tanimate.clip = start;\n\t}\n\n\telement.animate( animate, {\n\t\tqueue: false,\n\t\tduration: options.duration,\n\t\teasing: options.easing,\n\t\tcomplete: done\n\t} );\n\n} );\n\n\n/*!\n * jQuery UI Effects Drop 1.13.3\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n//>>label: Drop Effect\n//>>group: Effects\n//>>description: Moves an element in one direction and hides it at the same time.\n//>>docs: https://api.jqueryui.com/drop-effect/\n//>>demos: https://jqueryui.com/effect/\n\n\nvar effectsEffectDrop = $.effects.define( \"drop\", \"hide\", function( options, done ) {\n\n\tvar distance,\n\t\telement = $( this ),\n\t\tmode = options.mode,\n\t\tshow = mode === \"show\",\n\t\tdirection = options.direction || \"left\",\n\t\tref = ( direction === \"up\" || direction === \"down\" ) ? \"top\" : \"left\",\n\t\tmotion = ( direction === \"up\" || direction === \"left\" ) ? \"-=\" : \"+=\",\n\t\toppositeMotion = ( motion === \"+=\" ) ? \"-=\" : \"+=\",\n\t\tanimation = {\n\t\t\topacity: 0\n\t\t};\n\n\t$.effects.createPlaceholder( element );\n\n\tdistance = options.distance ||\n\t\telement[ ref === \"top\" ? \"outerHeight\" : \"outerWidth\" ]( true ) / 2;\n\n\tanimation[ ref ] = motion + distance;\n\n\tif ( show ) {\n\t\telement.css( animation );\n\n\t\tanimation[ ref ] = oppositeMotion + distance;\n\t\tanimation.opacity = 1;\n\t}\n\n\t// Animate\n\telement.animate( animation, {\n\t\tqueue: false,\n\t\tduration: options.duration,\n\t\teasing: options.easing,\n\t\tcomplete: done\n\t} );\n} );\n\n\n/*!\n * jQuery UI Effects Explode 1.13.3\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n//>>label: Explode Effect\n//>>group: Effects\n/* eslint-disable max-len */\n//>>description: Explodes an element in all directions into n pieces. Implodes an element to its original wholeness.\n/* eslint-enable max-len */\n//>>docs: https://api.jqueryui.com/explode-effect/\n//>>demos: https://jqueryui.com/effect/\n\n\nvar effectsEffectExplode = $.effects.define( \"explode\", \"hide\", function( options, done ) {\n\n\tvar i, j, left, top, mx, my,\n\t\trows = options.pieces ? Math.round( Math.sqrt( options.pieces ) ) : 3,\n\t\tcells = rows,\n\t\telement = $( this ),\n\t\tmode = options.mode,\n\t\tshow = mode === \"show\",\n\n\t\t// Show and then visibility:hidden the element before calculating offset\n\t\toffset = element.show().css( \"visibility\", \"hidden\" ).offset(),\n\n\t\t// Width and height of a piece\n\t\twidth = Math.ceil( element.outerWidth() / cells ),\n\t\theight = Math.ceil( element.outerHeight() / rows ),\n\t\tpieces = [];\n\n\t// Children animate complete:\n\tfunction childComplete() {\n\t\tpieces.push( this );\n\t\tif ( pieces.length === rows * cells ) {\n\t\t\tanimComplete();\n\t\t}\n\t}\n\n\t// Clone the element for each row and cell.\n\tfor ( i = 0; i < rows; i++ ) { // ===>\n\t\ttop = offset.top + i * height;\n\t\tmy = i - ( rows - 1 ) / 2;\n\n\t\tfor ( j = 0; j < cells; j++ ) { // |||\n\t\t\tleft = offset.left + j * width;\n\t\t\tmx = j - ( cells - 1 ) / 2;\n\n\t\t\t// Create a clone of the now hidden main element that will be absolute positioned\n\t\t\t// within a wrapper div off the -left and -top equal to size of our pieces\n\t\t\telement\n\t\t\t\t.clone()\n\t\t\t\t.appendTo( \"body\" )\n\t\t\t\t.wrap( \"
            \" )\n\t\t\t\t.css( {\n\t\t\t\t\tposition: \"absolute\",\n\t\t\t\t\tvisibility: \"visible\",\n\t\t\t\t\tleft: -j * width,\n\t\t\t\t\ttop: -i * height\n\t\t\t\t} )\n\n\t\t\t\t// Select the wrapper - make it overflow: hidden and absolute positioned based on\n\t\t\t\t// where the original was located +left and +top equal to the size of pieces\n\t\t\t\t.parent()\n\t\t\t\t\t.addClass( \"ui-effects-explode\" )\n\t\t\t\t\t.css( {\n\t\t\t\t\t\tposition: \"absolute\",\n\t\t\t\t\t\toverflow: \"hidden\",\n\t\t\t\t\t\twidth: width,\n\t\t\t\t\t\theight: height,\n\t\t\t\t\t\tleft: left + ( show ? mx * width : 0 ),\n\t\t\t\t\t\ttop: top + ( show ? my * height : 0 ),\n\t\t\t\t\t\topacity: show ? 0 : 1\n\t\t\t\t\t} )\n\t\t\t\t\t.animate( {\n\t\t\t\t\t\tleft: left + ( show ? 0 : mx * width ),\n\t\t\t\t\t\ttop: top + ( show ? 0 : my * height ),\n\t\t\t\t\t\topacity: show ? 1 : 0\n\t\t\t\t\t}, options.duration || 500, options.easing, childComplete );\n\t\t}\n\t}\n\n\tfunction animComplete() {\n\t\telement.css( {\n\t\t\tvisibility: \"visible\"\n\t\t} );\n\t\t$( pieces ).remove();\n\t\tdone();\n\t}\n} );\n\n\n/*!\n * jQuery UI Effects Fade 1.13.3\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n//>>label: Fade Effect\n//>>group: Effects\n//>>description: Fades the element.\n//>>docs: https://api.jqueryui.com/fade-effect/\n//>>demos: https://jqueryui.com/effect/\n\n\nvar effectsEffectFade = $.effects.define( \"fade\", \"toggle\", function( options, done ) {\n\tvar show = options.mode === \"show\";\n\n\t$( this )\n\t\t.css( \"opacity\", show ? 0 : 1 )\n\t\t.animate( {\n\t\t\topacity: show ? 1 : 0\n\t\t}, {\n\t\t\tqueue: false,\n\t\t\tduration: options.duration,\n\t\t\teasing: options.easing,\n\t\t\tcomplete: done\n\t\t} );\n} );\n\n\n/*!\n * jQuery UI Effects Fold 1.13.3\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n//>>label: Fold Effect\n//>>group: Effects\n//>>description: Folds an element first horizontally and then vertically.\n//>>docs: https://api.jqueryui.com/fold-effect/\n//>>demos: https://jqueryui.com/effect/\n\n\nvar effectsEffectFold = $.effects.define( \"fold\", \"hide\", function( options, done ) {\n\n\t// Create element\n\tvar element = $( this ),\n\t\tmode = options.mode,\n\t\tshow = mode === \"show\",\n\t\thide = mode === \"hide\",\n\t\tsize = options.size || 15,\n\t\tpercent = /([0-9]+)%/.exec( size ),\n\t\thorizFirst = !!options.horizFirst,\n\t\tref = horizFirst ? [ \"right\", \"bottom\" ] : [ \"bottom\", \"right\" ],\n\t\tduration = options.duration / 2,\n\n\t\tplaceholder = $.effects.createPlaceholder( element ),\n\n\t\tstart = element.cssClip(),\n\t\tanimation1 = { clip: $.extend( {}, start ) },\n\t\tanimation2 = { clip: $.extend( {}, start ) },\n\n\t\tdistance = [ start[ ref[ 0 ] ], start[ ref[ 1 ] ] ],\n\n\t\tqueuelen = element.queue().length;\n\n\tif ( percent ) {\n\t\tsize = parseInt( percent[ 1 ], 10 ) / 100 * distance[ hide ? 0 : 1 ];\n\t}\n\tanimation1.clip[ ref[ 0 ] ] = size;\n\tanimation2.clip[ ref[ 0 ] ] = size;\n\tanimation2.clip[ ref[ 1 ] ] = 0;\n\n\tif ( show ) {\n\t\telement.cssClip( animation2.clip );\n\t\tif ( placeholder ) {\n\t\t\tplaceholder.css( $.effects.clipToBox( animation2 ) );\n\t\t}\n\n\t\tanimation2.clip = start;\n\t}\n\n\t// Animate\n\telement\n\t\t.queue( function( next ) {\n\t\t\tif ( placeholder ) {\n\t\t\t\tplaceholder\n\t\t\t\t\t.animate( $.effects.clipToBox( animation1 ), duration, options.easing )\n\t\t\t\t\t.animate( $.effects.clipToBox( animation2 ), duration, options.easing );\n\t\t\t}\n\n\t\t\tnext();\n\t\t} )\n\t\t.animate( animation1, duration, options.easing )\n\t\t.animate( animation2, duration, options.easing )\n\t\t.queue( done );\n\n\t$.effects.unshift( element, queuelen, 4 );\n} );\n\n\n/*!\n * jQuery UI Effects Highlight 1.13.3\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n//>>label: Highlight Effect\n//>>group: Effects\n//>>description: Highlights the background of an element in a defined color for a custom duration.\n//>>docs: https://api.jqueryui.com/highlight-effect/\n//>>demos: https://jqueryui.com/effect/\n\n\nvar effectsEffectHighlight = $.effects.define( \"highlight\", \"show\", function( options, done ) {\n\tvar element = $( this ),\n\t\tanimation = {\n\t\t\tbackgroundColor: element.css( \"backgroundColor\" )\n\t\t};\n\n\tif ( options.mode === \"hide\" ) {\n\t\tanimation.opacity = 0;\n\t}\n\n\t$.effects.saveStyle( element );\n\n\telement\n\t\t.css( {\n\t\t\tbackgroundImage: \"none\",\n\t\t\tbackgroundColor: options.color || \"#ffff99\"\n\t\t} )\n\t\t.animate( animation, {\n\t\t\tqueue: false,\n\t\t\tduration: options.duration,\n\t\t\teasing: options.easing,\n\t\t\tcomplete: done\n\t\t} );\n} );\n\n\n/*!\n * jQuery UI Effects Size 1.13.3\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n//>>label: Size Effect\n//>>group: Effects\n//>>description: Resize an element to a specified width and height.\n//>>docs: https://api.jqueryui.com/size-effect/\n//>>demos: https://jqueryui.com/effect/\n\n\nvar effectsEffectSize = $.effects.define( \"size\", function( options, done ) {\n\n\t// Create element\n\tvar baseline, factor, temp,\n\t\telement = $( this ),\n\n\t\t// Copy for children\n\t\tcProps = [ \"fontSize\" ],\n\t\tvProps = [ \"borderTopWidth\", \"borderBottomWidth\", \"paddingTop\", \"paddingBottom\" ],\n\t\thProps = [ \"borderLeftWidth\", \"borderRightWidth\", \"paddingLeft\", \"paddingRight\" ],\n\n\t\t// Set options\n\t\tmode = options.mode,\n\t\trestore = mode !== \"effect\",\n\t\tscale = options.scale || \"both\",\n\t\torigin = options.origin || [ \"middle\", \"center\" ],\n\t\tposition = element.css( \"position\" ),\n\t\tpos = element.position(),\n\t\toriginal = $.effects.scaledDimensions( element ),\n\t\tfrom = options.from || original,\n\t\tto = options.to || $.effects.scaledDimensions( element, 0 );\n\n\t$.effects.createPlaceholder( element );\n\n\tif ( mode === \"show\" ) {\n\t\ttemp = from;\n\t\tfrom = to;\n\t\tto = temp;\n\t}\n\n\t// Set scaling factor\n\tfactor = {\n\t\tfrom: {\n\t\t\ty: from.height / original.height,\n\t\t\tx: from.width / original.width\n\t\t},\n\t\tto: {\n\t\t\ty: to.height / original.height,\n\t\t\tx: to.width / original.width\n\t\t}\n\t};\n\n\t// Scale the css box\n\tif ( scale === \"box\" || scale === \"both\" ) {\n\n\t\t// Vertical props scaling\n\t\tif ( factor.from.y !== factor.to.y ) {\n\t\t\tfrom = $.effects.setTransition( element, vProps, factor.from.y, from );\n\t\t\tto = $.effects.setTransition( element, vProps, factor.to.y, to );\n\t\t}\n\n\t\t// Horizontal props scaling\n\t\tif ( factor.from.x !== factor.to.x ) {\n\t\t\tfrom = $.effects.setTransition( element, hProps, factor.from.x, from );\n\t\t\tto = $.effects.setTransition( element, hProps, factor.to.x, to );\n\t\t}\n\t}\n\n\t// Scale the content\n\tif ( scale === \"content\" || scale === \"both\" ) {\n\n\t\t// Vertical props scaling\n\t\tif ( factor.from.y !== factor.to.y ) {\n\t\t\tfrom = $.effects.setTransition( element, cProps, factor.from.y, from );\n\t\t\tto = $.effects.setTransition( element, cProps, factor.to.y, to );\n\t\t}\n\t}\n\n\t// Adjust the position properties based on the provided origin points\n\tif ( origin ) {\n\t\tbaseline = $.effects.getBaseline( origin, original );\n\t\tfrom.top = ( original.outerHeight - from.outerHeight ) * baseline.y + pos.top;\n\t\tfrom.left = ( original.outerWidth - from.outerWidth ) * baseline.x + pos.left;\n\t\tto.top = ( original.outerHeight - to.outerHeight ) * baseline.y + pos.top;\n\t\tto.left = ( original.outerWidth - to.outerWidth ) * baseline.x + pos.left;\n\t}\n\tdelete from.outerHeight;\n\tdelete from.outerWidth;\n\telement.css( from );\n\n\t// Animate the children if desired\n\tif ( scale === \"content\" || scale === \"both\" ) {\n\n\t\tvProps = vProps.concat( [ \"marginTop\", \"marginBottom\" ] ).concat( cProps );\n\t\thProps = hProps.concat( [ \"marginLeft\", \"marginRight\" ] );\n\n\t\t// Only animate children with width attributes specified\n\t\t// TODO: is this right? should we include anything with css width specified as well\n\t\telement.find( \"*[width]\" ).each( function() {\n\t\t\tvar child = $( this ),\n\t\t\t\tchildOriginal = $.effects.scaledDimensions( child ),\n\t\t\t\tchildFrom = {\n\t\t\t\t\theight: childOriginal.height * factor.from.y,\n\t\t\t\t\twidth: childOriginal.width * factor.from.x,\n\t\t\t\t\touterHeight: childOriginal.outerHeight * factor.from.y,\n\t\t\t\t\touterWidth: childOriginal.outerWidth * factor.from.x\n\t\t\t\t},\n\t\t\t\tchildTo = {\n\t\t\t\t\theight: childOriginal.height * factor.to.y,\n\t\t\t\t\twidth: childOriginal.width * factor.to.x,\n\t\t\t\t\touterHeight: childOriginal.height * factor.to.y,\n\t\t\t\t\touterWidth: childOriginal.width * factor.to.x\n\t\t\t\t};\n\n\t\t\t// Vertical props scaling\n\t\t\tif ( factor.from.y !== factor.to.y ) {\n\t\t\t\tchildFrom = $.effects.setTransition( child, vProps, factor.from.y, childFrom );\n\t\t\t\tchildTo = $.effects.setTransition( child, vProps, factor.to.y, childTo );\n\t\t\t}\n\n\t\t\t// Horizontal props scaling\n\t\t\tif ( factor.from.x !== factor.to.x ) {\n\t\t\t\tchildFrom = $.effects.setTransition( child, hProps, factor.from.x, childFrom );\n\t\t\t\tchildTo = $.effects.setTransition( child, hProps, factor.to.x, childTo );\n\t\t\t}\n\n\t\t\tif ( restore ) {\n\t\t\t\t$.effects.saveStyle( child );\n\t\t\t}\n\n\t\t\t// Animate children\n\t\t\tchild.css( childFrom );\n\t\t\tchild.animate( childTo, options.duration, options.easing, function() {\n\n\t\t\t\t// Restore children\n\t\t\t\tif ( restore ) {\n\t\t\t\t\t$.effects.restoreStyle( child );\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Animate\n\telement.animate( to, {\n\t\tqueue: false,\n\t\tduration: options.duration,\n\t\teasing: options.easing,\n\t\tcomplete: function() {\n\n\t\t\tvar offset = element.offset();\n\n\t\t\tif ( to.opacity === 0 ) {\n\t\t\t\telement.css( \"opacity\", from.opacity );\n\t\t\t}\n\n\t\t\tif ( !restore ) {\n\t\t\t\telement\n\t\t\t\t\t.css( \"position\", position === \"static\" ? \"relative\" : position )\n\t\t\t\t\t.offset( offset );\n\n\t\t\t\t// Need to save style here so that automatic style restoration\n\t\t\t\t// doesn't restore to the original styles from before the animation.\n\t\t\t\t$.effects.saveStyle( element );\n\t\t\t}\n\n\t\t\tdone();\n\t\t}\n\t} );\n\n} );\n\n\n/*!\n * jQuery UI Effects Scale 1.13.3\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n//>>label: Scale Effect\n//>>group: Effects\n//>>description: Grows or shrinks an element and its content.\n//>>docs: https://api.jqueryui.com/scale-effect/\n//>>demos: https://jqueryui.com/effect/\n\n\nvar effectsEffectScale = $.effects.define( \"scale\", function( options, done ) {\n\n\t// Create element\n\tvar el = $( this ),\n\t\tmode = options.mode,\n\t\tpercent = parseInt( options.percent, 10 ) ||\n\t\t\t( parseInt( options.percent, 10 ) === 0 ? 0 : ( mode !== \"effect\" ? 0 : 100 ) ),\n\n\t\tnewOptions = $.extend( true, {\n\t\t\tfrom: $.effects.scaledDimensions( el ),\n\t\t\tto: $.effects.scaledDimensions( el, percent, options.direction || \"both\" ),\n\t\t\torigin: options.origin || [ \"middle\", \"center\" ]\n\t\t}, options );\n\n\t// Fade option to support puff\n\tif ( options.fade ) {\n\t\tnewOptions.from.opacity = 1;\n\t\tnewOptions.to.opacity = 0;\n\t}\n\n\t$.effects.effect.size.call( this, newOptions, done );\n} );\n\n\n/*!\n * jQuery UI Effects Puff 1.13.3\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n//>>label: Puff Effect\n//>>group: Effects\n//>>description: Creates a puff effect by scaling the element up and hiding it at the same time.\n//>>docs: https://api.jqueryui.com/puff-effect/\n//>>demos: https://jqueryui.com/effect/\n\n\nvar effectsEffectPuff = $.effects.define( \"puff\", \"hide\", function( options, done ) {\n\tvar newOptions = $.extend( true, {}, options, {\n\t\tfade: true,\n\t\tpercent: parseInt( options.percent, 10 ) || 150\n\t} );\n\n\t$.effects.effect.scale.call( this, newOptions, done );\n} );\n\n\n/*!\n * jQuery UI Effects Pulsate 1.13.3\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n//>>label: Pulsate Effect\n//>>group: Effects\n//>>description: Pulsates an element n times by changing the opacity to zero and back.\n//>>docs: https://api.jqueryui.com/pulsate-effect/\n//>>demos: https://jqueryui.com/effect/\n\n\nvar effectsEffectPulsate = $.effects.define( \"pulsate\", \"show\", function( options, done ) {\n\tvar element = $( this ),\n\t\tmode = options.mode,\n\t\tshow = mode === \"show\",\n\t\thide = mode === \"hide\",\n\t\tshowhide = show || hide,\n\n\t\t// Showing or hiding leaves off the \"last\" animation\n\t\tanims = ( ( options.times || 5 ) * 2 ) + ( showhide ? 1 : 0 ),\n\t\tduration = options.duration / anims,\n\t\tanimateTo = 0,\n\t\ti = 1,\n\t\tqueuelen = element.queue().length;\n\n\tif ( show || !element.is( \":visible\" ) ) {\n\t\telement.css( \"opacity\", 0 ).show();\n\t\tanimateTo = 1;\n\t}\n\n\t// Anims - 1 opacity \"toggles\"\n\tfor ( ; i < anims; i++ ) {\n\t\telement.animate( { opacity: animateTo }, duration, options.easing );\n\t\tanimateTo = 1 - animateTo;\n\t}\n\n\telement.animate( { opacity: animateTo }, duration, options.easing );\n\n\telement.queue( done );\n\n\t$.effects.unshift( element, queuelen, anims + 1 );\n} );\n\n\n/*!\n * jQuery UI Effects Shake 1.13.3\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n//>>label: Shake Effect\n//>>group: Effects\n//>>description: Shakes an element horizontally or vertically n times.\n//>>docs: https://api.jqueryui.com/shake-effect/\n//>>demos: https://jqueryui.com/effect/\n\n\nvar effectsEffectShake = $.effects.define( \"shake\", function( options, done ) {\n\n\tvar i = 1,\n\t\telement = $( this ),\n\t\tdirection = options.direction || \"left\",\n\t\tdistance = options.distance || 20,\n\t\ttimes = options.times || 3,\n\t\tanims = times * 2 + 1,\n\t\tspeed = Math.round( options.duration / anims ),\n\t\tref = ( direction === \"up\" || direction === \"down\" ) ? \"top\" : \"left\",\n\t\tpositiveMotion = ( direction === \"up\" || direction === \"left\" ),\n\t\tanimation = {},\n\t\tanimation1 = {},\n\t\tanimation2 = {},\n\n\t\tqueuelen = element.queue().length;\n\n\t$.effects.createPlaceholder( element );\n\n\t// Animation\n\tanimation[ ref ] = ( positiveMotion ? \"-=\" : \"+=\" ) + distance;\n\tanimation1[ ref ] = ( positiveMotion ? \"+=\" : \"-=\" ) + distance * 2;\n\tanimation2[ ref ] = ( positiveMotion ? \"-=\" : \"+=\" ) + distance * 2;\n\n\t// Animate\n\telement.animate( animation, speed, options.easing );\n\n\t// Shakes\n\tfor ( ; i < times; i++ ) {\n\t\telement\n\t\t\t.animate( animation1, speed, options.easing )\n\t\t\t.animate( animation2, speed, options.easing );\n\t}\n\n\telement\n\t\t.animate( animation1, speed, options.easing )\n\t\t.animate( animation, speed / 2, options.easing )\n\t\t.queue( done );\n\n\t$.effects.unshift( element, queuelen, anims + 1 );\n} );\n\n\n/*!\n * jQuery UI Effects Slide 1.13.3\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n//>>label: Slide Effect\n//>>group: Effects\n//>>description: Slides an element in and out of the viewport.\n//>>docs: https://api.jqueryui.com/slide-effect/\n//>>demos: https://jqueryui.com/effect/\n\n\nvar effectsEffectSlide = $.effects.define( \"slide\", \"show\", function( options, done ) {\n\tvar startClip, startRef,\n\t\telement = $( this ),\n\t\tmap = {\n\t\t\tup: [ \"bottom\", \"top\" ],\n\t\t\tdown: [ \"top\", \"bottom\" ],\n\t\t\tleft: [ \"right\", \"left\" ],\n\t\t\tright: [ \"left\", \"right\" ]\n\t\t},\n\t\tmode = options.mode,\n\t\tdirection = options.direction || \"left\",\n\t\tref = ( direction === \"up\" || direction === \"down\" ) ? \"top\" : \"left\",\n\t\tpositiveMotion = ( direction === \"up\" || direction === \"left\" ),\n\t\tdistance = options.distance ||\n\t\t\telement[ ref === \"top\" ? \"outerHeight\" : \"outerWidth\" ]( true ),\n\t\tanimation = {};\n\n\t$.effects.createPlaceholder( element );\n\n\tstartClip = element.cssClip();\n\tstartRef = element.position()[ ref ];\n\n\t// Define hide animation\n\tanimation[ ref ] = ( positiveMotion ? -1 : 1 ) * distance + startRef;\n\tanimation.clip = element.cssClip();\n\tanimation.clip[ map[ direction ][ 1 ] ] = animation.clip[ map[ direction ][ 0 ] ];\n\n\t// Reverse the animation if we're showing\n\tif ( mode === \"show\" ) {\n\t\telement.cssClip( animation.clip );\n\t\telement.css( ref, animation[ ref ] );\n\t\tanimation.clip = startClip;\n\t\tanimation[ ref ] = startRef;\n\t}\n\n\t// Actually animate\n\telement.animate( animation, {\n\t\tqueue: false,\n\t\tduration: options.duration,\n\t\teasing: options.easing,\n\t\tcomplete: done\n\t} );\n} );\n\n\n/*!\n * jQuery UI Effects Transfer 1.13.3\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n//>>label: Transfer Effect\n//>>group: Effects\n//>>description: Displays a transfer effect from one element to another.\n//>>docs: https://api.jqueryui.com/transfer-effect/\n//>>demos: https://jqueryui.com/effect/\n\n\nvar effect;\nif ( $.uiBackCompat !== false ) {\n\teffect = $.effects.define( \"transfer\", function( options, done ) {\n\t\t$( this ).transfer( options, done );\n\t} );\n}\nvar effectsEffectTransfer = effect;\n\n\n/*!\n * jQuery UI Focusable 1.13.3\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n//>>label: :focusable Selector\n//>>group: Core\n//>>description: Selects elements which can be focused.\n//>>docs: https://api.jqueryui.com/focusable-selector/\n\n\n// Selectors\n$.ui.focusable = function( element, hasTabindex ) {\n\tvar map, mapName, img, focusableIfVisible, fieldset,\n\t\tnodeName = element.nodeName.toLowerCase();\n\n\tif ( \"area\" === nodeName ) {\n\t\tmap = element.parentNode;\n\t\tmapName = map.name;\n\t\tif ( !element.href || !mapName || map.nodeName.toLowerCase() !== \"map\" ) {\n\t\t\treturn false;\n\t\t}\n\t\timg = $( \"img[usemap='#\" + mapName + \"']\" );\n\t\treturn img.length > 0 && img.is( \":visible\" );\n\t}\n\n\tif ( /^(input|select|textarea|button|object)$/.test( nodeName ) ) {\n\t\tfocusableIfVisible = !element.disabled;\n\n\t\tif ( focusableIfVisible ) {\n\n\t\t\t// Form controls within a disabled fieldset are disabled.\n\t\t\t// However, controls within the fieldset's legend do not get disabled.\n\t\t\t// Since controls generally aren't placed inside legends, we skip\n\t\t\t// this portion of the check.\n\t\t\tfieldset = $( element ).closest( \"fieldset\" )[ 0 ];\n\t\t\tif ( fieldset ) {\n\t\t\t\tfocusableIfVisible = !fieldset.disabled;\n\t\t\t}\n\t\t}\n\t} else if ( \"a\" === nodeName ) {\n\t\tfocusableIfVisible = element.href || hasTabindex;\n\t} else {\n\t\tfocusableIfVisible = hasTabindex;\n\t}\n\n\treturn focusableIfVisible && $( element ).is( \":visible\" ) && visible( $( element ) );\n};\n\n// Support: IE 8 only\n// IE 8 doesn't resolve inherit to visible/hidden for computed values\nfunction visible( element ) {\n\tvar visibility = element.css( \"visibility\" );\n\twhile ( visibility === \"inherit\" ) {\n\t\telement = element.parent();\n\t\tvisibility = element.css( \"visibility\" );\n\t}\n\treturn visibility === \"visible\";\n}\n\n$.extend( $.expr.pseudos, {\n\tfocusable: function( element ) {\n\t\treturn $.ui.focusable( element, $.attr( element, \"tabindex\" ) != null );\n\t}\n} );\n\nvar focusable = $.ui.focusable;\n\n\n\n// Support: IE8 Only\n// IE8 does not support the form attribute and when it is supplied. It overwrites the form prop\n// with a string, so we need to find the proper form.\nvar form = $.fn._form = function() {\n\treturn typeof this[ 0 ].form === \"string\" ? this.closest( \"form\" ) : $( this[ 0 ].form );\n};\n\n\n/*!\n * jQuery UI Form Reset Mixin 1.13.3\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n//>>label: Form Reset Mixin\n//>>group: Core\n//>>description: Refresh input widgets when their form is reset\n//>>docs: https://api.jqueryui.com/form-reset-mixin/\n\n\nvar formResetMixin = $.ui.formResetMixin = {\n\t_formResetHandler: function() {\n\t\tvar form = $( this );\n\n\t\t// Wait for the form reset to actually happen before refreshing\n\t\tsetTimeout( function() {\n\t\t\tvar instances = form.data( \"ui-form-reset-instances\" );\n\t\t\t$.each( instances, function() {\n\t\t\t\tthis.refresh();\n\t\t\t} );\n\t\t} );\n\t},\n\n\t_bindFormResetHandler: function() {\n\t\tthis.form = this.element._form();\n\t\tif ( !this.form.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar instances = this.form.data( \"ui-form-reset-instances\" ) || [];\n\t\tif ( !instances.length ) {\n\n\t\t\t// We don't use _on() here because we use a single event handler per form\n\t\t\tthis.form.on( \"reset.ui-form-reset\", this._formResetHandler );\n\t\t}\n\t\tinstances.push( this );\n\t\tthis.form.data( \"ui-form-reset-instances\", instances );\n\t},\n\n\t_unbindFormResetHandler: function() {\n\t\tif ( !this.form.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar instances = this.form.data( \"ui-form-reset-instances\" );\n\t\tinstances.splice( $.inArray( this, instances ), 1 );\n\t\tif ( instances.length ) {\n\t\t\tthis.form.data( \"ui-form-reset-instances\", instances );\n\t\t} else {\n\t\t\tthis.form\n\t\t\t\t.removeData( \"ui-form-reset-instances\" )\n\t\t\t\t.off( \"reset.ui-form-reset\" );\n\t\t}\n\t}\n};\n\n\n/*!\n * jQuery UI Support for jQuery core 1.8.x and newer 1.13.3\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n *\n */\n\n//>>label: jQuery 1.8+ Support\n//>>group: Core\n//>>description: Support version 1.8.x and newer of jQuery core\n\n\n// Support: jQuery 1.9.x or older\n// $.expr[ \":\" ] is deprecated.\nif ( !$.expr.pseudos ) {\n\t$.expr.pseudos = $.expr[ \":\" ];\n}\n\n// Support: jQuery 1.11.x or older\n// $.unique has been renamed to $.uniqueSort\nif ( !$.uniqueSort ) {\n\t$.uniqueSort = $.unique;\n}\n\n// Support: jQuery 2.2.x or older.\n// This method has been defined in jQuery 3.0.0.\n// Code from https://github.com/jquery/jquery/blob/e539bac79e666bba95bba86d690b4e609dca2286/src/selector/escapeSelector.js\nif ( !$.escapeSelector ) {\n\n\t// CSS string/identifier serialization\n\t// https://drafts.csswg.org/cssom/#common-serializing-idioms\n\tvar rcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\x80-\\uFFFF\\w-]/g;\n\n\tvar fcssescape = function( ch, asCodePoint ) {\n\t\tif ( asCodePoint ) {\n\n\t\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\t\tif ( ch === \"\\0\" ) {\n\t\t\t\treturn \"\\uFFFD\";\n\t\t\t}\n\n\t\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\t\treturn ch.slice( 0, -1 ) + \"\\\\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t\t}\n\n\t\t// Other potentially-special ASCII characters get backslash-escaped\n\t\treturn \"\\\\\" + ch;\n\t};\n\n\t$.escapeSelector = function( sel ) {\n\t\treturn ( sel + \"\" ).replace( rcssescape, fcssescape );\n\t};\n}\n\n// Support: jQuery 3.4.x or older\n// These methods have been defined in jQuery 3.5.0.\nif ( !$.fn.even || !$.fn.odd ) {\n\t$.fn.extend( {\n\t\teven: function() {\n\t\t\treturn this.filter( function( i ) {\n\t\t\t\treturn i % 2 === 0;\n\t\t\t} );\n\t\t},\n\t\todd: function() {\n\t\t\treturn this.filter( function( i ) {\n\t\t\t\treturn i % 2 === 1;\n\t\t\t} );\n\t\t}\n\t} );\n}\n\n;\n/*!\n * jQuery UI Keycode 1.13.3\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n//>>label: Keycode\n//>>group: Core\n//>>description: Provide keycodes as keynames\n//>>docs: https://api.jqueryui.com/jQuery.ui.keyCode/\n\n\nvar keycode = $.ui.keyCode = {\n\tBACKSPACE: 8,\n\tCOMMA: 188,\n\tDELETE: 46,\n\tDOWN: 40,\n\tEND: 35,\n\tENTER: 13,\n\tESCAPE: 27,\n\tHOME: 36,\n\tLEFT: 37,\n\tPAGE_DOWN: 34,\n\tPAGE_UP: 33,\n\tPERIOD: 190,\n\tRIGHT: 39,\n\tSPACE: 32,\n\tTAB: 9,\n\tUP: 38\n};\n\n\n/*!\n * jQuery UI Labels 1.13.3\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n//>>label: labels\n//>>group: Core\n//>>description: Find all the labels associated with a given input\n//>>docs: https://api.jqueryui.com/labels/\n\n\nvar labels = $.fn.labels = function() {\n\tvar ancestor, selector, id, labels, ancestors;\n\n\tif ( !this.length ) {\n\t\treturn this.pushStack( [] );\n\t}\n\n\t// Check control.labels first\n\tif ( this[ 0 ].labels && this[ 0 ].labels.length ) {\n\t\treturn this.pushStack( this[ 0 ].labels );\n\t}\n\n\t// Support: IE <= 11, FF <= 37, Android <= 2.3 only\n\t// Above browsers do not support control.labels. Everything below is to support them\n\t// as well as document fragments. control.labels does not work on document fragments\n\tlabels = this.eq( 0 ).parents( \"label\" );\n\n\t// Look for the label based on the id\n\tid = this.attr( \"id\" );\n\tif ( id ) {\n\n\t\t// We don't search against the document in case the element\n\t\t// is disconnected from the DOM\n\t\tancestor = this.eq( 0 ).parents().last();\n\n\t\t// Get a full set of top level ancestors\n\t\tancestors = ancestor.add( ancestor.length ? ancestor.siblings() : this.siblings() );\n\n\t\t// Create a selector for the label based on the id\n\t\tselector = \"label[for='\" + $.escapeSelector( id ) + \"']\";\n\n\t\tlabels = labels.add( ancestors.find( selector ).addBack( selector ) );\n\n\t}\n\n\t// Return whatever we have found for labels\n\treturn this.pushStack( labels );\n};\n\n\n/*!\n * jQuery UI Scroll Parent 1.13.3\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n//>>label: scrollParent\n//>>group: Core\n//>>description: Get the closest ancestor element that is scrollable.\n//>>docs: https://api.jqueryui.com/scrollParent/\n\n\nvar scrollParent = $.fn.scrollParent = function( includeHidden ) {\n\tvar position = this.css( \"position\" ),\n\t\texcludeStaticParent = position === \"absolute\",\n\t\toverflowRegex = includeHidden ? /(auto|scroll|hidden)/ : /(auto|scroll)/,\n\t\tscrollParent = this.parents().filter( function() {\n\t\t\tvar parent = $( this );\n\t\t\tif ( excludeStaticParent && parent.css( \"position\" ) === \"static\" ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn overflowRegex.test( parent.css( \"overflow\" ) + parent.css( \"overflow-y\" ) +\n\t\t\t\tparent.css( \"overflow-x\" ) );\n\t\t} ).eq( 0 );\n\n\treturn position === \"fixed\" || !scrollParent.length ?\n\t\t$( this[ 0 ].ownerDocument || document ) :\n\t\tscrollParent;\n};\n\n\n/*!\n * jQuery UI Tabbable 1.13.3\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n//>>label: :tabbable Selector\n//>>group: Core\n//>>description: Selects elements which can be tabbed to.\n//>>docs: https://api.jqueryui.com/tabbable-selector/\n\n\nvar tabbable = $.extend( $.expr.pseudos, {\n\ttabbable: function( element ) {\n\t\tvar tabIndex = $.attr( element, \"tabindex\" ),\n\t\t\thasTabindex = tabIndex != null;\n\t\treturn ( !hasTabindex || tabIndex >= 0 ) && $.ui.focusable( element, hasTabindex );\n\t}\n} );\n\n\n/*!\n * jQuery UI Unique ID 1.13.3\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n//>>label: uniqueId\n//>>group: Core\n//>>description: Functions to generate and remove uniqueId's\n//>>docs: https://api.jqueryui.com/uniqueId/\n\n\nvar uniqueId = $.fn.extend( {\n\tuniqueId: ( function() {\n\t\tvar uuid = 0;\n\n\t\treturn function() {\n\t\t\treturn this.each( function() {\n\t\t\t\tif ( !this.id ) {\n\t\t\t\t\tthis.id = \"ui-id-\" + ( ++uuid );\n\t\t\t\t}\n\t\t\t} );\n\t\t};\n\t} )(),\n\n\tremoveUniqueId: function() {\n\t\treturn this.each( function() {\n\t\t\tif ( /^ui-id-\\d+$/.test( this.id ) ) {\n\t\t\t\t$( this ).removeAttr( \"id\" );\n\t\t\t}\n\t\t} );\n\t}\n} );\n\n\n/*!\n * jQuery UI Accordion 1.13.3\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n//>>label: Accordion\n//>>group: Widgets\n/* eslint-disable max-len */\n//>>description: Displays collapsible content panels for presenting information in a limited amount of space.\n/* eslint-enable max-len */\n//>>docs: https://api.jqueryui.com/accordion/\n//>>demos: https://jqueryui.com/accordion/\n//>>css.structure: ../../themes/base/core.css\n//>>css.structure: ../../themes/base/accordion.css\n//>>css.theme: ../../themes/base/theme.css\n\n\nvar widgetsAccordion = $.widget( \"ui.accordion\", {\n\tversion: \"1.13.3\",\n\toptions: {\n\t\tactive: 0,\n\t\tanimate: {},\n\t\tclasses: {\n\t\t\t\"ui-accordion-header\": \"ui-corner-top\",\n\t\t\t\"ui-accordion-header-collapsed\": \"ui-corner-all\",\n\t\t\t\"ui-accordion-content\": \"ui-corner-bottom\"\n\t\t},\n\t\tcollapsible: false,\n\t\tevent: \"click\",\n\t\theader: function( elem ) {\n\t\t\treturn elem.find( \"> li > :first-child\" ).add( elem.find( \"> :not(li)\" ).even() );\n\t\t},\n\t\theightStyle: \"auto\",\n\t\ticons: {\n\t\t\tactiveHeader: \"ui-icon-triangle-1-s\",\n\t\t\theader: \"ui-icon-triangle-1-e\"\n\t\t},\n\n\t\t// Callbacks\n\t\tactivate: null,\n\t\tbeforeActivate: null\n\t},\n\n\thideProps: {\n\t\tborderTopWidth: \"hide\",\n\t\tborderBottomWidth: \"hide\",\n\t\tpaddingTop: \"hide\",\n\t\tpaddingBottom: \"hide\",\n\t\theight: \"hide\"\n\t},\n\n\tshowProps: {\n\t\tborderTopWidth: \"show\",\n\t\tborderBottomWidth: \"show\",\n\t\tpaddingTop: \"show\",\n\t\tpaddingBottom: \"show\",\n\t\theight: \"show\"\n\t},\n\n\t_create: function() {\n\t\tvar options = this.options;\n\n\t\tthis.prevShow = this.prevHide = $();\n\t\tthis._addClass( \"ui-accordion\", \"ui-widget ui-helper-reset\" );\n\t\tthis.element.attr( \"role\", \"tablist\" );\n\n\t\t// Don't allow collapsible: false and active: false / null\n\t\tif ( !options.collapsible && ( options.active === false || options.active == null ) ) {\n\t\t\toptions.active = 0;\n\t\t}\n\n\t\tthis._processPanels();\n\n\t\t// handle negative values\n\t\tif ( options.active < 0 ) {\n\t\t\toptions.active += this.headers.length;\n\t\t}\n\t\tthis._refresh();\n\t},\n\n\t_getCreateEventData: function() {\n\t\treturn {\n\t\t\theader: this.active,\n\t\t\tpanel: !this.active.length ? $() : this.active.next()\n\t\t};\n\t},\n\n\t_createIcons: function() {\n\t\tvar icon, children,\n\t\t\ticons = this.options.icons;\n\n\t\tif ( icons ) {\n\t\t\ticon = $( \"\" );\n\t\t\tthis._addClass( icon, \"ui-accordion-header-icon\", \"ui-icon \" + icons.header );\n\t\t\ticon.prependTo( this.headers );\n\t\t\tchildren = this.active.children( \".ui-accordion-header-icon\" );\n\t\t\tthis._removeClass( children, icons.header )\n\t\t\t\t._addClass( children, null, icons.activeHeader )\n\t\t\t\t._addClass( this.headers, \"ui-accordion-icons\" );\n\t\t}\n\t},\n\n\t_destroyIcons: function() {\n\t\tthis._removeClass( this.headers, \"ui-accordion-icons\" );\n\t\tthis.headers.children( \".ui-accordion-header-icon\" ).remove();\n\t},\n\n\t_destroy: function() {\n\t\tvar contents;\n\n\t\t// Clean up main element\n\t\tthis.element.removeAttr( \"role\" );\n\n\t\t// Clean up headers\n\t\tthis.headers\n\t\t\t.removeAttr( \"role aria-expanded aria-selected aria-controls tabIndex\" )\n\t\t\t.removeUniqueId();\n\n\t\tthis._destroyIcons();\n\n\t\t// Clean up content panels\n\t\tcontents = this.headers.next()\n\t\t\t.css( \"display\", \"\" )\n\t\t\t.removeAttr( \"role aria-hidden aria-labelledby\" )\n\t\t\t.removeUniqueId();\n\n\t\tif ( this.options.heightStyle !== \"content\" ) {\n\t\t\tcontents.css( \"height\", \"\" );\n\t\t}\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tif ( key === \"active\" ) {\n\n\t\t\t// _activate() will handle invalid values and update this.options\n\t\t\tthis._activate( value );\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key === \"event\" ) {\n\t\t\tif ( this.options.event ) {\n\t\t\t\tthis._off( this.headers, this.options.event );\n\t\t\t}\n\t\t\tthis._setupEvents( value );\n\t\t}\n\n\t\tthis._super( key, value );\n\n\t\t// Setting collapsible: false while collapsed; open first panel\n\t\tif ( key === \"collapsible\" && !value && this.options.active === false ) {\n\t\t\tthis._activate( 0 );\n\t\t}\n\n\t\tif ( key === \"icons\" ) {\n\t\t\tthis._destroyIcons();\n\t\t\tif ( value ) {\n\t\t\t\tthis._createIcons();\n\t\t\t}\n\t\t}\n\t},\n\n\t_setOptionDisabled: function( value ) {\n\t\tthis._super( value );\n\n\t\tthis.element.attr( \"aria-disabled\", value );\n\n\t\t// Support: IE8 Only\n\t\t// #5332 / #6059 - opacity doesn't cascade to positioned elements in IE\n\t\t// so we need to add the disabled class to the headers and panels\n\t\tthis._toggleClass( null, \"ui-state-disabled\", !!value );\n\t\tthis._toggleClass( this.headers.add( this.headers.next() ), null, \"ui-state-disabled\",\n\t\t\t!!value );\n\t},\n\n\t_keydown: function( event ) {\n\t\tif ( event.altKey || event.ctrlKey ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar keyCode = $.ui.keyCode,\n\t\t\tlength = this.headers.length,\n\t\t\tcurrentIndex = this.headers.index( event.target ),\n\t\t\ttoFocus = false;\n\n\t\tswitch ( event.keyCode ) {\n\t\tcase keyCode.RIGHT:\n\t\tcase keyCode.DOWN:\n\t\t\ttoFocus = this.headers[ ( currentIndex + 1 ) % length ];\n\t\t\tbreak;\n\t\tcase keyCode.LEFT:\n\t\tcase keyCode.UP:\n\t\t\ttoFocus = this.headers[ ( currentIndex - 1 + length ) % length ];\n\t\t\tbreak;\n\t\tcase keyCode.SPACE:\n\t\tcase keyCode.ENTER:\n\t\t\tthis._eventHandler( event );\n\t\t\tbreak;\n\t\tcase keyCode.HOME:\n\t\t\ttoFocus = this.headers[ 0 ];\n\t\t\tbreak;\n\t\tcase keyCode.END:\n\t\t\ttoFocus = this.headers[ length - 1 ];\n\t\t\tbreak;\n\t\t}\n\n\t\tif ( toFocus ) {\n\t\t\t$( event.target ).attr( \"tabIndex\", -1 );\n\t\t\t$( toFocus ).attr( \"tabIndex\", 0 );\n\t\t\t$( toFocus ).trigger( \"focus\" );\n\t\t\tevent.preventDefault();\n\t\t}\n\t},\n\n\t_panelKeyDown: function( event ) {\n\t\tif ( event.keyCode === $.ui.keyCode.UP && event.ctrlKey ) {\n\t\t\t$( event.currentTarget ).prev().trigger( \"focus\" );\n\t\t}\n\t},\n\n\trefresh: function() {\n\t\tvar options = this.options;\n\t\tthis._processPanels();\n\n\t\t// Was collapsed or no panel\n\t\tif ( ( options.active === false && options.collapsible === true ) ||\n\t\t\t\t!this.headers.length ) {\n\t\t\toptions.active = false;\n\t\t\tthis.active = $();\n\n\t\t// active false only when collapsible is true\n\t\t} else if ( options.active === false ) {\n\t\t\tthis._activate( 0 );\n\n\t\t// was active, but active panel is gone\n\t\t} else if ( this.active.length && !$.contains( this.element[ 0 ], this.active[ 0 ] ) ) {\n\n\t\t\t// all remaining panel are disabled\n\t\t\tif ( this.headers.length === this.headers.find( \".ui-state-disabled\" ).length ) {\n\t\t\t\toptions.active = false;\n\t\t\t\tthis.active = $();\n\n\t\t\t// activate previous panel\n\t\t\t} else {\n\t\t\t\tthis._activate( Math.max( 0, options.active - 1 ) );\n\t\t\t}\n\n\t\t// was active, active panel still exists\n\t\t} else {\n\n\t\t\t// make sure active index is correct\n\t\t\toptions.active = this.headers.index( this.active );\n\t\t}\n\n\t\tthis._destroyIcons();\n\n\t\tthis._refresh();\n\t},\n\n\t_processPanels: function() {\n\t\tvar prevHeaders = this.headers,\n\t\t\tprevPanels = this.panels;\n\n\t\tif ( typeof this.options.header === \"function\" ) {\n\t\t\tthis.headers = this.options.header( this.element );\n\t\t} else {\n\t\t\tthis.headers = this.element.find( this.options.header );\n\t\t}\n\t\tthis._addClass( this.headers, \"ui-accordion-header ui-accordion-header-collapsed\",\n\t\t\t\"ui-state-default\" );\n\n\t\tthis.panels = this.headers.next().filter( \":not(.ui-accordion-content-active)\" ).hide();\n\t\tthis._addClass( this.panels, \"ui-accordion-content\", \"ui-helper-reset ui-widget-content\" );\n\n\t\t// Avoid memory leaks (#10056)\n\t\tif ( prevPanels ) {\n\t\t\tthis._off( prevHeaders.not( this.headers ) );\n\t\t\tthis._off( prevPanels.not( this.panels ) );\n\t\t}\n\t},\n\n\t_refresh: function() {\n\t\tvar maxHeight,\n\t\t\toptions = this.options,\n\t\t\theightStyle = options.heightStyle,\n\t\t\tparent = this.element.parent();\n\n\t\tthis.active = this._findActive( options.active );\n\t\tthis._addClass( this.active, \"ui-accordion-header-active\", \"ui-state-active\" )\n\t\t\t._removeClass( this.active, \"ui-accordion-header-collapsed\" );\n\t\tthis._addClass( this.active.next(), \"ui-accordion-content-active\" );\n\t\tthis.active.next().show();\n\n\t\tthis.headers\n\t\t\t.attr( \"role\", \"tab\" )\n\t\t\t.each( function() {\n\t\t\t\tvar header = $( this ),\n\t\t\t\t\theaderId = header.uniqueId().attr( \"id\" ),\n\t\t\t\t\tpanel = header.next(),\n\t\t\t\t\tpanelId = panel.uniqueId().attr( \"id\" );\n\t\t\t\theader.attr( \"aria-controls\", panelId );\n\t\t\t\tpanel.attr( \"aria-labelledby\", headerId );\n\t\t\t} )\n\t\t\t.next()\n\t\t\t\t.attr( \"role\", \"tabpanel\" );\n\n\t\tthis.headers\n\t\t\t.not( this.active )\n\t\t\t\t.attr( {\n\t\t\t\t\t\"aria-selected\": \"false\",\n\t\t\t\t\t\"aria-expanded\": \"false\",\n\t\t\t\t\ttabIndex: -1\n\t\t\t\t} )\n\t\t\t\t.next()\n\t\t\t\t\t.attr( {\n\t\t\t\t\t\t\"aria-hidden\": \"true\"\n\t\t\t\t\t} )\n\t\t\t\t\t.hide();\n\n\t\t// Make sure at least one header is in the tab order\n\t\tif ( !this.active.length ) {\n\t\t\tthis.headers.eq( 0 ).attr( \"tabIndex\", 0 );\n\t\t} else {\n\t\t\tthis.active.attr( {\n\t\t\t\t\"aria-selected\": \"true\",\n\t\t\t\t\"aria-expanded\": \"true\",\n\t\t\t\ttabIndex: 0\n\t\t\t} )\n\t\t\t\t.next()\n\t\t\t\t\t.attr( {\n\t\t\t\t\t\t\"aria-hidden\": \"false\"\n\t\t\t\t\t} );\n\t\t}\n\n\t\tthis._createIcons();\n\n\t\tthis._setupEvents( options.event );\n\n\t\tif ( heightStyle === \"fill\" ) {\n\t\t\tmaxHeight = parent.height();\n\t\t\tthis.element.siblings( \":visible\" ).each( function() {\n\t\t\t\tvar elem = $( this ),\n\t\t\t\t\tposition = elem.css( \"position\" );\n\n\t\t\t\tif ( position === \"absolute\" || position === \"fixed\" ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tmaxHeight -= elem.outerHeight( true );\n\t\t\t} );\n\n\t\t\tthis.headers.each( function() {\n\t\t\t\tmaxHeight -= $( this ).outerHeight( true );\n\t\t\t} );\n\n\t\t\tthis.headers.next()\n\t\t\t\t.each( function() {\n\t\t\t\t\t$( this ).height( Math.max( 0, maxHeight -\n\t\t\t\t\t\t$( this ).innerHeight() + $( this ).height() ) );\n\t\t\t\t} )\n\t\t\t\t.css( \"overflow\", \"auto\" );\n\t\t} else if ( heightStyle === \"auto\" ) {\n\t\t\tmaxHeight = 0;\n\t\t\tthis.headers.next()\n\t\t\t\t.each( function() {\n\t\t\t\t\tvar isVisible = $( this ).is( \":visible\" );\n\t\t\t\t\tif ( !isVisible ) {\n\t\t\t\t\t\t$( this ).show();\n\t\t\t\t\t}\n\t\t\t\t\tmaxHeight = Math.max( maxHeight, $( this ).css( \"height\", \"\" ).height() );\n\t\t\t\t\tif ( !isVisible ) {\n\t\t\t\t\t\t$( this ).hide();\n\t\t\t\t\t}\n\t\t\t\t} )\n\t\t\t\t.height( maxHeight );\n\t\t}\n\t},\n\n\t_activate: function( index ) {\n\t\tvar active = this._findActive( index )[ 0 ];\n\n\t\t// Trying to activate the already active panel\n\t\tif ( active === this.active[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Trying to collapse, simulate a click on the currently active header\n\t\tactive = active || this.active[ 0 ];\n\n\t\tthis._eventHandler( {\n\t\t\ttarget: active,\n\t\t\tcurrentTarget: active,\n\t\t\tpreventDefault: $.noop\n\t\t} );\n\t},\n\n\t_findActive: function( selector ) {\n\t\treturn typeof selector === \"number\" ? this.headers.eq( selector ) : $();\n\t},\n\n\t_setupEvents: function( event ) {\n\t\tvar events = {\n\t\t\tkeydown: \"_keydown\"\n\t\t};\n\t\tif ( event ) {\n\t\t\t$.each( event.split( \" \" ), function( index, eventName ) {\n\t\t\t\tevents[ eventName ] = \"_eventHandler\";\n\t\t\t} );\n\t\t}\n\n\t\tthis._off( this.headers.add( this.headers.next() ) );\n\t\tthis._on( this.headers, events );\n\t\tthis._on( this.headers.next(), { keydown: \"_panelKeyDown\" } );\n\t\tthis._hoverable( this.headers );\n\t\tthis._focusable( this.headers );\n\t},\n\n\t_eventHandler: function( event ) {\n\t\tvar activeChildren, clickedChildren,\n\t\t\toptions = this.options,\n\t\t\tactive = this.active,\n\t\t\tclicked = $( event.currentTarget ),\n\t\t\tclickedIsActive = clicked[ 0 ] === active[ 0 ],\n\t\t\tcollapsing = clickedIsActive && options.collapsible,\n\t\t\ttoShow = collapsing ? $() : clicked.next(),\n\t\t\ttoHide = active.next(),\n\t\t\teventData = {\n\t\t\t\toldHeader: active,\n\t\t\t\toldPanel: toHide,\n\t\t\t\tnewHeader: collapsing ? $() : clicked,\n\t\t\t\tnewPanel: toShow\n\t\t\t};\n\n\t\tevent.preventDefault();\n\n\t\tif (\n\n\t\t\t\t// click on active header, but not collapsible\n\t\t\t\t( clickedIsActive && !options.collapsible ) ||\n\n\t\t\t\t// allow canceling activation\n\t\t\t\t( this._trigger( \"beforeActivate\", event, eventData ) === false ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\toptions.active = collapsing ? false : this.headers.index( clicked );\n\n\t\t// When the call to ._toggle() comes after the class changes\n\t\t// it causes a very odd bug in IE 8 (see #6720)\n\t\tthis.active = clickedIsActive ? $() : clicked;\n\t\tthis._toggle( eventData );\n\n\t\t// Switch classes\n\t\t// corner classes on the previously active header stay after the animation\n\t\tthis._removeClass( active, \"ui-accordion-header-active\", \"ui-state-active\" );\n\t\tif ( options.icons ) {\n\t\t\tactiveChildren = active.children( \".ui-accordion-header-icon\" );\n\t\t\tthis._removeClass( activeChildren, null, options.icons.activeHeader )\n\t\t\t\t._addClass( activeChildren, null, options.icons.header );\n\t\t}\n\n\t\tif ( !clickedIsActive ) {\n\t\t\tthis._removeClass( clicked, \"ui-accordion-header-collapsed\" )\n\t\t\t\t._addClass( clicked, \"ui-accordion-header-active\", \"ui-state-active\" );\n\t\t\tif ( options.icons ) {\n\t\t\t\tclickedChildren = clicked.children( \".ui-accordion-header-icon\" );\n\t\t\t\tthis._removeClass( clickedChildren, null, options.icons.header )\n\t\t\t\t\t._addClass( clickedChildren, null, options.icons.activeHeader );\n\t\t\t}\n\n\t\t\tthis._addClass( clicked.next(), \"ui-accordion-content-active\" );\n\t\t}\n\t},\n\n\t_toggle: function( data ) {\n\t\tvar toShow = data.newPanel,\n\t\t\ttoHide = this.prevShow.length ? this.prevShow : data.oldPanel;\n\n\t\t// Handle activating a panel during the animation for another activation\n\t\tthis.prevShow.add( this.prevHide ).stop( true, true );\n\t\tthis.prevShow = toShow;\n\t\tthis.prevHide = toHide;\n\n\t\tif ( this.options.animate ) {\n\t\t\tthis._animate( toShow, toHide, data );\n\t\t} else {\n\t\t\ttoHide.hide();\n\t\t\ttoShow.show();\n\t\t\tthis._toggleComplete( data );\n\t\t}\n\n\t\ttoHide.attr( {\n\t\t\t\"aria-hidden\": \"true\"\n\t\t} );\n\t\ttoHide.prev().attr( {\n\t\t\t\"aria-selected\": \"false\",\n\t\t\t\"aria-expanded\": \"false\"\n\t\t} );\n\n\t\t// if we're switching panels, remove the old header from the tab order\n\t\t// if we're opening from collapsed state, remove the previous header from the tab order\n\t\t// if we're collapsing, then keep the collapsing header in the tab order\n\t\tif ( toShow.length && toHide.length ) {\n\t\t\ttoHide.prev().attr( {\n\t\t\t\t\"tabIndex\": -1,\n\t\t\t\t\"aria-expanded\": \"false\"\n\t\t\t} );\n\t\t} else if ( toShow.length ) {\n\t\t\tthis.headers.filter( function() {\n\t\t\t\treturn parseInt( $( this ).attr( \"tabIndex\" ), 10 ) === 0;\n\t\t\t} )\n\t\t\t\t.attr( \"tabIndex\", -1 );\n\t\t}\n\n\t\ttoShow\n\t\t\t.attr( \"aria-hidden\", \"false\" )\n\t\t\t.prev()\n\t\t\t\t.attr( {\n\t\t\t\t\t\"aria-selected\": \"true\",\n\t\t\t\t\t\"aria-expanded\": \"true\",\n\t\t\t\t\ttabIndex: 0\n\t\t\t\t} );\n\t},\n\n\t_animate: function( toShow, toHide, data ) {\n\t\tvar total, easing, duration,\n\t\t\tthat = this,\n\t\t\tadjust = 0,\n\t\t\tboxSizing = toShow.css( \"box-sizing\" ),\n\t\t\tdown = toShow.length &&\n\t\t\t\t( !toHide.length || ( toShow.index() < toHide.index() ) ),\n\t\t\tanimate = this.options.animate || {},\n\t\t\toptions = down && animate.down || animate,\n\t\t\tcomplete = function() {\n\t\t\t\tthat._toggleComplete( data );\n\t\t\t};\n\n\t\tif ( typeof options === \"number\" ) {\n\t\t\tduration = options;\n\t\t}\n\t\tif ( typeof options === \"string\" ) {\n\t\t\teasing = options;\n\t\t}\n\n\t\t// fall back from options to animation in case of partial down settings\n\t\teasing = easing || options.easing || animate.easing;\n\t\tduration = duration || options.duration || animate.duration;\n\n\t\tif ( !toHide.length ) {\n\t\t\treturn toShow.animate( this.showProps, duration, easing, complete );\n\t\t}\n\t\tif ( !toShow.length ) {\n\t\t\treturn toHide.animate( this.hideProps, duration, easing, complete );\n\t\t}\n\n\t\ttotal = toShow.show().outerHeight();\n\t\ttoHide.animate( this.hideProps, {\n\t\t\tduration: duration,\n\t\t\teasing: easing,\n\t\t\tstep: function( now, fx ) {\n\t\t\t\tfx.now = Math.round( now );\n\t\t\t}\n\t\t} );\n\t\ttoShow\n\t\t\t.hide()\n\t\t\t.animate( this.showProps, {\n\t\t\t\tduration: duration,\n\t\t\t\teasing: easing,\n\t\t\t\tcomplete: complete,\n\t\t\t\tstep: function( now, fx ) {\n\t\t\t\t\tfx.now = Math.round( now );\n\t\t\t\t\tif ( fx.prop !== \"height\" ) {\n\t\t\t\t\t\tif ( boxSizing === \"content-box\" ) {\n\t\t\t\t\t\t\tadjust += fx.now;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if ( that.options.heightStyle !== \"content\" ) {\n\t\t\t\t\t\tfx.now = Math.round( total - toHide.outerHeight() - adjust );\n\t\t\t\t\t\tadjust = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t},\n\n\t_toggleComplete: function( data ) {\n\t\tvar toHide = data.oldPanel,\n\t\t\tprev = toHide.prev();\n\n\t\tthis._removeClass( toHide, \"ui-accordion-content-active\" );\n\t\tthis._removeClass( prev, \"ui-accordion-header-active\" )\n\t\t\t._addClass( prev, \"ui-accordion-header-collapsed\" );\n\n\t\t// Work around for rendering bug in IE (#5421)\n\t\tif ( toHide.length ) {\n\t\t\ttoHide.parent()[ 0 ].className = toHide.parent()[ 0 ].className;\n\t\t}\n\t\tthis._trigger( \"activate\", null, data );\n\t}\n} );\n\n\n\nvar safeActiveElement = $.ui.safeActiveElement = function( document ) {\n\tvar activeElement;\n\n\t// Support: IE 9 only\n\t// IE9 throws an \"Unspecified error\" accessing document.activeElement from an ')\n\t\tthis.iframe.attr('id', iframeId)\n\t\tthis.iframe.hide()\n\n\t\tjoinChar = '&'\n\t\tif (src.indexOf('?') === -1) {\n\t\t\tjoinChar = '?'\n\t\t}\n\t\tthis.iframe.attr('src', src + joinChar + 'fallback=true&fallback_id=' + OCEventSource.iframeCount + '&' + dataStr)\n\t\t$('body').append(this.iframe)\n\t\tthis.useFallBack = true\n\t\tOCEventSource.iframeCount++\n\t}\n\t// add close listener\n\tthis.listen('__internal__', function(data) {\n\t\tif (data === 'close') {\n\t\t\tthis.close()\n\t\t}\n\t}.bind(this))\n}\nOCEventSource.fallBackSources = []\nOCEventSource.iframeCount = 0// number of fallback iframes\nOCEventSource.fallBackCallBack = function(id, type, data) {\n\tOCEventSource.fallBackSources[id].fallBackCallBack(type, data)\n}\nOCEventSource.prototype = {\n\ttypelessListeners: [],\n\tiframe: null,\n\tlisteners: {}, // only for fallback\n\tuseFallBack: false,\n\t/**\n\t * Fallback callback for browsers that don't have the\n\t * native EventSource object.\n\t *\n\t * Calls the registered listeners.\n\t *\n\t * @private\n\t * @param {String} type event type\n\t * @param {Object} data received data\n\t */\n\tfallBackCallBack: function(type, data) {\n\t\tvar i\n\t\t// ignore messages that might appear after closing\n\t\tif (this.closed) {\n\t\t\treturn\n\t\t}\n\t\tif (type) {\n\t\t\tif (typeof this.listeners.done !== 'undefined') {\n\t\t\t\tfor (i = 0; i < this.listeners[type].length; i++) {\n\t\t\t\t\tthis.listeners[type][i](data)\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor (i = 0; i < this.typelessListeners.length; i++) {\n\t\t\t\tthis.typelessListeners[i](data)\n\t\t\t}\n\t\t}\n\t},\n\tlastLength: 0, // for fallback\n\t/**\n\t * Listen to a given type of events.\n\t *\n\t * @param {String} type event type\n\t * @param {Function} callback event callback\n\t */\n\tlisten: function(type, callback) {\n\t\tif (callback && callback.call) {\n\n\t\t\tif (type) {\n\t\t\t\tif (this.useFallBack) {\n\t\t\t\t\tif (!this.listeners[type]) {\n\t\t\t\t\t\tthis.listeners[type] = []\n\t\t\t\t\t}\n\t\t\t\t\tthis.listeners[type].push(callback)\n\t\t\t\t} else {\n\t\t\t\t\tthis.source.addEventListener(type, function(e) {\n\t\t\t\t\t\tif (typeof e.data !== 'undefined') {\n\t\t\t\t\t\t\tcallback(JSON.parse(e.data))\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcallback('')\n\t\t\t\t\t\t}\n\t\t\t\t\t}, false)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.typelessListeners.push(callback)\n\t\t\t}\n\t\t}\n\t},\n\t/**\n\t * Closes this event source.\n\t */\n\tclose: function() {\n\t\tthis.closed = true\n\t\tif (typeof this.source !== 'undefined') {\n\t\t\tthis.source.close()\n\t\t}\n\t}\n}\n\nexport default OCEventSource\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport _ from 'underscore'\n/** @typedef {import('jquery')} jQuery */\nimport $ from 'jquery'\n\nimport { menuSpeed } from './constants.js'\n\nexport let currentMenu = null\nexport let currentMenuToggle = null\n\n/**\n * For menu toggling\n *\n * @param {jQuery} $toggle the toggle element\n * @param {jQuery} $menuEl the menu container element\n * @param {Function | undefined} toggle callback invoked everytime the menu is opened\n * @param {boolean} headerMenu is this a top right header menu?\n * @return {void}\n */\nexport const registerMenu = function($toggle, $menuEl, toggle, headerMenu) {\n\t$menuEl.addClass('menu')\n\tconst isClickableElement = $toggle.prop('tagName') === 'A' || $toggle.prop('tagName') === 'BUTTON'\n\n\t// On link and button, the enter key trigger a click event\n\t// Only use the click to avoid two fired events\n\t$toggle.on(isClickableElement ? 'click.menu' : 'click.menu keyup.menu', function(event) {\n\t\t// prevent the link event (append anchor to URL)\n\t\tevent.preventDefault()\n\n\t\t// allow enter key as a trigger\n\t\tif (event.key && event.key !== 'Enter') {\n\t\t\treturn\n\t\t}\n\n\t\tif ($menuEl.is(currentMenu)) {\n\t\t\thideMenus()\n\t\t\treturn\n\t\t} else if (currentMenu) {\n\t\t\t// another menu was open?\n\t\t\t// close it\n\t\t\thideMenus()\n\t\t}\n\n\t\tif (headerMenu === true) {\n\t\t\t$menuEl.parent().addClass('openedMenu')\n\t\t}\n\n\t\t// Set menu to expanded\n\t\t$toggle.attr('aria-expanded', true)\n\n\t\t$menuEl.slideToggle(menuSpeed, toggle)\n\t\tcurrentMenu = $menuEl\n\t\tcurrentMenuToggle = $toggle\n\t})\n}\n\n/**\n * Unregister a previously registered menu\n *\n * @param {jQuery} $toggle the toggle element\n * @param {jQuery} $menuEl the menu container element\n */\nexport const unregisterMenu = ($toggle, $menuEl) => {\n\t// close menu if opened\n\tif ($menuEl.is(currentMenu)) {\n\t\thideMenus()\n\t}\n\t$toggle.off('click.menu').removeClass('menutoggle')\n\t$menuEl.removeClass('menu')\n}\n\n/**\n * Hides any open menus\n *\n * @param {Function} complete callback when the hiding animation is done\n */\nexport const hideMenus = function(complete) {\n\tif (currentMenu) {\n\t\tconst lastMenu = currentMenu\n\t\tcurrentMenu.trigger(new $.Event('beforeHide'))\n\t\tcurrentMenu.slideUp(menuSpeed, function() {\n\t\t\tlastMenu.trigger(new $.Event('afterHide'))\n\t\t\tif (complete) {\n\t\t\t\tcomplete.apply(this, arguments)\n\t\t\t}\n\t\t})\n\t}\n\n\t// Set menu to closed\n\t$('.menutoggle').attr('aria-expanded', false)\n\tif (currentMenuToggle) {\n\t\tcurrentMenuToggle.attr('aria-expanded', false)\n\t}\n\n\t$('.openedMenu').removeClass('openedMenu')\n\tcurrentMenu = null\n\tcurrentMenuToggle = null\n}\n\n/**\n * Shows a given element as menu\n *\n * @param {object} [$toggle] menu toggle\n * @param {object} $menuEl menu element\n * @param {Function} complete callback when the showing animation is done\n */\nexport const showMenu = ($toggle, $menuEl, complete) => {\n\tif ($menuEl.is(currentMenu)) {\n\t\treturn\n\t}\n\thideMenus()\n\tcurrentMenu = $menuEl\n\tcurrentMenuToggle = $toggle\n\t$menuEl.trigger(new $.Event('beforeShow'))\n\t$menuEl.show()\n\t$menuEl.trigger(new $.Event('afterShow'))\n\t// no animation\n\tif (_.isFunction(complete)) {\n\t\tcomplete()\n\t}\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nexport const coreApps = ['', 'admin', 'log', 'core/search', 'core', '3rdparty']\nexport const menuSpeed = 50\nexport const PERMISSION_NONE = 0\nexport const PERMISSION_CREATE = 4\nexport const PERMISSION_READ = 1\nexport const PERMISSION_UPDATE = 2\nexport const PERMISSION_DELETE = 8\nexport const PERMISSION_SHARE = 16\nexport const PERMISSION_ALL = 31\nexport const TAG_FAVORITE = '_$!!$_'\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nconst isAdmin = !!window._oc_isadmin\n\n/**\n * Returns whether the current user is an administrator\n *\n * @return {boolean} true if the user is an admin, false otherwise\n * @since 9.0.0\n */\nexport const isUserAdmin = () => isAdmin\n","/**\n * SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors\n * SPDX-FileCopyrightText: 2014 ownCloud, Inc.\n * SPDX-FileCopyrightText: 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport Handlebars from 'handlebars'\nimport {\n\tloadTranslations,\n\ttranslate,\n\ttranslatePlural,\n\tregister,\n\tunregister,\n} from '@nextcloud/l10n'\n\n/**\n * L10N namespace with localization functions.\n *\n * @namespace OC.L10n\n * @deprecated 26.0.0 use https://www.npmjs.com/package/@nextcloud/l10n\n */\nconst L10n = {\n\n\t/**\n\t * Load an app's translation bundle if not loaded already.\n\t *\n\t * @deprecated 26.0.0 use `loadTranslations` from https://www.npmjs.com/package/@nextcloud/l10n\n\t *\n\t * @param {string} appName name of the app\n\t * @param {Function} callback callback to be called when\n\t * the translations are loaded\n\t * @return {Promise} promise\n\t */\n\tload: loadTranslations,\n\n\t/**\n\t * Register an app's translation bundle.\n\t *\n\t * @deprecated 26.0.0 use `register` from https://www.npmjs.com/package/@nextcloud/l10\n\t *\n\t * @param {string} appName name of the app\n\t * @param {Record} bundle bundle\n\t */\n\tregister,\n\n\t/**\n\t * @private\n\t * @deprecated 26.0.0 use `unregister` from https://www.npmjs.com/package/@nextcloud/l10n\n\t */\n\t_unregister: unregister,\n\n\t/**\n\t * Translate a string\n\t *\n\t * @deprecated 26.0.0 use `translate` from https://www.npmjs.com/package/@nextcloud/l10n\n\t *\n\t * @param {string} app the id of the app for which to translate the string\n\t * @param {string} text the string to translate\n\t * @param {object} [vars] map of placeholder key to value\n\t * @param {number} [count] number to replace %n with\n\t * @param {Array} [options] options array\n\t * @param {boolean} [options.escape=true] enable/disable auto escape of placeholders (by default enabled)\n\t * @param {boolean} [options.sanitize=true] enable/disable sanitization (by default enabled)\n\t * @return {string}\n\t */\n\ttranslate,\n\n\t/**\n\t * Translate a plural string\n\t *\n\t * @deprecated 26.0.0 use `translatePlural` from https://www.npmjs.com/package/@nextcloud/l10n\n\t *\n\t * @param {string} app the id of the app for which to translate the string\n\t * @param {string} textSingular the string to translate for exactly one object\n\t * @param {string} textPlural the string to translate for n objects\n\t * @param {number} count number to determine whether to use singular or plural\n\t * @param {object} [vars] map of placeholder key to value\n\t * @param {Array} [options] options array\n\t * @param {boolean} [options.escape=true] enable/disable auto escape of placeholders (by default enabled)\n\t * @return {string} Translated string\n\t */\n\ttranslatePlural,\n}\n\nexport default L10n\n\nHandlebars.registerHelper('t', function(app, text) {\n\treturn translate(app, text)\n})\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport {\n\tgetRootUrl as realGetRootUrl,\n} from '@nextcloud/router'\n\n/**\n * Creates a relative url for remote use\n *\n * @param {string} service id\n * @return {string} the url\n */\nexport const linkToRemoteBase = service => {\n\treturn realGetRootUrl() + '/remote.php/' + service\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport $ from 'jquery'\n\n/**\n * A little class to manage a status field for a \"saving\" process.\n * It can be used to display a starting message (e.g. \"Saving...\") and then\n * replace it with a green success message or a red error message.\n *\n * @namespace OC.msg\n */\nexport default {\n\t/**\n\t * Displayes a \"Saving...\" message in the given message placeholder\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t */\n\tstartSaving(selector) {\n\t\tthis.startAction(selector, t('core', 'Saving …'))\n\t},\n\n\t/**\n\t * Displayes a custom message in the given message placeholder\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {string} message Plain text message to display (no HTML allowed)\n\t */\n\tstartAction(selector, message) {\n\t\t$(selector).text(message)\n\t\t\t.removeClass('success')\n\t\t\t.removeClass('error')\n\t\t\t.stop(true, true)\n\t\t\t.show()\n\t},\n\n\t/**\n\t * Displayes an success/error message in the given selector\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {object} response Response of the server\n\t * @param {object} response.data Data of the servers response\n\t * @param {string} response.data.message Plain text message to display (no HTML allowed)\n\t * @param {string} response.status is being used to decide whether the message\n\t * is displayed as an error/success\n\t */\n\tfinishedSaving(selector, response) {\n\t\tthis.finishedAction(selector, response)\n\t},\n\n\t/**\n\t * Displayes an success/error message in the given selector\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {object} response Response of the server\n\t * @param {object} response.data Data of the servers response\n\t * @param {string} response.data.message Plain text message to display (no HTML allowed)\n\t * @param {string} response.status is being used to decide whether the message\n\t * is displayed as an error/success\n\t */\n\tfinishedAction(selector, response) {\n\t\tif (response.status === 'success') {\n\t\t\tthis.finishedSuccess(selector, response.data.message)\n\t\t} else {\n\t\t\tthis.finishedError(selector, response.data.message)\n\t\t}\n\t},\n\n\t/**\n\t * Displayes an success message in the given selector\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {string} message Plain text success message to display (no HTML allowed)\n\t */\n\tfinishedSuccess(selector, message) {\n\t\t$(selector).text(message)\n\t\t\t.addClass('success')\n\t\t\t.removeClass('error')\n\t\t\t.stop(true, true)\n\t\t\t.delay(3000)\n\t\t\t.fadeOut(900)\n\t\t\t.show()\n\t},\n\n\t/**\n\t * Displayes an error message in the given selector\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {string} message Plain text error message to display (no HTML allowed)\n\t */\n\tfinishedError(selector, message) {\n\t\t$(selector).text(message)\n\t\t\t.addClass('error')\n\t\t\t.removeClass('success')\n\t\t\t.show()\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 { confirmPassword, isPasswordConfirmationRequired } from '@nextcloud/password-confirmation'\nimport '@nextcloud/password-confirmation/dist/style.css'\n\n/**\n * @namespace OC.PasswordConfirmation\n */\nexport default {\n\n\trequiresPasswordConfirmation() {\n\t\treturn isPasswordConfirmationRequired()\n\t},\n\n\t/**\n\t * @param {Function} callback success callback function\n\t * @param {object} options options currently not used by confirmPassword\n\t * @param {Function} rejectCallback error callback function\n\t */\n\trequirePasswordConfirmation(callback, options, rejectCallback) {\n\t\tconfirmPassword().then(callback, rejectCallback)\n\t},\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nexport default {\n\n\t/**\n\t * @type {Array.}\n\t */\n\t_plugins: {},\n\n\t/**\n\t * Register plugin\n\t *\n\t * @param {string} targetName app name / class name to hook into\n\t * @param {OC.Plugin} plugin plugin\n\t */\n\tregister(targetName, plugin) {\n\t\tlet plugins = this._plugins[targetName]\n\t\tif (!plugins) {\n\t\t\tplugins = this._plugins[targetName] = []\n\t\t}\n\t\tplugins.push(plugin)\n\t},\n\n\t/**\n\t * Returns all plugin registered to the given target\n\t * name / app name / class name.\n\t *\n\t * @param {string} targetName app name / class name to hook into\n\t * @return {Array.} array of plugins\n\t */\n\tgetPlugins(targetName) {\n\t\treturn this._plugins[targetName] || []\n\t},\n\n\t/**\n\t * Call attach() on all plugins registered to the given target name.\n\t *\n\t * @param {string} targetName app name / class name\n\t * @param {object} targetObject to be extended\n\t * @param {object} [options] options\n\t */\n\tattach(targetName, targetObject, options) {\n\t\tconst plugins = this.getPlugins(targetName)\n\t\tfor (let i = 0; i < plugins.length; i++) {\n\t\t\tif (plugins[i].attach) {\n\t\t\t\tplugins[i].attach(targetObject, options)\n\t\t\t}\n\t\t}\n\t},\n\n\t/**\n\t * Call detach() on all plugins registered to the given target name.\n\t *\n\t * @param {string} targetName app name / class name\n\t * @param {object} targetObject to be extended\n\t * @param {object} [options] options\n\t */\n\tdetach(targetName, targetObject, options) {\n\t\tconst plugins = this.getPlugins(targetName)\n\t\tfor (let i = 0; i < plugins.length; i++) {\n\t\t\tif (plugins[i].detach) {\n\t\t\t\tplugins[i].detach(targetObject, options)\n\t\t\t}\n\t\t}\n\t},\n\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nexport const theme = window._theme || {}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport _ from 'underscore'\nimport OC from './index.js'\n\n/**\n * Utility class for the history API,\n * includes fallback to using the URL hash when\n * the browser doesn't support the history API.\n *\n * @namespace OC.Util.History\n */\nexport default {\n\n\t_handlers: [],\n\n\t/**\n\t * Push the current URL parameters to the history stack\n\t * and change the visible URL.\n\t * Note: this includes a workaround for IE8/IE9 that uses\n\t * the hash part instead of the search part.\n\t *\n\t * @param {object | string} params to append to the URL, can be either a string\n\t * or a map\n\t * @param {string} [url] URL to be used, otherwise the current URL will be used,\n\t * using the params as query string\n\t * @param {boolean} [replace] whether to replace instead of pushing\n\t */\n\t_pushState(params, url, replace) {\n\t\tlet strParams\n\t\tif (typeof (params) === 'string') {\n\t\t\tstrParams = params\n\t\t} else {\n\t\t\tstrParams = OC.buildQueryString(params)\n\t\t}\n\n\t\tif (window.history.pushState) {\n\t\t\turl = url || location.pathname + '?' + strParams\n\t\t\t// Workaround for bug with SVG and window.history.pushState on Firefox < 51\n\t\t\t// https://bugzilla.mozilla.org/show_bug.cgi?id=652991\n\t\t\tconst isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1\n\t\t\tif (isFirefox && parseInt(navigator.userAgent.split('/').pop()) < 51) {\n\t\t\t\tconst patterns = document.querySelectorAll('[fill^=\"url(#\"], [stroke^=\"url(#\"], [filter^=\"url(#invert\"]')\n\t\t\t\tfor (let i = 0, ii = patterns.length, pattern; i < ii; i++) {\n\t\t\t\t\tpattern = patterns[i]\n\t\t\t\t\t// eslint-disable-next-line no-self-assign\n\t\t\t\t\tpattern.style.fill = pattern.style.fill\n\t\t\t\t\t// eslint-disable-next-line no-self-assign\n\t\t\t\t\tpattern.style.stroke = pattern.style.stroke\n\t\t\t\t\tpattern.removeAttribute('filter')\n\t\t\t\t\tpattern.setAttribute('filter', 'url(#invert)')\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (replace) {\n\t\t\t\twindow.history.replaceState(params, '', url)\n\t\t\t} else {\n\t\t\t\twindow.history.pushState(params, '', url)\n\t\t\t}\n\t\t} else {\n\t\t\t// use URL hash for IE8\n\t\t\twindow.location.hash = '?' + strParams\n\t\t\t// inhibit next onhashchange that just added itself\n\t\t\t// to the event queue\n\t\t\tthis._cancelPop = true\n\t\t}\n\t},\n\n\t/**\n\t * Push the current URL parameters to the history stack\n\t * and change the visible URL.\n\t * Note: this includes a workaround for IE8/IE9 that uses\n\t * the hash part instead of the search part.\n\t *\n\t * @param {object | string} params to append to the URL, can be either a string or a map\n\t * @param {string} [url] URL to be used, otherwise the current URL will be used, using the params as query string\n\t */\n\tpushState(params, url) {\n\t\tthis._pushState(params, url, false)\n\t},\n\n\t/**\n\t * Push the current URL parameters to the history stack\n\t * and change the visible URL.\n\t * Note: this includes a workaround for IE8/IE9 that uses\n\t * the hash part instead of the search part.\n\t *\n\t * @param {object | string} params to append to the URL, can be either a string\n\t * or a map\n\t * @param {string} [url] URL to be used, otherwise the current URL will be used,\n\t * using the params as query string\n\t */\n\treplaceState(params, url) {\n\t\tthis._pushState(params, url, true)\n\t},\n\n\t/**\n\t * Add a popstate handler\n\t *\n\t * @param {Function} handler handler\n\t */\n\taddOnPopStateHandler(handler) {\n\t\tthis._handlers.push(handler)\n\t},\n\n\t/**\n\t * Parse a query string from the hash part of the URL.\n\t * (workaround for IE8 / IE9)\n\t *\n\t * @return {string}\n\t */\n\t_parseHashQuery() {\n\t\tconst hash = window.location.hash\n\t\tconst pos = hash.indexOf('?')\n\t\tif (pos >= 0) {\n\t\t\treturn hash.substr(pos + 1)\n\t\t}\n\t\tif (hash.length) {\n\t\t\t// remove hash sign\n\t\t\treturn hash.substr(1)\n\t\t}\n\t\treturn ''\n\t},\n\n\t_decodeQuery(query) {\n\t\treturn query.replace(/\\+/g, ' ')\n\t},\n\n\t/**\n\t * Parse the query/search part of the URL.\n\t * Also try and parse it from the URL hash (for IE8)\n\t *\n\t * @return {object} map of parameters\n\t */\n\tparseUrlQuery() {\n\t\tconst query = this._parseHashQuery()\n\t\tlet params\n\t\t// try and parse from URL hash first\n\t\tif (query) {\n\t\t\tparams = OC.parseQueryString(this._decodeQuery(query))\n\t\t}\n\t\t// else read from query attributes\n\t\tparams = _.extend(params || {}, OC.parseQueryString(this._decodeQuery(location.search)))\n\t\treturn params || {}\n\t},\n\n\t_onPopState(e) {\n\t\tif (this._cancelPop) {\n\t\t\tthis._cancelPop = false\n\t\t\treturn\n\t\t}\n\t\tlet params\n\t\tif (!this._handlers.length) {\n\t\t\treturn\n\t\t}\n\t\tparams = (e && e.state)\n\t\tif (_.isString(params)) {\n\t\t\tparams = OC.parseQueryString(params)\n\t\t} else if (!params) {\n\t\t\tparams = this.parseUrlQuery() || {}\n\t\t}\n\t\tfor (let i = 0; i < this._handlers.length; i++) {\n\t\t\tthis._handlers[i](params)\n\t\t}\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 moment from 'moment'\n\nimport History from './util-history.js'\nimport OC from './index.js'\nimport { formatFileSize as humanFileSize } from '@nextcloud/files'\n\n/**\n * @param {any} t -\n */\nfunction chunkify(t) {\n\t// Adapted from http://my.opera.com/GreyWyvern/blog/show.dml/1671288\n\tconst tz = []\n\tlet x = 0\n\tlet y = -1\n\tlet n = 0\n\tlet c\n\n\twhile (x < t.length) {\n\t\tc = t.charAt(x)\n\t\t// only include the dot in strings\n\t\tconst m = ((!n && c === '.') || (c >= '0' && c <= '9'))\n\t\tif (m !== n) {\n\t\t\t// next chunk\n\t\t\ty++\n\t\t\ttz[y] = ''\n\t\t\tn = m\n\t\t}\n\t\ttz[y] += c\n\t\tx++\n\t}\n\treturn tz\n}\n\n/**\n * Utility functions\n *\n * @namespace OC.Util\n */\nexport default {\n\n\tHistory,\n\n\t/**\n\t * @deprecated use https://nextcloud.github.io/nextcloud-files/functions/formatFileSize.html\n\t */\n\thumanFileSize,\n\n\t/**\n\t * Returns a file size in bytes from a humanly readable string\n\t * Makes 2kB to 2048.\n\t * Inspired by computerFileSize in helper.php\n\t *\n\t * @param {string} string file size in human-readable format\n\t * @return {number} or null if string could not be parsed\n\t *\n\t *\n\t */\n\tcomputerFileSize(string) {\n\t\tif (typeof string !== 'string') {\n\t\t\treturn null\n\t\t}\n\n\t\tconst s = string.toLowerCase().trim()\n\t\tlet bytes = null\n\n\t\tconst bytesArray = {\n\t\t\tb: 1,\n\t\t\tk: 1024,\n\t\t\tkb: 1024,\n\t\t\tmb: 1024 * 1024,\n\t\t\tm: 1024 * 1024,\n\t\t\tgb: 1024 * 1024 * 1024,\n\t\t\tg: 1024 * 1024 * 1024,\n\t\t\ttb: 1024 * 1024 * 1024 * 1024,\n\t\t\tt: 1024 * 1024 * 1024 * 1024,\n\t\t\tpb: 1024 * 1024 * 1024 * 1024 * 1024,\n\t\t\tp: 1024 * 1024 * 1024 * 1024 * 1024,\n\t\t}\n\n\t\tconst matches = s.match(/^[\\s+]?([0-9]*)(\\.([0-9]+))?( +)?([kmgtp]?b?)$/i)\n\t\tif (matches !== null) {\n\t\t\tbytes = parseFloat(s)\n\t\t\tif (!isFinite(bytes)) {\n\t\t\t\treturn null\n\t\t\t}\n\t\t} else {\n\t\t\treturn null\n\t\t}\n\t\tif (matches[5]) {\n\t\t\tbytes = bytes * bytesArray[matches[5]]\n\t\t}\n\n\t\tbytes = Math.round(bytes)\n\t\treturn bytes\n\t},\n\n\t/**\n\t * @param {string|number} timestamp timestamp\n\t * @param {string} format date format, see momentjs docs\n\t * @return {string} timestamp formatted as requested\n\t */\n\tformatDate(timestamp, format) {\n\t\tif (window.TESTING === undefined) {\n\t\t\tOC.debug && console.warn('OC.Util.formatDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment')\n\t\t}\n\t\tformat = format || 'LLL'\n\t\treturn moment(timestamp).format(format)\n\t},\n\n\t/**\n\t * @param {string|number} timestamp timestamp\n\t * @return {string} human readable difference from now\n\t */\n\trelativeModifiedDate(timestamp) {\n\t\tif (window.TESTING === undefined) {\n\t\t\tOC.debug && console.warn('OC.Util.relativeModifiedDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment')\n\t\t}\n\t\tconst diff = moment().diff(moment(timestamp))\n\t\tif (diff >= 0 && diff < 45000) {\n\t\t\treturn t('core', 'seconds ago')\n\t\t}\n\t\treturn moment(timestamp).fromNow()\n\t},\n\n\t/**\n\t * Returns the width of a generic browser scrollbar\n\t *\n\t * @return {number} width of scrollbar\n\t */\n\tgetScrollBarWidth() {\n\t\tif (this._scrollBarWidth) {\n\t\t\treturn this._scrollBarWidth\n\t\t}\n\n\t\tconst inner = document.createElement('p')\n\t\tinner.style.width = '100%'\n\t\tinner.style.height = '200px'\n\n\t\tconst outer = document.createElement('div')\n\t\touter.style.position = 'absolute'\n\t\touter.style.top = '0px'\n\t\touter.style.left = '0px'\n\t\touter.style.visibility = 'hidden'\n\t\touter.style.width = '200px'\n\t\touter.style.height = '150px'\n\t\touter.style.overflow = 'hidden'\n\t\touter.appendChild(inner)\n\n\t\tdocument.body.appendChild(outer)\n\t\tconst w1 = inner.offsetWidth\n\t\touter.style.overflow = 'scroll'\n\t\tlet w2 = inner.offsetWidth\n\t\tif (w1 === w2) {\n\t\t\tw2 = outer.clientWidth\n\t\t}\n\n\t\tdocument.body.removeChild(outer)\n\n\t\tthis._scrollBarWidth = (w1 - w2)\n\n\t\treturn this._scrollBarWidth\n\t},\n\n\t/**\n\t * Remove the time component from a given date\n\t *\n\t * @param {Date} date date\n\t * @return {Date} date with stripped time\n\t */\n\tstripTime(date) {\n\t\t// FIXME: likely to break when crossing DST\n\t\t// would be better to use a library like momentJS\n\t\treturn new Date(date.getFullYear(), date.getMonth(), date.getDate())\n\t},\n\n\t/**\n\t * Compare two strings to provide a natural sort\n\t *\n\t * @param {string} a first string to compare\n\t * @param {string} b second string to compare\n\t * @return {number} -1 if b comes before a, 1 if a comes before b\n\t * or 0 if the strings are identical\n\t */\n\tnaturalSortCompare(a, b) {\n\t\tlet x\n\t\tconst aa = chunkify(a)\n\t\tconst bb = chunkify(b)\n\n\t\tfor (x = 0; aa[x] && bb[x]; x++) {\n\t\t\tif (aa[x] !== bb[x]) {\n\t\t\t\tconst aNum = Number(aa[x]); const bNum = Number(bb[x])\n\t\t\t\t// note: == is correct here\n\t\t\t\t/* eslint-disable-next-line */\n\t\t\t\tif (aNum == aa[x] && bNum == bb[x]) {\n\t\t\t\t\treturn aNum - bNum\n\t\t\t\t} else {\n\t\t\t\t\t// Note: This locale setting isn't supported by all browsers but for the ones\n\t\t\t\t\t// that do there will be more consistency between client-server sorting\n\t\t\t\t\treturn aa[x].localeCompare(bb[x], OC.getLanguage())\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn aa.length - bb.length\n\t},\n\n\t/**\n\t * Calls the callback in a given interval until it returns true\n\t *\n\t * @param {Function} callback function to call on success\n\t * @param {number} interval in milliseconds\n\t */\n\twaitFor(callback, interval) {\n\t\tconst internalCallback = function() {\n\t\t\tif (callback() !== true) {\n\t\t\t\tsetTimeout(internalCallback, interval)\n\t\t\t}\n\t\t}\n\n\t\tinternalCallback()\n\t},\n\n\t/**\n\t * Checks if a cookie with the given name is present and is set to the provided value.\n\t *\n\t * @param {string} name name of the cookie\n\t * @param {string} value value of the cookie\n\t * @return {boolean} true if the cookie with the given name has the given value\n\t */\n\tisCookieSetToValue(name, value) {\n\t\tconst cookies = document.cookie.split(';')\n\t\tfor (let i = 0; i < cookies.length; i++) {\n\t\t\tconst cookie = cookies[i].split('=')\n\t\t\tif (cookie[0].trim() === name && cookie[1].trim() === value) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\t\treturn false\n\t},\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nconst base = window._oc_debug\n\nexport const debug = base\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nlet webroot = window._oc_webroot\n\nif (typeof webroot === 'undefined') {\n\twebroot = location.pathname\n\tconst pos = webroot.indexOf('/index.php/')\n\tif (pos !== -1) {\n\t\twebroot = webroot.substr(0, pos)\n\t} else {\n\t\twebroot = webroot.substr(0, webroot.lastIndexOf('/'))\n\t}\n}\n\nexport default webroot\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { subscribe } from '@nextcloud/event-bus'\n\nimport {\n\tajaxConnectionLostHandler,\n\tprocessAjaxError,\n\tregisterXHRForErrorProcessing,\n} from './xhr-error.js'\nimport Apps from './apps.js'\nimport { AppConfig, appConfig } from './appconfig.js'\nimport appswebroots from './appswebroots.js'\nimport Backbone from './backbone.js'\nimport {\n\tbasename,\n\tdirname,\n\tencodePath,\n\tisSamePath,\n\tjoinPaths,\n} from '@nextcloud/paths'\nimport {\n\tbuild as buildQueryString,\n\tparse as parseQueryString,\n} from './query-string.js'\nimport Config from './config.js'\nimport {\n\tcoreApps,\n\tmenuSpeed,\n\tPERMISSION_ALL,\n\tPERMISSION_CREATE,\n\tPERMISSION_DELETE,\n\tPERMISSION_NONE,\n\tPERMISSION_READ,\n\tPERMISSION_SHARE,\n\tPERMISSION_UPDATE,\n\tTAG_FAVORITE,\n} from './constants.js'\nimport { currentUser, getCurrentUser } from './currentuser.js'\nimport Dialogs from './dialogs.js'\nimport EventSource from './eventsource.js'\nimport { get, set } from './get_set.js'\nimport { getCapabilities } from './capabilities.js'\nimport {\n\tgetHost,\n\tgetHostName,\n\tgetPort,\n\tgetProtocol,\n} from './host.js'\nimport {\n\tgetToken as getRequestToken,\n} from './requesttoken.js'\nimport {\n\thideMenus,\n\tregisterMenu,\n\tshowMenu,\n\tunregisterMenu,\n} from './menu.js'\nimport { isUserAdmin } from './admin.js'\nimport L10N from './l10n.js'\nimport {\n\tgetCanonicalLocale,\n\tgetLanguage,\n\tgetLocale,\n} from '@nextcloud/l10n'\n\nimport {\n\tgenerateUrl,\n\tgenerateFilePath,\n\tgenerateOcsUrl,\n\tgenerateRemoteUrl,\n\tgetRootUrl,\n\timagePath,\n\tlinkTo,\n} from '@nextcloud/router'\n\nimport {\n\tlinkToRemoteBase,\n} from './routing.js'\nimport msg from './msg.js'\nimport Notification from './notification.js'\nimport PasswordConfirmation from './password-confirmation.js'\nimport Plugins from './plugins.js'\nimport { theme } from './theme.js'\nimport Util from './util.js'\nimport { debug } from './debug.js'\nimport { redirect, reload } from './navigation.js'\nimport webroot from './webroot.js'\n\n/** @namespace OC */\nexport default {\n\t/*\n\t * Constants\n\t */\n\tcoreApps,\n\tmenuSpeed,\n\tPERMISSION_ALL,\n\tPERMISSION_CREATE,\n\tPERMISSION_DELETE,\n\tPERMISSION_NONE,\n\tPERMISSION_READ,\n\tPERMISSION_SHARE,\n\tPERMISSION_UPDATE,\n\tTAG_FAVORITE,\n\n\t/*\n\t * Deprecated helpers to be removed\n\t */\n\t/**\n\t * Check if a user file is allowed to be handled.\n\t *\n\t * @param {string} file to check\n\t * @return {boolean}\n\t * @deprecated 17.0.0\n\t */\n\tfileIsBlacklisted: file => !!(file.match(Config.blacklist_files_regex)),\n\tApps,\n\tAppConfig,\n\tappConfig,\n\tappswebroots,\n\tBackbone,\n\tconfig: Config,\n\t/**\n\t * Currently logged in user or null if none\n\t *\n\t * @type {string}\n\t * @deprecated use `getCurrentUser` from https://www.npmjs.com/package/@nextcloud/auth\n\t */\n\tcurrentUser,\n\tdialogs: Dialogs,\n\tEventSource,\n\t/**\n\t * Returns the currently logged in user or null if there is no logged in\n\t * user (public page mode)\n\t *\n\t * @since 9.0.0\n\t * @deprecated 19.0.0 use `getCurrentUser` from https://www.npmjs.com/package/@nextcloud/auth\n\t */\n\tgetCurrentUser,\n\tisUserAdmin,\n\tL10N,\n\n\t/**\n\t * Ajax error handlers\n\t *\n\t * @todo remove from here and keep internally -> requires new tests\n\t */\n\t_ajaxConnectionLostHandler: ajaxConnectionLostHandler,\n\t_processAjaxError: processAjaxError,\n\tregisterXHRForErrorProcessing,\n\n\t/**\n\t * Capabilities\n\t *\n\t * @type {Array}\n\t * @deprecated 20.0.0 use @nextcloud/capabilities instead\n\t */\n\tgetCapabilities,\n\n\t/*\n\t * Legacy menu helpers\n\t */\n\thideMenus,\n\tregisterMenu,\n\tshowMenu,\n\tunregisterMenu,\n\n\t/*\n\t * Path helpers\n\t */\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tbasename,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tencodePath,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tdirname,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tisSamePath,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tjoinPaths,\n\n\t/**\n\t * Host (url) helpers\n\t */\n\tgetHost,\n\tgetHostName,\n\tgetPort,\n\tgetProtocol,\n\n\t/**\n\t * @deprecated 20.0.0 use `getCanonicalLocale` from https://www.npmjs.com/package/@nextcloud/l10n\n\t */\n\tgetCanonicalLocale,\n\t/**\n\t * @deprecated 26.0.0 use `getLocale` from https://www.npmjs.com/package/@nextcloud/l10n\n\t */\n\tgetLocale,\n\t/**\n\t * @deprecated 26.0.0 use `getLanguage` from https://www.npmjs.com/package/@nextcloud/l10n\n\t */\n\tgetLanguage,\n\n\t/**\n\t * Query string helpers\n\t */\n\tbuildQueryString,\n\tparseQueryString,\n\n\tmsg,\n\tNotification,\n\t/**\n\t * @deprecated 28.0.0 use methods from '@nextcloud/password-confirmation'\n\t */\n\tPasswordConfirmation,\n\tPlugins,\n\ttheme,\n\tUtil,\n\tdebug,\n\t/**\n\t * @deprecated 19.0.0 use `generateFilePath` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tfilePath: generateFilePath,\n\t/**\n\t * @deprecated 19.0.0 use `generateUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tgenerateUrl,\n\t/**\n\t * @deprecated 19.0.0 use https://lodash.com/docs#get\n\t */\n\tget: get(window),\n\t/**\n\t * @deprecated 19.0.0 use https://lodash.com/docs#set\n\t */\n\tset: set(window),\n\t/**\n\t * @deprecated 19.0.0 use `getRootUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tgetRootPath: getRootUrl,\n\t/**\n\t * @deprecated 19.0.0 use `imagePath` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\timagePath,\n\tredirect,\n\treload,\n\trequestToken: getRequestToken(),\n\t/**\n\t * @deprecated 19.0.0 use `linkTo` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tlinkTo,\n\t/**\n\t * @param {string} service service name\n\t * @param {number} version OCS API version\n\t * @return {string} OCS API base path\n\t * @deprecated 19.0.0 use `generateOcsUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tlinkToOCS: (service, version) => {\n\t\treturn generateOcsUrl(service, {}, {\n\t\t\tocsVersion: version || 1,\n\t\t}) + '/'\n\t},\n\t/**\n\t * @deprecated 19.0.0 use `generateRemoteUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tlinkToRemote: generateRemoteUrl,\n\tlinkToRemoteBase,\n\t/**\n\t * Relative path to Nextcloud root.\n\t * For example: \"/nextcloud\"\n\t *\n\t * @type {string}\n\t *\n\t * @deprecated 19.0.0 use `getRootUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t * @see OC#getRootPath\n\t */\n\twebroot,\n}\n\n// Keep the request token prop in sync\nsubscribe('csrf-token-update', e => {\n\tOC.requestToken = e.token\n\n\t// Logging might help debug (Sentry) issues\n\tconsole.info('OC.requestToken changed', e.token)\n})\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getCapabilities as realGetCapabilities } from '@nextcloud/capabilities'\n\n/**\n * Returns the capabilities\n *\n * @return {Array} capabilities\n *\n * @since 14.0.0\n */\nexport const getCapabilities = () => {\n\tOC.debug && console.warn('OC.getCapabilities is deprecated and will be removed in Nextcloud 21. See @nextcloud/capabilities')\n\treturn realGetCapabilities()\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nexport const getProtocol = () => window.location.protocol.split(':')[0]\n\n/**\n * Returns the host used to access this Nextcloud instance\n * Host is sometimes the same as the hostname but now always.\n *\n * Examples:\n * http://example.com => example.com\n * https://example.com => example.com\n * http://example.com:8080 => example.com:8080\n *\n * @return {string} host\n *\n * @since 8.2.0\n * @deprecated 17.0.0 use window.location.host directly\n */\nexport const getHost = () => window.location.host\n\n/**\n * Returns the hostname used to access this Nextcloud instance\n * The hostname is always stripped of the port\n *\n * @return {string} hostname\n * @since 9.0.0\n * @deprecated 17.0.0 use window.location.hostname directly\n */\nexport const getHostName = () => window.location.hostname\n\n/**\n * Returns the port number used to access this Nextcloud instance\n *\n * @return {number} port number\n *\n * @since 8.2.0\n * @deprecated 17.0.0 use window.location.port directly\n */\nexport const getPort = () => window.location.port\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nexport const get = context => name => {\n\tconst namespaces = name.split('.')\n\tconst tail = namespaces.pop()\n\n\tfor (let i = 0; i < namespaces.length; i++) {\n\t\tcontext = context[namespaces[i]]\n\t\tif (!context) {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn context[tail]\n}\n\n/**\n * Set a variable by name\n *\n * @param {string} context context\n * @return {Function} setter\n * @deprecated 19.0.0 use https://lodash.com/docs#set\n */\nexport const set = context => (name, value) => {\n\tconst namespaces = name.split('.')\n\tconst tail = namespaces.pop()\n\n\tfor (let i = 0; i < namespaces.length; i++) {\n\t\tif (!context[namespaces[i]]) {\n\t\t\tcontext[namespaces[i]] = {}\n\t\t}\n\t\tcontext = context[namespaces[i]]\n\t}\n\tcontext[tail] = value\n\treturn value\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nexport const redirect = targetURL => { window.location = targetURL }\n\n/**\n * Reloads the current page\n *\n * @deprecated 17.0.0 use window.location.reload directly\n */\nexport const reload = () => { window.location.reload() }\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport $ from 'jquery'\nimport { emit } from '@nextcloud/event-bus'\nimport { loadState } from '@nextcloud/initial-state'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { generateUrl } from '@nextcloud/router'\n\nimport OC from './OC/index.js'\nimport { setToken as setRequestToken, getToken as getRequestToken } from './OC/requesttoken.js'\n\nlet config = null\n/**\n * The legacy jsunit tests overwrite OC.config before calling initCore\n * therefore we need to wait with assigning the config fallback until initCore calls initSessionHeartBeat\n */\nconst loadConfig = () => {\n\ttry {\n\t\tconfig = loadState('core', 'config')\n\t} catch (e) {\n\t\t// This fallback is just for our legacy jsunit tests since we have no way to mock loadState calls\n\t\tconfig = OC.config\n\t}\n}\n\n/**\n * session heartbeat (defaults to enabled)\n *\n * @return {boolean}\n */\nconst keepSessionAlive = () => {\n\treturn config.session_keepalive === undefined\n\t\t|| !!config.session_keepalive\n}\n\n/**\n * get interval in seconds\n *\n * @return {number}\n */\nconst getInterval = () => {\n\tlet interval = NaN\n\tif (config.session_lifetime) {\n\t\tinterval = Math.floor(config.session_lifetime / 2)\n\t}\n\n\t// minimum one minute, max 24 hours, default 15 minutes\n\treturn Math.min(\n\t\t24 * 3600,\n\t\tMath.max(\n\t\t\t60,\n\t\t\tisNaN(interval) ? 900 : interval,\n\t\t),\n\t)\n}\n\nconst getToken = async () => {\n\tconst url = generateUrl('/csrftoken')\n\n\t// Not using Axios here as Axios is not stubbable with the sinon fake server\n\t// see https://stackoverflow.com/questions/41516044/sinon-mocha-test-with-async-ajax-calls-didnt-return-promises\n\t// see js/tests/specs/coreSpec.js for the tests\n\tconst resp = await $.get(url)\n\n\treturn resp.token\n}\n\nconst poll = async () => {\n\ttry {\n\t\tconst token = await getToken()\n\t\tsetRequestToken(token)\n\t} catch (e) {\n\t\tconsole.error('session heartbeat failed', e)\n\t}\n}\n\nconst startPolling = () => {\n\tconst interval = setInterval(poll, getInterval() * 1000)\n\n\tconsole.info('session heartbeat polling started')\n\n\treturn interval\n}\n\nconst registerAutoLogout = () => {\n\tif (!config.auto_logout || !getCurrentUser()) {\n\t\treturn\n\t}\n\n\tlet lastActive = Date.now()\n\twindow.addEventListener('mousemove', e => {\n\t\tlastActive = Date.now()\n\t\tlocalStorage.setItem('lastActive', lastActive)\n\t})\n\n\twindow.addEventListener('touchstart', e => {\n\t\tlastActive = Date.now()\n\t\tlocalStorage.setItem('lastActive', lastActive)\n\t})\n\n\twindow.addEventListener('storage', e => {\n\t\tif (e.key !== 'lastActive') {\n\t\t\treturn\n\t\t}\n\t\tlastActive = e.newValue\n\t})\n\n\tlet intervalId = 0\n\tconst logoutCheck = () => {\n\t\tconst timeout = Date.now() - config.session_lifetime * 1000\n\t\tif (lastActive < timeout) {\n\t\t\tclearTimeout(intervalId)\n\t\t\tconsole.info('Inactivity timout reached, logging out')\n\t\t\tconst logoutUrl = generateUrl('/logout') + '?requesttoken=' + encodeURIComponent(getRequestToken())\n\t\t\twindow.location = logoutUrl\n\t\t}\n\t}\n\tintervalId = setInterval(logoutCheck, 1000)\n}\n\n/**\n * Calls the server periodically to ensure that session and CSRF\n * token doesn't expire\n */\nexport const initSessionHeartBeat = () => {\n\tloadConfig()\n\n\tregisterAutoLogout()\n\n\tif (!keepSessionAlive()) {\n\t\tconsole.info('session heartbeat disabled')\n\t\treturn\n\t}\n\tlet interval = startPolling()\n\n\twindow.addEventListener('online', async () => {\n\t\tconsole.info('browser is online again, resuming heartbeat')\n\t\tinterval = startPolling()\n\t\ttry {\n\t\t\tawait poll()\n\t\t\tconsole.info('session token successfully updated after resuming network')\n\n\t\t\t// Let apps know we're online and requests will have the new token\n\t\t\temit('networkOnline', {\n\t\t\t\tsuccess: true,\n\t\t\t})\n\t\t} catch (e) {\n\t\t\tconsole.error('could not update session token after resuming network', e)\n\n\t\t\t// Let apps know we're online but requests might have an outdated token\n\t\t\temit('networkOnline', {\n\t\t\t\tsuccess: false,\n\t\t\t})\n\t\t}\n\t})\n\twindow.addEventListener('offline', () => {\n\t\tconsole.info('browser is offline, stopping heartbeat')\n\n\t\t// Let apps know we're offline\n\t\temit('networkOffline', {})\n\n\t\tclearInterval(interval)\n\t\tconsole.info('session heartbeat polling stopped')\n\t})\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcHeaderMenu',{staticClass:\"contactsmenu\",attrs:{\"id\":\"contactsmenu\",\"aria-label\":_vm.t('core', 'Search contacts')},on:{\"open\":_vm.handleOpen},scopedSlots:_vm._u([{key:\"trigger\",fn:function(){return [_c('Contacts',{staticClass:\"contactsmenu__trigger-icon\",attrs:{\"size\":20}})]},proxy:true}])},[_vm._v(\" \"),_c('div',{staticClass:\"contactsmenu__menu\"},[_c('div',{staticClass:\"contactsmenu__menu__input-wrapper\"},[_c('NcTextField',{ref:\"contactsMenuInput\",staticClass:\"contactsmenu__menu__search\",attrs:{\"id\":\"contactsmenu__menu__search\",\"value\":_vm.searchTerm,\"trailing-button-icon\":\"close\",\"label\":_vm.t('core', 'Search contacts'),\"trailing-button-label\":_vm.t('core','Reset search'),\"show-trailing-button\":_vm.searchTerm !== '',\"placeholder\":_vm.t('core', 'Search contacts …')},on:{\"update:value\":function($event){_vm.searchTerm=$event},\"input\":_vm.onInputDebounced,\"trailing-button-click\":_vm.onReset}})],1),_vm._v(\" \"),(_vm.error)?_c('NcEmptyContent',{attrs:{\"name\":_vm.t('core', 'Could not load your contacts')},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Magnify')]},proxy:true}],null,false,931131664)}):(_vm.loadingText)?_c('NcEmptyContent',{attrs:{\"name\":_vm.loadingText},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('NcLoadingIcon')]},proxy:true}])}):(_vm.contacts.length === 0)?_c('NcEmptyContent',{attrs:{\"name\":_vm.t('core', 'No contacts found')},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Magnify')]},proxy:true}])}):_c('div',{staticClass:\"contactsmenu__menu__content\"},[_c('div',{attrs:{\"id\":\"contactsmenu-contacts\"}},[_c('ul',_vm._l((_vm.contacts),function(contact){return _c('Contact',{key:contact.id,attrs:{\"contact\":contact}})}),1)]),_vm._v(\" \"),(_vm.contactsAppEnabled)?_c('div',{staticClass:\"contactsmenu__menu__content__footer\"},[_c('NcButton',{attrs:{\"type\":\"tertiary\",\"href\":_vm.contactsAppURL}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Show all contacts'))+\"\\n\\t\\t\\t\\t\")])],1):(_vm.canInstallApp)?_c('div',{staticClass:\"contactsmenu__menu__content__footer\"},[_c('NcButton',{attrs:{\"type\":\"tertiary\",\"href\":_vm.contactsAppMgmtURL}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Install the Contacts app'))+\"\\n\\t\\t\\t\\t\")])],1):_vm._e()])],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Contacts.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Contacts.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Contacts.vue?vue&type=template&id=38706835\"\nimport script from \"./Contacts.vue?vue&type=script&lang=js\"\nexport * from \"./Contacts.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 contacts-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\":\"M20,0H4V2H20V0M4,24H20V22H4V24M20,4H4A2,2 0 0,0 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6A2,2 0 0,0 20,4M12,6.75A2.25,2.25 0 0,1 14.25,9A2.25,2.25 0 0,1 12,11.25A2.25,2.25 0 0,1 9.75,9A2.25,2.25 0 0,1 12,6.75M17,17H7V15.5C7,13.83 10.33,13 12,13C13.67,13 17,13.83 17,15.5V17Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\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!./Contact.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!./Contact.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!./Contact.vue?vue&type=style&index=0&id=97ebdcaa&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \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!./Contact.vue?vue&type=style&index=0&id=97ebdcaa&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Contact.vue?vue&type=template&id=97ebdcaa&scoped=true\"\nimport script from \"./Contact.vue?vue&type=script&lang=js\"\nexport * from \"./Contact.vue?vue&type=script&lang=js\"\nimport style0 from \"./Contact.vue?vue&type=style&index=0&id=97ebdcaa&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 \"97ebdcaa\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('li',{staticClass:\"contact\"},[_c('NcAvatar',{staticClass:\"contact__avatar\",attrs:{\"size\":44,\"user\":_vm.contact.isUser ? _vm.contact.uid : undefined,\"is-no-user\":!_vm.contact.isUser,\"disable-menu\":true,\"display-name\":_vm.contact.avatarLabel,\"preloaded-user-status\":_vm.preloadedUserStatus}}),_vm._v(\" \"),_c('a',{staticClass:\"contact__body\",attrs:{\"href\":_vm.contact.profileUrl || _vm.contact.topAction?.hyperlink}},[_c('div',{staticClass:\"contact__body__full-name\"},[_vm._v(_vm._s(_vm.contact.fullName))]),_vm._v(\" \"),(_vm.contact.lastMessage)?_c('div',{staticClass:\"contact__body__last-message\"},[_vm._v(_vm._s(_vm.contact.lastMessage))]):_vm._e(),_vm._v(\" \"),(_vm.contact.statusMessage)?_c('div',{staticClass:\"contact__body__status-message\"},[_vm._v(_vm._s(_vm.contact.statusMessage))]):_c('div',{staticClass:\"contact__body__email-address\"},[_vm._v(_vm._s(_vm.contact.emailAddresses[0]))])]),_vm._v(\" \"),(_vm.actions.length)?_c('NcActions',{attrs:{\"inline\":_vm.contact.topAction ? 1 : 0}},[_vm._l((_vm.actions),function(action,idx){return [(action.hyperlink !== '#')?_c('NcActionLink',{key:idx,staticClass:\"other-actions\",attrs:{\"href\":action.hyperlink},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('img',{staticClass:\"contact__action__icon\",attrs:{\"aria-hidden\":\"true\",\"src\":action.icon}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(action.title)+\"\\n\\t\\t\\t\")]):_c('NcActionText',{key:idx,staticClass:\"other-actions\",scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('img',{staticClass:\"contact__action__icon\",attrs:{\"aria-hidden\":\"true\",\"src\":action.icon}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(action.title)+\"\\n\\t\\t\\t\")])]})],2):_vm._e()],1)\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 { getCurrentUser } from '@nextcloud/auth'\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nconst 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 * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport L10n from '../OC/l10n.js'\nimport OC from '../OC/index.js'\n\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tOC,\n\t\t}\n\t},\n\tmethods: {\n\t\tt: L10n.translate.bind(L10n),\n\t\tn: L10n.translatePlural.bind(L10n),\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!./ContactsMenu.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!./ContactsMenu.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!./ContactsMenu.vue?vue&type=style&index=0&id=5cad18ba&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \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!./ContactsMenu.vue?vue&type=style&index=0&id=5cad18ba&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./ContactsMenu.vue?vue&type=template&id=5cad18ba&scoped=true\"\nimport script from \"./ContactsMenu.vue?vue&type=script&lang=js\"\nexport * from \"./ContactsMenu.vue?vue&type=script&lang=js\"\nimport style0 from \"./ContactsMenu.vue?vue&type=style&index=0&id=5cad18ba&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 \"5cad18ba\",\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('nav',{ref:\"appMenu\",staticClass:\"app-menu\",attrs:{\"aria-label\":_vm.t('core', 'Applications menu')}},[_c('ul',{staticClass:\"app-menu__list\",attrs:{\"aria-label\":_vm.t('core', 'Apps')}},_vm._l((_vm.mainAppList),function(app){return _c('AppMenuEntry',{key:app.id,attrs:{\"app\":app}})}),1),_vm._v(\" \"),_c('NcActions',{staticClass:\"app-menu__overflow\",attrs:{\"aria-label\":_vm.t('core', 'More apps')}},_vm._l((_vm.popoverAppList),function(app){return _c('NcActionLink',{key:app.id,staticClass:\"app-menu__overflow-entry\",attrs:{\"aria-current\":app.active ? 'page' : false,\"href\":app.href,\"icon\":app.icon}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(app.name)+\"\\n\\t\\t\")])}),1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Circle.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Circle.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Circle.vue?vue&type=template&id=92ac0c26\"\nimport script from \"./Circle.vue?vue&type=script&lang=js\"\nexport * from \"./Circle.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 circle-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\":\"M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_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!./AppMenuIcon.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!./AppMenuIcon.vue?vue&type=script&setup=true&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('span',{staticClass:\"app-menu-icon\",attrs:{\"role\":\"img\",\"aria-hidden\":_setup.ariaHidden,\"aria-label\":_setup.ariaLabel}},[_c('img',{staticClass:\"app-menu-icon__icon\",attrs:{\"src\":_vm.app.icon,\"alt\":\"\"}}),_vm._v(\" \"),(_vm.app.unread)?_c(_setup.IconDot,{staticClass:\"app-menu-icon__unread\",attrs:{\"size\":10}}):_vm._e()],1)\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!./AppMenuIcon.vue?vue&type=style&index=0&id=e7078f90&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \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!./AppMenuIcon.vue?vue&type=style&index=0&id=e7078f90&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AppMenuIcon.vue?vue&type=template&id=e7078f90&scoped=true\"\nimport script from \"./AppMenuIcon.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AppMenuIcon.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./AppMenuIcon.vue?vue&type=style&index=0&id=e7078f90&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 \"e7078f90\",\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!./AppMenuEntry.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!./AppMenuEntry.vue?vue&type=script&setup=true&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('li',{ref:\"containerElement\",staticClass:\"app-menu-entry\",class:{\n\t\t'app-menu-entry--active': _vm.app.active,\n\t\t'app-menu-entry--truncated': _setup.needsSpace,\n\t}},[_c('a',{staticClass:\"app-menu-entry__link\",attrs:{\"href\":_vm.app.href,\"title\":_vm.app.name,\"aria-current\":_vm.app.active ? 'page' : false,\"target\":_vm.app.target ? '_blank' : undefined,\"rel\":_vm.app.target ? 'noopener noreferrer' : undefined}},[_c(_setup.AppMenuIcon,{staticClass:\"app-menu-entry__icon\",attrs:{\"app\":_vm.app}}),_vm._v(\" \"),_c('span',{ref:\"labelElement\",staticClass:\"app-menu-entry__label\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.app.name)+\"\\n\\t\\t\")])],1)])\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!./AppMenuEntry.vue?vue&type=style&index=0&id=1c485052&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \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!./AppMenuEntry.vue?vue&type=style&index=0&id=1c485052&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\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!./AppMenuEntry.vue?vue&type=style&index=1&id=1c485052&prod&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \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!./AppMenuEntry.vue?vue&type=style&index=1&id=1c485052&prod&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AppMenuEntry.vue?vue&type=template&id=1c485052&scoped=true\"\nimport script from \"./AppMenuEntry.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AppMenuEntry.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./AppMenuEntry.vue?vue&type=style&index=0&id=1c485052&prod&scoped=true&lang=scss\"\nimport style1 from \"./AppMenuEntry.vue?vue&type=style&index=1&id=1c485052&prod&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 \"1c485052\",\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!./AppMenu.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!./AppMenu.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/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppMenu.vue?vue&type=style&index=0&id=7661a89b&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \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!./AppMenu.vue?vue&type=style&index=0&id=7661a89b&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AppMenu.vue?vue&type=template&id=7661a89b&scoped=true\"\nimport script from \"./AppMenu.vue?vue&type=script&lang=ts\"\nexport * from \"./AppMenu.vue?vue&type=script&lang=ts\"\nimport style0 from \"./AppMenu.vue?vue&type=style&index=0&id=7661a89b&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 \"7661a89b\",\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('NcListItem',{attrs:{\"id\":_vm.profileEnabled ? undefined : _vm.id,\"anchor-id\":_vm.id,\"active\":_vm.active,\"compact\":\"\",\"href\":_vm.profileEnabled ? _vm.href : undefined,\"name\":_vm.displayName,\"target\":\"_self\"},scopedSlots:_vm._u([(_vm.profileEnabled)?{key:\"subname\",fn:function(){return [_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.name)+\"\\n\\t\")]},proxy:true}:null,(_vm.loading)?{key:\"indicator\",fn:function(){return [_c('NcLoadingIcon')]},proxy:true}:null],null,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!./AccountMenuProfileEntry.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!./AccountMenuProfileEntry.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./AccountMenuProfileEntry.vue?vue&type=template&id=348dadc6\"\nimport script from \"./AccountMenuProfileEntry.vue?vue&type=script&lang=ts\"\nexport * from \"./AccountMenuProfileEntry.vue?vue&type=script&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","\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!./AccountMenuEntry.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!./AccountMenuEntry.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!./AccountMenuEntry.vue?vue&type=style&index=0&id=2e0a74a6&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \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!./AccountMenuEntry.vue?vue&type=style&index=0&id=2e0a74a6&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AccountMenuEntry.vue?vue&type=template&id=2e0a74a6&scoped=true\"\nimport script from \"./AccountMenuEntry.vue?vue&type=script&lang=js\"\nexport * from \"./AccountMenuEntry.vue?vue&type=script&lang=js\"\nimport style0 from \"./AccountMenuEntry.vue?vue&type=style&index=0&id=2e0a74a6&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 \"2e0a74a6\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcListItem',{staticClass:\"account-menu-entry\",attrs:{\"id\":_vm.href ? undefined : _vm.id,\"anchor-id\":_vm.id,\"active\":_vm.active,\"compact\":\"\",\"href\":_vm.href,\"name\":_vm.name,\"target\":\"_self\"},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('img',{staticClass:\"account-menu-entry__icon\",class:{ 'account-menu-entry__icon--active': _vm.active },attrs:{\"src\":_vm.iconSource,\"alt\":\"\"}})]},proxy:true},(_vm.loading)?{key:\"indicator\",fn:function(){return [_c('NcLoadingIcon')]},proxy:true}:null],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('NcHeaderMenu',{staticClass:\"account-menu\",attrs:{\"id\":\"user-menu\",\"is-nav\":\"\",\"aria-label\":_vm.t('core', 'Settings menu'),\"description\":_vm.avatarDescription},scopedSlots:_vm._u([{key:\"trigger\",fn:function(){return [_c('NcAvatar',{key:String(_vm.showUserStatus),staticClass:\"account-menu__avatar\",attrs:{\"disable-menu\":\"\",\"disable-tooltip\":\"\",\"show-user-status\":_vm.showUserStatus,\"user\":_vm.currentUserId,\"preloaded-user-status\":_vm.userStatus}})]},proxy:true}])},[_vm._v(\" \"),_c('ul',{staticClass:\"account-menu__list\"},[_c('AccountMenuProfileEntry',{attrs:{\"id\":_vm.profileEntry.id,\"name\":_vm.profileEntry.name,\"href\":_vm.profileEntry.href,\"active\":_vm.profileEntry.active}}),_vm._v(\" \"),_vm._l((_vm.otherEntries),function(entry){return _c('AccountMenuEntry',{key:entry.id,attrs:{\"id\":entry.id,\"name\":entry.name,\"href\":entry.href,\"active\":entry.active,\"icon\":entry.icon}})})],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * SPDX-FileCopyrightText: 2020 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/**\n * Returns a list of all user-definable statuses\n *\n * @return {object[]}\n */\nconst getAllStatusOptions = () => {\n\treturn [{\n\t\ttype: 'online',\n\t\tlabel: t('user_status', 'Online'),\n\t}, {\n\t\ttype: 'away',\n\t\tlabel: t('user_status', 'Away'),\n\t}, {\n\t\ttype: 'dnd',\n\t\tlabel: t('user_status', 'Do not disturb'),\n\t\tsubline: t('user_status', 'Mute all notifications'),\n\t}, {\n\t\ttype: 'invisible',\n\t\tlabel: t('user_status', 'Invisible'),\n\t\tsubline: t('user_status', 'Appear offline'),\n\t}]\n}\n\nexport {\n\tgetAllStatusOptions,\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!./AccountMenu.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!./AccountMenu.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/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AccountMenu.vue?vue&type=style&index=0&id=a886d77a&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \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!./AccountMenu.vue?vue&type=style&index=0&id=a886d77a&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AccountMenu.vue?vue&type=template&id=a886d77a&scoped=true\"\nimport script from \"./AccountMenu.vue?vue&type=script&lang=ts\"\nexport * from \"./AccountMenu.vue?vue&type=script&lang=ts\"\nimport style0 from \"./AccountMenu.vue?vue&type=style&index=0&id=a886d77a&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 \"a886d77a\",\n null\n \n)\n\nexport default component.exports","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getRootUrl } from '@nextcloud/router'\n\n/**\n *\n * @param {string} url the URL to check\n * @return {boolean}\n */\nconst isRelativeUrl = (url) => {\n\treturn !url.startsWith('https://') && !url.startsWith('http://')\n}\n\n/**\n * @param {string} url The URL to check\n * @return {boolean} true if the URL points to this nextcloud instance\n */\nconst isNextcloudUrl = (url) => {\n\tconst nextcloudBaseUrl = window.location.protocol + '//' + window.location.host + getRootUrl()\n\t// if the URL is absolute and starts with the baseUrl+rootUrl\n\t// OR if the URL is relative and starts with rootUrl\n\treturn url.startsWith(nextcloudBaseUrl)\n\t\t|| (isRelativeUrl(url) && url.startsWith(getRootUrl()))\n}\n\n/**\n * Intercept XMLHttpRequest and fetch API calls to add X-Requested-With header\n *\n * This is also done in @nextcloud/axios but not all requests pass through that\n */\nexport const interceptRequests = () => {\n\tXMLHttpRequest.prototype.open = (function(open) {\n\t\treturn function(method, url, async) {\n\t\t\topen.apply(this, arguments)\n\t\t\tif (isNextcloudUrl(url) && !this.getResponseHeader('X-Requested-With')) {\n\t\t\t\tthis.setRequestHeader('X-Requested-With', 'XMLHttpRequest')\n\t\t\t}\n\t\t}\n\t})(XMLHttpRequest.prototype.open)\n\n\twindow.fetch = (function(fetch) {\n\t\treturn (resource, options) => {\n\t\t\t// fetch allows the `input` to be either a Request object or any stringifyable value\n\t\t\tif (!isNextcloudUrl(resource.url ?? resource.toString())) {\n\t\t\t\treturn fetch(resource, options)\n\t\t\t}\n\t\t\tif (!options) {\n\t\t\t\toptions = {}\n\t\t\t}\n\t\t\tif (!options.headers) {\n\t\t\t\toptions.headers = new Headers()\n\t\t\t}\n\n\t\t\tif (options.headers instanceof Headers && !options.headers.has('X-Requested-With')) {\n\t\t\t\toptions.headers.append('X-Requested-With', 'XMLHttpRequest')\n\t\t\t} else if (options.headers instanceof Object && !options.headers['X-Requested-With']) {\n\t\t\t\toptions.headers['X-Requested-With'] = 'XMLHttpRequest'\n\t\t\t}\n\n\t\t\treturn fetch(resource, options)\n\t\t}\n\t})(window.fetch)\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/* globals Snap */\nimport _ from 'underscore'\nimport $ from 'jquery'\nimport moment from 'moment'\n\nimport { initSessionHeartBeat } from './session-heartbeat.js'\nimport OC from './OC/index.js'\nimport { setUp as setUpContactsMenu } from './components/ContactsMenu.js'\nimport { setUp as setUpMainMenu } from './components/MainMenu.js'\nimport { setUp as setUpUserMenu } from './components/UserMenu.js'\nimport { interceptRequests } from './utils/xhr-request.js'\n\n// keep in sync with core/css/variables.scss\nconst breakpointMobileWidth = 1024\n\nconst initLiveTimestamps = () => {\n\t// Update live timestamps every 30 seconds\n\tsetInterval(() => {\n\t\t$('.live-relative-timestamp').each(function() {\n\t\t\tconst timestamp = parseInt($(this).attr('data-timestamp'), 10)\n\t\t\t$(this).text(moment(timestamp).fromNow())\n\t\t})\n\t}, 30 * 1000)\n}\n\n/**\n * Moment doesn't have aliases for every locale and doesn't parse some locale IDs correctly so we need to alias them\n */\nconst localeAliases = {\n\tzh: 'zh-cn',\n\tzh_Hans: 'zh-cn',\n\tzh_Hans_CN: 'zh-cn',\n\tzh_Hans_HK: 'zh-cn',\n\tzh_Hans_MO: 'zh-cn',\n\tzh_Hans_SG: 'zh-cn',\n\tzh_Hant: 'zh-hk',\n\tzh_Hant_HK: 'zh-hk',\n\tzh_Hant_MO: 'zh-mo',\n\tzh_Hant_TW: 'zh-tw',\n}\nlet locale = OC.getLocale()\nif (Object.prototype.hasOwnProperty.call(localeAliases, locale)) {\n\tlocale = localeAliases[locale]\n}\n\n/**\n * Set users locale to moment.js as soon as possible\n */\nmoment.locale(locale)\n\n/**\n * Initializes core\n */\nexport const initCore = () => {\n\tinterceptRequests()\n\n\t$(window).on('unload.main', () => { OC._unloadCalled = true })\n\t$(window).on('beforeunload.main', () => {\n\t\t// super-trick thanks to http://stackoverflow.com/a/4651049\n\t\t// in case another handler displays a confirmation dialog (ex: navigating away\n\t\t// during an upload), there are two possible outcomes: user clicked \"ok\" or\n\t\t// \"cancel\"\n\n\t\t// first timeout handler is called after unload dialog is closed\n\t\tsetTimeout(() => {\n\t\t\tOC._userIsNavigatingAway = true\n\n\t\t\t// second timeout event is only called if user cancelled (Chrome),\n\t\t\t// but in other browsers it might still be triggered, so need to\n\t\t\t// set a higher delay...\n\t\t\tsetTimeout(() => {\n\t\t\t\tif (!OC._unloadCalled) {\n\t\t\t\t\tOC._userIsNavigatingAway = false\n\t\t\t\t}\n\t\t\t}, 10000)\n\t\t}, 1)\n\t})\n\t$(document).on('ajaxError.main', function(event, request, settings) {\n\t\tif (settings && settings.allowAuthErrors) {\n\t\t\treturn\n\t\t}\n\t\tOC._processAjaxError(request)\n\t})\n\n\tinitSessionHeartBeat()\n\n\tOC.registerMenu($('#expand'), $('#expanddiv'), false, true)\n\n\t// toggle for menus\n\t$(document).on('mouseup.closemenus', event => {\n\t\tconst $el = $(event.target)\n\t\tif ($el.closest('.menu').length || $el.closest('.menutoggle').length) {\n\t\t\t// don't close when clicking on the menu directly or a menu toggle\n\t\t\treturn false\n\t\t}\n\n\t\tOC.hideMenus()\n\t})\n\n\tsetUpMainMenu()\n\tsetUpUserMenu()\n\tsetUpContactsMenu()\n\n\t// just add snapper for logged in users\n\t// and if the app doesn't handle the nav slider itself\n\tif ($('#app-navigation').length && !$('html').hasClass('lte9')\n\t\t&& !$('#app-content').hasClass('no-snapper')) {\n\n\t\t// App sidebar on mobile\n\t\tconst snapper = new Snap({\n\t\t\telement: document.getElementById('app-content'),\n\t\t\tdisable: 'right',\n\t\t\tmaxPosition: 300, // $navigation-width\n\t\t\tminDragDistance: 100,\n\t\t})\n\n\t\t$('#app-content').prepend('
            ')\n\n\t\t// keep track whether snapper is currently animating, and\n\t\t// prevent to call open or close while that is the case\n\t\t// to avoid duplicating events (snap.js doesn't check this)\n\t\tlet animating = false\n\t\tsnapper.on('animating', () => {\n\t\t\t// we need this because the trigger button\n\t\t\t// is also implicitly wired to close by snapper\n\t\t\tanimating = true\n\t\t})\n\t\tsnapper.on('animated', () => {\n\t\t\tanimating = false\n\t\t})\n\t\tsnapper.on('start', () => {\n\t\t\t// we need this because dragging triggers that\n\t\t\tanimating = true\n\t\t})\n\t\tsnapper.on('end', () => {\n\t\t\t// we need this because dragging stop triggers that\n\t\t\tanimating = false\n\t\t})\n\t\tsnapper.on('open', () => {\n\t\t\t$appNavigation.attr('aria-hidden', 'false')\n\t\t})\n\t\tsnapper.on('close', () => {\n\t\t\t$appNavigation.attr('aria-hidden', 'true')\n\t\t})\n\n\t\t// These are necessary because calling open or close\n\t\t// on snapper during an animation makes it trigger an\n\t\t// unfinishable animation, which itself will continue\n\t\t// triggering animating events and cause high CPU load,\n\t\t//\n\t\t// Ref https://github.com/jakiestfu/Snap.js/issues/216\n\t\tconst oldSnapperOpen = snapper.open\n\t\tconst oldSnapperClose = snapper.close\n\t\tconst _snapperOpen = () => {\n\t\t\tif (animating || snapper.state().state !== 'closed') {\n\t\t\t\treturn\n\t\t\t}\n\t\t\toldSnapperOpen('left')\n\t\t}\n\n\t\tconst _snapperClose = () => {\n\t\t\tif (animating || snapper.state().state === 'closed') {\n\t\t\t\treturn\n\t\t\t}\n\t\t\toldSnapperClose()\n\t\t}\n\n\t\t// Needs to be deferred to properly catch in-between\n\t\t// events that snap.js is triggering after dragging.\n\t\t//\n\t\t// Skipped when running unit tests as we are not testing\n\t\t// the snap.js workarounds...\n\t\tif (!window.TESTING) {\n\t\t\tsnapper.open = () => {\n\t\t\t\t_.defer(_snapperOpen)\n\t\t\t}\n\t\t\tsnapper.close = () => {\n\t\t\t\t_.defer(_snapperClose)\n\t\t\t}\n\t\t}\n\n\t\t$('#app-navigation-toggle').click((e) => {\n\t\t\t// close is implicit in the button by snap.js\n\t\t\tif (snapper.state().state !== 'left') {\n\t\t\t\tsnapper.open()\n\t\t\t}\n\t\t})\n\t\t$('#app-navigation-toggle').keypress(e => {\n\t\t\tif (snapper.state().state === 'left') {\n\t\t\t\tsnapper.close()\n\t\t\t} else {\n\t\t\t\tsnapper.open()\n\t\t\t}\n\t\t})\n\n\t\t// close sidebar when switching navigation entry\n\t\tconst $appNavigation = $('#app-navigation')\n\t\t$appNavigation.attr('aria-hidden', 'true')\n\t\t$appNavigation.delegate('a, :button', 'click', event => {\n\t\t\tconst $target = $(event.target)\n\t\t\t// don't hide navigation when changing settings or adding things\n\t\t\tif ($target.is('.app-navigation-noclose')\n\t\t\t\t|| $target.closest('.app-navigation-noclose').length) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif ($target.is('.app-navigation-entry-utils-menu-button')\n\t\t\t\t|| $target.closest('.app-navigation-entry-utils-menu-button').length) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif ($target.is('.add-new')\n\t\t\t\t|| $target.closest('.add-new').length) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif ($target.is('#app-settings')\n\t\t\t\t|| $target.closest('#app-settings').length) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tsnapper.close()\n\t\t})\n\n\t\tlet navigationBarSlideGestureEnabled = false\n\t\tlet navigationBarSlideGestureAllowed = true\n\t\tlet navigationBarSlideGestureEnablePending = false\n\n\t\tOC.allowNavigationBarSlideGesture = () => {\n\t\t\tnavigationBarSlideGestureAllowed = true\n\n\t\t\tif (navigationBarSlideGestureEnablePending) {\n\t\t\t\tsnapper.enable()\n\n\t\t\t\tnavigationBarSlideGestureEnabled = true\n\t\t\t\tnavigationBarSlideGestureEnablePending = false\n\t\t\t}\n\t\t}\n\n\t\tOC.disallowNavigationBarSlideGesture = () => {\n\t\t\tnavigationBarSlideGestureAllowed = false\n\n\t\t\tif (navigationBarSlideGestureEnabled) {\n\t\t\t\tconst endCurrentDrag = true\n\t\t\t\tsnapper.disable(endCurrentDrag)\n\n\t\t\t\tnavigationBarSlideGestureEnabled = false\n\t\t\t\tnavigationBarSlideGestureEnablePending = true\n\t\t\t}\n\t\t}\n\n\t\tconst toggleSnapperOnSize = () => {\n\t\t\tif ($(window).width() > breakpointMobileWidth) {\n\t\t\t\t$appNavigation.attr('aria-hidden', 'false')\n\t\t\t\tsnapper.close()\n\t\t\t\tsnapper.disable()\n\n\t\t\t\tnavigationBarSlideGestureEnabled = false\n\t\t\t\tnavigationBarSlideGestureEnablePending = false\n\t\t\t} else if (navigationBarSlideGestureAllowed) {\n\t\t\t\tsnapper.enable()\n\n\t\t\t\tnavigationBarSlideGestureEnabled = true\n\t\t\t\tnavigationBarSlideGestureEnablePending = false\n\t\t\t} else {\n\t\t\t\tnavigationBarSlideGestureEnablePending = true\n\t\t\t}\n\t\t}\n\n\t\t$(window).resize(_.debounce(toggleSnapperOnSize, 250))\n\n\t\t// initial call\n\t\ttoggleSnapperOnSize()\n\n\t}\n\n\tinitLiveTimestamps()\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { translate as t, translatePlural as n } from '@nextcloud/l10n'\nimport Vue from 'vue'\n\nimport AppMenu from './AppMenu.vue'\n\nexport const setUp = () => {\n\n\tVue.mixin({\n\t\tmethods: {\n\t\t\tt,\n\t\t\tn,\n\t\t},\n\t})\n\n\tconst container = document.getElementById('header-start__appmenu')\n\tif (!container) {\n\t\t// no container, possibly we're on a public page\n\t\treturn\n\t}\n\tconst AppMenuApp = Vue.extend(AppMenu)\n\tconst appMenu = new AppMenuApp({}).$mount(container)\n\n\tObject.assign(OC, {\n\t\tsetNavigationCounter(id, counter) {\n\t\t\tappMenu.setNavigationCounter(id, counter)\n\t\t},\n\t})\n\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport Vue from 'vue'\n\nimport AccountMenu from '../views/AccountMenu.vue'\n\nexport const setUp = () => {\n\tconst mountPoint = document.getElementById('user-menu')\n\tif (mountPoint) {\n\t\t// eslint-disable-next-line no-new\n\t\tnew Vue({\n\t\t\tel: mountPoint,\n\t\t\trender: h => h(AccountMenu),\n\t\t})\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 Vue from 'vue'\n\nimport ContactsMenu from '../views/ContactsMenu.vue'\n\n/**\n * @todo move to contacts menu code https://github.com/orgs/nextcloud/projects/31#card-21213129\n */\nexport const setUp = () => {\n\tconst mountPoint = document.getElementById('contactsmenu')\n\tif (mountPoint) {\n\t\t// eslint-disable-next-line no-new\n\t\tnew Vue({\n\t\t\tel: mountPoint,\n\t\t\trender: h => h(ContactsMenu),\n\t\t})\n\t}\n}\n","\n import API from \"!../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../css-loader/dist/cjs.js!./jquery-ui.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../css-loader/dist/cjs.js!./jquery-ui.css\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../css-loader/dist/cjs.js!./jquery-ui.theme.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../css-loader/dist/cjs.js!./jquery-ui.theme.css\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../css-loader/dist/cjs.js!./select2.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../css-loader/dist/cjs.js!./select2.css\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../css-loader/dist/cjs.js!./strengthify.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../css-loader/dist/cjs.js!./strengthify.css\";\n export default content && content.locals ? content.locals : undefined;\n","/**\n * SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport $ from 'jquery'\n\n/*\n * Detects links:\n * Either the http(s) protocol is given or two strings, basically limited to ascii with the last\n * word being at least one digit long,\n * followed by at least another character\n *\n * The downside: anything not ascii is excluded. Not sure how common it is in areas using different\n * alphabets… the upside: fake domains with similar looking characters won't be formatted as links\n *\n * This is a copy of the backend regex in IURLGenerator, make sure to adjust both when changing\n */\nconst urlRegex = /(\\s|^)(https?:\\/\\/)([-A-Z0-9+_.]+(?::[0-9]+)?(?:\\/[-A-Z0-9+&@#%?=~_|!:,.;()]*)*)(\\s|$)/ig\n\n/**\n * @param {any} content -\n */\nexport function plainToRich(content) {\n\treturn this.formatLinksRich(content)\n}\n\n/**\n * @param {any} content -\n */\nexport function richToPlain(content) {\n\treturn this.formatLinksPlain(content)\n}\n\n/**\n * @param {any} content -\n */\nexport function formatLinksRich(content) {\n\treturn content.replace(urlRegex, function(_, leadingSpace, protocol, url, trailingSpace) {\n\t\tlet linkText = url\n\t\tif (!protocol) {\n\t\t\tprotocol = 'https://'\n\t\t} else if (protocol === 'http://') {\n\t\t\tlinkText = protocol + url\n\t\t}\n\n\t\treturn leadingSpace + '' + linkText + '' + trailingSpace\n\t})\n}\n\n/**\n * @param {any} content -\n */\nexport function formatLinksPlain(content) {\n\tconst $content = $('
            ').html(content)\n\t$content.find('a').each(function() {\n\t\tconst $this = $(this)\n\t\t$this.html($this.attr('href'))\n\t})\n\treturn $content.html()\n}\n","/**\n * SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport _ from 'underscore'\nimport $ from 'jquery'\nimport { generateOcsUrl } from '@nextcloud/router'\n\n/**\n * @param {any} options -\n */\nexport function query(options) {\n\toptions = options || {}\n\tconst dismissOptions = options.dismiss || {}\n\t$.ajax({\n\t\ttype: 'GET',\n\t\turl: options.url || generateOcsUrl('core/whatsnew?format=json'),\n\t\tsuccess: options.success || function(data, statusText, xhr) {\n\t\t\tonQuerySuccess(data, statusText, xhr, dismissOptions)\n\t\t},\n\t\terror: options.error || onQueryError,\n\t})\n}\n\n/**\n * @param {any} version -\n * @param {any} options -\n */\nexport function dismiss(version, options) {\n\toptions = options || {}\n\t$.ajax({\n\t\ttype: 'POST',\n\t\turl: options.url || generateOcsUrl('core/whatsnew'),\n\t\tdata: { version: encodeURIComponent(version) },\n\t\tsuccess: options.success || onDismissSuccess,\n\t\terror: options.error || onDismissError,\n\t})\n\t// remove element immediately\n\t$('.whatsNewPopover').remove()\n}\n\n/**\n * @param {any} data -\n * @param {any} statusText -\n * @param {any} xhr -\n * @param {any} dismissOptions -\n */\nfunction onQuerySuccess(data, statusText, xhr, dismissOptions) {\n\tconsole.debug('querying Whats New data was successful: ' + statusText)\n\tconsole.debug(data)\n\n\tif (xhr.status !== 200) {\n\t\treturn\n\t}\n\n\tlet item, menuItem, text, icon\n\n\tconst div = document.createElement('div')\n\tdiv.classList.add('popovermenu', 'open', 'whatsNewPopover', 'menu-left')\n\n\tconst list = document.createElement('ul')\n\n\t// header\n\titem = document.createElement('li')\n\tmenuItem = document.createElement('span')\n\tmenuItem.className = 'menuitem'\n\n\ttext = document.createElement('span')\n\ttext.innerText = t('core', 'New in') + ' ' + data.ocs.data.product\n\ttext.className = 'caption'\n\tmenuItem.appendChild(text)\n\n\ticon = document.createElement('span')\n\ticon.className = 'icon-close'\n\ticon.onclick = function() {\n\t\tdismiss(data.ocs.data.version, dismissOptions)\n\t}\n\tmenuItem.appendChild(icon)\n\n\titem.appendChild(menuItem)\n\tlist.appendChild(item)\n\n\t// Highlights\n\tfor (const i in data.ocs.data.whatsNew.regular) {\n\t\tconst whatsNewTextItem = data.ocs.data.whatsNew.regular[i]\n\t\titem = document.createElement('li')\n\n\t\tmenuItem = document.createElement('span')\n\t\tmenuItem.className = 'menuitem'\n\n\t\ticon = document.createElement('span')\n\t\ticon.className = 'icon-checkmark'\n\t\tmenuItem.appendChild(icon)\n\n\t\ttext = document.createElement('p')\n\t\ttext.innerHTML = _.escape(whatsNewTextItem)\n\t\tmenuItem.appendChild(text)\n\n\t\titem.appendChild(menuItem)\n\t\tlist.appendChild(item)\n\t}\n\n\t// Changelog URL\n\tif (!_.isUndefined(data.ocs.data.changelogURL)) {\n\t\titem = document.createElement('li')\n\n\t\tmenuItem = document.createElement('a')\n\t\tmenuItem.href = data.ocs.data.changelogURL\n\t\tmenuItem.rel = 'noreferrer noopener'\n\t\tmenuItem.target = '_blank'\n\n\t\ticon = document.createElement('span')\n\t\ticon.className = 'icon-link'\n\t\tmenuItem.appendChild(icon)\n\n\t\ttext = document.createElement('span')\n\t\ttext.innerText = t('core', 'View changelog')\n\t\tmenuItem.appendChild(text)\n\n\t\titem.appendChild(menuItem)\n\t\tlist.appendChild(item)\n\t}\n\n\tdiv.appendChild(list)\n\tdocument.body.appendChild(div)\n}\n\n/**\n * @param {any} x -\n * @param {any} t -\n * @param {any} e -\n */\nfunction onQueryError(x, t, e) {\n\tconsole.debug('querying Whats New Data resulted in an error: ' + t + e)\n\tconsole.debug(x)\n}\n\n/**\n * @param {any} data -\n */\nfunction onDismissSuccess(data) {\n\t// noop\n}\n\n/**\n * @param {any} data -\n */\nfunction onDismissError(data) {\n\tconsole.debug('dismissing Whats New data resulted in an error: ' + data)\n}\n","/**\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { loadState } from '@nextcloud/initial-state'\n\n/**\n * Set the page heading\n *\n * @param {string} heading page title from the history api\n * @since 27.0.0\n */\nexport function setPageHeading(heading) {\n\tconst headingEl = document.getElementById('page-heading-level-1')\n\tif (headingEl) {\n\t\theadingEl.textContent = heading\n\t}\n}\nexport default {\n\t/**\n\t * @return {boolean} Whether the user opted-out of shortcuts so that they should not be registered\n\t */\n\tdisableKeyboardShortcuts() {\n\t\treturn loadState('theming', 'shortcutsDisabled', false)\n\t},\n\tsetPageHeading,\n}\n","/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport escapeHTML from 'escape-html'\n\n/**\n * @typedef TypeDefinition\n * @function action This action is executed to let the user select a resource\n * @param {string} icon Contains the icon css class for the type\n * @function Object() { [native code] }\n */\n\n/**\n * @type {TypeDefinition[]}\n */\nconst types = {}\n\n/**\n * Those translations will be used by the vue component but they should be shipped with the server\n * FIXME: Those translations should be added to the library\n *\n * @return {Array}\n */\nexport const l10nProjects = () => {\n\treturn [\n\t\tt('core', 'Add to a project'),\n\t\tt('core', 'Show details'),\n\t\tt('core', 'Hide details'),\n\t\tt('core', 'Rename project'),\n\t\tt('core', 'Failed to rename the project'),\n\t\tt('core', 'Failed to create a project'),\n\t\tt('core', 'Failed to add the item to the project'),\n\t\tt('core', 'Connect items to a project to make them easier to find'),\n\t\tt('core', 'Type to search for existing projects'),\n\t]\n}\n\nexport default {\n\t/**\n\t *\n\t * @param {string} type type\n\t * @param {TypeDefinition} typeDefinition typeDefinition\n\t */\n\tregisterType(type, typeDefinition) {\n\t\ttypes[type] = typeDefinition\n\t},\n\ttrigger(type) {\n\t\treturn types[type].action()\n\t},\n\tgetTypes() {\n\t\treturn Object.keys(types)\n\t},\n\tgetIcon(type) {\n\t\treturn types[type].typeIconClass || ''\n\t},\n\tgetLabel(type) {\n\t\treturn escapeHTML(types[type].typeString || type)\n\t},\n\tgetLink(type, id) {\n\t\t/* TODO: Allow action to be executed instead of href as well */\n\t\treturn typeof types[type] !== 'undefined' ? types[type].link(id) : ''\n\t},\n}\n","/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nconst loadedScripts = {}\nconst loadedStylesheets = {}\n/**\n * @namespace OCP\n * @class Loader\n */\nexport default {\n\n\t/**\n\t * Load a script asynchronously\n\t *\n\t * @param {string} app the app name\n\t * @param {string} file the script file name\n\t * @return {Promise}\n\t */\n\tloadScript(app, file) {\n\t\tconst key = app + file\n\t\tif (Object.prototype.hasOwnProperty.call(loadedScripts, key)) {\n\t\t\treturn Promise.resolve()\n\t\t}\n\t\tloadedScripts[key] = true\n\t\treturn new Promise(function(resolve, reject) {\n\t\t\tconst scriptPath = OC.filePath(app, 'js', file)\n\t\t\tconst script = document.createElement('script')\n\t\t\tscript.src = scriptPath\n\t\t\tscript.setAttribute('nonce', btoa(OC.requestToken))\n\t\t\tscript.onload = () => resolve()\n\t\t\tscript.onerror = () => reject(new Error(`Failed to load script from ${scriptPath}`))\n\t\t\tdocument.head.appendChild(script)\n\t\t})\n\t},\n\n\t/**\n\t * Load a stylesheet file asynchronously\n\t *\n\t * @param {string} app the app name\n\t * @param {string} file the script file name\n\t * @return {Promise}\n\t */\n\tloadStylesheet(app, file) {\n\t\tconst key = app + file\n\t\tif (Object.prototype.hasOwnProperty.call(loadedStylesheets, key)) {\n\t\t\treturn Promise.resolve()\n\t\t}\n\t\tloadedStylesheets[key] = true\n\t\treturn new Promise(function(resolve, reject) {\n\t\t\tconst stylePath = OC.filePath(app, 'css', file)\n\t\t\tconst link = document.createElement('link')\n\t\t\tlink.href = stylePath\n\t\t\tlink.type = 'text/css'\n\t\t\tlink.rel = 'stylesheet'\n\t\t\tlink.onload = () => resolve()\n\t\t\tlink.onerror = () => reject(new Error(`Failed to load stylesheet from ${stylePath}`))\n\t\t\tdocument.head.appendChild(link)\n\t\t})\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 {\n\tshowError,\n\tshowInfo, showMessage,\n\tshowSuccess,\n\tshowWarning,\n} from '@nextcloud/dialogs'\n\n/** @typedef {import('toastify-js')} Toast */\n\nexport default {\n\t/**\n\t * @deprecated 19.0.0 use `showSuccess` from the `@nextcloud/dialogs` package instead\n\t *\n\t * @param {string} text the toast text\n\t * @param {object} options options\n\t * @return {Toast}\n\t */\n\tsuccess(text, options) {\n\t\treturn showSuccess(text, options)\n\t},\n\t/**\n\t * @deprecated 19.0.0 use `showWarning` from the `@nextcloud/dialogs` package instead\n\t *\n\t * @param {string} text the toast text\n\t * @param {object} options options\n\t * @return {Toast}\n\t */\n\twarning(text, options) {\n\t\treturn showWarning(text, options)\n\t},\n\t/**\n\t * @deprecated 19.0.0 use `showError` from the `@nextcloud/dialogs` package instead\n\t *\n\t * @param {string} text the toast text\n\t * @param {object} options options\n\t * @return {Toast}\n\t */\n\terror(text, options) {\n\t\treturn showError(text, options)\n\t},\n\t/**\n\t * @deprecated 19.0.0 use `showInfo` from the `@nextcloud/dialogs` package instead\n\t *\n\t * @param {string} text the toast text\n\t * @param {object} options options\n\t * @return {Toast}\n\t */\n\tinfo(text, options) {\n\t\treturn showInfo(text, options)\n\t},\n\t/**\n\t * @deprecated 19.0.0 use `showMessage` from the `@nextcloud/dialogs` package instead\n\t *\n\t * @param {string} text the toast text\n\t * @param {object} options options\n\t * @return {Toast}\n\t */\n\tmessage(text, options) {\n\t\treturn showMessage(text, options)\n\t},\n\n}\n","/**\n * SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { loadState } from '@nextcloud/initial-state'\n\nimport * as AppConfig from './appconfig.js'\nimport * as Comments from './comments.js'\nimport * as WhatsNew from './whatsnew.js'\n\nimport Accessibility from './accessibility.js'\nimport Collaboration from './collaboration.js'\nimport Loader from './loader.js'\nimport Toast from './toast.js'\n\n/** @namespace OCP */\nexport default {\n\tAccessibility,\n\tAppConfig,\n\tCollaboration,\n\tComments,\n\tInitialState: {\n\t\t/**\n\t\t * @deprecated 18.0.0 add https://www.npmjs.com/package/@nextcloud/initial-state to your app\n\t\t */\n\t\tloadState,\n\t},\n\tLoader,\n\t/**\n\t * @deprecated 19.0.0 use the `@nextcloud/dialogs` package instead\n\t */\n\tToast,\n\tWhatsNew,\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/* eslint-disable @nextcloud/no-deprecations */\nimport { initCore } from './init.js'\n\nimport _ from 'underscore'\nimport $ from 'jquery'\n// TODO: switch to `jquery-ui` package and import widgets and effects individually\n// `jquery-ui-dist` is used as a workaround for the issue of missing effects\nimport 'jquery-ui-dist/jquery-ui.js'\nimport 'jquery-ui-dist/jquery-ui.css'\nimport 'jquery-ui-dist/jquery-ui.theme.css'\n// END TODO\nimport Backbone from 'backbone'\nimport ClipboardJS from 'clipboard'\nimport { dav } from 'davclient.js'\nimport Handlebars from 'handlebars'\nimport md5 from 'blueimp-md5'\nimport moment from 'moment'\nimport 'select2'\nimport 'select2/select2.css'\nimport 'snap.js/dist/snap.js'\nimport 'strengthify'\nimport 'strengthify/strengthify.css'\n\nimport OC from './OC/index.js'\nimport OCP from './OCP/index.js'\nimport OCA from './OCA/index.js'\nimport { getToken as getRequestToken } from './OC/requesttoken.js'\n\nconst warnIfNotTesting = function() {\n\tif (window.TESTING === undefined) {\n\t\tOC.debug && console.warn.apply(console, arguments)\n\t}\n}\n\n/**\n * Mark a function as deprecated and automatically\n * warn if used!\n *\n * @param {Function} func the library to deprecate\n * @param {string} funcName the name of the library\n * @param {number} version the version this gets removed\n * @return {Function}\n */\nconst deprecate = (func, funcName, version) => {\n\tconst oldFunc = func\n\tconst newFunc = function() {\n\t\twarnIfNotTesting(`The ${funcName} library is deprecated! It will be removed in nextcloud ${version}.`)\n\t\treturn oldFunc.apply(this, arguments)\n\t}\n\tObject.assign(newFunc, oldFunc)\n\treturn newFunc\n}\n\nconst setDeprecatedProp = (global, cb, msg) => {\n\t(Array.isArray(global) ? global : [global]).forEach(global => {\n\t\tif (window[global] !== undefined) {\n\t\t\tdelete window[global]\n\t\t}\n\t\tObject.defineProperty(window, global, {\n\t\t\tget: () => {\n\t\t\t\tif (msg) {\n\t\t\t\t\twarnIfNotTesting(`${global} is deprecated: ${msg}`)\n\t\t\t\t} else {\n\t\t\t\t\twarnIfNotTesting(`${global} is deprecated`)\n\t\t\t\t}\n\n\t\t\t\treturn cb()\n\t\t\t},\n\t\t})\n\t})\n}\n\nwindow._ = _\nsetDeprecatedProp(['$', 'jQuery'], () => $, 'The global jQuery is deprecated. It will be removed in a later versions without another warning. Please ship your own.')\nsetDeprecatedProp('Backbone', () => Backbone, 'please ship your own, this will be removed in Nextcloud 20')\nsetDeprecatedProp(['Clipboard', 'ClipboardJS'], () => ClipboardJS, 'please ship your own, this will be removed in Nextcloud 20')\nwindow.dav = dav\nsetDeprecatedProp('Handlebars', () => Handlebars, 'please ship your own, this will be removed in Nextcloud 20')\n// Global md5 only required for: apps/files/js/file-upload.js\nsetDeprecatedProp('md5', () => md5, 'please ship your own, this will be removed in Nextcloud 20')\nsetDeprecatedProp('moment', () => moment, 'please ship your own, this will be removed in Nextcloud 20')\n\nwindow.OC = OC\nsetDeprecatedProp('initCore', () => initCore, 'this is an internal function')\nsetDeprecatedProp('oc_appswebroots', () => OC.appswebroots, 'use OC.appswebroots instead, this will be removed in Nextcloud 20')\nsetDeprecatedProp('oc_config', () => OC.config, 'use OC.config instead, this will be removed in Nextcloud 20')\nsetDeprecatedProp('oc_current_user', () => OC.getCurrentUser().uid, 'use OC.getCurrentUser().uid instead, this will be removed in Nextcloud 20')\nsetDeprecatedProp('oc_debug', () => OC.debug, 'use OC.debug instead, this will be removed in Nextcloud 20')\nsetDeprecatedProp('oc_defaults', () => OC.theme, 'use OC.theme instead, this will be removed in Nextcloud 20')\nsetDeprecatedProp('oc_isadmin', OC.isUserAdmin, 'use OC.isUserAdmin() instead, this will be removed in Nextcloud 20')\nsetDeprecatedProp('oc_requesttoken', () => getRequestToken(), 'use OC.requestToken instead, this will be removed in Nextcloud 20')\nsetDeprecatedProp('oc_webroot', () => OC.webroot, 'use OC.getRootPath() instead, this will be removed in Nextcloud 20')\nsetDeprecatedProp('OCDialogs', () => OC.dialogs, 'use OC.dialogs instead, this will be removed in Nextcloud 20')\nwindow.OCP = OCP\nwindow.OCA = OCA\n$.fn.select2 = deprecate($.fn.select2, 'select2', 19)\n\n/**\n * translate a string\n *\n * @param {string} app the id of the app for which to translate the string\n * @param {string} text the string to translate\n * @param [vars] map of placeholder key to value\n * @param {number} [count] number to replace %n with\n * @return {string}\n */\nwindow.t = _.bind(OC.L10N.translate, OC.L10N)\n\n/**\n * translate a string\n *\n * @param {string} app the id of the app for which to translate the string\n * @param {string} text_singular the string to translate for exactly one object\n * @param {string} text_plural the string to translate for n objects\n * @param {number} count number to determine whether to use singular or plural\n * @param [vars] map of placeholder key to value\n * @return {string} Translated string\n */\nwindow.n = _.bind(OC.L10N.translatePlural, OC.L10N)\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/**\n * Namespace for apps\n *\n * @namespace OCA\n */\nexport default { }\n","/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport $ from 'jquery'\n\nimport OC from '../OC/index.js'\n\n/**\n * This plugin inserts the right avatar for the user, depending on, whether a\n * custom avatar is uploaded - which it uses then - or not, and display a\n * placeholder with the first letter of the users name instead.\n * For this it queries the core_avatar_get route, thus this plugin is fit very\n * tightly for owncloud, and it may not work anywhere else.\n *\n * You may use this on any
            \n * Here I'm using
            as an example.\n *\n * There are 5 ways to call this:\n *\n * 1. $('.avatardiv').avatar('jdoe', 128);\n * This will make the div to jdoe's fitting avatar, with a size of 128px.\n *\n * 2. $('.avatardiv').avatar('jdoe');\n * This will make the div to jdoe's fitting avatar. If the div already has a\n * height, it will be used for the avatars size. Otherwise this plugin will\n * search for 'size' DOM data, to use for avatar size. If neither are available\n * it will default to 64px.\n *\n * 3. $('.avatardiv').avatar();\n * This will search the DOM for 'user' data, to use as the username. If there\n * is no username available it will default to a placeholder with the value of\n * \"?\". The size will be determined the same way, as the second example.\n *\n * 4. $('.avatardiv').avatar('jdoe', 128, true);\n * This will behave like the first example, except it will also append random\n * hashes to the custom avatar images, to force image reloading in IE8.\n *\n * 5. $('.avatardiv').avatar('jdoe', 128, undefined, true);\n * This will behave like the first example, but it will hide the avatardiv, if\n * it will display the default placeholder. undefined is the ie8fix from\n * example 4 and can be either true, or false/undefined, to be ignored.\n *\n * 6. $('.avatardiv').avatar('jdoe', 128, undefined, true, callback);\n * This will behave like the above example, but it will call the function\n * defined in callback after the avatar is placed into the DOM.\n *\n */\n\n$.fn.avatar = function(user, size, ie8fix, hidedefault, callback, displayname) {\n\tconst setAvatarForUnknownUser = function(target) {\n\t\ttarget.imageplaceholder('?')\n\t\ttarget.css('background-color', '#b9b9b9')\n\t}\n\n\tif (typeof (user) !== 'undefined') {\n\t\tuser = String(user)\n\t}\n\tif (typeof (displayname) !== 'undefined') {\n\t\tdisplayname = String(displayname)\n\t}\n\n\tif (typeof (size) === 'undefined') {\n\t\tif (this.height() > 0) {\n\t\t\tsize = this.height()\n\t\t} else if (this.data('size') > 0) {\n\t\t\tsize = this.data('size')\n\t\t} else {\n\t\t\tsize = 64\n\t\t}\n\t}\n\n\tthis.height(size)\n\tthis.width(size)\n\n\tif (typeof (user) === 'undefined') {\n\t\tif (typeof (this.data('user')) !== 'undefined') {\n\t\t\tuser = this.data('user')\n\t\t} else {\n\t\t\tsetAvatarForUnknownUser(this)\n\t\t\treturn\n\t\t}\n\t}\n\n\t// sanitize\n\tuser = String(user).replace(/\\//g, '')\n\n\tconst $div = this\n\tlet url\n\n\t// If this is our own avatar we have to use the version attribute\n\tif (user === OC.getCurrentUser().uid) {\n\t\turl = OC.generateUrl(\n\t\t\t'/avatar/{user}/{size}?v={version}',\n\t\t\t{\n\t\t\t\tuser,\n\t\t\t\tsize: Math.ceil(size * window.devicePixelRatio),\n\t\t\t\tversion: oc_userconfig.avatar.version,\n\t\t\t})\n\t} else {\n\t\turl = OC.generateUrl(\n\t\t\t'/avatar/{user}/{size}',\n\t\t\t{\n\t\t\t\tuser,\n\t\t\t\tsize: Math.ceil(size * window.devicePixelRatio),\n\t\t\t})\n\t}\n\n\tconst img = new Image()\n\n\t// If the new image loads successfully set it.\n\timg.onload = function() {\n\t\t$div.clearimageplaceholder()\n\t\t$div.append(img)\n\n\t\tif (typeof callback === 'function') {\n\t\t\tcallback()\n\t\t}\n\t}\n\t// Fallback when avatar loading fails:\n\t// Use old placeholder when a displayname attribute is defined,\n\t// otherwise show the unknown user placeholder.\n\timg.onerror = function() {\n\t\t$div.clearimageplaceholder()\n\t\tif (typeof (displayname) !== 'undefined') {\n\t\t\t$div.imageplaceholder(user, displayname)\n\t\t} else {\n\t\t\tsetAvatarForUnknownUser($div)\n\t\t}\n\n\t\tif (typeof callback === 'function') {\n\t\t\tcallback()\n\t\t}\n\t}\n\n\tif (size < 32) {\n\t\t$div.addClass('icon-loading-small')\n\t} else {\n\t\t$div.addClass('icon-loading')\n\t}\n\timg.width = size\n\timg.height = size\n\timg.src = url\n\timg.alt = ''\n}\n","/**\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/**\n * Return whether the DOM event is an accessible mouse or keyboard element activation\n *\n * @param {Event} event DOM event\n *\n * @return {boolean}\n */\nexport const isA11yActivation = (event) => {\n\tif (event.type === 'click') {\n\t\treturn true\n\t}\n\tif (event.type === 'keydown' && event.key === 'Enter') {\n\t\treturn true\n\t}\n\treturn false\n}\n","/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport $ from 'jquery'\n\nimport { generateUrl } from '@nextcloud/router'\nimport { isA11yActivation } from '../Util/a11y.js'\n\nconst LIST = ''\n\t+ ''\n\nconst entryTemplate = require('./contactsmenu/jquery_entry.handlebars')\n\n$.fn.contactsMenu = function(shareWith, shareType, appendTo) {\n\t// 0 - user, 4 - email, 6 - remote\n\tconst allowedTypes = [0, 4, 6]\n\tif (allowedTypes.indexOf(shareType) === -1) {\n\t\treturn\n\t}\n\n\tconst $div = this\n\tappendTo.append(LIST)\n\tconst $list = appendTo.find('div.contactsmenu-popover')\n\n\t$div.on('click keydown', function(event) {\n\t\tif (!isA11yActivation(event)) {\n\t\t\treturn\n\t\t}\n\n\t\tif (!$list.hasClass('hidden')) {\n\t\t\t$list.addClass('hidden')\n\t\t\t$list.hide()\n\t\t\treturn\n\t\t}\n\n\t\t$list.removeClass('hidden')\n\t\t$list.show()\n\n\t\tif ($list.hasClass('loaded')) {\n\t\t\treturn\n\t\t}\n\n\t\t$list.addClass('loaded')\n\t\t$.ajax(generateUrl('/contactsmenu/findOne'), {\n\t\t\tmethod: 'POST',\n\t\t\tdata: {\n\t\t\t\tshareType,\n\t\t\t\tshareWith,\n\t\t\t},\n\t\t}).then(function(data) {\n\t\t\t$list.find('ul').find('li').addClass('hidden')\n\n\t\t\tlet actions\n\t\t\tif (!data.topAction) {\n\t\t\t\tactions = [{\n\t\t\t\t\thyperlink: '#',\n\t\t\t\t\ttitle: t('core', 'No action available'),\n\t\t\t\t}]\n\t\t\t} else {\n\t\t\t\tactions = [data.topAction].concat(data.actions)\n\t\t\t}\n\n\t\t\tactions.forEach(function(action) {\n\t\t\t\t$list.find('ul').append(entryTemplate(action))\n\t\t\t})\n\n\t\t\t$div.trigger('load')\n\t\t}, function(jqXHR) {\n\t\t\t$list.find('ul').find('li').addClass('hidden')\n\n\t\t\tlet title\n\t\t\tif (jqXHR.status === 404) {\n\t\t\t\ttitle = t('core', 'No action available')\n\t\t\t} else {\n\t\t\t\ttitle = t('core', 'Error fetching contact actions')\n\t\t\t}\n\n\t\t\t$list.find('ul').append(entryTemplate({\n\t\t\t\thyperlink: '#',\n\t\t\t\ttitle,\n\t\t\t}))\n\n\t\t\t$div.trigger('loaderror', jqXHR)\n\t\t})\n\t})\n\n\t$(document).click(function(event) {\n\t\tconst clickedList = ($list.has(event.target).length > 0)\n\t\tlet clickedTarget = ($div.has(event.target).length > 0)\n\n\t\t$div.each(function() {\n\t\t\tif ($(this).is(event.target)) {\n\t\t\t\tclickedTarget = true\n\t\t\t}\n\t\t})\n\n\t\tif (clickedList || clickedTarget) {\n\t\t\treturn\n\t\t}\n\n\t\t$list.addClass('hidden')\n\t\t$list.hide()\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 $ from 'jquery'\n\n/**\n * check if an element exists.\n * allows you to write if ($('#myid').exists()) to increase readability\n *\n * @see {@link http://stackoverflow.com/questions/31044/is-there-an-exists-function-for-jquery}\n * @return {boolean}\n */\n$.fn.exists = function() {\n\treturn this.length > 0\n}\n","/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport $ from 'jquery'\n\n/**\n * Filter jQuery selector by attribute value\n *\n * @param {string} attrName attribute name\n * @param {string} attrValue attribute value\n * @return {void}\n */\n$.fn.filterAttr = function(attrName, attrValue) {\n\treturn this.filter(function() {\n\t\treturn $(this).attr(attrName) === attrValue\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 $ from 'jquery'\nimport { createFocusTrap } from 'focus-trap'\nimport { isA11yActivation } from '../Util/a11y.js'\n\n$.widget('oc.ocdialog', {\n\toptions: {\n\t\twidth: 'auto',\n\t\theight: 'auto',\n\t\tcloseButton: true,\n\t\tcloseOnEscape: true,\n\t\tcloseCallback: null,\n\t\tmodal: false,\n\t},\n\t_create() {\n\t\tconst self = this\n\n\t\tthis.originalCss = {\n\t\t\tdisplay: this.element[0].style.display,\n\t\t\twidth: this.element[0].style.width,\n\t\t\theight: this.element[0].style.height,\n\t\t}\n\n\t\tthis.originalTitle = this.element.attr('title')\n\t\tthis.options.title = this.options.title || this.originalTitle\n\n\t\tthis.$dialog = $('
            ')\n\t\t\t.attr({\n\t\t\t\t// Setting tabIndex makes the div focusable\n\t\t\t\ttabIndex: -1,\n\t\t\t\trole: 'dialog',\n\t\t\t\t'aria-modal': true,\n\t\t\t})\n\t\t\t.insertBefore(this.element)\n\t\tthis.$dialog.append(this.element.detach())\n\t\tthis.element.removeAttr('title').addClass('oc-dialog-content').appendTo(this.$dialog)\n\n\t\t// Activate the primary button on enter if there is a single input\n\t\tif (self.element.find('input').length === 1) {\n\t\t\tconst $input = self.element.find('input')\n\t\t\t$input.on('keydown', function(event) {\n\t\t\t\tif (isA11yActivation(event)) {\n\t\t\t\t\tif (self.$buttonrow) {\n\t\t\t\t\t\tconst $button = self.$buttonrow.find('button.primary')\n\t\t\t\t\t\tif ($button && !$button.prop('disabled')) {\n\t\t\t\t\t\t\t$button.click()\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\n\t\tthis.$dialog.css({\n\t\t\tdisplay: 'inline-block',\n\t\t\tposition: 'fixed',\n\t\t})\n\n\t\tthis.enterCallback = null\n\n\t\t$(document).on('keydown keyup', function(event) {\n\t\t\tif (\n\t\t\t\tevent.target !== self.$dialog.get(0)\n\t\t\t\t&& self.$dialog.find($(event.target)).length === 0\n\t\t\t) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\t// Escape\n\t\t\tif (\n\t\t\t\tevent.keyCode === 27\n\t\t\t\t&& event.type === 'keydown'\n\t\t\t\t&& self.options.closeOnEscape\n\t\t\t) {\n\t\t\t\tevent.stopImmediatePropagation()\n\t\t\t\tself.close()\n\t\t\t\treturn false\n\t\t\t}\n\t\t\t// Enter\n\t\t\tif (event.keyCode === 13) {\n\t\t\t\tevent.stopImmediatePropagation()\n\t\t\t\tif (self.enterCallback !== null) {\n\t\t\t\t\tself.enterCallback()\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tif (event.type === 'keyup') {\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\treturn false\n\t\t\t}\n\t\t})\n\n\t\tthis._setOptions(this.options)\n\t\tthis._createOverlay()\n\t\tthis._useFocusTrap()\n\t},\n\t_init() {\n\t\tthis._trigger('open')\n\t},\n\t_setOption(key, value) {\n\t\tconst self = this\n\t\tswitch (key) {\n\t\tcase 'title':\n\t\t\tif (this.$title) {\n\t\t\t\tthis.$title.text(value)\n\t\t\t} else {\n\t\t\t\tconst $title = $('

            '\n\t\t\t\t\t\t+ value\n\t\t\t\t\t\t+ '

            ')\n\t\t\t\tthis.$title = $title.prependTo(this.$dialog)\n\t\t\t}\n\t\t\tthis._setSizes()\n\t\t\tbreak\n\t\tcase 'buttons':\n\t\t\tif (this.$buttonrow) {\n\t\t\t\tthis.$buttonrow.empty()\n\t\t\t} else {\n\t\t\t\tconst $buttonrow = $('
            ')\n\t\t\t\tthis.$buttonrow = $buttonrow.appendTo(this.$dialog)\n\t\t\t}\n\t\t\tif (value.length === 1) {\n\t\t\t\tthis.$buttonrow.addClass('onebutton')\n\t\t\t} else if (value.length === 2) {\n\t\t\t\tthis.$buttonrow.addClass('twobuttons')\n\t\t\t} else if (value.length === 3) {\n\t\t\t\tthis.$buttonrow.addClass('threebuttons')\n\t\t\t}\n\t\t\t$.each(value, function(idx, val) {\n\t\t\t\tconst $button = $('')\n\t\t\t\t$closeButton.attr('aria-label', t('core', 'Close \"{dialogTitle}\" dialog', { dialogTitle: this.$title || this.options.title }))\n\t\t\t\tthis.$dialog.prepend($closeButton)\n\t\t\t\t$closeButton.on('click keydown', function(event) {\n\t\t\t\t\tif (isA11yActivation(event)) {\n\t\t\t\t\t\tself.options.closeCallback && self.options.closeCallback()\n\t\t\t\t\t\tself.close()\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\tthis.$dialog.find('.oc-dialog-close').remove()\n\t\t\t}\n\t\t\tbreak\n\t\tcase 'width':\n\t\t\tthis.$dialog.css('width', value)\n\t\t\tbreak\n\t\tcase 'height':\n\t\t\tthis.$dialog.css('height', value)\n\t\t\tbreak\n\t\tcase 'close':\n\t\t\tthis.closeCB = value\n\t\t\tbreak\n\t\t}\n\t\t// this._super(key, value);\n\t\t$.Widget.prototype._setOption.apply(this, arguments)\n\t},\n\t_setOptions(options) {\n\t\t// this._super(options);\n\t\t$.Widget.prototype._setOptions.apply(this, arguments)\n\t},\n\t_setSizes() {\n\t\tlet lessHeight = 0\n\t\tif (this.$title) {\n\t\t\tlessHeight += this.$title.outerHeight(true)\n\t\t}\n\t\tif (this.$buttonrow) {\n\t\t\tlessHeight += this.$buttonrow.outerHeight(true)\n\t\t}\n\t\tthis.element.css({\n\t\t\theight: 'calc(100% - ' + lessHeight + 'px)',\n\t\t})\n\t},\n\t_createOverlay() {\n\t\tif (!this.options.modal) {\n\t\t\treturn\n\t\t}\n\n\t\tconst self = this\n\t\tlet contentDiv = $('#content')\n\t\tif (contentDiv.length === 0) {\n\t\t\t// nextcloud-vue compatibility\n\t\t\tcontentDiv = $('.content')\n\t\t}\n\t\tthis.overlay = $('
            ')\n\t\t\t.addClass('oc-dialog-dim')\n\t\t\t.insertBefore(this.$dialog)\n\t\tthis.overlay.on('click keydown keyup', function(event) {\n\t\t\tif (event.target !== self.$dialog.get(0) && self.$dialog.find($(event.target)).length === 0) {\n\t\t\t\tevent.preventDefault()\n\t\t\t\tevent.stopPropagation()\n\n\t\t\t}\n\t\t})\n\t},\n\t_destroyOverlay() {\n\t\tif (!this.options.modal) {\n\t\t\treturn\n\t\t}\n\n\t\tif (this.overlay) {\n\t\t\tthis.overlay.off('click keydown keyup')\n\t\t\tthis.overlay.remove()\n\t\t\tthis.overlay = null\n\t\t}\n\t},\n\t_useFocusTrap() {\n\t\t// Create global stack if undefined\n\t\tObject.assign(window, { _nc_focus_trap: window._nc_focus_trap || [] })\n\n\t\tconst dialogElement = this.$dialog[0]\n\t\tthis.focusTrap = createFocusTrap(dialogElement, {\n\t\t\tallowOutsideClick: true,\n\t\t\ttrapStack: window._nc_focus_trap,\n\t\t\tfallbackFocus: dialogElement,\n\t\t})\n\n\t\tthis.focusTrap.activate()\n\t},\n\t_clearFocusTrap() {\n\t\tthis.focusTrap?.deactivate()\n\t\tthis.focusTrap = null\n\t},\n\twidget() {\n\t\treturn this.$dialog\n\t},\n\tsetEnterCallback(callback) {\n\t\tthis.enterCallback = callback\n\t},\n\tunsetEnterCallback() {\n\t\tthis.enterCallback = null\n\t},\n\tclose() {\n\t\tthis._clearFocusTrap()\n\t\tthis._destroyOverlay()\n\t\tconst self = this\n\t\t// Ugly hack to catch remaining keyup events.\n\t\tsetTimeout(function() {\n\t\t\tself._trigger('close', self)\n\t\t}, 200)\n\n\t\tself.$dialog.remove()\n\t\tthis.destroy()\n\t},\n\tdestroy() {\n\t\tif (this.$title) {\n\t\t\tthis.$title.remove()\n\t\t}\n\t\tif (this.$buttonrow) {\n\t\t\tthis.$buttonrow.remove()\n\t\t}\n\n\t\tif (this.originalTitle) {\n\t\t\tthis.element.attr('title', this.originalTitle)\n\t\t}\n\t\tthis.element.removeClass('oc-dialog-content')\n\t\t\t.css(this.originalCss).detach().insertBefore(this.$dialog)\n\t\tthis.$dialog.remove()\n\t},\n})\n","/**\n * SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport $ from 'jquery'\nimport escapeHTML from 'escape-html'\n\n/**\n * jQuery plugin for micro templates\n *\n * Strings are automatically escaped, but that can be disabled by setting\n * escapeFunction to null.\n *\n * Usage examples:\n *\n * var htmlStr = '

            Bake, uncovered, until the {greasystuff} is melted and the {pasta} is heated through, about {min} minutes.

            '\n * $(htmlStr).octemplate({greasystuff: 'cheese', pasta: 'macaroni', min: 10});\n *\n * var htmlStr = '

            Welcome back {user}

            ';\n * $(htmlStr).octemplate({user: 'John Q. Public'}, {escapeFunction: null});\n *\n * Be aware that the target string must be wrapped in an HTML element for the\n * plugin to work. The following won't work:\n *\n * var textStr = 'Welcome back {user}';\n * $(textStr).octemplate({user: 'John Q. Public'});\n *\n * For anything larger than one-liners, you can use a simple $.get() ajax\n * request to get the template, or you can embed them it the page using the\n * text/template type:\n *\n * \n *\n * var $tmpl = $('#contactListItemTemplate');\n * var contacts = // fetched in some ajax call\n *\n * $.each(contacts, function(idx, contact) {\n * $contactList.append(\n * $tmpl.octemplate({\n * id: contact.getId(),\n * name: contact.getDisplayName(),\n * email: contact.getPreferredEmail(),\n * phone: contact.getPreferredPhone(),\n * });\n * );\n * });\n */\n/**\n * Object Template\n * Inspired by micro templating done by e.g. underscore.js\n */\nconst Template = {\n\tinit(vars, options, elem) {\n\t\t// Mix in the passed in options with the default options\n\t\tthis.vars = vars\n\t\tthis.options = $.extend({}, this.options, options)\n\n\t\tthis.elem = elem\n\t\tconst self = this\n\n\t\tif (typeof this.options.escapeFunction === 'function') {\n\t\t\tconst keys = Object.keys(this.vars)\n\t\t\tfor (let key = 0; key < keys.length; key++) {\n\t\t\t\tif (typeof this.vars[keys[key]] === 'string') {\n\t\t\t\t\tthis.vars[keys[key]] = self.options.escapeFunction(this.vars[keys[key]])\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst _html = this._build(this.vars)\n\t\treturn $(_html)\n\t},\n\t// From stackoverflow.com/questions/1408289/best-way-to-do-variable-interpolation-in-javascript\n\t_build(o) {\n\t\tconst data = this.elem.attr('type') === 'text/template' ? this.elem.html() : this.elem.get(0).outerHTML\n\t\ttry {\n\t\t\treturn data.replace(/{([^{}]*)}/g,\n\t\t\t\tfunction(a, b) {\n\t\t\t\t\tconst r = o[b]\n\t\t\t\t\treturn typeof r === 'string' || typeof r === 'number' ? r : a\n\t\t\t\t},\n\t\t\t)\n\t\t} catch (e) {\n\t\t\tconsole.error(e, 'data:', data)\n\t\t}\n\t},\n\toptions: {\n\t\tescapeFunction: escapeHTML,\n\t},\n}\n\n$.fn.octemplate = function(vars, options) {\n\tvars = vars || {}\n\tif (this.length) {\n\t\tconst _template = Object.create(Template)\n\t\treturn _template.init(vars, options, this)\n\t}\n}\n","/**\n * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-FileCopyrightText: 2013-2016 ownCloud, Inc.\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/* eslint-disable */\nimport $ from 'jquery'\nimport md5 from 'blueimp-md5'\n\n/*\n * Adds a background color to the element called on and adds the first character\n * of the passed in string. This string is also the seed for the generation of\n * the background color.\n *\n * You have following HTML:\n *\n *
            \n *\n * And call this from Javascript:\n *\n * $('#albumart').imageplaceholder('The Album Title');\n *\n * Which will result in:\n *\n *
            T
            \n *\n * You may also call it like this, to have a different background, than the seed:\n *\n * $('#albumart').imageplaceholder('The Album Title', 'Album Title');\n *\n * Resulting in:\n *\n *
            A
            \n *\n */\n\n/*\n* Alternatively, you can use the prototype function to convert your string to rgb colors:\n*\n* \"a6741a86aded5611a8e46ce16f2ad646\".toRgb()\n*\n* Will return the rgb parameters within the following object:\n*\n* Color {r: 208, g: 158, b: 109}\n*\n*/\n\nconst toRgb = (s) => {\n\t// Normalize hash\n\tvar hash = s.toLowerCase()\n\n\t// Already a md5 hash?\n\tif (hash.match(/^([0-9a-f]{4}-?){8}$/) === null) {\n\t\thash = md5(hash)\n\t}\n\n\thash = hash.replace(/[^0-9a-f]/g, '')\n\n\tfunction Color(r, g, b) {\n\t\tthis.r = r\n\t\tthis.g = g\n\t\tthis.b = b\n\t}\n\n\tfunction stepCalc(steps, ends) {\n\t\tvar step = new Array(3)\n\t\tstep[0] = (ends[1].r - ends[0].r) / steps\n\t\tstep[1] = (ends[1].g - ends[0].g) / steps\n\t\tstep[2] = (ends[1].b - ends[0].b) / steps\n\t\treturn step\n\t}\n\n\tfunction mixPalette(steps, color1, color2) {\n\t\tvar palette = []\n\t\tpalette.push(color1)\n\t\tvar step = stepCalc(steps, [color1, color2])\n\t\tfor (var i = 1; i < steps; i++) {\n\t\t\tvar r = parseInt(color1.r + (step[0] * i))\n\t\t\tvar g = parseInt(color1.g + (step[1] * i))\n\t\t\tvar b = parseInt(color1.b + (step[2] * i))\n\t\t\tpalette.push(new Color(r, g, b))\n\t\t}\n\t\treturn palette\n\t}\n\n\tconst red = new Color(182, 70, 157);\n\tconst yellow = new Color(221, 203, 85);\n\tconst blue = new Color(0, 130, 201); // Nextcloud blue\n\t// Number of steps to go from a color to another\n\t// 3 colors * 6 will result in 18 generated colors\n\tconst steps = 6;\n\n\tconst palette1 = mixPalette(steps, red, yellow);\n\tconst palette2 = mixPalette(steps, yellow, blue);\n\tconst palette3 = mixPalette(steps, blue, red);\n\n\tconst finalPalette = palette1.concat(palette2).concat(palette3);\n\n\t// Convert a string to an integer evenly\n\tfunction hashToInt(hash, maximum) {\n\t\tvar finalInt = 0\n\t\tvar result = []\n\n\t\t// Splitting evenly the string\n\t\tfor (var i = 0; i < hash.length; i++) {\n\t\t\t// chars in md5 goes up to f, hex:16\n\t\t\tresult.push(parseInt(hash.charAt(i), 16) % 16)\n\t\t}\n\t\t// Adds up all results\n\t\tfor (var j in result) {\n\t\t\tfinalInt += result[j]\n\t\t}\n\t\t// chars in md5 goes up to f, hex:16\n\t\t// make sure we're always using int in our operation\n\t\treturn parseInt(parseInt(finalInt) % maximum)\n\t}\n\n\treturn finalPalette[hashToInt(hash, steps * 3)]\n}\n\nString.prototype.toRgb = function() {\n\tOC.debug && console.warn('String.prototype.toRgb is deprecated! It will be removed in Nextcloud 22.')\n\n\treturn toRgb(this)\n}\n\n$.fn.imageplaceholder = function(seed, text, size) {\n\ttext = text || seed\n\n\t// Compute the hash\n\tvar rgb = toRgb(seed)\n\tthis.css('background-color', 'rgb(' + rgb.r + ', ' + rgb.g + ', ' + rgb.b + ')')\n\n\t// Placeholders are square\n\tvar height = this.height() || size || 32\n\tthis.height(height)\n\tthis.width(height)\n\n\t// CSS rules\n\tthis.css('color', '#fff')\n\tthis.css('font-weight', 'normal')\n\tthis.css('text-align', 'center')\n\n\t// calculate the height\n\tthis.css('line-height', height + 'px')\n\tthis.css('font-size', (height * 0.55) + 'px')\n\n\tif (seed !== null && seed.length) {\n\t\tvar placeholderText = text.replace(/\\s+/g, ' ').trim().split(' ', 2).map((word) => word[0].toUpperCase()).join('')\n\t\tthis.html(placeholderText);\n\t}\n}\n\n$.fn.clearimageplaceholder = function() {\n\tthis.css('background-color', '')\n\tthis.css('color', '')\n\tthis.css('font-weight', '')\n\tthis.css('text-align', '')\n\tthis.css('line-height', '')\n\tthis.css('font-size', '')\n\tthis.html('')\n\tthis.removeClass('icon-loading')\n\tthis.removeClass('icon-loading-small')\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport $ from 'jquery'\n\nimport { getToken } from '../OC/requesttoken.js'\n\n$(document).on('ajaxSend', function(elm, xhr, settings) {\n\tif (settings.crossDomain === false) {\n\t\txhr.setRequestHeader('requesttoken', getToken())\n\t\txhr.setRequestHeader('OCS-APIREQUEST', 'true')\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 $ from 'jquery'\n\n/**\n * select a range in an input field\n *\n * @see {@link http://stackoverflow.com/questions/499126/jquery-set-cursor-position-in-text-area}\n * @param {number} start start selection from\n * @param {number} end number of char from start\n * @return {void}\n */\n$.fn.selectRange = function(start, end) {\n\treturn this.each(function() {\n\t\tif (this.setSelectionRange) {\n\t\t\tthis.focus()\n\t\t\tthis.setSelectionRange(start, end)\n\t\t} else if (this.createTextRange) {\n\t\t\tconst range = this.createTextRange()\n\t\t\trange.collapse(true)\n\t\t\trange.moveEnd('character', end)\n\t\t\trange.moveStart('character', start)\n\t\t\trange.select()\n\t\t}\n\t})\n}\n","/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/** @typedef {import('jquery')} jQuery */\nimport $ from 'jquery'\n\n/**\n * @name Show Password\n * @description\n * @version 1.3.0\n * @requires jQuery 1.5\n *\n * @author Jan Jarfalk \n * author-website http://www.unwrongest.com\n *\n * special-thanks Michel Gratton\n *\n * @license MIT\n */\n$.fn.extend({\n\tshowPassword(c) {\n\n\t\t// Setup callback object\n\t\tconst callback = { fn: null, args: {} }\n\t\tcallback.fn = c\n\n\t\t// Clones passwords and turn the clones into text inputs\n\t\tconst cloneElement = function(element) {\n\n\t\t\tconst $element = $(element)\n\n\t\t\tconst $clone = $('')\n\n\t\t\t// Name added for JQuery Validation compatibility\n\t\t\t// Element name is required to avoid script warning.\n\t\t\t$clone.attr({\n\t\t\t\ttype: 'text',\n\t\t\t\tclass: $element.attr('class'),\n\t\t\t\tstyle: $element.attr('style'),\n\t\t\t\tsize: $element.attr('size'),\n\t\t\t\tname: $element.attr('name') + '-clone',\n\t\t\t\ttabindex: $element.attr('tabindex'),\n\t\t\t\tautocomplete: 'off',\n\t\t\t})\n\n\t\t\tif ($element.attr('placeholder') !== undefined) {\n\t\t\t\t$clone.attr('placeholder', $element.attr('placeholder'))\n\t\t\t}\n\n\t\t\treturn $clone\n\n\t\t}\n\n\t\t// Transfers values between two elements\n\t\tconst update = function(a, b) {\n\t\t\tb.val(a.val())\n\t\t}\n\n\t\t// Shows a or b depending on checkbox\n\t\tconst setState = function(checkbox, a, b) {\n\n\t\t\tif (checkbox.is(':checked')) {\n\t\t\t\tupdate(a, b)\n\t\t\t\tb.show()\n\t\t\t\ta.hide()\n\t\t\t} else {\n\t\t\t\tupdate(b, a)\n\t\t\t\tb.hide()\n\t\t\t\ta.show()\n\t\t\t}\n\n\t\t}\n\n\t\treturn this.each(function() {\n\n\t\t\tconst $input = $(this)\n\t\t\tconst $checkbox = $($input.data('typetoggle'))\n\n\t\t\t// Create clone\n\t\t\tconst $clone = cloneElement($input)\n\t\t\t$clone.insertAfter($input)\n\n\t\t\t// Set callback arguments\n\t\t\tif (callback.fn) {\n\t\t\t\tcallback.args.input = $input\n\t\t\t\tcallback.args.checkbox = $checkbox\n\t\t\t\tcallback.args.clone = $clone\n\t\t\t}\n\n\t\t\t$checkbox.bind('click', function() {\n\t\t\t\tsetState($checkbox, $input, $clone)\n\t\t\t})\n\n\t\t\t$input.bind('keyup', function() {\n\t\t\t\tupdate($input, $clone)\n\t\t\t})\n\n\t\t\t$clone.bind('keyup', function() {\n\t\t\t\tupdate($clone, $input)\n\n\t\t\t\t// Added for JQuery Validation compatibility\n\t\t\t\t// This will trigger validation if it's ON for keyup event\n\t\t\t\t$input.trigger('keyup')\n\n\t\t\t})\n\n\t\t\t// Added for JQuery Validation compatibility\n\t\t\t// This will trigger validation if it's ON for blur event\n\t\t\t$clone.bind('blur', function() {\n\t\t\t\t$input.trigger('focusout')\n\t\t\t})\n\n\t\t\tsetState($checkbox, $input, $clone)\n\n\t\t\t// set type of password field clone (type=text) to password right on submit\n\t\t\t// to prevent browser save the value of this field\n\t\t\t$clone.closest('form').submit(function(e) {\n\t\t\t\t// .prop has to be used, because .attr throws\n\t\t\t\t// an error while changing a type of an input\n\t\t\t\t// element\n\t\t\t\t$clone.prop('type', 'password')\n\t\t\t})\n\n\t\t\tif (callback.fn) {\n\t\t\t\tcallback.fn(callback.args)\n\t\t\t}\n\n\t\t})\n\t},\n})\n","/**\n * SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport $ from 'jquery'\n\n// Set autocomplete width the same as the related input\n// See http://stackoverflow.com/a/11845718\n$.ui.autocomplete.prototype._resizeMenu = function() {\n\tconst ul = this.menu.element\n\tul.outerWidth(this.element.outerWidth())\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/sass-loader/dist/cjs.js!./jquery-ui-fixes.scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \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/sass-loader/dist/cjs.js!./jquery-ui-fixes.scss\";\n export default content && content.locals ? content.locals : undefined;\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/sass-loader/dist/cjs.js!./jquery.ocdialog.scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \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/sass-loader/dist/cjs.js!./jquery.ocdialog.scss\";\n export default content && content.locals ? content.locals : undefined;\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport $ from 'jquery'\n\nimport './avatar.js'\nimport './contactsmenu.js'\nimport './exists.js'\nimport './filterattr.js'\nimport './ocdialog.js'\nimport './octemplate.js'\nimport './placeholder.js'\nimport './requesttoken.js'\nimport './selectrange.js'\nimport './showpassword.js'\nimport './ui-fixes.js'\n\nimport './css/jquery-ui-fixes.scss'\nimport './css/jquery.ocdialog.scss'\n\n/**\n * Disable automatic evaluation of responses for $.ajax() functions (and its\n * higher-level alternatives like $.get() and $.post()).\n *\n * If a response to a $.ajax() request returns a content type of \"application/javascript\"\n * JQuery would previously execute the response body. This is a pretty unexpected\n * behaviour and can result in a bypass of our Content-Security-Policy as well as\n * multiple unexpected XSS vectors.\n */\n$.ajaxSetup({\n\tcontents: {\n\t\tscript: false,\n\t},\n})\n\n/**\n * Disable execution of eval in jQuery. We do require an allowed eval CSP\n * configuration at the moment for handlebars et al. But for jQuery there is\n * not much of a reason to execute JavaScript directly via eval.\n *\n * This thus mitigates some unexpected XSS vectors.\n */\n$.globalEval = function() {\n}\n","/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport 'core-js/stable/index.js'\nimport 'regenerator-runtime/runtime.js'\n\n// If you remove the line below, tests won't pass\n// eslint-disable-next-line no-unused-vars\nimport OC from './OC/index.js'\n\nimport './globals.js'\nimport './jquery/index.js'\nimport { initCore } from './init.js'\nimport { registerAppsSlideToggle } from './OC/apps.js'\nimport { getCSPNonce } from '@nextcloud/auth'\nimport { generateUrl } from '@nextcloud/router'\nimport Axios from '@nextcloud/axios'\n\n// eslint-disable-next-line camelcase\n__webpack_nonce__ = getCSPNonce()\n\nwindow.addEventListener('DOMContentLoaded', function() {\n\tinitCore()\n\tregisterAppsSlideToggle()\n\n\t// fallback to hashchange when no history support\n\tif (window.history.pushState) {\n\t\twindow.onpopstate = _.bind(OC.Util.History._onPopState, OC.Util.History)\n\t} else {\n\t\twindow.onhashchange = _.bind(OC.Util.History._onPopState, OC.Util.History)\n\t}\n})\n\n// Fix error \"CSRF check failed\"\ndocument.addEventListener('DOMContentLoaded', function() {\n\tconst form = document.getElementById('password-input-form')\n\tif (form) {\n\t\tform.addEventListener('submit', async function(event) {\n\t\t\tevent.preventDefault()\n\t\t\tconst requestToken = document.getElementById('requesttoken')\n\t\t\tif (requestToken) {\n\t\t\t\tconst url = generateUrl('/csrftoken')\n\t\t\t\tconst resp = await Axios.get(url)\n\t\t\t\trequestToken.value = resp.data.token\n\t\t\t}\n\t\t\tform.submit()\n\t\t})\n\t}\n})\n","// Backbone.js 1.6.0\n\n// (c) 2010-2024 Jeremy Ashkenas and DocumentCloud\n// Backbone may be freely distributed under the MIT license.\n// For all details and documentation:\n// http://backbonejs.org\n\n(function(factory) {\n\n // Establish the root object, `window` (`self`) in the browser, or `global` on the server.\n // We use `self` instead of `window` for `WebWorker` support.\n var root = typeof self == 'object' && self.self === self && self ||\n typeof global == 'object' && global.global === global && global;\n\n // Set up Backbone appropriately for the environment. Start with AMD.\n if (typeof define === 'function' && define.amd) {\n define(['underscore', 'jquery', 'exports'], function(_, $, exports) {\n // Export global even in AMD case in case this script is loaded with\n // others that may still expect a global Backbone.\n root.Backbone = factory(root, exports, _, $);\n });\n\n // Next for Node.js or CommonJS. jQuery may not be needed as a module.\n } else if (typeof exports !== 'undefined') {\n var _ = require('underscore'), $;\n try { $ = require('jquery'); } catch (e) {}\n factory(root, exports, _, $);\n\n // Finally, as a browser global.\n } else {\n root.Backbone = factory(root, {}, root._, root.jQuery || root.Zepto || root.ender || root.$);\n }\n\n})(function(root, Backbone, _, $) {\n\n // Initial Setup\n // -------------\n\n // Save the previous value of the `Backbone` variable, so that it can be\n // restored later on, if `noConflict` is used.\n var previousBackbone = root.Backbone;\n\n // Create a local reference to a common array method we'll want to use later.\n var slice = Array.prototype.slice;\n\n // Current version of the library. Keep in sync with `package.json`.\n Backbone.VERSION = '1.6.0';\n\n // For Backbone's purposes, jQuery, Zepto, Ender, or My Library (kidding) owns\n // the `$` variable.\n Backbone.$ = $;\n\n // Runs Backbone.js in *noConflict* mode, returning the `Backbone` variable\n // to its previous owner. Returns a reference to this Backbone object.\n Backbone.noConflict = function() {\n root.Backbone = previousBackbone;\n return this;\n };\n\n // Turn on `emulateHTTP` to support legacy HTTP servers. Setting this option\n // will fake `\"PATCH\"`, `\"PUT\"` and `\"DELETE\"` requests via the `_method` parameter and\n // set a `X-Http-Method-Override` header.\n Backbone.emulateHTTP = false;\n\n // Turn on `emulateJSON` to support legacy servers that can't deal with direct\n // `application/json` requests ... this will encode the body as\n // `application/x-www-form-urlencoded` instead and will send the model in a\n // form param named `model`.\n Backbone.emulateJSON = false;\n\n // Backbone.Events\n // ---------------\n\n // A module that can be mixed in to *any object* in order to provide it with\n // a custom event channel. You may bind a callback to an event with `on` or\n // remove with `off`; `trigger`-ing an event fires all callbacks in\n // succession.\n //\n // var object = {};\n // _.extend(object, Backbone.Events);\n // object.on('expand', function(){ alert('expanded'); });\n // object.trigger('expand');\n //\n var Events = Backbone.Events = {};\n\n // Regular expression used to split event strings.\n var eventSplitter = /\\s+/;\n\n // A private global variable to share between listeners and listenees.\n var _listening;\n\n // Iterates over the standard `event, callback` (as well as the fancy multiple\n // space-separated events `\"change blur\", callback` and jQuery-style event\n // maps `{event: callback}`).\n var eventsApi = function(iteratee, events, name, callback, opts) {\n var i = 0, names;\n if (name && typeof name === 'object') {\n // Handle event maps.\n if (callback !== void 0 && 'context' in opts && opts.context === void 0) opts.context = callback;\n for (names = _.keys(name); i < names.length ; i++) {\n events = eventsApi(iteratee, events, names[i], name[names[i]], opts);\n }\n } else if (name && eventSplitter.test(name)) {\n // Handle space-separated event names by delegating them individually.\n for (names = name.split(eventSplitter); i < names.length; i++) {\n events = iteratee(events, names[i], callback, opts);\n }\n } else {\n // Finally, standard events.\n events = iteratee(events, name, callback, opts);\n }\n return events;\n };\n\n // Bind an event to a `callback` function. Passing `\"all\"` will bind\n // the callback to all events fired.\n Events.on = function(name, callback, context) {\n this._events = eventsApi(onApi, this._events || {}, name, callback, {\n context: context,\n ctx: this,\n listening: _listening\n });\n\n if (_listening) {\n var listeners = this._listeners || (this._listeners = {});\n listeners[_listening.id] = _listening;\n // Allow the listening to use a counter, instead of tracking\n // callbacks for library interop\n _listening.interop = false;\n }\n\n return this;\n };\n\n // Inversion-of-control versions of `on`. Tell *this* object to listen to\n // an event in another object... keeping track of what it's listening to\n // for easier unbinding later.\n Events.listenTo = function(obj, name, callback) {\n if (!obj) return this;\n var id = obj._listenId || (obj._listenId = _.uniqueId('l'));\n var listeningTo = this._listeningTo || (this._listeningTo = {});\n var listening = _listening = listeningTo[id];\n\n // This object is not listening to any other events on `obj` yet.\n // Setup the necessary references to track the listening callbacks.\n if (!listening) {\n this._listenId || (this._listenId = _.uniqueId('l'));\n listening = _listening = listeningTo[id] = new Listening(this, obj);\n }\n\n // Bind callbacks on obj.\n var error = tryCatchOn(obj, name, callback, this);\n _listening = void 0;\n\n if (error) throw error;\n // If the target obj is not Backbone.Events, track events manually.\n if (listening.interop) listening.on(name, callback);\n\n return this;\n };\n\n // The reducing API that adds a callback to the `events` object.\n var onApi = function(events, name, callback, options) {\n if (callback) {\n var handlers = events[name] || (events[name] = []);\n var context = options.context, ctx = options.ctx, listening = options.listening;\n if (listening) listening.count++;\n\n handlers.push({callback: callback, context: context, ctx: context || ctx, listening: listening});\n }\n return events;\n };\n\n // An try-catch guarded #on function, to prevent poisoning the global\n // `_listening` variable.\n var tryCatchOn = function(obj, name, callback, context) {\n try {\n obj.on(name, callback, context);\n } catch (e) {\n return e;\n }\n };\n\n // Remove one or many callbacks. If `context` is null, removes all\n // callbacks with that function. If `callback` is null, removes all\n // callbacks for the event. If `name` is null, removes all bound\n // callbacks for all events.\n Events.off = function(name, callback, context) {\n if (!this._events) return this;\n this._events = eventsApi(offApi, this._events, name, callback, {\n context: context,\n listeners: this._listeners\n });\n\n return this;\n };\n\n // Tell this object to stop listening to either specific events ... or\n // to every object it's currently listening to.\n Events.stopListening = function(obj, name, callback) {\n var listeningTo = this._listeningTo;\n if (!listeningTo) return this;\n\n var ids = obj ? [obj._listenId] : _.keys(listeningTo);\n for (var i = 0; i < ids.length; i++) {\n var listening = listeningTo[ids[i]];\n\n // If listening doesn't exist, this object is not currently\n // listening to obj. Break out early.\n if (!listening) break;\n\n listening.obj.off(name, callback, this);\n if (listening.interop) listening.off(name, callback);\n }\n if (_.isEmpty(listeningTo)) this._listeningTo = void 0;\n\n return this;\n };\n\n // The reducing API that removes a callback from the `events` object.\n var offApi = function(events, name, callback, options) {\n if (!events) return;\n\n var context = options.context, listeners = options.listeners;\n var i = 0, names;\n\n // Delete all event listeners and \"drop\" events.\n if (!name && !context && !callback) {\n for (names = _.keys(listeners); i < names.length; i++) {\n listeners[names[i]].cleanup();\n }\n return;\n }\n\n names = name ? [name] : _.keys(events);\n for (; i < names.length; i++) {\n name = names[i];\n var handlers = events[name];\n\n // Bail out if there are no events stored.\n if (!handlers) break;\n\n // Find any remaining events.\n var remaining = [];\n for (var j = 0; j < handlers.length; j++) {\n var handler = handlers[j];\n if (\n callback && callback !== handler.callback &&\n callback !== handler.callback._callback ||\n context && context !== handler.context\n ) {\n remaining.push(handler);\n } else {\n var listening = handler.listening;\n if (listening) listening.off(name, callback);\n }\n }\n\n // Replace events if there are any remaining. Otherwise, clean up.\n if (remaining.length) {\n events[name] = remaining;\n } else {\n delete events[name];\n }\n }\n\n return events;\n };\n\n // Bind an event to only be triggered a single time. After the first time\n // the callback is invoked, its listener will be removed. If multiple events\n // are passed in using the space-separated syntax, the handler will fire\n // once for each event, not once for a combination of all events.\n Events.once = function(name, callback, context) {\n // Map the event into a `{event: once}` object.\n var events = eventsApi(onceMap, {}, name, callback, this.off.bind(this));\n if (typeof name === 'string' && context == null) callback = void 0;\n return this.on(events, callback, context);\n };\n\n // Inversion-of-control versions of `once`.\n Events.listenToOnce = function(obj, name, callback) {\n // Map the event into a `{event: once}` object.\n var events = eventsApi(onceMap, {}, name, callback, this.stopListening.bind(this, obj));\n return this.listenTo(obj, events);\n };\n\n // Reduces the event callbacks into a map of `{event: onceWrapper}`.\n // `offer` unbinds the `onceWrapper` after it has been called.\n var onceMap = function(map, name, callback, offer) {\n if (callback) {\n var once = map[name] = _.once(function() {\n offer(name, once);\n callback.apply(this, arguments);\n });\n once._callback = callback;\n }\n return map;\n };\n\n // Trigger one or many events, firing all bound callbacks. Callbacks are\n // passed the same arguments as `trigger` is, apart from the event name\n // (unless you're listening on `\"all\"`, which will cause your callback to\n // receive the true name of the event as the first argument).\n Events.trigger = function(name) {\n if (!this._events) return this;\n\n var length = Math.max(0, arguments.length - 1);\n var args = Array(length);\n for (var i = 0; i < length; i++) args[i] = arguments[i + 1];\n\n eventsApi(triggerApi, this._events, name, void 0, args);\n return this;\n };\n\n // Handles triggering the appropriate event callbacks.\n var triggerApi = function(objEvents, name, callback, args) {\n if (objEvents) {\n var events = objEvents[name];\n var allEvents = objEvents.all;\n if (events && allEvents) allEvents = allEvents.slice();\n if (events) triggerEvents(events, args);\n if (allEvents) triggerEvents(allEvents, [name].concat(args));\n }\n return objEvents;\n };\n\n // A difficult-to-believe, but optimized internal dispatch function for\n // triggering events. Tries to keep the usual cases speedy (most internal\n // Backbone events have 3 arguments).\n var triggerEvents = function(events, args) {\n var ev, i = -1, l = events.length, a1 = args[0], a2 = args[1], a3 = args[2];\n switch (args.length) {\n case 0: while (++i < l) (ev = events[i]).callback.call(ev.ctx); return;\n case 1: while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1); return;\n case 2: while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1, a2); return;\n case 3: while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1, a2, a3); return;\n default: while (++i < l) (ev = events[i]).callback.apply(ev.ctx, args); return;\n }\n };\n\n // A listening class that tracks and cleans up memory bindings\n // when all callbacks have been offed.\n var Listening = function(listener, obj) {\n this.id = listener._listenId;\n this.listener = listener;\n this.obj = obj;\n this.interop = true;\n this.count = 0;\n this._events = void 0;\n };\n\n Listening.prototype.on = Events.on;\n\n // Offs a callback (or several).\n // Uses an optimized counter if the listenee uses Backbone.Events.\n // Otherwise, falls back to manual tracking to support events\n // library interop.\n Listening.prototype.off = function(name, callback) {\n var cleanup;\n if (this.interop) {\n this._events = eventsApi(offApi, this._events, name, callback, {\n context: void 0,\n listeners: void 0\n });\n cleanup = !this._events;\n } else {\n this.count--;\n cleanup = this.count === 0;\n }\n if (cleanup) this.cleanup();\n };\n\n // Cleans up memory bindings between the listener and the listenee.\n Listening.prototype.cleanup = function() {\n delete this.listener._listeningTo[this.obj._listenId];\n if (!this.interop) delete this.obj._listeners[this.id];\n };\n\n // Aliases for backwards compatibility.\n Events.bind = Events.on;\n Events.unbind = Events.off;\n\n // Allow the `Backbone` object to serve as a global event bus, for folks who\n // want global \"pubsub\" in a convenient place.\n _.extend(Backbone, Events);\n\n // Backbone.Model\n // --------------\n\n // Backbone **Models** are the basic data object in the framework --\n // frequently representing a row in a table in a database on your server.\n // A discrete chunk of data and a bunch of useful, related methods for\n // performing computations and transformations on that data.\n\n // Create a new model with the specified attributes. A client id (`cid`)\n // is automatically generated and assigned for you.\n var Model = Backbone.Model = function(attributes, options) {\n var attrs = attributes || {};\n options || (options = {});\n this.preinitialize.apply(this, arguments);\n this.cid = _.uniqueId(this.cidPrefix);\n this.attributes = {};\n if (options.collection) this.collection = options.collection;\n if (options.parse) attrs = this.parse(attrs, options) || {};\n var defaults = _.result(this, 'defaults');\n\n // Just _.defaults would work fine, but the additional _.extends\n // is in there for historical reasons. See #3843.\n attrs = _.defaults(_.extend({}, defaults, attrs), defaults);\n\n this.set(attrs, options);\n this.changed = {};\n this.initialize.apply(this, arguments);\n };\n\n // Attach all inheritable methods to the Model prototype.\n _.extend(Model.prototype, Events, {\n\n // A hash of attributes whose current and previous value differ.\n changed: null,\n\n // The value returned during the last failed validation.\n validationError: null,\n\n // The default name for the JSON `id` attribute is `\"id\"`. MongoDB and\n // CouchDB users may want to set this to `\"_id\"`.\n idAttribute: 'id',\n\n // The prefix is used to create the client id which is used to identify models locally.\n // You may want to override this if you're experiencing name clashes with model ids.\n cidPrefix: 'c',\n\n // preinitialize is an empty function by default. You can override it with a function\n // or object. preinitialize will run before any instantiation logic is run in the Model.\n preinitialize: function(){},\n\n // Initialize is an empty function by default. Override it with your own\n // initialization logic.\n initialize: function(){},\n\n // Return a copy of the model's `attributes` object.\n toJSON: function(options) {\n return _.clone(this.attributes);\n },\n\n // Proxy `Backbone.sync` by default -- but override this if you need\n // custom syncing semantics for *this* particular model.\n sync: function() {\n return Backbone.sync.apply(this, arguments);\n },\n\n // Get the value of an attribute.\n get: function(attr) {\n return this.attributes[attr];\n },\n\n // Get the HTML-escaped value of an attribute.\n escape: function(attr) {\n return _.escape(this.get(attr));\n },\n\n // Returns `true` if the attribute contains a value that is not null\n // or undefined.\n has: function(attr) {\n return this.get(attr) != null;\n },\n\n // Special-cased proxy to underscore's `_.matches` method.\n matches: function(attrs) {\n return !!_.iteratee(attrs, this)(this.attributes);\n },\n\n // Set a hash of model attributes on the object, firing `\"change\"`. This is\n // the core primitive operation of a model, updating the data and notifying\n // anyone who needs to know about the change in state. The heart of the beast.\n set: function(key, val, options) {\n if (key == null) return this;\n\n // Handle both `\"key\", value` and `{key: value}` -style arguments.\n var attrs;\n if (typeof key === 'object') {\n attrs = key;\n options = val;\n } else {\n (attrs = {})[key] = val;\n }\n\n options || (options = {});\n\n // Run validation.\n if (!this._validate(attrs, options)) return false;\n\n // Extract attributes and options.\n var unset = options.unset;\n var silent = options.silent;\n var changes = [];\n var changing = this._changing;\n this._changing = true;\n\n if (!changing) {\n this._previousAttributes = _.clone(this.attributes);\n this.changed = {};\n }\n\n var current = this.attributes;\n var changed = this.changed;\n var prev = this._previousAttributes;\n\n // For each `set` attribute, update or delete the current value.\n for (var attr in attrs) {\n val = attrs[attr];\n if (!_.isEqual(current[attr], val)) changes.push(attr);\n if (!_.isEqual(prev[attr], val)) {\n changed[attr] = val;\n } else {\n delete changed[attr];\n }\n unset ? delete current[attr] : current[attr] = val;\n }\n\n // Update the `id`.\n if (this.idAttribute in attrs) {\n var prevId = this.id;\n this.id = this.get(this.idAttribute);\n this.trigger('changeId', this, prevId, options);\n }\n\n // Trigger all relevant attribute changes.\n if (!silent) {\n if (changes.length) this._pending = options;\n for (var i = 0; i < changes.length; i++) {\n this.trigger('change:' + changes[i], this, current[changes[i]], options);\n }\n }\n\n // You might be wondering why there's a `while` loop here. Changes can\n // be recursively nested within `\"change\"` events.\n if (changing) return this;\n if (!silent) {\n while (this._pending) {\n options = this._pending;\n this._pending = false;\n this.trigger('change', this, options);\n }\n }\n this._pending = false;\n this._changing = false;\n return this;\n },\n\n // Remove an attribute from the model, firing `\"change\"`. `unset` is a noop\n // if the attribute doesn't exist.\n unset: function(attr, options) {\n return this.set(attr, void 0, _.extend({}, options, {unset: true}));\n },\n\n // Clear all attributes on the model, firing `\"change\"`.\n clear: function(options) {\n var attrs = {};\n for (var key in this.attributes) attrs[key] = void 0;\n return this.set(attrs, _.extend({}, options, {unset: true}));\n },\n\n // Determine if the model has changed since the last `\"change\"` event.\n // If you specify an attribute name, determine if that attribute has changed.\n hasChanged: function(attr) {\n if (attr == null) return !_.isEmpty(this.changed);\n return _.has(this.changed, attr);\n },\n\n // Return an object containing all the attributes that have changed, or\n // false if there are no changed attributes. Useful for determining what\n // parts of a view need to be updated and/or what attributes need to be\n // persisted to the server. Unset attributes will be set to undefined.\n // You can also pass an attributes object to diff against the model,\n // determining if there *would be* a change.\n changedAttributes: function(diff) {\n if (!diff) return this.hasChanged() ? _.clone(this.changed) : false;\n var old = this._changing ? this._previousAttributes : this.attributes;\n var changed = {};\n var hasChanged;\n for (var attr in diff) {\n var val = diff[attr];\n if (_.isEqual(old[attr], val)) continue;\n changed[attr] = val;\n hasChanged = true;\n }\n return hasChanged ? changed : false;\n },\n\n // Get the previous value of an attribute, recorded at the time the last\n // `\"change\"` event was fired.\n previous: function(attr) {\n if (attr == null || !this._previousAttributes) return null;\n return this._previousAttributes[attr];\n },\n\n // Get all of the attributes of the model at the time of the previous\n // `\"change\"` event.\n previousAttributes: function() {\n return _.clone(this._previousAttributes);\n },\n\n // Fetch the model from the server, merging the response with the model's\n // local attributes. Any changed attributes will trigger a \"change\" event.\n fetch: function(options) {\n options = _.extend({parse: true}, options);\n var model = this;\n var success = options.success;\n options.success = function(resp) {\n var serverAttrs = options.parse ? model.parse(resp, options) : resp;\n if (!model.set(serverAttrs, options)) return false;\n if (success) success.call(options.context, model, resp, options);\n model.trigger('sync', model, resp, options);\n };\n wrapError(this, options);\n return this.sync('read', this, options);\n },\n\n // Set a hash of model attributes, and sync the model to the server.\n // If the server returns an attributes hash that differs, the model's\n // state will be `set` again.\n save: function(key, val, options) {\n // Handle both `\"key\", value` and `{key: value}` -style arguments.\n var attrs;\n if (key == null || typeof key === 'object') {\n attrs = key;\n options = val;\n } else {\n (attrs = {})[key] = val;\n }\n\n options = _.extend({validate: true, parse: true}, options);\n var wait = options.wait;\n\n // If we're not waiting and attributes exist, save acts as\n // `set(attr).save(null, opts)` with validation. Otherwise, check if\n // the model will be valid when the attributes, if any, are set.\n if (attrs && !wait) {\n if (!this.set(attrs, options)) return false;\n } else if (!this._validate(attrs, options)) {\n return false;\n }\n\n // After a successful server-side save, the client is (optionally)\n // updated with the server-side state.\n var model = this;\n var success = options.success;\n var attributes = this.attributes;\n options.success = function(resp) {\n // Ensure attributes are restored during synchronous saves.\n model.attributes = attributes;\n var serverAttrs = options.parse ? model.parse(resp, options) : resp;\n if (wait) serverAttrs = _.extend({}, attrs, serverAttrs);\n if (serverAttrs && !model.set(serverAttrs, options)) return false;\n if (success) success.call(options.context, model, resp, options);\n model.trigger('sync', model, resp, options);\n };\n wrapError(this, options);\n\n // Set temporary attributes if `{wait: true}` to properly find new ids.\n if (attrs && wait) this.attributes = _.extend({}, attributes, attrs);\n\n var method = this.isNew() ? 'create' : options.patch ? 'patch' : 'update';\n if (method === 'patch' && !options.attrs) options.attrs = attrs;\n var xhr = this.sync(method, this, options);\n\n // Restore attributes.\n this.attributes = attributes;\n\n return xhr;\n },\n\n // Destroy this model on the server if it was already persisted.\n // Optimistically removes the model from its collection, if it has one.\n // If `wait: true` is passed, waits for the server to respond before removal.\n destroy: function(options) {\n options = options ? _.clone(options) : {};\n var model = this;\n var success = options.success;\n var wait = options.wait;\n\n var destroy = function() {\n model.stopListening();\n model.trigger('destroy', model, model.collection, options);\n };\n\n options.success = function(resp) {\n if (wait) destroy();\n if (success) success.call(options.context, model, resp, options);\n if (!model.isNew()) model.trigger('sync', model, resp, options);\n };\n\n var xhr = false;\n if (this.isNew()) {\n _.defer(options.success);\n } else {\n wrapError(this, options);\n xhr = this.sync('delete', this, options);\n }\n if (!wait) destroy();\n return xhr;\n },\n\n // Default URL for the model's representation on the server -- if you're\n // using Backbone's restful methods, override this to change the endpoint\n // that will be called.\n url: function() {\n var base =\n _.result(this, 'urlRoot') ||\n _.result(this.collection, 'url') ||\n urlError();\n if (this.isNew()) return base;\n var id = this.get(this.idAttribute);\n return base.replace(/[^\\/]$/, '$&/') + encodeURIComponent(id);\n },\n\n // **parse** converts a response into the hash of attributes to be `set` on\n // the model. The default implementation is just to pass the response along.\n parse: function(resp, options) {\n return resp;\n },\n\n // Create a new model with identical attributes to this one.\n clone: function() {\n return new this.constructor(this.attributes);\n },\n\n // A model is new if it has never been saved to the server, and lacks an id.\n isNew: function() {\n return !this.has(this.idAttribute);\n },\n\n // Check if the model is currently in a valid state.\n isValid: function(options) {\n return this._validate({}, _.extend({}, options, {validate: true}));\n },\n\n // Run validation against the next complete set of model attributes,\n // returning `true` if all is well. Otherwise, fire an `\"invalid\"` event.\n _validate: function(attrs, options) {\n if (!options.validate || !this.validate) return true;\n attrs = _.extend({}, this.attributes, attrs);\n var error = this.validationError = this.validate(attrs, options) || null;\n if (!error) return true;\n this.trigger('invalid', this, error, _.extend(options, {validationError: error}));\n return false;\n }\n\n });\n\n // Backbone.Collection\n // -------------------\n\n // If models tend to represent a single row of data, a Backbone Collection is\n // more analogous to a table full of data ... or a small slice or page of that\n // table, or a collection of rows that belong together for a particular reason\n // -- all of the messages in this particular folder, all of the documents\n // belonging to this particular author, and so on. Collections maintain\n // indexes of their models, both in order, and for lookup by `id`.\n\n // Create a new **Collection**, perhaps to contain a specific type of `model`.\n // If a `comparator` is specified, the Collection will maintain\n // its models in sort order, as they're added and removed.\n var Collection = Backbone.Collection = function(models, options) {\n options || (options = {});\n this.preinitialize.apply(this, arguments);\n if (options.model) this.model = options.model;\n if (options.comparator !== void 0) this.comparator = options.comparator;\n this._reset();\n this.initialize.apply(this, arguments);\n if (models) this.reset(models, _.extend({silent: true}, options));\n };\n\n // Default options for `Collection#set`.\n var setOptions = {add: true, remove: true, merge: true};\n var addOptions = {add: true, remove: false};\n\n // Splices `insert` into `array` at index `at`.\n var splice = function(array, insert, at) {\n at = Math.min(Math.max(at, 0), array.length);\n var tail = Array(array.length - at);\n var length = insert.length;\n var i;\n for (i = 0; i < tail.length; i++) tail[i] = array[i + at];\n for (i = 0; i < length; i++) array[i + at] = insert[i];\n for (i = 0; i < tail.length; i++) array[i + length + at] = tail[i];\n };\n\n // Define the Collection's inheritable methods.\n _.extend(Collection.prototype, Events, {\n\n // The default model for a collection is just a **Backbone.Model**.\n // This should be overridden in most cases.\n model: Model,\n\n\n // preinitialize is an empty function by default. You can override it with a function\n // or object. preinitialize will run before any instantiation logic is run in the Collection.\n preinitialize: function(){},\n\n // Initialize is an empty function by default. Override it with your own\n // initialization logic.\n initialize: function(){},\n\n // The JSON representation of a Collection is an array of the\n // models' attributes.\n toJSON: function(options) {\n return this.map(function(model) { return model.toJSON(options); });\n },\n\n // Proxy `Backbone.sync` by default.\n sync: function() {\n return Backbone.sync.apply(this, arguments);\n },\n\n // Add a model, or list of models to the set. `models` may be Backbone\n // Models or raw JavaScript objects to be converted to Models, or any\n // combination of the two.\n add: function(models, options) {\n return this.set(models, _.extend({merge: false}, options, addOptions));\n },\n\n // Remove a model, or a list of models from the set.\n remove: function(models, options) {\n options = _.extend({}, options);\n var singular = !_.isArray(models);\n models = singular ? [models] : models.slice();\n var removed = this._removeModels(models, options);\n if (!options.silent && removed.length) {\n options.changes = {added: [], merged: [], removed: removed};\n this.trigger('update', this, options);\n }\n return singular ? removed[0] : removed;\n },\n\n // Update a collection by `set`-ing a new list of models, adding new ones,\n // removing models that are no longer present, and merging models that\n // already exist in the collection, as necessary. Similar to **Model#set**,\n // the core operation for updating the data contained by the collection.\n set: function(models, options) {\n if (models == null) return;\n\n options = _.extend({}, setOptions, options);\n if (options.parse && !this._isModel(models)) {\n models = this.parse(models, options) || [];\n }\n\n var singular = !_.isArray(models);\n models = singular ? [models] : models.slice();\n\n var at = options.at;\n if (at != null) at = +at;\n if (at > this.length) at = this.length;\n if (at < 0) at += this.length + 1;\n\n var set = [];\n var toAdd = [];\n var toMerge = [];\n var toRemove = [];\n var modelMap = {};\n\n var add = options.add;\n var merge = options.merge;\n var remove = options.remove;\n\n var sort = false;\n var sortable = this.comparator && at == null && options.sort !== false;\n var sortAttr = _.isString(this.comparator) ? this.comparator : null;\n\n // Turn bare objects into model references, and prevent invalid models\n // from being added.\n var model, i;\n for (i = 0; i < models.length; i++) {\n model = models[i];\n\n // If a duplicate is found, prevent it from being added and\n // optionally merge it into the existing model.\n var existing = this.get(model);\n if (existing) {\n if (merge && model !== existing) {\n var attrs = this._isModel(model) ? model.attributes : model;\n if (options.parse) attrs = existing.parse(attrs, options);\n existing.set(attrs, options);\n toMerge.push(existing);\n if (sortable && !sort) sort = existing.hasChanged(sortAttr);\n }\n if (!modelMap[existing.cid]) {\n modelMap[existing.cid] = true;\n set.push(existing);\n }\n models[i] = existing;\n\n // If this is a new, valid model, push it to the `toAdd` list.\n } else if (add) {\n model = models[i] = this._prepareModel(model, options);\n if (model) {\n toAdd.push(model);\n this._addReference(model, options);\n modelMap[model.cid] = true;\n set.push(model);\n }\n }\n }\n\n // Remove stale models.\n if (remove) {\n for (i = 0; i < this.length; i++) {\n model = this.models[i];\n if (!modelMap[model.cid]) toRemove.push(model);\n }\n if (toRemove.length) this._removeModels(toRemove, options);\n }\n\n // See if sorting is needed, update `length` and splice in new models.\n var orderChanged = false;\n var replace = !sortable && add && remove;\n if (set.length && replace) {\n orderChanged = this.length !== set.length || _.some(this.models, function(m, index) {\n return m !== set[index];\n });\n this.models.length = 0;\n splice(this.models, set, 0);\n this.length = this.models.length;\n } else if (toAdd.length) {\n if (sortable) sort = true;\n splice(this.models, toAdd, at == null ? this.length : at);\n this.length = this.models.length;\n }\n\n // Silently sort the collection if appropriate.\n if (sort) this.sort({silent: true});\n\n // Unless silenced, it's time to fire all appropriate add/sort/update events.\n if (!options.silent) {\n for (i = 0; i < toAdd.length; i++) {\n if (at != null) options.index = at + i;\n model = toAdd[i];\n model.trigger('add', model, this, options);\n }\n if (sort || orderChanged) this.trigger('sort', this, options);\n if (toAdd.length || toRemove.length || toMerge.length) {\n options.changes = {\n added: toAdd,\n removed: toRemove,\n merged: toMerge\n };\n this.trigger('update', this, options);\n }\n }\n\n // Return the added (or merged) model (or models).\n return singular ? models[0] : models;\n },\n\n // When you have more items than you want to add or remove individually,\n // you can reset the entire set with a new list of models, without firing\n // any granular `add` or `remove` events. Fires `reset` when finished.\n // Useful for bulk operations and optimizations.\n reset: function(models, options) {\n options = options ? _.clone(options) : {};\n for (var i = 0; i < this.models.length; i++) {\n this._removeReference(this.models[i], options);\n }\n options.previousModels = this.models;\n this._reset();\n models = this.add(models, _.extend({silent: true}, options));\n if (!options.silent) this.trigger('reset', this, options);\n return models;\n },\n\n // Add a model to the end of the collection.\n push: function(model, options) {\n return this.add(model, _.extend({at: this.length}, options));\n },\n\n // Remove a model from the end of the collection.\n pop: function(options) {\n var model = this.at(this.length - 1);\n return this.remove(model, options);\n },\n\n // Add a model to the beginning of the collection.\n unshift: function(model, options) {\n return this.add(model, _.extend({at: 0}, options));\n },\n\n // Remove a model from the beginning of the collection.\n shift: function(options) {\n var model = this.at(0);\n return this.remove(model, options);\n },\n\n // Slice out a sub-array of models from the collection.\n slice: function() {\n return slice.apply(this.models, arguments);\n },\n\n // Get a model from the set by id, cid, model object with id or cid\n // properties, or an attributes object that is transformed through modelId.\n get: function(obj) {\n if (obj == null) return void 0;\n return this._byId[obj] ||\n this._byId[this.modelId(this._isModel(obj) ? obj.attributes : obj, obj.idAttribute)] ||\n obj.cid && this._byId[obj.cid];\n },\n\n // Returns `true` if the model is in the collection.\n has: function(obj) {\n return this.get(obj) != null;\n },\n\n // Get the model at the given index.\n at: function(index) {\n if (index < 0) index += this.length;\n return this.models[index];\n },\n\n // Return models with matching attributes. Useful for simple cases of\n // `filter`.\n where: function(attrs, first) {\n return this[first ? 'find' : 'filter'](attrs);\n },\n\n // Return the first model with matching attributes. Useful for simple cases\n // of `find`.\n findWhere: function(attrs) {\n return this.where(attrs, true);\n },\n\n // Force the collection to re-sort itself. You don't need to call this under\n // normal circumstances, as the set will maintain sort order as each item\n // is added.\n sort: function(options) {\n var comparator = this.comparator;\n if (!comparator) throw new Error('Cannot sort a set without a comparator');\n options || (options = {});\n\n var length = comparator.length;\n if (_.isFunction(comparator)) comparator = comparator.bind(this);\n\n // Run sort based on type of `comparator`.\n if (length === 1 || _.isString(comparator)) {\n this.models = this.sortBy(comparator);\n } else {\n this.models.sort(comparator);\n }\n if (!options.silent) this.trigger('sort', this, options);\n return this;\n },\n\n // Pluck an attribute from each model in the collection.\n pluck: function(attr) {\n return this.map(attr + '');\n },\n\n // Fetch the default set of models for this collection, resetting the\n // collection when they arrive. If `reset: true` is passed, the response\n // data will be passed through the `reset` method instead of `set`.\n fetch: function(options) {\n options = _.extend({parse: true}, options);\n var success = options.success;\n var collection = this;\n options.success = function(resp) {\n var method = options.reset ? 'reset' : 'set';\n collection[method](resp, options);\n if (success) success.call(options.context, collection, resp, options);\n collection.trigger('sync', collection, resp, options);\n };\n wrapError(this, options);\n return this.sync('read', this, options);\n },\n\n // Create a new instance of a model in this collection. Add the model to the\n // collection immediately, unless `wait: true` is passed, in which case we\n // wait for the server to agree.\n create: function(model, options) {\n options = options ? _.clone(options) : {};\n var wait = options.wait;\n model = this._prepareModel(model, options);\n if (!model) return false;\n if (!wait) this.add(model, options);\n var collection = this;\n var success = options.success;\n options.success = function(m, resp, callbackOpts) {\n if (wait) {\n m.off('error', collection._forwardPristineError, collection);\n collection.add(m, callbackOpts);\n }\n if (success) success.call(callbackOpts.context, m, resp, callbackOpts);\n };\n // In case of wait:true, our collection is not listening to any\n // of the model's events yet, so it will not forward the error\n // event. In this special case, we need to listen for it\n // separately and handle the event just once.\n // (The reason we don't need to do this for the sync event is\n // in the success handler above: we add the model first, which\n // causes the collection to listen, and then invoke the callback\n // that triggers the event.)\n if (wait) {\n model.once('error', this._forwardPristineError, this);\n }\n model.save(null, options);\n return model;\n },\n\n // **parse** converts a response into a list of models to be added to the\n // collection. The default implementation is just to pass it through.\n parse: function(resp, options) {\n return resp;\n },\n\n // Create a new collection with an identical list of models as this one.\n clone: function() {\n return new this.constructor(this.models, {\n model: this.model,\n comparator: this.comparator\n });\n },\n\n // Define how to uniquely identify models in the collection.\n modelId: function(attrs, idAttribute) {\n return attrs[idAttribute || this.model.prototype.idAttribute || 'id'];\n },\n\n // Get an iterator of all models in this collection.\n values: function() {\n return new CollectionIterator(this, ITERATOR_VALUES);\n },\n\n // Get an iterator of all model IDs in this collection.\n keys: function() {\n return new CollectionIterator(this, ITERATOR_KEYS);\n },\n\n // Get an iterator of all [ID, model] tuples in this collection.\n entries: function() {\n return new CollectionIterator(this, ITERATOR_KEYSVALUES);\n },\n\n // Private method to reset all internal state. Called when the collection\n // is first initialized or reset.\n _reset: function() {\n this.length = 0;\n this.models = [];\n this._byId = {};\n },\n\n // Prepare a hash of attributes (or other model) to be added to this\n // collection.\n _prepareModel: function(attrs, options) {\n if (this._isModel(attrs)) {\n if (!attrs.collection) attrs.collection = this;\n return attrs;\n }\n options = options ? _.clone(options) : {};\n options.collection = this;\n\n var model;\n if (this.model.prototype) {\n model = new this.model(attrs, options);\n } else {\n // ES class methods didn't have prototype\n model = this.model(attrs, options);\n }\n\n if (!model.validationError) return model;\n this.trigger('invalid', this, model.validationError, options);\n return false;\n },\n\n // Internal method called by both remove and set.\n _removeModels: function(models, options) {\n var removed = [];\n for (var i = 0; i < models.length; i++) {\n var model = this.get(models[i]);\n if (!model) continue;\n\n var index = this.indexOf(model);\n this.models.splice(index, 1);\n this.length--;\n\n // Remove references before triggering 'remove' event to prevent an\n // infinite loop. #3693\n delete this._byId[model.cid];\n var id = this.modelId(model.attributes, model.idAttribute);\n if (id != null) delete this._byId[id];\n\n if (!options.silent) {\n options.index = index;\n model.trigger('remove', model, this, options);\n }\n\n removed.push(model);\n this._removeReference(model, options);\n }\n if (models.length > 0 && !options.silent) delete options.index;\n return removed;\n },\n\n // Method for checking whether an object should be considered a model for\n // the purposes of adding to the collection.\n _isModel: function(model) {\n return model instanceof Model;\n },\n\n // Internal method to create a model's ties to a collection.\n _addReference: function(model, options) {\n this._byId[model.cid] = model;\n var id = this.modelId(model.attributes, model.idAttribute);\n if (id != null) this._byId[id] = model;\n model.on('all', this._onModelEvent, this);\n },\n\n // Internal method to sever a model's ties to a collection.\n _removeReference: function(model, options) {\n delete this._byId[model.cid];\n var id = this.modelId(model.attributes, model.idAttribute);\n if (id != null) delete this._byId[id];\n if (this === model.collection) delete model.collection;\n model.off('all', this._onModelEvent, this);\n },\n\n // Internal method called every time a model in the set fires an event.\n // Sets need to update their indexes when models change ids. All other\n // events simply proxy through. \"add\" and \"remove\" events that originate\n // in other collections are ignored.\n _onModelEvent: function(event, model, collection, options) {\n if (model) {\n if ((event === 'add' || event === 'remove') && collection !== this) return;\n if (event === 'destroy') this.remove(model, options);\n if (event === 'changeId') {\n var prevId = this.modelId(model.previousAttributes(), model.idAttribute);\n var id = this.modelId(model.attributes, model.idAttribute);\n if (prevId != null) delete this._byId[prevId];\n if (id != null) this._byId[id] = model;\n }\n }\n this.trigger.apply(this, arguments);\n },\n\n // Internal callback method used in `create`. It serves as a\n // stand-in for the `_onModelEvent` method, which is not yet bound\n // during the `wait` period of the `create` call. We still want to\n // forward any `'error'` event at the end of the `wait` period,\n // hence a customized callback.\n _forwardPristineError: function(model, collection, options) {\n // Prevent double forward if the model was already in the\n // collection before the call to `create`.\n if (this.has(model)) return;\n this._onModelEvent('error', model, collection, options);\n }\n });\n\n // Defining an @@iterator method implements JavaScript's Iterable protocol.\n // In modern ES2015 browsers, this value is found at Symbol.iterator.\n /* global Symbol */\n var $$iterator = typeof Symbol === 'function' && Symbol.iterator;\n if ($$iterator) {\n Collection.prototype[$$iterator] = Collection.prototype.values;\n }\n\n // CollectionIterator\n // ------------------\n\n // A CollectionIterator implements JavaScript's Iterator protocol, allowing the\n // use of `for of` loops in modern browsers and interoperation between\n // Backbone.Collection and other JavaScript functions and third-party libraries\n // which can operate on Iterables.\n var CollectionIterator = function(collection, kind) {\n this._collection = collection;\n this._kind = kind;\n this._index = 0;\n };\n\n // This \"enum\" defines the three possible kinds of values which can be emitted\n // by a CollectionIterator that correspond to the values(), keys() and entries()\n // methods on Collection, respectively.\n var ITERATOR_VALUES = 1;\n var ITERATOR_KEYS = 2;\n var ITERATOR_KEYSVALUES = 3;\n\n // All Iterators should themselves be Iterable.\n if ($$iterator) {\n CollectionIterator.prototype[$$iterator] = function() {\n return this;\n };\n }\n\n CollectionIterator.prototype.next = function() {\n if (this._collection) {\n\n // Only continue iterating if the iterated collection is long enough.\n if (this._index < this._collection.length) {\n var model = this._collection.at(this._index);\n this._index++;\n\n // Construct a value depending on what kind of values should be iterated.\n var value;\n if (this._kind === ITERATOR_VALUES) {\n value = model;\n } else {\n var id = this._collection.modelId(model.attributes, model.idAttribute);\n if (this._kind === ITERATOR_KEYS) {\n value = id;\n } else { // ITERATOR_KEYSVALUES\n value = [id, model];\n }\n }\n return {value: value, done: false};\n }\n\n // Once exhausted, remove the reference to the collection so future\n // calls to the next method always return done.\n this._collection = void 0;\n }\n\n return {value: void 0, done: true};\n };\n\n // Backbone.View\n // -------------\n\n // Backbone Views are almost more convention than they are actual code. A View\n // is simply a JavaScript object that represents a logical chunk of UI in the\n // DOM. This might be a single item, an entire list, a sidebar or panel, or\n // even the surrounding frame which wraps your whole app. Defining a chunk of\n // UI as a **View** allows you to define your DOM events declaratively, without\n // having to worry about render order ... and makes it easy for the view to\n // react to specific changes in the state of your models.\n\n // Creating a Backbone.View creates its initial element outside of the DOM,\n // if an existing element is not provided...\n var View = Backbone.View = function(options) {\n this.cid = _.uniqueId('view');\n this.preinitialize.apply(this, arguments);\n _.extend(this, _.pick(options, viewOptions));\n this._ensureElement();\n this.initialize.apply(this, arguments);\n };\n\n // Cached regex to split keys for `delegate`.\n var delegateEventSplitter = /^(\\S+)\\s*(.*)$/;\n\n // List of view options to be set as properties.\n var viewOptions = ['model', 'collection', 'el', 'id', 'attributes', 'className', 'tagName', 'events'];\n\n // Set up all inheritable **Backbone.View** properties and methods.\n _.extend(View.prototype, Events, {\n\n // The default `tagName` of a View's element is `\"div\"`.\n tagName: 'div',\n\n // jQuery delegate for element lookup, scoped to DOM elements within the\n // current view. This should be preferred to global lookups where possible.\n $: function(selector) {\n return this.$el.find(selector);\n },\n\n // preinitialize is an empty function by default. You can override it with a function\n // or object. preinitialize will run before any instantiation logic is run in the View\n preinitialize: function(){},\n\n // Initialize is an empty function by default. Override it with your own\n // initialization logic.\n initialize: function(){},\n\n // **render** is the core function that your view should override, in order\n // to populate its element (`this.el`), with the appropriate HTML. The\n // convention is for **render** to always return `this`.\n render: function() {\n return this;\n },\n\n // Remove this view by taking the element out of the DOM, and removing any\n // applicable Backbone.Events listeners.\n remove: function() {\n this._removeElement();\n this.stopListening();\n return this;\n },\n\n // Remove this view's element from the document and all event listeners\n // attached to it. Exposed for subclasses using an alternative DOM\n // manipulation API.\n _removeElement: function() {\n this.$el.remove();\n },\n\n // Change the view's element (`this.el` property) and re-delegate the\n // view's events on the new element.\n setElement: function(element) {\n this.undelegateEvents();\n this._setElement(element);\n this.delegateEvents();\n return this;\n },\n\n // Creates the `this.el` and `this.$el` references for this view using the\n // given `el`. `el` can be a CSS selector or an HTML string, a jQuery\n // context or an element. Subclasses can override this to utilize an\n // alternative DOM manipulation API and are only required to set the\n // `this.el` property.\n _setElement: function(el) {\n this.$el = el instanceof Backbone.$ ? el : Backbone.$(el);\n this.el = this.$el[0];\n },\n\n // Set callbacks, where `this.events` is a hash of\n //\n // *{\"event selector\": \"callback\"}*\n //\n // {\n // 'mousedown .title': 'edit',\n // 'click .button': 'save',\n // 'click .open': function(e) { ... }\n // }\n //\n // pairs. Callbacks will be bound to the view, with `this` set properly.\n // Uses event delegation for efficiency.\n // Omitting the selector binds the event to `this.el`.\n delegateEvents: function(events) {\n events || (events = _.result(this, 'events'));\n if (!events) return this;\n this.undelegateEvents();\n for (var key in events) {\n var method = events[key];\n if (!_.isFunction(method)) method = this[method];\n if (!method) continue;\n var match = key.match(delegateEventSplitter);\n this.delegate(match[1], match[2], method.bind(this));\n }\n return this;\n },\n\n // Add a single event listener to the view's element (or a child element\n // using `selector`). This only works for delegate-able events: not `focus`,\n // `blur`, and not `change`, `submit`, and `reset` in Internet Explorer.\n delegate: function(eventName, selector, listener) {\n this.$el.on(eventName + '.delegateEvents' + this.cid, selector, listener);\n return this;\n },\n\n // Clears all callbacks previously bound to the view by `delegateEvents`.\n // You usually don't need to use this, but may wish to if you have multiple\n // Backbone views attached to the same DOM element.\n undelegateEvents: function() {\n if (this.$el) this.$el.off('.delegateEvents' + this.cid);\n return this;\n },\n\n // A finer-grained `undelegateEvents` for removing a single delegated event.\n // `selector` and `listener` are both optional.\n undelegate: function(eventName, selector, listener) {\n this.$el.off(eventName + '.delegateEvents' + this.cid, selector, listener);\n return this;\n },\n\n // Produces a DOM element to be assigned to your view. Exposed for\n // subclasses using an alternative DOM manipulation API.\n _createElement: function(tagName) {\n return document.createElement(tagName);\n },\n\n // Ensure that the View has a DOM element to render into.\n // If `this.el` is a string, pass it through `$()`, take the first\n // matching element, and re-assign it to `el`. Otherwise, create\n // an element from the `id`, `className` and `tagName` properties.\n _ensureElement: function() {\n if (!this.el) {\n var attrs = _.extend({}, _.result(this, 'attributes'));\n if (this.id) attrs.id = _.result(this, 'id');\n if (this.className) attrs['class'] = _.result(this, 'className');\n this.setElement(this._createElement(_.result(this, 'tagName')));\n this._setAttributes(attrs);\n } else {\n this.setElement(_.result(this, 'el'));\n }\n },\n\n // Set attributes from a hash on this view's element. Exposed for\n // subclasses using an alternative DOM manipulation API.\n _setAttributes: function(attributes) {\n this.$el.attr(attributes);\n }\n\n });\n\n // Proxy Backbone class methods to Underscore functions, wrapping the model's\n // `attributes` object or collection's `models` array behind the scenes.\n //\n // collection.filter(function(model) { return model.get('age') > 10 });\n // collection.each(this.addView);\n //\n // `Function#apply` can be slow so we use the method's arg count, if we know it.\n var addMethod = function(base, length, method, attribute) {\n switch (length) {\n case 1: return function() {\n return base[method](this[attribute]);\n };\n case 2: return function(value) {\n return base[method](this[attribute], value);\n };\n case 3: return function(iteratee, context) {\n return base[method](this[attribute], cb(iteratee, this), context);\n };\n case 4: return function(iteratee, defaultVal, context) {\n return base[method](this[attribute], cb(iteratee, this), defaultVal, context);\n };\n default: return function() {\n var args = slice.call(arguments);\n args.unshift(this[attribute]);\n return base[method].apply(base, args);\n };\n }\n };\n\n var addUnderscoreMethods = function(Class, base, methods, attribute) {\n _.each(methods, function(length, method) {\n if (base[method]) Class.prototype[method] = addMethod(base, length, method, attribute);\n });\n };\n\n // Support `collection.sortBy('attr')` and `collection.findWhere({id: 1})`.\n var cb = function(iteratee, instance) {\n if (_.isFunction(iteratee)) return iteratee;\n if (_.isObject(iteratee) && !instance._isModel(iteratee)) return modelMatcher(iteratee);\n if (_.isString(iteratee)) return function(model) { return model.get(iteratee); };\n return iteratee;\n };\n var modelMatcher = function(attrs) {\n var matcher = _.matches(attrs);\n return function(model) {\n return matcher(model.attributes);\n };\n };\n\n // Underscore methods that we want to implement on the Collection.\n // 90% of the core usefulness of Backbone Collections is actually implemented\n // right here:\n var collectionMethods = {forEach: 3, each: 3, map: 3, collect: 3, reduce: 0,\n foldl: 0, inject: 0, reduceRight: 0, foldr: 0, find: 3, detect: 3, filter: 3,\n select: 3, reject: 3, every: 3, all: 3, some: 3, any: 3, include: 3, includes: 3,\n contains: 3, invoke: 0, max: 3, min: 3, toArray: 1, size: 1, first: 3,\n head: 3, take: 3, initial: 3, rest: 3, tail: 3, drop: 3, last: 3,\n without: 0, difference: 0, indexOf: 3, shuffle: 1, lastIndexOf: 3,\n isEmpty: 1, chain: 1, sample: 3, partition: 3, groupBy: 3, countBy: 3,\n sortBy: 3, indexBy: 3, findIndex: 3, findLastIndex: 3};\n\n\n // Underscore methods that we want to implement on the Model, mapped to the\n // number of arguments they take.\n var modelMethods = {keys: 1, values: 1, pairs: 1, invert: 1, pick: 0,\n omit: 0, chain: 1, isEmpty: 1};\n\n // Mix in each Underscore method as a proxy to `Collection#models`.\n\n _.each([\n [Collection, collectionMethods, 'models'],\n [Model, modelMethods, 'attributes']\n ], function(config) {\n var Base = config[0],\n methods = config[1],\n attribute = config[2];\n\n Base.mixin = function(obj) {\n var mappings = _.reduce(_.functions(obj), function(memo, name) {\n memo[name] = 0;\n return memo;\n }, {});\n addUnderscoreMethods(Base, obj, mappings, attribute);\n };\n\n addUnderscoreMethods(Base, _, methods, attribute);\n });\n\n // Backbone.sync\n // -------------\n\n // Override this function to change the manner in which Backbone persists\n // models to the server. You will be passed the type of request, and the\n // model in question. By default, makes a RESTful Ajax request\n // to the model's `url()`. Some possible customizations could be:\n //\n // * Use `setTimeout` to batch rapid-fire updates into a single request.\n // * Send up the models as XML instead of JSON.\n // * Persist models via WebSockets instead of Ajax.\n //\n // Turn on `Backbone.emulateHTTP` in order to send `PUT` and `DELETE` requests\n // as `POST`, with a `_method` parameter containing the true HTTP method,\n // as well as all requests with the body as `application/x-www-form-urlencoded`\n // instead of `application/json` with the model in a param named `model`.\n // Useful when interfacing with server-side languages like **PHP** that make\n // it difficult to read the body of `PUT` requests.\n Backbone.sync = function(method, model, options) {\n var type = methodMap[method];\n\n // Default options, unless specified.\n _.defaults(options || (options = {}), {\n emulateHTTP: Backbone.emulateHTTP,\n emulateJSON: Backbone.emulateJSON\n });\n\n // Default JSON-request options.\n var params = {type: type, dataType: 'json'};\n\n // Ensure that we have a URL.\n if (!options.url) {\n params.url = _.result(model, 'url') || urlError();\n }\n\n // Ensure that we have the appropriate request data.\n if (options.data == null && model && (method === 'create' || method === 'update' || method === 'patch')) {\n params.contentType = 'application/json';\n params.data = JSON.stringify(options.attrs || model.toJSON(options));\n }\n\n // For older servers, emulate JSON by encoding the request into an HTML-form.\n if (options.emulateJSON) {\n params.contentType = 'application/x-www-form-urlencoded';\n params.data = params.data ? {model: params.data} : {};\n }\n\n // For older servers, emulate HTTP by mimicking the HTTP method with `_method`\n // And an `X-HTTP-Method-Override` header.\n if (options.emulateHTTP && (type === 'PUT' || type === 'DELETE' || type === 'PATCH')) {\n params.type = 'POST';\n if (options.emulateJSON) params.data._method = type;\n var beforeSend = options.beforeSend;\n options.beforeSend = function(xhr) {\n xhr.setRequestHeader('X-HTTP-Method-Override', type);\n if (beforeSend) return beforeSend.apply(this, arguments);\n };\n }\n\n // Don't process data on a non-GET request.\n if (params.type !== 'GET' && !options.emulateJSON) {\n params.processData = false;\n }\n\n // Pass along `textStatus` and `errorThrown` from jQuery.\n var error = options.error;\n options.error = function(xhr, textStatus, errorThrown) {\n options.textStatus = textStatus;\n options.errorThrown = errorThrown;\n if (error) error.call(options.context, xhr, textStatus, errorThrown);\n };\n\n // Make the request, allowing the user to override any Ajax options.\n var xhr = options.xhr = Backbone.ajax(_.extend(params, options));\n model.trigger('request', model, xhr, options);\n return xhr;\n };\n\n // Map from CRUD to HTTP for our default `Backbone.sync` implementation.\n var methodMap = {\n 'create': 'POST',\n 'update': 'PUT',\n 'patch': 'PATCH',\n 'delete': 'DELETE',\n 'read': 'GET'\n };\n\n // Set the default implementation of `Backbone.ajax` to proxy through to `$`.\n // Override this if you'd like to use a different library.\n Backbone.ajax = function() {\n return Backbone.$.ajax.apply(Backbone.$, arguments);\n };\n\n // Backbone.Router\n // ---------------\n\n // Routers map faux-URLs to actions, and fire events when routes are\n // matched. Creating a new one sets its `routes` hash, if not set statically.\n var Router = Backbone.Router = function(options) {\n options || (options = {});\n this.preinitialize.apply(this, arguments);\n if (options.routes) this.routes = options.routes;\n this._bindRoutes();\n this.initialize.apply(this, arguments);\n };\n\n // Cached regular expressions for matching named param parts and splatted\n // parts of route strings.\n var optionalParam = /\\((.*?)\\)/g;\n var namedParam = /(\\(\\?)?:\\w+/g;\n var splatParam = /\\*\\w+/g;\n var escapeRegExp = /[\\-{}\\[\\]+?.,\\\\\\^$|#\\s]/g;\n\n // Set up all inheritable **Backbone.Router** properties and methods.\n _.extend(Router.prototype, Events, {\n\n // preinitialize is an empty function by default. You can override it with a function\n // or object. preinitialize will run before any instantiation logic is run in the Router.\n preinitialize: function(){},\n\n // Initialize is an empty function by default. Override it with your own\n // initialization logic.\n initialize: function(){},\n\n // Manually bind a single named route to a callback. For example:\n //\n // this.route('search/:query/p:num', 'search', function(query, num) {\n // ...\n // });\n //\n route: function(route, name, callback) {\n if (!_.isRegExp(route)) route = this._routeToRegExp(route);\n if (_.isFunction(name)) {\n callback = name;\n name = '';\n }\n if (!callback) callback = this[name];\n var router = this;\n Backbone.history.route(route, function(fragment) {\n var args = router._extractParameters(route, fragment);\n if (router.execute(callback, args, name) !== false) {\n router.trigger.apply(router, ['route:' + name].concat(args));\n router.trigger('route', name, args);\n Backbone.history.trigger('route', router, name, args);\n }\n });\n return this;\n },\n\n // Execute a route handler with the provided parameters. This is an\n // excellent place to do pre-route setup or post-route cleanup.\n execute: function(callback, args, name) {\n if (callback) callback.apply(this, args);\n },\n\n // Simple proxy to `Backbone.history` to save a fragment into the history.\n navigate: function(fragment, options) {\n Backbone.history.navigate(fragment, options);\n return this;\n },\n\n // Bind all defined routes to `Backbone.history`. We have to reverse the\n // order of the routes here to support behavior where the most general\n // routes can be defined at the bottom of the route map.\n _bindRoutes: function() {\n if (!this.routes) return;\n this.routes = _.result(this, 'routes');\n var route, routes = _.keys(this.routes);\n while ((route = routes.pop()) != null) {\n this.route(route, this.routes[route]);\n }\n },\n\n // Convert a route string into a regular expression, suitable for matching\n // against the current location hash.\n _routeToRegExp: function(route) {\n route = route.replace(escapeRegExp, '\\\\$&')\n .replace(optionalParam, '(?:$1)?')\n .replace(namedParam, function(match, optional) {\n return optional ? match : '([^/?]+)';\n })\n .replace(splatParam, '([^?]*?)');\n return new RegExp('^' + route + '(?:\\\\?([\\\\s\\\\S]*))?$');\n },\n\n // Given a route, and a URL fragment that it matches, return the array of\n // extracted decoded parameters. Empty or unmatched parameters will be\n // treated as `null` to normalize cross-browser behavior.\n _extractParameters: function(route, fragment) {\n var params = route.exec(fragment).slice(1);\n return _.map(params, function(param, i) {\n // Don't decode the search params.\n if (i === params.length - 1) return param || null;\n return param ? decodeURIComponent(param) : null;\n });\n }\n\n });\n\n // Backbone.History\n // ----------------\n\n // Handles cross-browser history management, based on either\n // [pushState](http://diveintohtml5.info/history.html) and real URLs, or\n // [onhashchange](https://developer.mozilla.org/en-US/docs/DOM/window.onhashchange)\n // and URL fragments. If the browser supports neither (old IE, natch),\n // falls back to polling.\n var History = Backbone.History = function() {\n this.handlers = [];\n this.checkUrl = this.checkUrl.bind(this);\n\n // Ensure that `History` can be used outside of the browser.\n if (typeof window !== 'undefined') {\n this.location = window.location;\n this.history = window.history;\n }\n };\n\n // Cached regex for stripping a leading hash/slash and trailing space.\n var routeStripper = /^[#\\/]|\\s+$/g;\n\n // Cached regex for stripping leading and trailing slashes.\n var rootStripper = /^\\/+|\\/+$/g;\n\n // Cached regex for stripping urls of hash.\n var pathStripper = /#.*$/;\n\n // Has the history handling already been started?\n History.started = false;\n\n // Set up all inheritable **Backbone.History** properties and methods.\n _.extend(History.prototype, Events, {\n\n // The default interval to poll for hash changes, if necessary, is\n // twenty times a second.\n interval: 50,\n\n // Are we at the app root?\n atRoot: function() {\n var path = this.location.pathname.replace(/[^\\/]$/, '$&/');\n return path === this.root && !this.getSearch();\n },\n\n // Does the pathname match the root?\n matchRoot: function() {\n var path = this.decodeFragment(this.location.pathname);\n var rootPath = path.slice(0, this.root.length - 1) + '/';\n return rootPath === this.root;\n },\n\n // Unicode characters in `location.pathname` are percent encoded so they're\n // decoded for comparison. `%25` should not be decoded since it may be part\n // of an encoded parameter.\n decodeFragment: function(fragment) {\n return decodeURI(fragment.replace(/%25/g, '%2525'));\n },\n\n // In IE6, the hash fragment and search params are incorrect if the\n // fragment contains `?`.\n getSearch: function() {\n var match = this.location.href.replace(/#.*/, '').match(/\\?.+/);\n return match ? match[0] : '';\n },\n\n // Gets the true hash value. Cannot use location.hash directly due to bug\n // in Firefox where location.hash will always be decoded.\n getHash: function(window) {\n var match = (window || this).location.href.match(/#(.*)$/);\n return match ? match[1] : '';\n },\n\n // Get the pathname and search params, without the root.\n getPath: function() {\n var path = this.decodeFragment(\n this.location.pathname + this.getSearch()\n ).slice(this.root.length - 1);\n return path.charAt(0) === '/' ? path.slice(1) : path;\n },\n\n // Get the cross-browser normalized URL fragment from the path or hash.\n getFragment: function(fragment) {\n if (fragment == null) {\n if (this._usePushState || !this._wantsHashChange) {\n fragment = this.getPath();\n } else {\n fragment = this.getHash();\n }\n }\n return fragment.replace(routeStripper, '');\n },\n\n // Start the hash change handling, returning `true` if the current URL matches\n // an existing route, and `false` otherwise.\n start: function(options) {\n if (History.started) throw new Error('Backbone.history has already been started');\n History.started = true;\n\n // Figure out the initial configuration. Do we need an iframe?\n // Is pushState desired ... is it available?\n this.options = _.extend({root: '/'}, this.options, options);\n this.root = this.options.root;\n this._trailingSlash = this.options.trailingSlash;\n this._wantsHashChange = this.options.hashChange !== false;\n this._hasHashChange = 'onhashchange' in window && (document.documentMode === void 0 || document.documentMode > 7);\n this._useHashChange = this._wantsHashChange && this._hasHashChange;\n this._wantsPushState = !!this.options.pushState;\n this._hasPushState = !!(this.history && this.history.pushState);\n this._usePushState = this._wantsPushState && this._hasPushState;\n this.fragment = this.getFragment();\n\n // Normalize root to always include a leading and trailing slash.\n this.root = ('/' + this.root + '/').replace(rootStripper, '/');\n\n // Transition from hashChange to pushState or vice versa if both are\n // requested.\n if (this._wantsHashChange && this._wantsPushState) {\n\n // If we've started off with a route from a `pushState`-enabled\n // browser, but we're currently in a browser that doesn't support it...\n if (!this._hasPushState && !this.atRoot()) {\n var rootPath = this.root.slice(0, -1) || '/';\n this.location.replace(rootPath + '#' + this.getPath());\n // Return immediately as browser will do redirect to new url\n return true;\n\n // Or if we've started out with a hash-based route, but we're currently\n // in a browser where it could be `pushState`-based instead...\n } else if (this._hasPushState && this.atRoot()) {\n this.navigate(this.getHash(), {replace: true});\n }\n\n }\n\n // Proxy an iframe to handle location events if the browser doesn't\n // support the `hashchange` event, HTML5 history, or the user wants\n // `hashChange` but not `pushState`.\n if (!this._hasHashChange && this._wantsHashChange && !this._usePushState) {\n this.iframe = document.createElement('iframe');\n this.iframe.src = 'javascript:0';\n this.iframe.style.display = 'none';\n this.iframe.tabIndex = -1;\n var body = document.body;\n // Using `appendChild` will throw on IE < 9 if the document is not ready.\n var iWindow = body.insertBefore(this.iframe, body.firstChild).contentWindow;\n iWindow.document.open();\n iWindow.document.close();\n iWindow.location.hash = '#' + this.fragment;\n }\n\n // Add a cross-platform `addEventListener` shim for older browsers.\n var addEventListener = window.addEventListener || function(eventName, listener) {\n return attachEvent('on' + eventName, listener);\n };\n\n // Depending on whether we're using pushState or hashes, and whether\n // 'onhashchange' is supported, determine how we check the URL state.\n if (this._usePushState) {\n addEventListener('popstate', this.checkUrl, false);\n } else if (this._useHashChange && !this.iframe) {\n addEventListener('hashchange', this.checkUrl, false);\n } else if (this._wantsHashChange) {\n this._checkUrlInterval = setInterval(this.checkUrl, this.interval);\n }\n\n if (!this.options.silent) return this.loadUrl();\n },\n\n // Disable Backbone.history, perhaps temporarily. Not useful in a real app,\n // but possibly useful for unit testing Routers.\n stop: function() {\n // Add a cross-platform `removeEventListener` shim for older browsers.\n var removeEventListener = window.removeEventListener || function(eventName, listener) {\n return detachEvent('on' + eventName, listener);\n };\n\n // Remove window listeners.\n if (this._usePushState) {\n removeEventListener('popstate', this.checkUrl, false);\n } else if (this._useHashChange && !this.iframe) {\n removeEventListener('hashchange', this.checkUrl, false);\n }\n\n // Clean up the iframe if necessary.\n if (this.iframe) {\n document.body.removeChild(this.iframe);\n this.iframe = null;\n }\n\n // Some environments will throw when clearing an undefined interval.\n if (this._checkUrlInterval) clearInterval(this._checkUrlInterval);\n History.started = false;\n },\n\n // Add a route to be tested when the fragment changes. Routes added later\n // may override previous routes.\n route: function(route, callback) {\n this.handlers.unshift({route: route, callback: callback});\n },\n\n // Checks the current URL to see if it has changed, and if it has,\n // calls `loadUrl`, normalizing across the hidden iframe.\n checkUrl: function(e) {\n var current = this.getFragment();\n\n // If the user pressed the back button, the iframe's hash will have\n // changed and we should use that for comparison.\n if (current === this.fragment && this.iframe) {\n current = this.getHash(this.iframe.contentWindow);\n }\n\n if (current === this.fragment) {\n if (!this.matchRoot()) return this.notfound();\n return false;\n }\n if (this.iframe) this.navigate(current);\n this.loadUrl();\n },\n\n // Attempt to load the current URL fragment. If a route succeeds with a\n // match, returns `true`. If no defined routes matches the fragment,\n // returns `false`.\n loadUrl: function(fragment) {\n // If the root doesn't match, no routes can match either.\n if (!this.matchRoot()) return this.notfound();\n fragment = this.fragment = this.getFragment(fragment);\n return _.some(this.handlers, function(handler) {\n if (handler.route.test(fragment)) {\n handler.callback(fragment);\n return true;\n }\n }) || this.notfound();\n },\n\n // When no route could be matched, this method is called internally to\n // trigger the `'notfound'` event. It returns `false` so that it can be used\n // in tail position.\n notfound: function() {\n this.trigger('notfound');\n return false;\n },\n\n // Save a fragment into the hash history, or replace the URL state if the\n // 'replace' option is passed. You are responsible for properly URL-encoding\n // the fragment in advance.\n //\n // The options object can contain `trigger: true` if you wish to have the\n // route callback be fired (not usually desirable), or `replace: true`, if\n // you wish to modify the current URL without adding an entry to the history.\n navigate: function(fragment, options) {\n if (!History.started) return false;\n if (!options || options === true) options = {trigger: !!options};\n\n // Normalize the fragment.\n fragment = this.getFragment(fragment || '');\n\n // Strip trailing slash on the root unless _trailingSlash is true\n var rootPath = this.root;\n if (!this._trailingSlash && (fragment === '' || fragment.charAt(0) === '?')) {\n rootPath = rootPath.slice(0, -1) || '/';\n }\n var url = rootPath + fragment;\n\n // Strip the fragment of the query and hash for matching.\n fragment = fragment.replace(pathStripper, '');\n\n // Decode for matching.\n var decodedFragment = this.decodeFragment(fragment);\n\n if (this.fragment === decodedFragment) return;\n this.fragment = decodedFragment;\n\n // If pushState is available, we use it to set the fragment as a real URL.\n if (this._usePushState) {\n this.history[options.replace ? 'replaceState' : 'pushState']({}, document.title, url);\n\n // If hash changes haven't been explicitly disabled, update the hash\n // fragment to store history.\n } else if (this._wantsHashChange) {\n this._updateHash(this.location, fragment, options.replace);\n if (this.iframe && fragment !== this.getHash(this.iframe.contentWindow)) {\n var iWindow = this.iframe.contentWindow;\n\n // Opening and closing the iframe tricks IE7 and earlier to push a\n // history entry on hash-tag change. When replace is true, we don't\n // want this.\n if (!options.replace) {\n iWindow.document.open();\n iWindow.document.close();\n }\n\n this._updateHash(iWindow.location, fragment, options.replace);\n }\n\n // If you've told us that you explicitly don't want fallback hashchange-\n // based history, then `navigate` becomes a page refresh.\n } else {\n return this.location.assign(url);\n }\n if (options.trigger) return this.loadUrl(fragment);\n },\n\n // Update the hash location, either replacing the current entry, or adding\n // a new one to the browser history.\n _updateHash: function(location, fragment, replace) {\n if (replace) {\n var href = location.href.replace(/(javascript:|#).*$/, '');\n location.replace(href + '#' + fragment);\n } else {\n // Some browsers require that `hash` contains a leading #.\n location.hash = '#' + fragment;\n }\n }\n\n });\n\n // Create the default Backbone.history.\n Backbone.history = new History;\n\n // Helpers\n // -------\n\n // Helper function to correctly set up the prototype chain for subclasses.\n // Similar to `goog.inherits`, but uses a hash of prototype properties and\n // class properties to be extended.\n var extend = function(protoProps, staticProps) {\n var parent = this;\n var child;\n\n // The constructor function for the new subclass is either defined by you\n // (the \"constructor\" property in your `extend` definition), or defaulted\n // by us to simply call the parent constructor.\n if (protoProps && _.has(protoProps, 'constructor')) {\n child = protoProps.constructor;\n } else {\n child = function(){ return parent.apply(this, arguments); };\n }\n\n // Add static properties to the constructor function, if supplied.\n _.extend(child, parent, staticProps);\n\n // Set the prototype chain to inherit from `parent`, without calling\n // `parent`'s constructor function and add the prototype properties.\n child.prototype = _.create(parent.prototype, protoProps);\n child.prototype.constructor = child;\n\n // Set a convenience property in case the parent's prototype is needed\n // later.\n child.__super__ = parent.prototype;\n\n return child;\n };\n\n // Set up inheritance for the model, collection, router, view and history.\n Model.extend = Collection.extend = Router.extend = View.extend = History.extend = extend;\n\n // Throw an error when a URL is needed, and none is supplied.\n var urlError = function() {\n throw new Error('A \"url\" property or function must be specified');\n };\n\n // Wrap an optional error callback with a fallback error event.\n var wrapError = function(model, options) {\n var error = options.error;\n options.error = function(resp) {\n if (error) error.call(options.context, model, resp, options);\n model.trigger('error', model, resp, options);\n };\n };\n\n // Provide useful information when things go wrong. This method is not meant\n // to be used directly; it merely provides the necessary introspection for the\n // external `debugInfo` function.\n Backbone._debug = function() {\n return {root: root, _: _};\n };\n\n return Backbone;\n});\n","/*\n * JavaScript MD5\n * https://github.com/blueimp/JavaScript-MD5\n *\n * Copyright 2011, Sebastian Tschan\n * https://blueimp.net\n *\n * Licensed under the MIT license:\n * https://opensource.org/licenses/MIT\n *\n * Based on\n * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message\n * Digest Algorithm, as defined in RFC 1321.\n * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for more info.\n */\n\n/* global define */\n\n/* eslint-disable strict */\n\n;(function ($) {\n 'use strict'\n\n /**\n * Add integers, wrapping at 2^32.\n * This uses 16-bit operations internally to work around bugs in interpreters.\n *\n * @param {number} x First integer\n * @param {number} y Second integer\n * @returns {number} Sum\n */\n function safeAdd(x, y) {\n var lsw = (x & 0xffff) + (y & 0xffff)\n var msw = (x >> 16) + (y >> 16) + (lsw >> 16)\n return (msw << 16) | (lsw & 0xffff)\n }\n\n /**\n * Bitwise rotate a 32-bit number to the left.\n *\n * @param {number} num 32-bit number\n * @param {number} cnt Rotation count\n * @returns {number} Rotated number\n */\n function bitRotateLeft(num, cnt) {\n return (num << cnt) | (num >>> (32 - cnt))\n }\n\n /**\n * Basic operation the algorithm uses.\n *\n * @param {number} q q\n * @param {number} a a\n * @param {number} b b\n * @param {number} x x\n * @param {number} s s\n * @param {number} t t\n * @returns {number} Result\n */\n function md5cmn(q, a, b, x, s, t) {\n return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b)\n }\n /**\n * Basic operation the algorithm uses.\n *\n * @param {number} a a\n * @param {number} b b\n * @param {number} c c\n * @param {number} d d\n * @param {number} x x\n * @param {number} s s\n * @param {number} t t\n * @returns {number} Result\n */\n function md5ff(a, b, c, d, x, s, t) {\n return md5cmn((b & c) | (~b & d), a, b, x, s, t)\n }\n /**\n * Basic operation the algorithm uses.\n *\n * @param {number} a a\n * @param {number} b b\n * @param {number} c c\n * @param {number} d d\n * @param {number} x x\n * @param {number} s s\n * @param {number} t t\n * @returns {number} Result\n */\n function md5gg(a, b, c, d, x, s, t) {\n return md5cmn((b & d) | (c & ~d), a, b, x, s, t)\n }\n /**\n * Basic operation the algorithm uses.\n *\n * @param {number} a a\n * @param {number} b b\n * @param {number} c c\n * @param {number} d d\n * @param {number} x x\n * @param {number} s s\n * @param {number} t t\n * @returns {number} Result\n */\n function md5hh(a, b, c, d, x, s, t) {\n return md5cmn(b ^ c ^ d, a, b, x, s, t)\n }\n /**\n * Basic operation the algorithm uses.\n *\n * @param {number} a a\n * @param {number} b b\n * @param {number} c c\n * @param {number} d d\n * @param {number} x x\n * @param {number} s s\n * @param {number} t t\n * @returns {number} Result\n */\n function md5ii(a, b, c, d, x, s, t) {\n return md5cmn(c ^ (b | ~d), a, b, x, s, t)\n }\n\n /**\n * Calculate the MD5 of an array of little-endian words, and a bit length.\n *\n * @param {Array} x Array of little-endian words\n * @param {number} len Bit length\n * @returns {Array} MD5 Array\n */\n function binlMD5(x, len) {\n /* append padding */\n x[len >> 5] |= 0x80 << len % 32\n x[(((len + 64) >>> 9) << 4) + 14] = len\n\n var i\n var olda\n var oldb\n var oldc\n var oldd\n var a = 1732584193\n var b = -271733879\n var c = -1732584194\n var d = 271733878\n\n for (i = 0; i < x.length; i += 16) {\n olda = a\n oldb = b\n oldc = c\n oldd = d\n\n a = md5ff(a, b, c, d, x[i], 7, -680876936)\n d = md5ff(d, a, b, c, x[i + 1], 12, -389564586)\n c = md5ff(c, d, a, b, x[i + 2], 17, 606105819)\n b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330)\n a = md5ff(a, b, c, d, x[i + 4], 7, -176418897)\n d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426)\n c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341)\n b = md5ff(b, c, d, a, x[i + 7], 22, -45705983)\n a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416)\n d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417)\n c = md5ff(c, d, a, b, x[i + 10], 17, -42063)\n b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162)\n a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682)\n d = md5ff(d, a, b, c, x[i + 13], 12, -40341101)\n c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290)\n b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329)\n\n a = md5gg(a, b, c, d, x[i + 1], 5, -165796510)\n d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632)\n c = md5gg(c, d, a, b, x[i + 11], 14, 643717713)\n b = md5gg(b, c, d, a, x[i], 20, -373897302)\n a = md5gg(a, b, c, d, x[i + 5], 5, -701558691)\n d = md5gg(d, a, b, c, x[i + 10], 9, 38016083)\n c = md5gg(c, d, a, b, x[i + 15], 14, -660478335)\n b = md5gg(b, c, d, a, x[i + 4], 20, -405537848)\n a = md5gg(a, b, c, d, x[i + 9], 5, 568446438)\n d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690)\n c = md5gg(c, d, a, b, x[i + 3], 14, -187363961)\n b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501)\n a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467)\n d = md5gg(d, a, b, c, x[i + 2], 9, -51403784)\n c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473)\n b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734)\n\n a = md5hh(a, b, c, d, x[i + 5], 4, -378558)\n d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463)\n c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562)\n b = md5hh(b, c, d, a, x[i + 14], 23, -35309556)\n a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060)\n d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353)\n c = md5hh(c, d, a, b, x[i + 7], 16, -155497632)\n b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640)\n a = md5hh(a, b, c, d, x[i + 13], 4, 681279174)\n d = md5hh(d, a, b, c, x[i], 11, -358537222)\n c = md5hh(c, d, a, b, x[i + 3], 16, -722521979)\n b = md5hh(b, c, d, a, x[i + 6], 23, 76029189)\n a = md5hh(a, b, c, d, x[i + 9], 4, -640364487)\n d = md5hh(d, a, b, c, x[i + 12], 11, -421815835)\n c = md5hh(c, d, a, b, x[i + 15], 16, 530742520)\n b = md5hh(b, c, d, a, x[i + 2], 23, -995338651)\n\n a = md5ii(a, b, c, d, x[i], 6, -198630844)\n d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415)\n c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905)\n b = md5ii(b, c, d, a, x[i + 5], 21, -57434055)\n a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571)\n d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606)\n c = md5ii(c, d, a, b, x[i + 10], 15, -1051523)\n b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799)\n a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359)\n d = md5ii(d, a, b, c, x[i + 15], 10, -30611744)\n c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380)\n b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649)\n a = md5ii(a, b, c, d, x[i + 4], 6, -145523070)\n d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379)\n c = md5ii(c, d, a, b, x[i + 2], 15, 718787259)\n b = md5ii(b, c, d, a, x[i + 9], 21, -343485551)\n\n a = safeAdd(a, olda)\n b = safeAdd(b, oldb)\n c = safeAdd(c, oldc)\n d = safeAdd(d, oldd)\n }\n return [a, b, c, d]\n }\n\n /**\n * Convert an array of little-endian words to a string\n *\n * @param {Array} input MD5 Array\n * @returns {string} MD5 string\n */\n function binl2rstr(input) {\n var i\n var output = ''\n var length32 = input.length * 32\n for (i = 0; i < length32; i += 8) {\n output += String.fromCharCode((input[i >> 5] >>> i % 32) & 0xff)\n }\n return output\n }\n\n /**\n * Convert a raw string to an array of little-endian words\n * Characters >255 have their high-byte silently ignored.\n *\n * @param {string} input Raw input string\n * @returns {Array} Array of little-endian words\n */\n function rstr2binl(input) {\n var i\n var output = []\n output[(input.length >> 2) - 1] = undefined\n for (i = 0; i < output.length; i += 1) {\n output[i] = 0\n }\n var length8 = input.length * 8\n for (i = 0; i < length8; i += 8) {\n output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << i % 32\n }\n return output\n }\n\n /**\n * Calculate the MD5 of a raw string\n *\n * @param {string} s Input string\n * @returns {string} Raw MD5 string\n */\n function rstrMD5(s) {\n return binl2rstr(binlMD5(rstr2binl(s), s.length * 8))\n }\n\n /**\n * Calculates the HMAC-MD5 of a key and some data (raw strings)\n *\n * @param {string} key HMAC key\n * @param {string} data Raw input string\n * @returns {string} Raw MD5 string\n */\n function rstrHMACMD5(key, data) {\n var i\n var bkey = rstr2binl(key)\n var ipad = []\n var opad = []\n var hash\n ipad[15] = opad[15] = undefined\n if (bkey.length > 16) {\n bkey = binlMD5(bkey, key.length * 8)\n }\n for (i = 0; i < 16; i += 1) {\n ipad[i] = bkey[i] ^ 0x36363636\n opad[i] = bkey[i] ^ 0x5c5c5c5c\n }\n hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8)\n return binl2rstr(binlMD5(opad.concat(hash), 512 + 128))\n }\n\n /**\n * Convert a raw string to a hex string\n *\n * @param {string} input Raw input string\n * @returns {string} Hex encoded string\n */\n function rstr2hex(input) {\n var hexTab = '0123456789abcdef'\n var output = ''\n var x\n var i\n for (i = 0; i < input.length; i += 1) {\n x = input.charCodeAt(i)\n output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f)\n }\n return output\n }\n\n /**\n * Encode a string as UTF-8\n *\n * @param {string} input Input string\n * @returns {string} UTF8 string\n */\n function str2rstrUTF8(input) {\n return unescape(encodeURIComponent(input))\n }\n\n /**\n * Encodes input string as raw MD5 string\n *\n * @param {string} s Input string\n * @returns {string} Raw MD5 string\n */\n function rawMD5(s) {\n return rstrMD5(str2rstrUTF8(s))\n }\n /**\n * Encodes input string as Hex encoded string\n *\n * @param {string} s Input string\n * @returns {string} Hex encoded string\n */\n function hexMD5(s) {\n return rstr2hex(rawMD5(s))\n }\n /**\n * Calculates the raw HMAC-MD5 for the given key and data\n *\n * @param {string} k HMAC key\n * @param {string} d Input string\n * @returns {string} Raw MD5 string\n */\n function rawHMACMD5(k, d) {\n return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d))\n }\n /**\n * Calculates the Hex encoded HMAC-MD5 for the given key and data\n *\n * @param {string} k HMAC key\n * @param {string} d Input string\n * @returns {string} Raw MD5 string\n */\n function hexHMACMD5(k, d) {\n return rstr2hex(rawHMACMD5(k, d))\n }\n\n /**\n * Calculates MD5 value for a given string.\n * If a key is provided, calculates the HMAC-MD5 value.\n * Returns a Hex encoded string unless the raw argument is given.\n *\n * @param {string} string Input string\n * @param {string} [key] HMAC key\n * @param {boolean} [raw] Raw output switch\n * @returns {string} MD5 output\n */\n function md5(string, key, raw) {\n if (!key) {\n if (!raw) {\n return hexMD5(string)\n }\n return rawMD5(string)\n }\n if (!raw) {\n return hexHMACMD5(key, string)\n }\n return rawHMACMD5(key, string)\n }\n\n if (typeof define === 'function' && define.amd) {\n define(function () {\n return md5\n })\n } else if (typeof module === 'object' && module.exports) {\n module.exports = md5\n } else {\n $.md5 = md5\n }\n})(this)\n","/*!\n * clipboard.js v2.0.11\n * https://clipboardjs.com/\n *\n * Licensed MIT © Zeno Rocha\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ClipboardJS\"] = factory();\n\telse\n\t\troot[\"ClipboardJS\"] = factory();\n})(this, function() {\nreturn /******/ (function() { // webpackBootstrap\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ 686:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n \"default\": function() { return /* binding */ clipboard; }\n});\n\n// EXTERNAL MODULE: ./node_modules/tiny-emitter/index.js\nvar tiny_emitter = __webpack_require__(279);\nvar tiny_emitter_default = /*#__PURE__*/__webpack_require__.n(tiny_emitter);\n// EXTERNAL MODULE: ./node_modules/good-listener/src/listen.js\nvar listen = __webpack_require__(370);\nvar listen_default = /*#__PURE__*/__webpack_require__.n(listen);\n// EXTERNAL MODULE: ./node_modules/select/src/select.js\nvar src_select = __webpack_require__(817);\nvar select_default = /*#__PURE__*/__webpack_require__.n(src_select);\n;// CONCATENATED MODULE: ./src/common/command.js\n/**\n * Executes a given operation type.\n * @param {String} type\n * @return {Boolean}\n */\nfunction command(type) {\n try {\n return document.execCommand(type);\n } catch (err) {\n return false;\n }\n}\n;// CONCATENATED MODULE: ./src/actions/cut.js\n\n\n/**\n * Cut action wrapper.\n * @param {String|HTMLElement} target\n * @return {String}\n */\n\nvar ClipboardActionCut = function ClipboardActionCut(target) {\n var selectedText = select_default()(target);\n command('cut');\n return selectedText;\n};\n\n/* harmony default export */ var actions_cut = (ClipboardActionCut);\n;// CONCATENATED MODULE: ./src/common/create-fake-element.js\n/**\n * Creates a fake textarea element with a value.\n * @param {String} value\n * @return {HTMLElement}\n */\nfunction createFakeElement(value) {\n var isRTL = document.documentElement.getAttribute('dir') === 'rtl';\n var fakeElement = document.createElement('textarea'); // Prevent zooming on iOS\n\n fakeElement.style.fontSize = '12pt'; // Reset box model\n\n fakeElement.style.border = '0';\n fakeElement.style.padding = '0';\n fakeElement.style.margin = '0'; // Move element out of screen horizontally\n\n fakeElement.style.position = 'absolute';\n fakeElement.style[isRTL ? 'right' : 'left'] = '-9999px'; // Move element to the same position vertically\n\n var yPosition = window.pageYOffset || document.documentElement.scrollTop;\n fakeElement.style.top = \"\".concat(yPosition, \"px\");\n fakeElement.setAttribute('readonly', '');\n fakeElement.value = value;\n return fakeElement;\n}\n;// CONCATENATED MODULE: ./src/actions/copy.js\n\n\n\n/**\n * Create fake copy action wrapper using a fake element.\n * @param {String} target\n * @param {Object} options\n * @return {String}\n */\n\nvar fakeCopyAction = function fakeCopyAction(value, options) {\n var fakeElement = createFakeElement(value);\n options.container.appendChild(fakeElement);\n var selectedText = select_default()(fakeElement);\n command('copy');\n fakeElement.remove();\n return selectedText;\n};\n/**\n * Copy action wrapper.\n * @param {String|HTMLElement} target\n * @param {Object} options\n * @return {String}\n */\n\n\nvar ClipboardActionCopy = function ClipboardActionCopy(target) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n container: document.body\n };\n var selectedText = '';\n\n if (typeof target === 'string') {\n selectedText = fakeCopyAction(target, options);\n } else if (target instanceof HTMLInputElement && !['text', 'search', 'url', 'tel', 'password'].includes(target === null || target === void 0 ? void 0 : target.type)) {\n // If input type doesn't support `setSelectionRange`. Simulate it. https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setSelectionRange\n selectedText = fakeCopyAction(target.value, options);\n } else {\n selectedText = select_default()(target);\n command('copy');\n }\n\n return selectedText;\n};\n\n/* harmony default export */ var actions_copy = (ClipboardActionCopy);\n;// CONCATENATED MODULE: ./src/actions/default.js\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n\n\n/**\n * Inner function which performs selection from either `text` or `target`\n * properties and then executes copy or cut operations.\n * @param {Object} options\n */\n\nvar ClipboardActionDefault = function ClipboardActionDefault() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n // Defines base properties passed from constructor.\n var _options$action = options.action,\n action = _options$action === void 0 ? 'copy' : _options$action,\n container = options.container,\n target = options.target,\n text = options.text; // Sets the `action` to be performed which can be either 'copy' or 'cut'.\n\n if (action !== 'copy' && action !== 'cut') {\n throw new Error('Invalid \"action\" value, use either \"copy\" or \"cut\"');\n } // Sets the `target` property using an element that will be have its content copied.\n\n\n if (target !== undefined) {\n if (target && _typeof(target) === 'object' && target.nodeType === 1) {\n if (action === 'copy' && target.hasAttribute('disabled')) {\n throw new Error('Invalid \"target\" attribute. Please use \"readonly\" instead of \"disabled\" attribute');\n }\n\n if (action === 'cut' && (target.hasAttribute('readonly') || target.hasAttribute('disabled'))) {\n throw new Error('Invalid \"target\" attribute. You can\\'t cut text from elements with \"readonly\" or \"disabled\" attributes');\n }\n } else {\n throw new Error('Invalid \"target\" value, use a valid Element');\n }\n } // Define selection strategy based on `text` property.\n\n\n if (text) {\n return actions_copy(text, {\n container: container\n });\n } // Defines which selection strategy based on `target` property.\n\n\n if (target) {\n return action === 'cut' ? actions_cut(target) : actions_copy(target, {\n container: container\n });\n }\n};\n\n/* harmony default export */ var actions_default = (ClipboardActionDefault);\n;// CONCATENATED MODULE: ./src/clipboard.js\nfunction clipboard_typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { clipboard_typeof = function _typeof(obj) { return typeof obj; }; } else { clipboard_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return clipboard_typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (clipboard_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n\n\n\n\n\n/**\n * Helper function to retrieve attribute value.\n * @param {String} suffix\n * @param {Element} element\n */\n\nfunction getAttributeValue(suffix, element) {\n var attribute = \"data-clipboard-\".concat(suffix);\n\n if (!element.hasAttribute(attribute)) {\n return;\n }\n\n return element.getAttribute(attribute);\n}\n/**\n * Base class which takes one or more elements, adds event listeners to them,\n * and instantiates a new `ClipboardAction` on each click.\n */\n\n\nvar Clipboard = /*#__PURE__*/function (_Emitter) {\n _inherits(Clipboard, _Emitter);\n\n var _super = _createSuper(Clipboard);\n\n /**\n * @param {String|HTMLElement|HTMLCollection|NodeList} trigger\n * @param {Object} options\n */\n function Clipboard(trigger, options) {\n var _this;\n\n _classCallCheck(this, Clipboard);\n\n _this = _super.call(this);\n\n _this.resolveOptions(options);\n\n _this.listenClick(trigger);\n\n return _this;\n }\n /**\n * Defines if attributes would be resolved using internal setter functions\n * or custom functions that were passed in the constructor.\n * @param {Object} options\n */\n\n\n _createClass(Clipboard, [{\n key: \"resolveOptions\",\n value: function resolveOptions() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this.action = typeof options.action === 'function' ? options.action : this.defaultAction;\n this.target = typeof options.target === 'function' ? options.target : this.defaultTarget;\n this.text = typeof options.text === 'function' ? options.text : this.defaultText;\n this.container = clipboard_typeof(options.container) === 'object' ? options.container : document.body;\n }\n /**\n * Adds a click event listener to the passed trigger.\n * @param {String|HTMLElement|HTMLCollection|NodeList} trigger\n */\n\n }, {\n key: \"listenClick\",\n value: function listenClick(trigger) {\n var _this2 = this;\n\n this.listener = listen_default()(trigger, 'click', function (e) {\n return _this2.onClick(e);\n });\n }\n /**\n * Defines a new `ClipboardAction` on each click event.\n * @param {Event} e\n */\n\n }, {\n key: \"onClick\",\n value: function onClick(e) {\n var trigger = e.delegateTarget || e.currentTarget;\n var action = this.action(trigger) || 'copy';\n var text = actions_default({\n action: action,\n container: this.container,\n target: this.target(trigger),\n text: this.text(trigger)\n }); // Fires an event based on the copy operation result.\n\n this.emit(text ? 'success' : 'error', {\n action: action,\n text: text,\n trigger: trigger,\n clearSelection: function clearSelection() {\n if (trigger) {\n trigger.focus();\n }\n\n window.getSelection().removeAllRanges();\n }\n });\n }\n /**\n * Default `action` lookup function.\n * @param {Element} trigger\n */\n\n }, {\n key: \"defaultAction\",\n value: function defaultAction(trigger) {\n return getAttributeValue('action', trigger);\n }\n /**\n * Default `target` lookup function.\n * @param {Element} trigger\n */\n\n }, {\n key: \"defaultTarget\",\n value: function defaultTarget(trigger) {\n var selector = getAttributeValue('target', trigger);\n\n if (selector) {\n return document.querySelector(selector);\n }\n }\n /**\n * Allow fire programmatically a copy action\n * @param {String|HTMLElement} target\n * @param {Object} options\n * @returns Text copied.\n */\n\n }, {\n key: \"defaultText\",\n\n /**\n * Default `text` lookup function.\n * @param {Element} trigger\n */\n value: function defaultText(trigger) {\n return getAttributeValue('text', trigger);\n }\n /**\n * Destroy lifecycle.\n */\n\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.listener.destroy();\n }\n }], [{\n key: \"copy\",\n value: function copy(target) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n container: document.body\n };\n return actions_copy(target, options);\n }\n /**\n * Allow fire programmatically a cut action\n * @param {String|HTMLElement} target\n * @returns Text cutted.\n */\n\n }, {\n key: \"cut\",\n value: function cut(target) {\n return actions_cut(target);\n }\n /**\n * Returns the support of the given action, or all actions if no action is\n * given.\n * @param {String} [action]\n */\n\n }, {\n key: \"isSupported\",\n value: function isSupported() {\n var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['copy', 'cut'];\n var actions = typeof action === 'string' ? [action] : action;\n var support = !!document.queryCommandSupported;\n actions.forEach(function (action) {\n support = support && !!document.queryCommandSupported(action);\n });\n return support;\n }\n }]);\n\n return Clipboard;\n}((tiny_emitter_default()));\n\n/* harmony default export */ var clipboard = (Clipboard);\n\n/***/ }),\n\n/***/ 828:\n/***/ (function(module) {\n\nvar DOCUMENT_NODE_TYPE = 9;\n\n/**\n * A polyfill for Element.matches()\n */\nif (typeof Element !== 'undefined' && !Element.prototype.matches) {\n var proto = Element.prototype;\n\n proto.matches = proto.matchesSelector ||\n proto.mozMatchesSelector ||\n proto.msMatchesSelector ||\n proto.oMatchesSelector ||\n proto.webkitMatchesSelector;\n}\n\n/**\n * Finds the closest parent that matches a selector.\n *\n * @param {Element} element\n * @param {String} selector\n * @return {Function}\n */\nfunction closest (element, selector) {\n while (element && element.nodeType !== DOCUMENT_NODE_TYPE) {\n if (typeof element.matches === 'function' &&\n element.matches(selector)) {\n return element;\n }\n element = element.parentNode;\n }\n}\n\nmodule.exports = closest;\n\n\n/***/ }),\n\n/***/ 438:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar closest = __webpack_require__(828);\n\n/**\n * Delegates event to a selector.\n *\n * @param {Element} element\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @param {Boolean} useCapture\n * @return {Object}\n */\nfunction _delegate(element, selector, type, callback, useCapture) {\n var listenerFn = listener.apply(this, arguments);\n\n element.addEventListener(type, listenerFn, useCapture);\n\n return {\n destroy: function() {\n element.removeEventListener(type, listenerFn, useCapture);\n }\n }\n}\n\n/**\n * Delegates event to a selector.\n *\n * @param {Element|String|Array} [elements]\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @param {Boolean} useCapture\n * @return {Object}\n */\nfunction delegate(elements, selector, type, callback, useCapture) {\n // Handle the regular Element usage\n if (typeof elements.addEventListener === 'function') {\n return _delegate.apply(null, arguments);\n }\n\n // Handle Element-less usage, it defaults to global delegation\n if (typeof type === 'function') {\n // Use `document` as the first parameter, then apply arguments\n // This is a short way to .unshift `arguments` without running into deoptimizations\n return _delegate.bind(null, document).apply(null, arguments);\n }\n\n // Handle Selector-based usage\n if (typeof elements === 'string') {\n elements = document.querySelectorAll(elements);\n }\n\n // Handle Array-like based usage\n return Array.prototype.map.call(elements, function (element) {\n return _delegate(element, selector, type, callback, useCapture);\n });\n}\n\n/**\n * Finds closest match and invokes callback.\n *\n * @param {Element} element\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @return {Function}\n */\nfunction listener(element, selector, type, callback) {\n return function(e) {\n e.delegateTarget = closest(e.target, selector);\n\n if (e.delegateTarget) {\n callback.call(element, e);\n }\n }\n}\n\nmodule.exports = delegate;\n\n\n/***/ }),\n\n/***/ 879:\n/***/ (function(__unused_webpack_module, exports) {\n\n/**\n * Check if argument is a HTML element.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.node = function(value) {\n return value !== undefined\n && value instanceof HTMLElement\n && value.nodeType === 1;\n};\n\n/**\n * Check if argument is a list of HTML elements.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.nodeList = function(value) {\n var type = Object.prototype.toString.call(value);\n\n return value !== undefined\n && (type === '[object NodeList]' || type === '[object HTMLCollection]')\n && ('length' in value)\n && (value.length === 0 || exports.node(value[0]));\n};\n\n/**\n * Check if argument is a string.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.string = function(value) {\n return typeof value === 'string'\n || value instanceof String;\n};\n\n/**\n * Check if argument is a function.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.fn = function(value) {\n var type = Object.prototype.toString.call(value);\n\n return type === '[object Function]';\n};\n\n\n/***/ }),\n\n/***/ 370:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar is = __webpack_require__(879);\nvar delegate = __webpack_require__(438);\n\n/**\n * Validates all params and calls the right\n * listener function based on its target type.\n *\n * @param {String|HTMLElement|HTMLCollection|NodeList} target\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listen(target, type, callback) {\n if (!target && !type && !callback) {\n throw new Error('Missing required arguments');\n }\n\n if (!is.string(type)) {\n throw new TypeError('Second argument must be a String');\n }\n\n if (!is.fn(callback)) {\n throw new TypeError('Third argument must be a Function');\n }\n\n if (is.node(target)) {\n return listenNode(target, type, callback);\n }\n else if (is.nodeList(target)) {\n return listenNodeList(target, type, callback);\n }\n else if (is.string(target)) {\n return listenSelector(target, type, callback);\n }\n else {\n throw new TypeError('First argument must be a String, HTMLElement, HTMLCollection, or NodeList');\n }\n}\n\n/**\n * Adds an event listener to a HTML element\n * and returns a remove listener function.\n *\n * @param {HTMLElement} node\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenNode(node, type, callback) {\n node.addEventListener(type, callback);\n\n return {\n destroy: function() {\n node.removeEventListener(type, callback);\n }\n }\n}\n\n/**\n * Add an event listener to a list of HTML elements\n * and returns a remove listener function.\n *\n * @param {NodeList|HTMLCollection} nodeList\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenNodeList(nodeList, type, callback) {\n Array.prototype.forEach.call(nodeList, function(node) {\n node.addEventListener(type, callback);\n });\n\n return {\n destroy: function() {\n Array.prototype.forEach.call(nodeList, function(node) {\n node.removeEventListener(type, callback);\n });\n }\n }\n}\n\n/**\n * Add an event listener to a selector\n * and returns a remove listener function.\n *\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenSelector(selector, type, callback) {\n return delegate(document.body, selector, type, callback);\n}\n\nmodule.exports = listen;\n\n\n/***/ }),\n\n/***/ 817:\n/***/ (function(module) {\n\nfunction select(element) {\n var selectedText;\n\n if (element.nodeName === 'SELECT') {\n element.focus();\n\n selectedText = element.value;\n }\n else if (element.nodeName === 'INPUT' || element.nodeName === 'TEXTAREA') {\n var isReadOnly = element.hasAttribute('readonly');\n\n if (!isReadOnly) {\n element.setAttribute('readonly', '');\n }\n\n element.select();\n element.setSelectionRange(0, element.value.length);\n\n if (!isReadOnly) {\n element.removeAttribute('readonly');\n }\n\n selectedText = element.value;\n }\n else {\n if (element.hasAttribute('contenteditable')) {\n element.focus();\n }\n\n var selection = window.getSelection();\n var range = document.createRange();\n\n range.selectNodeContents(element);\n selection.removeAllRanges();\n selection.addRange(range);\n\n selectedText = selection.toString();\n }\n\n return selectedText;\n}\n\nmodule.exports = select;\n\n\n/***/ }),\n\n/***/ 279:\n/***/ (function(module) {\n\nfunction E () {\n // Keep this empty so it's easier to inherit from\n // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3)\n}\n\nE.prototype = {\n on: function (name, callback, ctx) {\n var e = this.e || (this.e = {});\n\n (e[name] || (e[name] = [])).push({\n fn: callback,\n ctx: ctx\n });\n\n return this;\n },\n\n once: function (name, callback, ctx) {\n var self = this;\n function listener () {\n self.off(name, listener);\n callback.apply(ctx, arguments);\n };\n\n listener._ = callback\n return this.on(name, listener, ctx);\n },\n\n emit: function (name) {\n var data = [].slice.call(arguments, 1);\n var evtArr = ((this.e || (this.e = {}))[name] || []).slice();\n var i = 0;\n var len = evtArr.length;\n\n for (i; i < len; i++) {\n evtArr[i].fn.apply(evtArr[i].ctx, data);\n }\n\n return this;\n },\n\n off: function (name, callback) {\n var e = this.e || (this.e = {});\n var evts = e[name];\n var liveEvents = [];\n\n if (evts && callback) {\n for (var i = 0, len = evts.length; i < len; i++) {\n if (evts[i].fn !== callback && evts[i].fn._ !== callback)\n liveEvents.push(evts[i]);\n }\n }\n\n // Remove event from queue to prevent memory leak\n // Suggested by https://github.com/lazd\n // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910\n\n (liveEvents.length)\n ? e[name] = liveEvents\n : delete e[name];\n\n return this;\n }\n};\n\nmodule.exports = E;\nmodule.exports.TinyEmitter = E;\n\n\n/***/ })\n\n/******/ \t});\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(__webpack_module_cache__[moduleId]) {\n/******/ \t\t\treturn __webpack_module_cache__[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t/* webpack/runtime/compat get default export */\n/******/ \t!function() {\n/******/ \t\t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t\t__webpack_require__.n = function(module) {\n/******/ \t\t\tvar getter = module && module.__esModule ?\n/******/ \t\t\t\tfunction() { return module['default']; } :\n/******/ \t\t\t\tfunction() { return module; };\n/******/ \t\t\t__webpack_require__.d(getter, { a: getter });\n/******/ \t\t\treturn getter;\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/define property getters */\n/******/ \t!function() {\n/******/ \t\t// define getter functions for harmony exports\n/******/ \t\t__webpack_require__.d = function(exports, definition) {\n/******/ \t\t\tfor(var key in definition) {\n/******/ \t\t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n/******/ \t\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/hasOwnProperty shorthand */\n/******/ \t!function() {\n/******/ \t\t__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }\n/******/ \t}();\n/******/ \t\n/************************************************************************/\n/******/ \t// module exports must be returned from runtime so entry inlining is disabled\n/******/ \t// startup\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(686);\n/******/ })()\n.default;\n});","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_1___ = new URL(\"data:image/gif;base64,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\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_2___ = new URL(\"images/ui-icons_444444_256x240.png\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_3___ = new URL(\"images/ui-icons_555555_256x240.png\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_4___ = new URL(\"images/ui-icons_ffffff_256x240.png\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_5___ = new URL(\"images/ui-icons_777620_256x240.png\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_6___ = new URL(\"images/ui-icons_cc0000_256x240.png\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_7___ = new URL(\"images/ui-icons_777777_256x240.png\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_1___);\nvar ___CSS_LOADER_URL_REPLACEMENT_2___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_2___);\nvar ___CSS_LOADER_URL_REPLACEMENT_3___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_3___);\nvar ___CSS_LOADER_URL_REPLACEMENT_4___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_4___);\nvar ___CSS_LOADER_URL_REPLACEMENT_5___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_5___);\nvar ___CSS_LOADER_URL_REPLACEMENT_6___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_6___);\nvar ___CSS_LOADER_URL_REPLACEMENT_7___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_7___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*! jQuery UI - v1.13.3 - 2024-04-26\n* https://jqueryui.com\n* Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css\n* To view and modify this theme, visit https://jqueryui.com/themeroller/?bgShadowXPos=&bgOverlayXPos=&bgErrorXPos=&bgHighlightXPos=&bgContentXPos=&bgHeaderXPos=&bgActiveXPos=&bgHoverXPos=&bgDefaultXPos=&bgShadowYPos=&bgOverlayYPos=&bgErrorYPos=&bgHighlightYPos=&bgContentYPos=&bgHeaderYPos=&bgActiveYPos=&bgHoverYPos=&bgDefaultYPos=&bgShadowRepeat=&bgOverlayRepeat=&bgErrorRepeat=&bgHighlightRepeat=&bgContentRepeat=&bgHeaderRepeat=&bgActiveRepeat=&bgHoverRepeat=&bgDefaultRepeat=&iconsHover=url(%22images%2Fui-icons_555555_256x240.png%22)&iconsHighlight=url(%22images%2Fui-icons_777620_256x240.png%22)&iconsHeader=url(%22images%2Fui-icons_444444_256x240.png%22)&iconsError=url(%22images%2Fui-icons_cc0000_256x240.png%22)&iconsDefault=url(%22images%2Fui-icons_777777_256x240.png%22)&iconsContent=url(%22images%2Fui-icons_444444_256x240.png%22)&iconsActive=url(%22images%2Fui-icons_ffffff_256x240.png%22)&bgImgUrlShadow=&bgImgUrlOverlay=&bgImgUrlHover=&bgImgUrlHighlight=&bgImgUrlHeader=&bgImgUrlError=&bgImgUrlDefault=&bgImgUrlContent=&bgImgUrlActive=&opacityFilterShadow=%22alpha(opacity%3D30)%22&opacityFilterOverlay=%22alpha(opacity%3D30)%22&opacityShadowPerc=30&opacityOverlayPerc=30&iconColorHover=%23555555&iconColorHighlight=%23777620&iconColorHeader=%23444444&iconColorError=%23cc0000&iconColorDefault=%23777777&iconColorContent=%23444444&iconColorActive=%23ffffff&bgImgOpacityShadow=0&bgImgOpacityOverlay=0&bgImgOpacityError=95&bgImgOpacityHighlight=55&bgImgOpacityContent=75&bgImgOpacityHeader=75&bgImgOpacityActive=65&bgImgOpacityHover=75&bgImgOpacityDefault=75&bgTextureShadow=flat&bgTextureOverlay=flat&bgTextureError=flat&bgTextureHighlight=flat&bgTextureContent=flat&bgTextureHeader=flat&bgTextureActive=flat&bgTextureHover=flat&bgTextureDefault=flat&cornerRadius=3px&fwDefault=normal&ffDefault=Arial%2CHelvetica%2Csans-serif&fsDefault=1em&cornerRadiusShadow=8px&thicknessShadow=5px&offsetLeftShadow=0px&offsetTopShadow=0px&opacityShadow=.3&bgColorShadow=%23666666&opacityOverlay=.3&bgColorOverlay=%23aaaaaa&fcError=%235f3f3f&borderColorError=%23f1a899&bgColorError=%23fddfdf&fcHighlight=%23777620&borderColorHighlight=%23dad55e&bgColorHighlight=%23fffa90&fcContent=%23333333&borderColorContent=%23dddddd&bgColorContent=%23ffffff&fcHeader=%23333333&borderColorHeader=%23dddddd&bgColorHeader=%23e9e9e9&fcActive=%23ffffff&borderColorActive=%23003eff&bgColorActive=%23007fff&fcHover=%232b2b2b&borderColorHover=%23cccccc&bgColorHover=%23ededed&fcDefault=%23454545&borderColorDefault=%23c5c5c5&bgColorDefault=%23f6f6f6\n* Copyright OpenJS Foundation and other contributors; Licensed MIT */\n\n/* Layout helpers\n----------------------------------*/\n.ui-helper-hidden {\n\tdisplay: none;\n}\n.ui-helper-hidden-accessible {\n\tborder: 0;\n\tclip: rect(0 0 0 0);\n\theight: 1px;\n\tmargin: -1px;\n\toverflow: hidden;\n\tpadding: 0;\n\tposition: absolute;\n\twidth: 1px;\n}\n.ui-helper-reset {\n\tmargin: 0;\n\tpadding: 0;\n\tborder: 0;\n\toutline: 0;\n\tline-height: 1.3;\n\ttext-decoration: none;\n\tfont-size: 100%;\n\tlist-style: none;\n}\n.ui-helper-clearfix:before,\n.ui-helper-clearfix:after {\n\tcontent: \"\";\n\tdisplay: table;\n\tborder-collapse: collapse;\n}\n.ui-helper-clearfix:after {\n\tclear: both;\n}\n.ui-helper-zfix {\n\twidth: 100%;\n\theight: 100%;\n\ttop: 0;\n\tleft: 0;\n\tposition: absolute;\n\topacity: 0;\n\t-ms-filter: \"alpha(opacity=0)\"; /* support: IE8 */\n}\n\n.ui-front {\n\tz-index: 100;\n}\n\n\n/* Interaction Cues\n----------------------------------*/\n.ui-state-disabled {\n\tcursor: default !important;\n\tpointer-events: none;\n}\n\n\n/* Icons\n----------------------------------*/\n.ui-icon {\n\tdisplay: inline-block;\n\tvertical-align: middle;\n\tmargin-top: -.25em;\n\tposition: relative;\n\ttext-indent: -99999px;\n\toverflow: hidden;\n\tbackground-repeat: no-repeat;\n}\n\n.ui-widget-icon-block {\n\tleft: 50%;\n\tmargin-left: -8px;\n\tdisplay: block;\n}\n\n/* Misc visuals\n----------------------------------*/\n\n/* Overlays */\n.ui-widget-overlay {\n\tposition: fixed;\n\ttop: 0;\n\tleft: 0;\n\twidth: 100%;\n\theight: 100%;\n}\n.ui-accordion .ui-accordion-header {\n\tdisplay: block;\n\tcursor: pointer;\n\tposition: relative;\n\tmargin: 2px 0 0 0;\n\tpadding: .5em .5em .5em .7em;\n\tfont-size: 100%;\n}\n.ui-accordion .ui-accordion-content {\n\tpadding: 1em 2.2em;\n\tborder-top: 0;\n\toverflow: auto;\n}\n.ui-autocomplete {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tcursor: default;\n}\n.ui-menu {\n\tlist-style: none;\n\tpadding: 0;\n\tmargin: 0;\n\tdisplay: block;\n\toutline: 0;\n}\n.ui-menu .ui-menu {\n\tposition: absolute;\n}\n.ui-menu .ui-menu-item {\n\tmargin: 0;\n\tcursor: pointer;\n\t/* support: IE10, see #8844 */\n\tlist-style-image: url(${___CSS_LOADER_URL_REPLACEMENT_0___});\n}\n.ui-menu .ui-menu-item-wrapper {\n\tposition: relative;\n\tpadding: 3px 1em 3px .4em;\n}\n.ui-menu .ui-menu-divider {\n\tmargin: 5px 0;\n\theight: 0;\n\tfont-size: 0;\n\tline-height: 0;\n\tborder-width: 1px 0 0 0;\n}\n.ui-menu .ui-state-focus,\n.ui-menu .ui-state-active {\n\tmargin: -1px;\n}\n\n/* icon support */\n.ui-menu-icons {\n\tposition: relative;\n}\n.ui-menu-icons .ui-menu-item-wrapper {\n\tpadding-left: 2em;\n}\n\n/* left-aligned */\n.ui-menu .ui-icon {\n\tposition: absolute;\n\ttop: 0;\n\tbottom: 0;\n\tleft: .2em;\n\tmargin: auto 0;\n}\n\n/* right-aligned */\n.ui-menu .ui-menu-icon {\n\tleft: auto;\n\tright: 0;\n}\n.ui-button {\n\tpadding: .4em 1em;\n\tdisplay: inline-block;\n\tposition: relative;\n\tline-height: normal;\n\tmargin-right: .1em;\n\tcursor: pointer;\n\tvertical-align: middle;\n\ttext-align: center;\n\t-webkit-user-select: none;\n\t-moz-user-select: none;\n\t-ms-user-select: none;\n\tuser-select: none;\n\n\t/* Support: IE <= 11 */\n\toverflow: visible;\n}\n\n.ui-button,\n.ui-button:link,\n.ui-button:visited,\n.ui-button:hover,\n.ui-button:active {\n\ttext-decoration: none;\n}\n\n/* to make room for the icon, a width needs to be set here */\n.ui-button-icon-only {\n\twidth: 2em;\n\tbox-sizing: border-box;\n\ttext-indent: -9999px;\n\twhite-space: nowrap;\n}\n\n/* no icon support for input elements */\ninput.ui-button.ui-button-icon-only {\n\ttext-indent: 0;\n}\n\n/* button icon element(s) */\n.ui-button-icon-only .ui-icon {\n\tposition: absolute;\n\ttop: 50%;\n\tleft: 50%;\n\tmargin-top: -8px;\n\tmargin-left: -8px;\n}\n\n.ui-button.ui-icon-notext .ui-icon {\n\tpadding: 0;\n\twidth: 2.1em;\n\theight: 2.1em;\n\ttext-indent: -9999px;\n\twhite-space: nowrap;\n\n}\n\ninput.ui-button.ui-icon-notext .ui-icon {\n\twidth: auto;\n\theight: auto;\n\ttext-indent: 0;\n\twhite-space: normal;\n\tpadding: .4em 1em;\n}\n\n/* workarounds */\n/* Support: Firefox 5 - 40 */\ninput.ui-button::-moz-focus-inner,\nbutton.ui-button::-moz-focus-inner {\n\tborder: 0;\n\tpadding: 0;\n}\n.ui-controlgroup {\n\tvertical-align: middle;\n\tdisplay: inline-block;\n}\n.ui-controlgroup > .ui-controlgroup-item {\n\tfloat: left;\n\tmargin-left: 0;\n\tmargin-right: 0;\n}\n.ui-controlgroup > .ui-controlgroup-item:focus,\n.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus {\n\tz-index: 9999;\n}\n.ui-controlgroup-vertical > .ui-controlgroup-item {\n\tdisplay: block;\n\tfloat: none;\n\twidth: 100%;\n\tmargin-top: 0;\n\tmargin-bottom: 0;\n\ttext-align: left;\n}\n.ui-controlgroup-vertical .ui-controlgroup-item {\n\tbox-sizing: border-box;\n}\n.ui-controlgroup .ui-controlgroup-label {\n\tpadding: .4em 1em;\n}\n.ui-controlgroup .ui-controlgroup-label span {\n\tfont-size: 80%;\n}\n.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item {\n\tborder-left: none;\n}\n.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item {\n\tborder-top: none;\n}\n.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content {\n\tborder-right: none;\n}\n.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content {\n\tborder-bottom: none;\n}\n\n/* Spinner specific style fixes */\n.ui-controlgroup-vertical .ui-spinner-input {\n\n\t/* Support: IE8 only, Android < 4.4 only */\n\twidth: 75%;\n\twidth: calc( 100% - 2.4em );\n}\n.ui-controlgroup-vertical .ui-spinner .ui-spinner-up {\n\tborder-top-style: solid;\n}\n\n.ui-checkboxradio-label .ui-icon-background {\n\tbox-shadow: inset 1px 1px 1px #ccc;\n\tborder-radius: .12em;\n\tborder: none;\n}\n.ui-checkboxradio-radio-label .ui-icon-background {\n\twidth: 16px;\n\theight: 16px;\n\tborder-radius: 1em;\n\toverflow: visible;\n\tborder: none;\n}\n.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,\n.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon {\n\tbackground-image: none;\n\twidth: 8px;\n\theight: 8px;\n\tborder-width: 4px;\n\tborder-style: solid;\n}\n.ui-checkboxradio-disabled {\n\tpointer-events: none;\n}\n.ui-datepicker {\n\twidth: 17em;\n\tpadding: .2em .2em 0;\n\tdisplay: none;\n}\n.ui-datepicker .ui-datepicker-header {\n\tposition: relative;\n\tpadding: .2em 0;\n}\n.ui-datepicker .ui-datepicker-prev,\n.ui-datepicker .ui-datepicker-next {\n\tposition: absolute;\n\ttop: 2px;\n\twidth: 1.8em;\n\theight: 1.8em;\n}\n.ui-datepicker .ui-datepicker-prev-hover,\n.ui-datepicker .ui-datepicker-next-hover {\n\ttop: 1px;\n}\n.ui-datepicker .ui-datepicker-prev {\n\tleft: 2px;\n}\n.ui-datepicker .ui-datepicker-next {\n\tright: 2px;\n}\n.ui-datepicker .ui-datepicker-prev-hover {\n\tleft: 1px;\n}\n.ui-datepicker .ui-datepicker-next-hover {\n\tright: 1px;\n}\n.ui-datepicker .ui-datepicker-prev span,\n.ui-datepicker .ui-datepicker-next span {\n\tdisplay: block;\n\tposition: absolute;\n\tleft: 50%;\n\tmargin-left: -8px;\n\ttop: 50%;\n\tmargin-top: -8px;\n}\n.ui-datepicker .ui-datepicker-title {\n\tmargin: 0 2.3em;\n\tline-height: 1.8em;\n\ttext-align: center;\n}\n.ui-datepicker .ui-datepicker-title select {\n\tfont-size: 1em;\n\tmargin: 1px 0;\n}\n.ui-datepicker select.ui-datepicker-month,\n.ui-datepicker select.ui-datepicker-year {\n\twidth: 45%;\n}\n.ui-datepicker table {\n\twidth: 100%;\n\tfont-size: .9em;\n\tborder-collapse: collapse;\n\tmargin: 0 0 .4em;\n}\n.ui-datepicker th {\n\tpadding: .7em .3em;\n\ttext-align: center;\n\tfont-weight: bold;\n\tborder: 0;\n}\n.ui-datepicker td {\n\tborder: 0;\n\tpadding: 1px;\n}\n.ui-datepicker td span,\n.ui-datepicker td a {\n\tdisplay: block;\n\tpadding: .2em;\n\ttext-align: right;\n\ttext-decoration: none;\n}\n.ui-datepicker .ui-datepicker-buttonpane {\n\tbackground-image: none;\n\tmargin: .7em 0 0 0;\n\tpadding: 0 .2em;\n\tborder-left: 0;\n\tborder-right: 0;\n\tborder-bottom: 0;\n}\n.ui-datepicker .ui-datepicker-buttonpane button {\n\tfloat: right;\n\tmargin: .5em .2em .4em;\n\tcursor: pointer;\n\tpadding: .2em .6em .3em .6em;\n\twidth: auto;\n\toverflow: visible;\n}\n.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current {\n\tfloat: left;\n}\n\n/* with multiple calendars */\n.ui-datepicker.ui-datepicker-multi {\n\twidth: auto;\n}\n.ui-datepicker-multi .ui-datepicker-group {\n\tfloat: left;\n}\n.ui-datepicker-multi .ui-datepicker-group table {\n\twidth: 95%;\n\tmargin: 0 auto .4em;\n}\n.ui-datepicker-multi-2 .ui-datepicker-group {\n\twidth: 50%;\n}\n.ui-datepicker-multi-3 .ui-datepicker-group {\n\twidth: 33.3%;\n}\n.ui-datepicker-multi-4 .ui-datepicker-group {\n\twidth: 25%;\n}\n.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,\n.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header {\n\tborder-left-width: 0;\n}\n.ui-datepicker-multi .ui-datepicker-buttonpane {\n\tclear: left;\n}\n.ui-datepicker-row-break {\n\tclear: both;\n\twidth: 100%;\n\tfont-size: 0;\n}\n\n/* RTL support */\n.ui-datepicker-rtl {\n\tdirection: rtl;\n}\n.ui-datepicker-rtl .ui-datepicker-prev {\n\tright: 2px;\n\tleft: auto;\n}\n.ui-datepicker-rtl .ui-datepicker-next {\n\tleft: 2px;\n\tright: auto;\n}\n.ui-datepicker-rtl .ui-datepicker-prev:hover {\n\tright: 1px;\n\tleft: auto;\n}\n.ui-datepicker-rtl .ui-datepicker-next:hover {\n\tleft: 1px;\n\tright: auto;\n}\n.ui-datepicker-rtl .ui-datepicker-buttonpane {\n\tclear: right;\n}\n.ui-datepicker-rtl .ui-datepicker-buttonpane button {\n\tfloat: left;\n}\n.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,\n.ui-datepicker-rtl .ui-datepicker-group {\n\tfloat: right;\n}\n.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,\n.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header {\n\tborder-right-width: 0;\n\tborder-left-width: 1px;\n}\n\n/* Icons */\n.ui-datepicker .ui-icon {\n\tdisplay: block;\n\ttext-indent: -99999px;\n\toverflow: hidden;\n\tbackground-repeat: no-repeat;\n\tleft: .5em;\n\ttop: .3em;\n}\n.ui-dialog {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tpadding: .2em;\n\toutline: 0;\n}\n.ui-dialog .ui-dialog-titlebar {\n\tpadding: .4em 1em;\n\tposition: relative;\n}\n.ui-dialog .ui-dialog-title {\n\tfloat: left;\n\tmargin: .1em 0;\n\twhite-space: nowrap;\n\twidth: 90%;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n}\n.ui-dialog .ui-dialog-titlebar-close {\n\tposition: absolute;\n\tright: .3em;\n\ttop: 50%;\n\twidth: 20px;\n\tmargin: -10px 0 0 0;\n\tpadding: 1px;\n\theight: 20px;\n}\n.ui-dialog .ui-dialog-content {\n\tposition: relative;\n\tborder: 0;\n\tpadding: .5em 1em;\n\tbackground: none;\n\toverflow: auto;\n}\n.ui-dialog .ui-dialog-buttonpane {\n\ttext-align: left;\n\tborder-width: 1px 0 0 0;\n\tbackground-image: none;\n\tmargin-top: .5em;\n\tpadding: .3em 1em .5em .4em;\n}\n.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {\n\tfloat: right;\n}\n.ui-dialog .ui-dialog-buttonpane button {\n\tmargin: .5em .4em .5em 0;\n\tcursor: pointer;\n}\n.ui-dialog .ui-resizable-n {\n\theight: 2px;\n\ttop: 0;\n}\n.ui-dialog .ui-resizable-e {\n\twidth: 2px;\n\tright: 0;\n}\n.ui-dialog .ui-resizable-s {\n\theight: 2px;\n\tbottom: 0;\n}\n.ui-dialog .ui-resizable-w {\n\twidth: 2px;\n\tleft: 0;\n}\n.ui-dialog .ui-resizable-se,\n.ui-dialog .ui-resizable-sw,\n.ui-dialog .ui-resizable-ne,\n.ui-dialog .ui-resizable-nw {\n\twidth: 7px;\n\theight: 7px;\n}\n.ui-dialog .ui-resizable-se {\n\tright: 0;\n\tbottom: 0;\n}\n.ui-dialog .ui-resizable-sw {\n\tleft: 0;\n\tbottom: 0;\n}\n.ui-dialog .ui-resizable-ne {\n\tright: 0;\n\ttop: 0;\n}\n.ui-dialog .ui-resizable-nw {\n\tleft: 0;\n\ttop: 0;\n}\n.ui-draggable .ui-dialog-titlebar {\n\tcursor: move;\n}\n.ui-draggable-handle {\n\t-ms-touch-action: none;\n\ttouch-action: none;\n}\n.ui-resizable {\n\tposition: relative;\n}\n.ui-resizable-handle {\n\tposition: absolute;\n\tfont-size: 0.1px;\n\tdisplay: block;\n\t-ms-touch-action: none;\n\ttouch-action: none;\n}\n.ui-resizable-disabled .ui-resizable-handle,\n.ui-resizable-autohide .ui-resizable-handle {\n\tdisplay: none;\n}\n.ui-resizable-n {\n\tcursor: n-resize;\n\theight: 7px;\n\twidth: 100%;\n\ttop: -5px;\n\tleft: 0;\n}\n.ui-resizable-s {\n\tcursor: s-resize;\n\theight: 7px;\n\twidth: 100%;\n\tbottom: -5px;\n\tleft: 0;\n}\n.ui-resizable-e {\n\tcursor: e-resize;\n\twidth: 7px;\n\tright: -5px;\n\ttop: 0;\n\theight: 100%;\n}\n.ui-resizable-w {\n\tcursor: w-resize;\n\twidth: 7px;\n\tleft: -5px;\n\ttop: 0;\n\theight: 100%;\n}\n.ui-resizable-se {\n\tcursor: se-resize;\n\twidth: 12px;\n\theight: 12px;\n\tright: 1px;\n\tbottom: 1px;\n}\n.ui-resizable-sw {\n\tcursor: sw-resize;\n\twidth: 9px;\n\theight: 9px;\n\tleft: -5px;\n\tbottom: -5px;\n}\n.ui-resizable-nw {\n\tcursor: nw-resize;\n\twidth: 9px;\n\theight: 9px;\n\tleft: -5px;\n\ttop: -5px;\n}\n.ui-resizable-ne {\n\tcursor: ne-resize;\n\twidth: 9px;\n\theight: 9px;\n\tright: -5px;\n\ttop: -5px;\n}\n.ui-progressbar {\n\theight: 2em;\n\ttext-align: left;\n\toverflow: hidden;\n}\n.ui-progressbar .ui-progressbar-value {\n\tmargin: -1px;\n\theight: 100%;\n}\n.ui-progressbar .ui-progressbar-overlay {\n\tbackground: url(${___CSS_LOADER_URL_REPLACEMENT_1___});\n\theight: 100%;\n\t-ms-filter: \"alpha(opacity=25)\"; /* support: IE8 */\n\topacity: 0.25;\n}\n.ui-progressbar-indeterminate .ui-progressbar-value {\n\tbackground-image: none;\n}\n.ui-selectable {\n\t-ms-touch-action: none;\n\ttouch-action: none;\n}\n.ui-selectable-helper {\n\tposition: absolute;\n\tz-index: 100;\n\tborder: 1px dotted black;\n}\n.ui-selectmenu-menu {\n\tpadding: 0;\n\tmargin: 0;\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tdisplay: none;\n}\n.ui-selectmenu-menu .ui-menu {\n\toverflow: auto;\n\toverflow-x: hidden;\n\tpadding-bottom: 1px;\n}\n.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup {\n\tfont-size: 1em;\n\tfont-weight: bold;\n\tline-height: 1.5;\n\tpadding: 2px 0.4em;\n\tmargin: 0.5em 0 0 0;\n\theight: auto;\n\tborder: 0;\n}\n.ui-selectmenu-open {\n\tdisplay: block;\n}\n.ui-selectmenu-text {\n\tdisplay: block;\n\tmargin-right: 20px;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n}\n.ui-selectmenu-button.ui-button {\n\ttext-align: left;\n\twhite-space: nowrap;\n\twidth: 14em;\n}\n.ui-selectmenu-icon.ui-icon {\n\tfloat: right;\n\tmargin-top: 0;\n}\n.ui-slider {\n\tposition: relative;\n\ttext-align: left;\n}\n.ui-slider .ui-slider-handle {\n\tposition: absolute;\n\tz-index: 2;\n\twidth: 1.2em;\n\theight: 1.2em;\n\tcursor: pointer;\n\t-ms-touch-action: none;\n\ttouch-action: none;\n}\n.ui-slider .ui-slider-range {\n\tposition: absolute;\n\tz-index: 1;\n\tfont-size: .7em;\n\tdisplay: block;\n\tborder: 0;\n\tbackground-position: 0 0;\n}\n\n/* support: IE8 - See #6727 */\n.ui-slider.ui-state-disabled .ui-slider-handle,\n.ui-slider.ui-state-disabled .ui-slider-range {\n\tfilter: inherit;\n}\n\n.ui-slider-horizontal {\n\theight: .8em;\n}\n.ui-slider-horizontal .ui-slider-handle {\n\ttop: -.3em;\n\tmargin-left: -.6em;\n}\n.ui-slider-horizontal .ui-slider-range {\n\ttop: 0;\n\theight: 100%;\n}\n.ui-slider-horizontal .ui-slider-range-min {\n\tleft: 0;\n}\n.ui-slider-horizontal .ui-slider-range-max {\n\tright: 0;\n}\n\n.ui-slider-vertical {\n\twidth: .8em;\n\theight: 100px;\n}\n.ui-slider-vertical .ui-slider-handle {\n\tleft: -.3em;\n\tmargin-left: 0;\n\tmargin-bottom: -.6em;\n}\n.ui-slider-vertical .ui-slider-range {\n\tleft: 0;\n\twidth: 100%;\n}\n.ui-slider-vertical .ui-slider-range-min {\n\tbottom: 0;\n}\n.ui-slider-vertical .ui-slider-range-max {\n\ttop: 0;\n}\n.ui-sortable-handle {\n\t-ms-touch-action: none;\n\ttouch-action: none;\n}\n.ui-spinner {\n\tposition: relative;\n\tdisplay: inline-block;\n\toverflow: hidden;\n\tpadding: 0;\n\tvertical-align: middle;\n}\n.ui-spinner-input {\n\tborder: none;\n\tbackground: none;\n\tcolor: inherit;\n\tpadding: .222em 0;\n\tmargin: .2em 0;\n\tvertical-align: middle;\n\tmargin-left: .4em;\n\tmargin-right: 2em;\n}\n.ui-spinner-button {\n\twidth: 1.6em;\n\theight: 50%;\n\tfont-size: .5em;\n\tpadding: 0;\n\tmargin: 0;\n\ttext-align: center;\n\tposition: absolute;\n\tcursor: default;\n\tdisplay: block;\n\toverflow: hidden;\n\tright: 0;\n}\n/* more specificity required here to override default borders */\n.ui-spinner a.ui-spinner-button {\n\tborder-top-style: none;\n\tborder-bottom-style: none;\n\tborder-right-style: none;\n}\n.ui-spinner-up {\n\ttop: 0;\n}\n.ui-spinner-down {\n\tbottom: 0;\n}\n.ui-tabs {\n\tposition: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as \"fixed\") */\n\tpadding: .2em;\n}\n.ui-tabs .ui-tabs-nav {\n\tmargin: 0;\n\tpadding: .2em .2em 0;\n}\n.ui-tabs .ui-tabs-nav li {\n\tlist-style: none;\n\tfloat: left;\n\tposition: relative;\n\ttop: 0;\n\tmargin: 1px .2em 0 0;\n\tborder-bottom-width: 0;\n\tpadding: 0;\n\twhite-space: nowrap;\n}\n.ui-tabs .ui-tabs-nav .ui-tabs-anchor {\n\tfloat: left;\n\tpadding: .5em 1em;\n\ttext-decoration: none;\n}\n.ui-tabs .ui-tabs-nav li.ui-tabs-active {\n\tmargin-bottom: -1px;\n\tpadding-bottom: 1px;\n}\n.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,\n.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,\n.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor {\n\tcursor: text;\n}\n.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor {\n\tcursor: pointer;\n}\n.ui-tabs .ui-tabs-panel {\n\tdisplay: block;\n\tborder-width: 0;\n\tpadding: 1em 1.4em;\n\tbackground: none;\n}\n.ui-tooltip {\n\tpadding: 8px;\n\tposition: absolute;\n\tz-index: 9999;\n\tmax-width: 300px;\n}\nbody .ui-tooltip {\n\tborder-width: 2px;\n}\n\n/* Component containers\n----------------------------------*/\n.ui-widget {\n\tfont-family: Arial,Helvetica,sans-serif;\n\tfont-size: 1em;\n}\n.ui-widget .ui-widget {\n\tfont-size: 1em;\n}\n.ui-widget input,\n.ui-widget select,\n.ui-widget textarea,\n.ui-widget button {\n\tfont-family: Arial,Helvetica,sans-serif;\n\tfont-size: 1em;\n}\n.ui-widget.ui-widget-content {\n\tborder: 1px solid #c5c5c5;\n}\n.ui-widget-content {\n\tborder: 1px solid #dddddd;\n\tbackground: #ffffff;\n\tcolor: #333333;\n}\n.ui-widget-content a {\n\tcolor: #333333;\n}\n.ui-widget-header {\n\tborder: 1px solid #dddddd;\n\tbackground: #e9e9e9;\n\tcolor: #333333;\n\tfont-weight: bold;\n}\n.ui-widget-header a {\n\tcolor: #333333;\n}\n\n/* Interaction states\n----------------------------------*/\n.ui-state-default,\n.ui-widget-content .ui-state-default,\n.ui-widget-header .ui-state-default,\n.ui-button,\n\n/* We use html here because we need a greater specificity to make sure disabled\nworks properly when clicked or hovered */\nhtml .ui-button.ui-state-disabled:hover,\nhtml .ui-button.ui-state-disabled:active {\n\tborder: 1px solid #c5c5c5;\n\tbackground: #f6f6f6;\n\tfont-weight: normal;\n\tcolor: #454545;\n}\n.ui-state-default a,\n.ui-state-default a:link,\n.ui-state-default a:visited,\na.ui-button,\na:link.ui-button,\na:visited.ui-button,\n.ui-button {\n\tcolor: #454545;\n\ttext-decoration: none;\n}\n.ui-state-hover,\n.ui-widget-content .ui-state-hover,\n.ui-widget-header .ui-state-hover,\n.ui-state-focus,\n.ui-widget-content .ui-state-focus,\n.ui-widget-header .ui-state-focus,\n.ui-button:hover,\n.ui-button:focus {\n\tborder: 1px solid #cccccc;\n\tbackground: #ededed;\n\tfont-weight: normal;\n\tcolor: #2b2b2b;\n}\n.ui-state-hover a,\n.ui-state-hover a:hover,\n.ui-state-hover a:link,\n.ui-state-hover a:visited,\n.ui-state-focus a,\n.ui-state-focus a:hover,\n.ui-state-focus a:link,\n.ui-state-focus a:visited,\na.ui-button:hover,\na.ui-button:focus {\n\tcolor: #2b2b2b;\n\ttext-decoration: none;\n}\n\n.ui-visual-focus {\n\tbox-shadow: 0 0 3px 1px rgb(94, 158, 214);\n}\n.ui-state-active,\n.ui-widget-content .ui-state-active,\n.ui-widget-header .ui-state-active,\na.ui-button:active,\n.ui-button:active,\n.ui-button.ui-state-active:hover {\n\tborder: 1px solid #003eff;\n\tbackground: #007fff;\n\tfont-weight: normal;\n\tcolor: #ffffff;\n}\n.ui-icon-background,\n.ui-state-active .ui-icon-background {\n\tborder: #003eff;\n\tbackground-color: #ffffff;\n}\n.ui-state-active a,\n.ui-state-active a:link,\n.ui-state-active a:visited {\n\tcolor: #ffffff;\n\ttext-decoration: none;\n}\n\n/* Interaction Cues\n----------------------------------*/\n.ui-state-highlight,\n.ui-widget-content .ui-state-highlight,\n.ui-widget-header .ui-state-highlight {\n\tborder: 1px solid #dad55e;\n\tbackground: #fffa90;\n\tcolor: #777620;\n}\n.ui-state-checked {\n\tborder: 1px solid #dad55e;\n\tbackground: #fffa90;\n}\n.ui-state-highlight a,\n.ui-widget-content .ui-state-highlight a,\n.ui-widget-header .ui-state-highlight a {\n\tcolor: #777620;\n}\n.ui-state-error,\n.ui-widget-content .ui-state-error,\n.ui-widget-header .ui-state-error {\n\tborder: 1px solid #f1a899;\n\tbackground: #fddfdf;\n\tcolor: #5f3f3f;\n}\n.ui-state-error a,\n.ui-widget-content .ui-state-error a,\n.ui-widget-header .ui-state-error a {\n\tcolor: #5f3f3f;\n}\n.ui-state-error-text,\n.ui-widget-content .ui-state-error-text,\n.ui-widget-header .ui-state-error-text {\n\tcolor: #5f3f3f;\n}\n.ui-priority-primary,\n.ui-widget-content .ui-priority-primary,\n.ui-widget-header .ui-priority-primary {\n\tfont-weight: bold;\n}\n.ui-priority-secondary,\n.ui-widget-content .ui-priority-secondary,\n.ui-widget-header .ui-priority-secondary {\n\topacity: .7;\n\t-ms-filter: \"alpha(opacity=70)\"; /* support: IE8 */\n\tfont-weight: normal;\n}\n.ui-state-disabled,\n.ui-widget-content .ui-state-disabled,\n.ui-widget-header .ui-state-disabled {\n\topacity: .35;\n\t-ms-filter: \"alpha(opacity=35)\"; /* support: IE8 */\n\tbackground-image: none;\n}\n.ui-state-disabled .ui-icon {\n\t-ms-filter: \"alpha(opacity=35)\"; /* support: IE8 - See #6059 */\n}\n\n/* Icons\n----------------------------------*/\n\n/* states and images */\n.ui-icon {\n\twidth: 16px;\n\theight: 16px;\n}\n.ui-icon,\n.ui-widget-content .ui-icon {\n\tbackground-image: url(${___CSS_LOADER_URL_REPLACEMENT_2___});\n}\n.ui-widget-header .ui-icon {\n\tbackground-image: url(${___CSS_LOADER_URL_REPLACEMENT_2___});\n}\n.ui-state-hover .ui-icon,\n.ui-state-focus .ui-icon,\n.ui-button:hover .ui-icon,\n.ui-button:focus .ui-icon {\n\tbackground-image: url(${___CSS_LOADER_URL_REPLACEMENT_3___});\n}\n.ui-state-active .ui-icon,\n.ui-button:active .ui-icon {\n\tbackground-image: url(${___CSS_LOADER_URL_REPLACEMENT_4___});\n}\n.ui-state-highlight .ui-icon,\n.ui-button .ui-state-highlight.ui-icon {\n\tbackground-image: url(${___CSS_LOADER_URL_REPLACEMENT_5___});\n}\n.ui-state-error .ui-icon,\n.ui-state-error-text .ui-icon {\n\tbackground-image: url(${___CSS_LOADER_URL_REPLACEMENT_6___});\n}\n.ui-button .ui-icon {\n\tbackground-image: url(${___CSS_LOADER_URL_REPLACEMENT_7___});\n}\n\n/* positioning */\n/* Three classes needed to override \\`.ui-button:hover .ui-icon\\` */\n.ui-icon-blank.ui-icon-blank.ui-icon-blank {\n\tbackground-image: none;\n}\n.ui-icon-caret-1-n { background-position: 0 0; }\n.ui-icon-caret-1-ne { background-position: -16px 0; }\n.ui-icon-caret-1-e { background-position: -32px 0; }\n.ui-icon-caret-1-se { background-position: -48px 0; }\n.ui-icon-caret-1-s { background-position: -65px 0; }\n.ui-icon-caret-1-sw { background-position: -80px 0; }\n.ui-icon-caret-1-w { background-position: -96px 0; }\n.ui-icon-caret-1-nw { background-position: -112px 0; }\n.ui-icon-caret-2-n-s { background-position: -128px 0; }\n.ui-icon-caret-2-e-w { background-position: -144px 0; }\n.ui-icon-triangle-1-n { background-position: 0 -16px; }\n.ui-icon-triangle-1-ne { background-position: -16px -16px; }\n.ui-icon-triangle-1-e { background-position: -32px -16px; }\n.ui-icon-triangle-1-se { background-position: -48px -16px; }\n.ui-icon-triangle-1-s { background-position: -65px -16px; }\n.ui-icon-triangle-1-sw { background-position: -80px -16px; }\n.ui-icon-triangle-1-w { background-position: -96px -16px; }\n.ui-icon-triangle-1-nw { background-position: -112px -16px; }\n.ui-icon-triangle-2-n-s { background-position: -128px -16px; }\n.ui-icon-triangle-2-e-w { background-position: -144px -16px; }\n.ui-icon-arrow-1-n { background-position: 0 -32px; }\n.ui-icon-arrow-1-ne { background-position: -16px -32px; }\n.ui-icon-arrow-1-e { background-position: -32px -32px; }\n.ui-icon-arrow-1-se { background-position: -48px -32px; }\n.ui-icon-arrow-1-s { background-position: -65px -32px; }\n.ui-icon-arrow-1-sw { background-position: -80px -32px; }\n.ui-icon-arrow-1-w { background-position: -96px -32px; }\n.ui-icon-arrow-1-nw { background-position: -112px -32px; }\n.ui-icon-arrow-2-n-s { background-position: -128px -32px; }\n.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }\n.ui-icon-arrow-2-e-w { background-position: -160px -32px; }\n.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }\n.ui-icon-arrowstop-1-n { background-position: -192px -32px; }\n.ui-icon-arrowstop-1-e { background-position: -208px -32px; }\n.ui-icon-arrowstop-1-s { background-position: -224px -32px; }\n.ui-icon-arrowstop-1-w { background-position: -240px -32px; }\n.ui-icon-arrowthick-1-n { background-position: 1px -48px; }\n.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }\n.ui-icon-arrowthick-1-e { background-position: -32px -48px; }\n.ui-icon-arrowthick-1-se { background-position: -48px -48px; }\n.ui-icon-arrowthick-1-s { background-position: -64px -48px; }\n.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }\n.ui-icon-arrowthick-1-w { background-position: -96px -48px; }\n.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }\n.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }\n.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }\n.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }\n.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }\n.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }\n.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }\n.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }\n.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }\n.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }\n.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }\n.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }\n.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }\n.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }\n.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }\n.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }\n.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }\n.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }\n.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }\n.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }\n.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }\n.ui-icon-arrow-4 { background-position: 0 -80px; }\n.ui-icon-arrow-4-diag { background-position: -16px -80px; }\n.ui-icon-extlink { background-position: -32px -80px; }\n.ui-icon-newwin { background-position: -48px -80px; }\n.ui-icon-refresh { background-position: -64px -80px; }\n.ui-icon-shuffle { background-position: -80px -80px; }\n.ui-icon-transfer-e-w { background-position: -96px -80px; }\n.ui-icon-transferthick-e-w { background-position: -112px -80px; }\n.ui-icon-folder-collapsed { background-position: 0 -96px; }\n.ui-icon-folder-open { background-position: -16px -96px; }\n.ui-icon-document { background-position: -32px -96px; }\n.ui-icon-document-b { background-position: -48px -96px; }\n.ui-icon-note { background-position: -64px -96px; }\n.ui-icon-mail-closed { background-position: -80px -96px; }\n.ui-icon-mail-open { background-position: -96px -96px; }\n.ui-icon-suitcase { background-position: -112px -96px; }\n.ui-icon-comment { background-position: -128px -96px; }\n.ui-icon-person { background-position: -144px -96px; }\n.ui-icon-print { background-position: -160px -96px; }\n.ui-icon-trash { background-position: -176px -96px; }\n.ui-icon-locked { background-position: -192px -96px; }\n.ui-icon-unlocked { background-position: -208px -96px; }\n.ui-icon-bookmark { background-position: -224px -96px; }\n.ui-icon-tag { background-position: -240px -96px; }\n.ui-icon-home { background-position: 0 -112px; }\n.ui-icon-flag { background-position: -16px -112px; }\n.ui-icon-calendar { background-position: -32px -112px; }\n.ui-icon-cart { background-position: -48px -112px; }\n.ui-icon-pencil { background-position: -64px -112px; }\n.ui-icon-clock { background-position: -80px -112px; }\n.ui-icon-disk { background-position: -96px -112px; }\n.ui-icon-calculator { background-position: -112px -112px; }\n.ui-icon-zoomin { background-position: -128px -112px; }\n.ui-icon-zoomout { background-position: -144px -112px; }\n.ui-icon-search { background-position: -160px -112px; }\n.ui-icon-wrench { background-position: -176px -112px; }\n.ui-icon-gear { background-position: -192px -112px; }\n.ui-icon-heart { background-position: -208px -112px; }\n.ui-icon-star { background-position: -224px -112px; }\n.ui-icon-link { background-position: -240px -112px; }\n.ui-icon-cancel { background-position: 0 -128px; }\n.ui-icon-plus { background-position: -16px -128px; }\n.ui-icon-plusthick { background-position: -32px -128px; }\n.ui-icon-minus { background-position: -48px -128px; }\n.ui-icon-minusthick { background-position: -64px -128px; }\n.ui-icon-close { background-position: -80px -128px; }\n.ui-icon-closethick { background-position: -96px -128px; }\n.ui-icon-key { background-position: -112px -128px; }\n.ui-icon-lightbulb { background-position: -128px -128px; }\n.ui-icon-scissors { background-position: -144px -128px; }\n.ui-icon-clipboard { background-position: -160px -128px; }\n.ui-icon-copy { background-position: -176px -128px; }\n.ui-icon-contact { background-position: -192px -128px; }\n.ui-icon-image { background-position: -208px -128px; }\n.ui-icon-video { background-position: -224px -128px; }\n.ui-icon-script { background-position: -240px -128px; }\n.ui-icon-alert { background-position: 0 -144px; }\n.ui-icon-info { background-position: -16px -144px; }\n.ui-icon-notice { background-position: -32px -144px; }\n.ui-icon-help { background-position: -48px -144px; }\n.ui-icon-check { background-position: -64px -144px; }\n.ui-icon-bullet { background-position: -80px -144px; }\n.ui-icon-radio-on { background-position: -96px -144px; }\n.ui-icon-radio-off { background-position: -112px -144px; }\n.ui-icon-pin-w { background-position: -128px -144px; }\n.ui-icon-pin-s { background-position: -144px -144px; }\n.ui-icon-play { background-position: 0 -160px; }\n.ui-icon-pause { background-position: -16px -160px; }\n.ui-icon-seek-next { background-position: -32px -160px; }\n.ui-icon-seek-prev { background-position: -48px -160px; }\n.ui-icon-seek-end { background-position: -64px -160px; }\n.ui-icon-seek-start { background-position: -80px -160px; }\n/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */\n.ui-icon-seek-first { background-position: -80px -160px; }\n.ui-icon-stop { background-position: -96px -160px; }\n.ui-icon-eject { background-position: -112px -160px; }\n.ui-icon-volume-off { background-position: -128px -160px; }\n.ui-icon-volume-on { background-position: -144px -160px; }\n.ui-icon-power { background-position: 0 -176px; }\n.ui-icon-signal-diag { background-position: -16px -176px; }\n.ui-icon-signal { background-position: -32px -176px; }\n.ui-icon-battery-0 { background-position: -48px -176px; }\n.ui-icon-battery-1 { background-position: -64px -176px; }\n.ui-icon-battery-2 { background-position: -80px -176px; }\n.ui-icon-battery-3 { background-position: -96px -176px; }\n.ui-icon-circle-plus { background-position: 0 -192px; }\n.ui-icon-circle-minus { background-position: -16px -192px; }\n.ui-icon-circle-close { background-position: -32px -192px; }\n.ui-icon-circle-triangle-e { background-position: -48px -192px; }\n.ui-icon-circle-triangle-s { background-position: -64px -192px; }\n.ui-icon-circle-triangle-w { background-position: -80px -192px; }\n.ui-icon-circle-triangle-n { background-position: -96px -192px; }\n.ui-icon-circle-arrow-e { background-position: -112px -192px; }\n.ui-icon-circle-arrow-s { background-position: -128px -192px; }\n.ui-icon-circle-arrow-w { background-position: -144px -192px; }\n.ui-icon-circle-arrow-n { background-position: -160px -192px; }\n.ui-icon-circle-zoomin { background-position: -176px -192px; }\n.ui-icon-circle-zoomout { background-position: -192px -192px; }\n.ui-icon-circle-check { background-position: -208px -192px; }\n.ui-icon-circlesmall-plus { background-position: 0 -208px; }\n.ui-icon-circlesmall-minus { background-position: -16px -208px; }\n.ui-icon-circlesmall-close { background-position: -32px -208px; }\n.ui-icon-squaresmall-plus { background-position: -48px -208px; }\n.ui-icon-squaresmall-minus { background-position: -64px -208px; }\n.ui-icon-squaresmall-close { background-position: -80px -208px; }\n.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }\n.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }\n.ui-icon-grip-solid-vertical { background-position: -32px -224px; }\n.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }\n.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }\n.ui-icon-grip-diagonal-se { background-position: -80px -224px; }\n\n\n/* Misc visuals\n----------------------------------*/\n\n/* Corner radius */\n.ui-corner-all,\n.ui-corner-top,\n.ui-corner-left,\n.ui-corner-tl {\n\tborder-top-left-radius: 3px;\n}\n.ui-corner-all,\n.ui-corner-top,\n.ui-corner-right,\n.ui-corner-tr {\n\tborder-top-right-radius: 3px;\n}\n.ui-corner-all,\n.ui-corner-bottom,\n.ui-corner-left,\n.ui-corner-bl {\n\tborder-bottom-left-radius: 3px;\n}\n.ui-corner-all,\n.ui-corner-bottom,\n.ui-corner-right,\n.ui-corner-br {\n\tborder-bottom-right-radius: 3px;\n}\n\n/* Overlays */\n.ui-widget-overlay {\n\tbackground: #aaaaaa;\n\topacity: .003;\n\t-ms-filter: \"alpha(opacity=.3)\"; /* support: IE8 */\n}\n.ui-widget-shadow {\n\t-webkit-box-shadow: 0px 0px 5px #666666;\n\tbox-shadow: 0px 0px 5px #666666;\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/jquery-ui-dist/jquery-ui.css\"],\"names\":[],\"mappings\":\"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,YAAY;AACb;AACA;CACC,WAAW;CACX,YAAY;CACZ,kBAAkB;CAClB,iBAAiB;CACjB,YAAY;AACb;AACA;;CAEC,sBAAsB;CACtB,UAAU;CACV,WAAW;CACX,iBAAiB;CACjB,mBAAmB;AACpB;AACA;CACC,oBAAoB;AACrB;AACA;CACC,WAAW;CACX,oBAAoB;CACpB,aAAa;AACd;AACA;CACC,kBAAkB;CAClB,eAAe;AAChB;AACA;;CAEC,kBAAkB;CAClB,QAAQ;CACR,YAAY;CACZ,aAAa;AACd;AACA;;CAEC,QAAQ;AACT;AACA;CACC,SAAS;AACV;AACA;CACC,UAAU;AACX;AACA;CACC,SAAS;AACV;AACA;CACC,UAAU;AACX;AACA;;CAEC,cAAc;CACd,kBAAkB;CAClB,SAAS;CACT,iBAAiB;CACjB,QAAQ;CACR,gBAAgB;AACjB;AACA;CACC,eAAe;CACf,kBAAkB;CAClB,kBAAkB;AACnB;AACA;CACC,cAAc;CACd,aAAa;AACd;AACA;;CAEC,UAAU;AACX;AACA;CACC,WAAW;CACX,eAAe;CACf,yBAAyB;CACzB,gBAAgB;AACjB;AACA;CACC,kBAAkB;CAClB,kBAAkB;CAClB,iBAAiB;CACjB,SAAS;AACV;AACA;CACC,SAAS;CACT,YAAY;AACb;AACA;;CAEC,cAAc;CACd,aAAa;CACb,iBAAiB;CACjB,qBAAqB;AACtB;AACA;CACC,sBAAsB;CACtB,kBAAkB;CAClB,eAAe;CACf,cAAc;CACd,eAAe;CACf,gBAAgB;AACjB;AACA;CACC,YAAY;CACZ,sBAAsB;CACtB,eAAe;CACf,4BAA4B;CAC5B,WAAW;CACX,iBAAiB;AAClB;AACA;CACC,WAAW;AACZ;;AAEA,4BAA4B;AAC5B;CACC,WAAW;AACZ;AACA;CACC,WAAW;AACZ;AACA;CACC,UAAU;CACV,mBAAmB;AACpB;AACA;CACC,UAAU;AACX;AACA;CACC,YAAY;AACb;AACA;CACC,UAAU;AACX;AACA;;CAEC,oBAAoB;AACrB;AACA;CACC,WAAW;AACZ;AACA;CACC,WAAW;CACX,WAAW;CACX,YAAY;AACb;;AAEA,gBAAgB;AAChB;CACC,cAAc;AACf;AACA;CACC,UAAU;CACV,UAAU;AACX;AACA;CACC,SAAS;CACT,WAAW;AACZ;AACA;CACC,UAAU;CACV,UAAU;AACX;AACA;CACC,SAAS;CACT,WAAW;AACZ;AACA;CACC,YAAY;AACb;AACA;CACC,WAAW;AACZ;AACA;;CAEC,YAAY;AACb;AACA;;CAEC,qBAAqB;CACrB,sBAAsB;AACvB;;AAEA,UAAU;AACV;CACC,cAAc;CACd,qBAAqB;CACrB,gBAAgB;CAChB,4BAA4B;CAC5B,UAAU;CACV,SAAS;AACV;AACA;CACC,kBAAkB;CAClB,MAAM;CACN,OAAO;CACP,aAAa;CACb,UAAU;AACX;AACA;CACC,iBAAiB;CACjB,kBAAkB;AACnB;AACA;CACC,WAAW;CACX,cAAc;CACd,mBAAmB;CACnB,UAAU;CACV,gBAAgB;CAChB,uBAAuB;AACxB;AACA;CACC,kBAAkB;CAClB,WAAW;CACX,QAAQ;CACR,WAAW;CACX,mBAAmB;CACnB,YAAY;CACZ,YAAY;AACb;AACA;CACC,kBAAkB;CAClB,SAAS;CACT,iBAAiB;CACjB,gBAAgB;CAChB,cAAc;AACf;AACA;CACC,gBAAgB;CAChB,uBAAuB;CACvB,sBAAsB;CACtB,gBAAgB;CAChB,2BAA2B;AAC5B;AACA;CACC,YAAY;AACb;AACA;CACC,wBAAwB;CACxB,eAAe;AAChB;AACA;CACC,WAAW;CACX,MAAM;AACP;AACA;CACC,UAAU;CACV,QAAQ;AACT;AACA;CACC,WAAW;CACX,SAAS;AACV;AACA;CACC,UAAU;CACV,OAAO;AACR;AACA;;;;CAIC,UAAU;CACV,WAAW;AACZ;AACA;CACC,QAAQ;CACR,SAAS;AACV;AACA;CACC,OAAO;CACP,SAAS;AACV;AACA;CACC,QAAQ;CACR,MAAM;AACP;AACA;CACC,OAAO;CACP,MAAM;AACP;AACA;CACC,YAAY;AACb;AACA;CACC,sBAAsB;CACtB,kBAAkB;AACnB;AACA;CACC,kBAAkB;AACnB;AACA;CACC,kBAAkB;CAClB,gBAAgB;CAChB,cAAc;CACd,sBAAsB;CACtB,kBAAkB;AACnB;AACA;;CAEC,aAAa;AACd;AACA;CACC,gBAAgB;CAChB,WAAW;CACX,WAAW;CACX,SAAS;CACT,OAAO;AACR;AACA;CACC,gBAAgB;CAChB,WAAW;CACX,WAAW;CACX,YAAY;CACZ,OAAO;AACR;AACA;CACC,gBAAgB;CAChB,UAAU;CACV,WAAW;CACX,MAAM;CACN,YAAY;AACb;AACA;CACC,gBAAgB;CAChB,UAAU;CACV,UAAU;CACV,MAAM;CACN,YAAY;AACb;AACA;CACC,iBAAiB;CACjB,WAAW;CACX,YAAY;CACZ,UAAU;CACV,WAAW;AACZ;AACA;CACC,iBAAiB;CACjB,UAAU;CACV,WAAW;CACX,UAAU;CACV,YAAY;AACb;AACA;CACC,iBAAiB;CACjB,UAAU;CACV,WAAW;CACX,UAAU;CACV,SAAS;AACV;AACA;CACC,iBAAiB;CACjB,UAAU;CACV,WAAW;CACX,WAAW;CACX,SAAS;AACV;AACA;CACC,WAAW;CACX,gBAAgB;CAChB,gBAAgB;AACjB;AACA;CACC,YAAY;CACZ,YAAY;AACb;AACA;CACC,mDAAyzE;CACzzE,YAAY;CACZ,+BAA+B,EAAE,iBAAiB;CAClD,aAAa;AACd;AACA;CACC,sBAAsB;AACvB;AACA;CACC,sBAAsB;CACtB,kBAAkB;AACnB;AACA;CACC,kBAAkB;CAClB,YAAY;CACZ,wBAAwB;AACzB;AACA;CACC,UAAU;CACV,SAAS;CACT,kBAAkB;CAClB,MAAM;CACN,OAAO;CACP,aAAa;AACd;AACA;CACC,cAAc;CACd,kBAAkB;CAClB,mBAAmB;AACpB;AACA;CACC,cAAc;CACd,iBAAiB;CACjB,gBAAgB;CAChB,kBAAkB;CAClB,mBAAmB;CACnB,YAAY;CACZ,SAAS;AACV;AACA;CACC,cAAc;AACf;AACA;CACC,cAAc;CACd,kBAAkB;CAClB,gBAAgB;CAChB,uBAAuB;AACxB;AACA;CACC,gBAAgB;CAChB,mBAAmB;CACnB,WAAW;AACZ;AACA;CACC,YAAY;CACZ,aAAa;AACd;AACA;CACC,kBAAkB;CAClB,gBAAgB;AACjB;AACA;CACC,kBAAkB;CAClB,UAAU;CACV,YAAY;CACZ,aAAa;CACb,eAAe;CACf,sBAAsB;CACtB,kBAAkB;AACnB;AACA;CACC,kBAAkB;CAClB,UAAU;CACV,eAAe;CACf,cAAc;CACd,SAAS;CACT,wBAAwB;AACzB;;AAEA,6BAA6B;AAC7B;;CAEC,eAAe;AAChB;;AAEA;CACC,YAAY;AACb;AACA;CACC,UAAU;CACV,kBAAkB;AACnB;AACA;CACC,MAAM;CACN,YAAY;AACb;AACA;CACC,OAAO;AACR;AACA;CACC,QAAQ;AACT;;AAEA;CACC,WAAW;CACX,aAAa;AACd;AACA;CACC,WAAW;CACX,cAAc;CACd,oBAAoB;AACrB;AACA;CACC,OAAO;CACP,WAAW;AACZ;AACA;CACC,SAAS;AACV;AACA;CACC,MAAM;AACP;AACA;CACC,sBAAsB;CACtB,kBAAkB;AACnB;AACA;CACC,kBAAkB;CAClB,qBAAqB;CACrB,gBAAgB;CAChB,UAAU;CACV,sBAAsB;AACvB;AACA;CACC,YAAY;CACZ,gBAAgB;CAChB,cAAc;CACd,iBAAiB;CACjB,cAAc;CACd,sBAAsB;CACtB,iBAAiB;CACjB,iBAAiB;AAClB;AACA;CACC,YAAY;CACZ,WAAW;CACX,eAAe;CACf,UAAU;CACV,SAAS;CACT,kBAAkB;CAClB,kBAAkB;CAClB,eAAe;CACf,cAAc;CACd,gBAAgB;CAChB,QAAQ;AACT;AACA,+DAA+D;AAC/D;CACC,sBAAsB;CACtB,yBAAyB;CACzB,wBAAwB;AACzB;AACA;CACC,MAAM;AACP;AACA;CACC,SAAS;AACV;AACA;CACC,kBAAkB,CAAC,uIAAuI;CAC1J,aAAa;AACd;AACA;CACC,SAAS;CACT,oBAAoB;AACrB;AACA;CACC,gBAAgB;CAChB,WAAW;CACX,kBAAkB;CAClB,MAAM;CACN,oBAAoB;CACpB,sBAAsB;CACtB,UAAU;CACV,mBAAmB;AACpB;AACA;CACC,WAAW;CACX,iBAAiB;CACjB,qBAAqB;AACtB;AACA;CACC,mBAAmB;CACnB,mBAAmB;AACpB;AACA;;;CAGC,YAAY;AACb;AACA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\",\"sourcesContent\":[\"/*! jQuery UI - v1.13.3 - 2024-04-26\\n* https://jqueryui.com\\n* Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css\\n* To view and modify this theme, visit https://jqueryui.com/themeroller/?bgShadowXPos=&bgOverlayXPos=&bgErrorXPos=&bgHighlightXPos=&bgContentXPos=&bgHeaderXPos=&bgActiveXPos=&bgHoverXPos=&bgDefaultXPos=&bgShadowYPos=&bgOverlayYPos=&bgErrorYPos=&bgHighlightYPos=&bgContentYPos=&bgHeaderYPos=&bgActiveYPos=&bgHoverYPos=&bgDefaultYPos=&bgShadowRepeat=&bgOverlayRepeat=&bgErrorRepeat=&bgHighlightRepeat=&bgContentRepeat=&bgHeaderRepeat=&bgActiveRepeat=&bgHoverRepeat=&bgDefaultRepeat=&iconsHover=url(%22images%2Fui-icons_555555_256x240.png%22)&iconsHighlight=url(%22images%2Fui-icons_777620_256x240.png%22)&iconsHeader=url(%22images%2Fui-icons_444444_256x240.png%22)&iconsError=url(%22images%2Fui-icons_cc0000_256x240.png%22)&iconsDefault=url(%22images%2Fui-icons_777777_256x240.png%22)&iconsContent=url(%22images%2Fui-icons_444444_256x240.png%22)&iconsActive=url(%22images%2Fui-icons_ffffff_256x240.png%22)&bgImgUrlShadow=&bgImgUrlOverlay=&bgImgUrlHover=&bgImgUrlHighlight=&bgImgUrlHeader=&bgImgUrlError=&bgImgUrlDefault=&bgImgUrlContent=&bgImgUrlActive=&opacityFilterShadow=%22alpha(opacity%3D30)%22&opacityFilterOverlay=%22alpha(opacity%3D30)%22&opacityShadowPerc=30&opacityOverlayPerc=30&iconColorHover=%23555555&iconColorHighlight=%23777620&iconColorHeader=%23444444&iconColorError=%23cc0000&iconColorDefault=%23777777&iconColorContent=%23444444&iconColorActive=%23ffffff&bgImgOpacityShadow=0&bgImgOpacityOverlay=0&bgImgOpacityError=95&bgImgOpacityHighlight=55&bgImgOpacityContent=75&bgImgOpacityHeader=75&bgImgOpacityActive=65&bgImgOpacityHover=75&bgImgOpacityDefault=75&bgTextureShadow=flat&bgTextureOverlay=flat&bgTextureError=flat&bgTextureHighlight=flat&bgTextureContent=flat&bgTextureHeader=flat&bgTextureActive=flat&bgTextureHover=flat&bgTextureDefault=flat&cornerRadius=3px&fwDefault=normal&ffDefault=Arial%2CHelvetica%2Csans-serif&fsDefault=1em&cornerRadiusShadow=8px&thicknessShadow=5px&offsetLeftShadow=0px&offsetTopShadow=0px&opacityShadow=.3&bgColorShadow=%23666666&opacityOverlay=.3&bgColorOverlay=%23aaaaaa&fcError=%235f3f3f&borderColorError=%23f1a899&bgColorError=%23fddfdf&fcHighlight=%23777620&borderColorHighlight=%23dad55e&bgColorHighlight=%23fffa90&fcContent=%23333333&borderColorContent=%23dddddd&bgColorContent=%23ffffff&fcHeader=%23333333&borderColorHeader=%23dddddd&bgColorHeader=%23e9e9e9&fcActive=%23ffffff&borderColorActive=%23003eff&bgColorActive=%23007fff&fcHover=%232b2b2b&borderColorHover=%23cccccc&bgColorHover=%23ededed&fcDefault=%23454545&borderColorDefault=%23c5c5c5&bgColorDefault=%23f6f6f6\\n* Copyright OpenJS Foundation and other contributors; Licensed MIT */\\n\\n/* Layout helpers\\n----------------------------------*/\\n.ui-helper-hidden {\\n\\tdisplay: none;\\n}\\n.ui-helper-hidden-accessible {\\n\\tborder: 0;\\n\\tclip: rect(0 0 0 0);\\n\\theight: 1px;\\n\\tmargin: -1px;\\n\\toverflow: hidden;\\n\\tpadding: 0;\\n\\tposition: absolute;\\n\\twidth: 1px;\\n}\\n.ui-helper-reset {\\n\\tmargin: 0;\\n\\tpadding: 0;\\n\\tborder: 0;\\n\\toutline: 0;\\n\\tline-height: 1.3;\\n\\ttext-decoration: none;\\n\\tfont-size: 100%;\\n\\tlist-style: none;\\n}\\n.ui-helper-clearfix:before,\\n.ui-helper-clearfix:after {\\n\\tcontent: \\\"\\\";\\n\\tdisplay: table;\\n\\tborder-collapse: collapse;\\n}\\n.ui-helper-clearfix:after {\\n\\tclear: both;\\n}\\n.ui-helper-zfix {\\n\\twidth: 100%;\\n\\theight: 100%;\\n\\ttop: 0;\\n\\tleft: 0;\\n\\tposition: absolute;\\n\\topacity: 0;\\n\\t-ms-filter: \\\"alpha(opacity=0)\\\"; /* support: IE8 */\\n}\\n\\n.ui-front {\\n\\tz-index: 100;\\n}\\n\\n\\n/* Interaction Cues\\n----------------------------------*/\\n.ui-state-disabled {\\n\\tcursor: default !important;\\n\\tpointer-events: none;\\n}\\n\\n\\n/* Icons\\n----------------------------------*/\\n.ui-icon {\\n\\tdisplay: inline-block;\\n\\tvertical-align: middle;\\n\\tmargin-top: -.25em;\\n\\tposition: relative;\\n\\ttext-indent: -99999px;\\n\\toverflow: hidden;\\n\\tbackground-repeat: no-repeat;\\n}\\n\\n.ui-widget-icon-block {\\n\\tleft: 50%;\\n\\tmargin-left: -8px;\\n\\tdisplay: block;\\n}\\n\\n/* Misc visuals\\n----------------------------------*/\\n\\n/* Overlays */\\n.ui-widget-overlay {\\n\\tposition: fixed;\\n\\ttop: 0;\\n\\tleft: 0;\\n\\twidth: 100%;\\n\\theight: 100%;\\n}\\n.ui-accordion .ui-accordion-header {\\n\\tdisplay: block;\\n\\tcursor: pointer;\\n\\tposition: relative;\\n\\tmargin: 2px 0 0 0;\\n\\tpadding: .5em .5em .5em .7em;\\n\\tfont-size: 100%;\\n}\\n.ui-accordion .ui-accordion-content {\\n\\tpadding: 1em 2.2em;\\n\\tborder-top: 0;\\n\\toverflow: auto;\\n}\\n.ui-autocomplete {\\n\\tposition: absolute;\\n\\ttop: 0;\\n\\tleft: 0;\\n\\tcursor: default;\\n}\\n.ui-menu {\\n\\tlist-style: none;\\n\\tpadding: 0;\\n\\tmargin: 0;\\n\\tdisplay: block;\\n\\toutline: 0;\\n}\\n.ui-menu .ui-menu {\\n\\tposition: absolute;\\n}\\n.ui-menu .ui-menu-item {\\n\\tmargin: 0;\\n\\tcursor: pointer;\\n\\t/* support: IE10, see #8844 */\\n\\tlist-style-image: url(\\\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\\\");\\n}\\n.ui-menu .ui-menu-item-wrapper {\\n\\tposition: relative;\\n\\tpadding: 3px 1em 3px .4em;\\n}\\n.ui-menu .ui-menu-divider {\\n\\tmargin: 5px 0;\\n\\theight: 0;\\n\\tfont-size: 0;\\n\\tline-height: 0;\\n\\tborder-width: 1px 0 0 0;\\n}\\n.ui-menu .ui-state-focus,\\n.ui-menu .ui-state-active {\\n\\tmargin: -1px;\\n}\\n\\n/* icon support */\\n.ui-menu-icons {\\n\\tposition: relative;\\n}\\n.ui-menu-icons .ui-menu-item-wrapper {\\n\\tpadding-left: 2em;\\n}\\n\\n/* left-aligned */\\n.ui-menu .ui-icon {\\n\\tposition: absolute;\\n\\ttop: 0;\\n\\tbottom: 0;\\n\\tleft: .2em;\\n\\tmargin: auto 0;\\n}\\n\\n/* right-aligned */\\n.ui-menu .ui-menu-icon {\\n\\tleft: auto;\\n\\tright: 0;\\n}\\n.ui-button {\\n\\tpadding: .4em 1em;\\n\\tdisplay: inline-block;\\n\\tposition: relative;\\n\\tline-height: normal;\\n\\tmargin-right: .1em;\\n\\tcursor: pointer;\\n\\tvertical-align: middle;\\n\\ttext-align: center;\\n\\t-webkit-user-select: none;\\n\\t-moz-user-select: none;\\n\\t-ms-user-select: none;\\n\\tuser-select: none;\\n\\n\\t/* Support: IE <= 11 */\\n\\toverflow: visible;\\n}\\n\\n.ui-button,\\n.ui-button:link,\\n.ui-button:visited,\\n.ui-button:hover,\\n.ui-button:active {\\n\\ttext-decoration: none;\\n}\\n\\n/* to make room for the icon, a width needs to be set here */\\n.ui-button-icon-only {\\n\\twidth: 2em;\\n\\tbox-sizing: border-box;\\n\\ttext-indent: -9999px;\\n\\twhite-space: nowrap;\\n}\\n\\n/* no icon support for input elements */\\ninput.ui-button.ui-button-icon-only {\\n\\ttext-indent: 0;\\n}\\n\\n/* button icon element(s) */\\n.ui-button-icon-only .ui-icon {\\n\\tposition: absolute;\\n\\ttop: 50%;\\n\\tleft: 50%;\\n\\tmargin-top: -8px;\\n\\tmargin-left: -8px;\\n}\\n\\n.ui-button.ui-icon-notext .ui-icon {\\n\\tpadding: 0;\\n\\twidth: 2.1em;\\n\\theight: 2.1em;\\n\\ttext-indent: -9999px;\\n\\twhite-space: nowrap;\\n\\n}\\n\\ninput.ui-button.ui-icon-notext .ui-icon {\\n\\twidth: auto;\\n\\theight: auto;\\n\\ttext-indent: 0;\\n\\twhite-space: normal;\\n\\tpadding: .4em 1em;\\n}\\n\\n/* workarounds */\\n/* Support: Firefox 5 - 40 */\\ninput.ui-button::-moz-focus-inner,\\nbutton.ui-button::-moz-focus-inner {\\n\\tborder: 0;\\n\\tpadding: 0;\\n}\\n.ui-controlgroup {\\n\\tvertical-align: middle;\\n\\tdisplay: inline-block;\\n}\\n.ui-controlgroup > .ui-controlgroup-item {\\n\\tfloat: left;\\n\\tmargin-left: 0;\\n\\tmargin-right: 0;\\n}\\n.ui-controlgroup > .ui-controlgroup-item:focus,\\n.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus {\\n\\tz-index: 9999;\\n}\\n.ui-controlgroup-vertical > .ui-controlgroup-item {\\n\\tdisplay: block;\\n\\tfloat: none;\\n\\twidth: 100%;\\n\\tmargin-top: 0;\\n\\tmargin-bottom: 0;\\n\\ttext-align: left;\\n}\\n.ui-controlgroup-vertical .ui-controlgroup-item {\\n\\tbox-sizing: border-box;\\n}\\n.ui-controlgroup .ui-controlgroup-label {\\n\\tpadding: .4em 1em;\\n}\\n.ui-controlgroup .ui-controlgroup-label span {\\n\\tfont-size: 80%;\\n}\\n.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item {\\n\\tborder-left: none;\\n}\\n.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item {\\n\\tborder-top: none;\\n}\\n.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content {\\n\\tborder-right: none;\\n}\\n.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content {\\n\\tborder-bottom: none;\\n}\\n\\n/* Spinner specific style fixes */\\n.ui-controlgroup-vertical .ui-spinner-input {\\n\\n\\t/* Support: IE8 only, Android < 4.4 only */\\n\\twidth: 75%;\\n\\twidth: calc( 100% - 2.4em );\\n}\\n.ui-controlgroup-vertical .ui-spinner .ui-spinner-up {\\n\\tborder-top-style: solid;\\n}\\n\\n.ui-checkboxradio-label .ui-icon-background {\\n\\tbox-shadow: inset 1px 1px 1px #ccc;\\n\\tborder-radius: .12em;\\n\\tborder: none;\\n}\\n.ui-checkboxradio-radio-label .ui-icon-background {\\n\\twidth: 16px;\\n\\theight: 16px;\\n\\tborder-radius: 1em;\\n\\toverflow: visible;\\n\\tborder: none;\\n}\\n.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,\\n.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon {\\n\\tbackground-image: none;\\n\\twidth: 8px;\\n\\theight: 8px;\\n\\tborder-width: 4px;\\n\\tborder-style: solid;\\n}\\n.ui-checkboxradio-disabled {\\n\\tpointer-events: none;\\n}\\n.ui-datepicker {\\n\\twidth: 17em;\\n\\tpadding: .2em .2em 0;\\n\\tdisplay: none;\\n}\\n.ui-datepicker .ui-datepicker-header {\\n\\tposition: relative;\\n\\tpadding: .2em 0;\\n}\\n.ui-datepicker .ui-datepicker-prev,\\n.ui-datepicker .ui-datepicker-next {\\n\\tposition: absolute;\\n\\ttop: 2px;\\n\\twidth: 1.8em;\\n\\theight: 1.8em;\\n}\\n.ui-datepicker .ui-datepicker-prev-hover,\\n.ui-datepicker .ui-datepicker-next-hover {\\n\\ttop: 1px;\\n}\\n.ui-datepicker .ui-datepicker-prev {\\n\\tleft: 2px;\\n}\\n.ui-datepicker .ui-datepicker-next {\\n\\tright: 2px;\\n}\\n.ui-datepicker .ui-datepicker-prev-hover {\\n\\tleft: 1px;\\n}\\n.ui-datepicker .ui-datepicker-next-hover {\\n\\tright: 1px;\\n}\\n.ui-datepicker .ui-datepicker-prev span,\\n.ui-datepicker .ui-datepicker-next span {\\n\\tdisplay: block;\\n\\tposition: absolute;\\n\\tleft: 50%;\\n\\tmargin-left: -8px;\\n\\ttop: 50%;\\n\\tmargin-top: -8px;\\n}\\n.ui-datepicker .ui-datepicker-title {\\n\\tmargin: 0 2.3em;\\n\\tline-height: 1.8em;\\n\\ttext-align: center;\\n}\\n.ui-datepicker .ui-datepicker-title select {\\n\\tfont-size: 1em;\\n\\tmargin: 1px 0;\\n}\\n.ui-datepicker select.ui-datepicker-month,\\n.ui-datepicker select.ui-datepicker-year {\\n\\twidth: 45%;\\n}\\n.ui-datepicker table {\\n\\twidth: 100%;\\n\\tfont-size: .9em;\\n\\tborder-collapse: collapse;\\n\\tmargin: 0 0 .4em;\\n}\\n.ui-datepicker th {\\n\\tpadding: .7em .3em;\\n\\ttext-align: center;\\n\\tfont-weight: bold;\\n\\tborder: 0;\\n}\\n.ui-datepicker td {\\n\\tborder: 0;\\n\\tpadding: 1px;\\n}\\n.ui-datepicker td span,\\n.ui-datepicker td a {\\n\\tdisplay: block;\\n\\tpadding: .2em;\\n\\ttext-align: right;\\n\\ttext-decoration: none;\\n}\\n.ui-datepicker .ui-datepicker-buttonpane {\\n\\tbackground-image: none;\\n\\tmargin: .7em 0 0 0;\\n\\tpadding: 0 .2em;\\n\\tborder-left: 0;\\n\\tborder-right: 0;\\n\\tborder-bottom: 0;\\n}\\n.ui-datepicker .ui-datepicker-buttonpane button {\\n\\tfloat: right;\\n\\tmargin: .5em .2em .4em;\\n\\tcursor: pointer;\\n\\tpadding: .2em .6em .3em .6em;\\n\\twidth: auto;\\n\\toverflow: visible;\\n}\\n.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current {\\n\\tfloat: left;\\n}\\n\\n/* with multiple calendars */\\n.ui-datepicker.ui-datepicker-multi {\\n\\twidth: auto;\\n}\\n.ui-datepicker-multi .ui-datepicker-group {\\n\\tfloat: left;\\n}\\n.ui-datepicker-multi .ui-datepicker-group table {\\n\\twidth: 95%;\\n\\tmargin: 0 auto .4em;\\n}\\n.ui-datepicker-multi-2 .ui-datepicker-group {\\n\\twidth: 50%;\\n}\\n.ui-datepicker-multi-3 .ui-datepicker-group {\\n\\twidth: 33.3%;\\n}\\n.ui-datepicker-multi-4 .ui-datepicker-group {\\n\\twidth: 25%;\\n}\\n.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,\\n.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header {\\n\\tborder-left-width: 0;\\n}\\n.ui-datepicker-multi .ui-datepicker-buttonpane {\\n\\tclear: left;\\n}\\n.ui-datepicker-row-break {\\n\\tclear: both;\\n\\twidth: 100%;\\n\\tfont-size: 0;\\n}\\n\\n/* RTL support */\\n.ui-datepicker-rtl {\\n\\tdirection: rtl;\\n}\\n.ui-datepicker-rtl .ui-datepicker-prev {\\n\\tright: 2px;\\n\\tleft: auto;\\n}\\n.ui-datepicker-rtl .ui-datepicker-next {\\n\\tleft: 2px;\\n\\tright: auto;\\n}\\n.ui-datepicker-rtl .ui-datepicker-prev:hover {\\n\\tright: 1px;\\n\\tleft: auto;\\n}\\n.ui-datepicker-rtl .ui-datepicker-next:hover {\\n\\tleft: 1px;\\n\\tright: auto;\\n}\\n.ui-datepicker-rtl .ui-datepicker-buttonpane {\\n\\tclear: right;\\n}\\n.ui-datepicker-rtl .ui-datepicker-buttonpane button {\\n\\tfloat: left;\\n}\\n.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,\\n.ui-datepicker-rtl .ui-datepicker-group {\\n\\tfloat: right;\\n}\\n.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,\\n.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header {\\n\\tborder-right-width: 0;\\n\\tborder-left-width: 1px;\\n}\\n\\n/* Icons */\\n.ui-datepicker .ui-icon {\\n\\tdisplay: block;\\n\\ttext-indent: -99999px;\\n\\toverflow: hidden;\\n\\tbackground-repeat: no-repeat;\\n\\tleft: .5em;\\n\\ttop: .3em;\\n}\\n.ui-dialog {\\n\\tposition: absolute;\\n\\ttop: 0;\\n\\tleft: 0;\\n\\tpadding: .2em;\\n\\toutline: 0;\\n}\\n.ui-dialog .ui-dialog-titlebar {\\n\\tpadding: .4em 1em;\\n\\tposition: relative;\\n}\\n.ui-dialog .ui-dialog-title {\\n\\tfloat: left;\\n\\tmargin: .1em 0;\\n\\twhite-space: nowrap;\\n\\twidth: 90%;\\n\\toverflow: hidden;\\n\\ttext-overflow: ellipsis;\\n}\\n.ui-dialog .ui-dialog-titlebar-close {\\n\\tposition: absolute;\\n\\tright: .3em;\\n\\ttop: 50%;\\n\\twidth: 20px;\\n\\tmargin: -10px 0 0 0;\\n\\tpadding: 1px;\\n\\theight: 20px;\\n}\\n.ui-dialog .ui-dialog-content {\\n\\tposition: relative;\\n\\tborder: 0;\\n\\tpadding: .5em 1em;\\n\\tbackground: none;\\n\\toverflow: auto;\\n}\\n.ui-dialog .ui-dialog-buttonpane {\\n\\ttext-align: left;\\n\\tborder-width: 1px 0 0 0;\\n\\tbackground-image: none;\\n\\tmargin-top: .5em;\\n\\tpadding: .3em 1em .5em .4em;\\n}\\n.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {\\n\\tfloat: right;\\n}\\n.ui-dialog .ui-dialog-buttonpane button {\\n\\tmargin: .5em .4em .5em 0;\\n\\tcursor: pointer;\\n}\\n.ui-dialog .ui-resizable-n {\\n\\theight: 2px;\\n\\ttop: 0;\\n}\\n.ui-dialog .ui-resizable-e {\\n\\twidth: 2px;\\n\\tright: 0;\\n}\\n.ui-dialog .ui-resizable-s {\\n\\theight: 2px;\\n\\tbottom: 0;\\n}\\n.ui-dialog .ui-resizable-w {\\n\\twidth: 2px;\\n\\tleft: 0;\\n}\\n.ui-dialog .ui-resizable-se,\\n.ui-dialog .ui-resizable-sw,\\n.ui-dialog .ui-resizable-ne,\\n.ui-dialog .ui-resizable-nw {\\n\\twidth: 7px;\\n\\theight: 7px;\\n}\\n.ui-dialog .ui-resizable-se {\\n\\tright: 0;\\n\\tbottom: 0;\\n}\\n.ui-dialog .ui-resizable-sw {\\n\\tleft: 0;\\n\\tbottom: 0;\\n}\\n.ui-dialog .ui-resizable-ne {\\n\\tright: 0;\\n\\ttop: 0;\\n}\\n.ui-dialog .ui-resizable-nw {\\n\\tleft: 0;\\n\\ttop: 0;\\n}\\n.ui-draggable .ui-dialog-titlebar {\\n\\tcursor: move;\\n}\\n.ui-draggable-handle {\\n\\t-ms-touch-action: none;\\n\\ttouch-action: none;\\n}\\n.ui-resizable {\\n\\tposition: relative;\\n}\\n.ui-resizable-handle {\\n\\tposition: absolute;\\n\\tfont-size: 0.1px;\\n\\tdisplay: block;\\n\\t-ms-touch-action: none;\\n\\ttouch-action: none;\\n}\\n.ui-resizable-disabled .ui-resizable-handle,\\n.ui-resizable-autohide .ui-resizable-handle {\\n\\tdisplay: none;\\n}\\n.ui-resizable-n {\\n\\tcursor: n-resize;\\n\\theight: 7px;\\n\\twidth: 100%;\\n\\ttop: -5px;\\n\\tleft: 0;\\n}\\n.ui-resizable-s {\\n\\tcursor: s-resize;\\n\\theight: 7px;\\n\\twidth: 100%;\\n\\tbottom: -5px;\\n\\tleft: 0;\\n}\\n.ui-resizable-e {\\n\\tcursor: e-resize;\\n\\twidth: 7px;\\n\\tright: -5px;\\n\\ttop: 0;\\n\\theight: 100%;\\n}\\n.ui-resizable-w {\\n\\tcursor: w-resize;\\n\\twidth: 7px;\\n\\tleft: -5px;\\n\\ttop: 0;\\n\\theight: 100%;\\n}\\n.ui-resizable-se {\\n\\tcursor: se-resize;\\n\\twidth: 12px;\\n\\theight: 12px;\\n\\tright: 1px;\\n\\tbottom: 1px;\\n}\\n.ui-resizable-sw {\\n\\tcursor: sw-resize;\\n\\twidth: 9px;\\n\\theight: 9px;\\n\\tleft: -5px;\\n\\tbottom: -5px;\\n}\\n.ui-resizable-nw {\\n\\tcursor: nw-resize;\\n\\twidth: 9px;\\n\\theight: 9px;\\n\\tleft: -5px;\\n\\ttop: -5px;\\n}\\n.ui-resizable-ne {\\n\\tcursor: ne-resize;\\n\\twidth: 9px;\\n\\theight: 9px;\\n\\tright: -5px;\\n\\ttop: -5px;\\n}\\n.ui-progressbar {\\n\\theight: 2em;\\n\\ttext-align: left;\\n\\toverflow: hidden;\\n}\\n.ui-progressbar .ui-progressbar-value {\\n\\tmargin: -1px;\\n\\theight: 100%;\\n}\\n.ui-progressbar .ui-progressbar-overlay {\\n\\tbackground: url(\\\"data:image/gif;base64,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\\\");\\n\\theight: 100%;\\n\\t-ms-filter: \\\"alpha(opacity=25)\\\"; /* support: IE8 */\\n\\topacity: 0.25;\\n}\\n.ui-progressbar-indeterminate .ui-progressbar-value {\\n\\tbackground-image: none;\\n}\\n.ui-selectable {\\n\\t-ms-touch-action: none;\\n\\ttouch-action: none;\\n}\\n.ui-selectable-helper {\\n\\tposition: absolute;\\n\\tz-index: 100;\\n\\tborder: 1px dotted black;\\n}\\n.ui-selectmenu-menu {\\n\\tpadding: 0;\\n\\tmargin: 0;\\n\\tposition: absolute;\\n\\ttop: 0;\\n\\tleft: 0;\\n\\tdisplay: none;\\n}\\n.ui-selectmenu-menu .ui-menu {\\n\\toverflow: auto;\\n\\toverflow-x: hidden;\\n\\tpadding-bottom: 1px;\\n}\\n.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup {\\n\\tfont-size: 1em;\\n\\tfont-weight: bold;\\n\\tline-height: 1.5;\\n\\tpadding: 2px 0.4em;\\n\\tmargin: 0.5em 0 0 0;\\n\\theight: auto;\\n\\tborder: 0;\\n}\\n.ui-selectmenu-open {\\n\\tdisplay: block;\\n}\\n.ui-selectmenu-text {\\n\\tdisplay: block;\\n\\tmargin-right: 20px;\\n\\toverflow: hidden;\\n\\ttext-overflow: ellipsis;\\n}\\n.ui-selectmenu-button.ui-button {\\n\\ttext-align: left;\\n\\twhite-space: nowrap;\\n\\twidth: 14em;\\n}\\n.ui-selectmenu-icon.ui-icon {\\n\\tfloat: right;\\n\\tmargin-top: 0;\\n}\\n.ui-slider {\\n\\tposition: relative;\\n\\ttext-align: left;\\n}\\n.ui-slider .ui-slider-handle {\\n\\tposition: absolute;\\n\\tz-index: 2;\\n\\twidth: 1.2em;\\n\\theight: 1.2em;\\n\\tcursor: pointer;\\n\\t-ms-touch-action: none;\\n\\ttouch-action: none;\\n}\\n.ui-slider .ui-slider-range {\\n\\tposition: absolute;\\n\\tz-index: 1;\\n\\tfont-size: .7em;\\n\\tdisplay: block;\\n\\tborder: 0;\\n\\tbackground-position: 0 0;\\n}\\n\\n/* support: IE8 - See #6727 */\\n.ui-slider.ui-state-disabled .ui-slider-handle,\\n.ui-slider.ui-state-disabled .ui-slider-range {\\n\\tfilter: inherit;\\n}\\n\\n.ui-slider-horizontal {\\n\\theight: .8em;\\n}\\n.ui-slider-horizontal .ui-slider-handle {\\n\\ttop: -.3em;\\n\\tmargin-left: -.6em;\\n}\\n.ui-slider-horizontal .ui-slider-range {\\n\\ttop: 0;\\n\\theight: 100%;\\n}\\n.ui-slider-horizontal .ui-slider-range-min {\\n\\tleft: 0;\\n}\\n.ui-slider-horizontal .ui-slider-range-max {\\n\\tright: 0;\\n}\\n\\n.ui-slider-vertical {\\n\\twidth: .8em;\\n\\theight: 100px;\\n}\\n.ui-slider-vertical .ui-slider-handle {\\n\\tleft: -.3em;\\n\\tmargin-left: 0;\\n\\tmargin-bottom: -.6em;\\n}\\n.ui-slider-vertical .ui-slider-range {\\n\\tleft: 0;\\n\\twidth: 100%;\\n}\\n.ui-slider-vertical .ui-slider-range-min {\\n\\tbottom: 0;\\n}\\n.ui-slider-vertical .ui-slider-range-max {\\n\\ttop: 0;\\n}\\n.ui-sortable-handle {\\n\\t-ms-touch-action: none;\\n\\ttouch-action: none;\\n}\\n.ui-spinner {\\n\\tposition: relative;\\n\\tdisplay: inline-block;\\n\\toverflow: hidden;\\n\\tpadding: 0;\\n\\tvertical-align: middle;\\n}\\n.ui-spinner-input {\\n\\tborder: none;\\n\\tbackground: none;\\n\\tcolor: inherit;\\n\\tpadding: .222em 0;\\n\\tmargin: .2em 0;\\n\\tvertical-align: middle;\\n\\tmargin-left: .4em;\\n\\tmargin-right: 2em;\\n}\\n.ui-spinner-button {\\n\\twidth: 1.6em;\\n\\theight: 50%;\\n\\tfont-size: .5em;\\n\\tpadding: 0;\\n\\tmargin: 0;\\n\\ttext-align: center;\\n\\tposition: absolute;\\n\\tcursor: default;\\n\\tdisplay: block;\\n\\toverflow: hidden;\\n\\tright: 0;\\n}\\n/* more specificity required here to override default borders */\\n.ui-spinner a.ui-spinner-button {\\n\\tborder-top-style: none;\\n\\tborder-bottom-style: none;\\n\\tborder-right-style: none;\\n}\\n.ui-spinner-up {\\n\\ttop: 0;\\n}\\n.ui-spinner-down {\\n\\tbottom: 0;\\n}\\n.ui-tabs {\\n\\tposition: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as \\\"fixed\\\") */\\n\\tpadding: .2em;\\n}\\n.ui-tabs .ui-tabs-nav {\\n\\tmargin: 0;\\n\\tpadding: .2em .2em 0;\\n}\\n.ui-tabs .ui-tabs-nav li {\\n\\tlist-style: none;\\n\\tfloat: left;\\n\\tposition: relative;\\n\\ttop: 0;\\n\\tmargin: 1px .2em 0 0;\\n\\tborder-bottom-width: 0;\\n\\tpadding: 0;\\n\\twhite-space: nowrap;\\n}\\n.ui-tabs .ui-tabs-nav .ui-tabs-anchor {\\n\\tfloat: left;\\n\\tpadding: .5em 1em;\\n\\ttext-decoration: none;\\n}\\n.ui-tabs .ui-tabs-nav li.ui-tabs-active {\\n\\tmargin-bottom: -1px;\\n\\tpadding-bottom: 1px;\\n}\\n.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,\\n.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,\\n.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor {\\n\\tcursor: text;\\n}\\n.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor {\\n\\tcursor: pointer;\\n}\\n.ui-tabs .ui-tabs-panel {\\n\\tdisplay: block;\\n\\tborder-width: 0;\\n\\tpadding: 1em 1.4em;\\n\\tbackground: none;\\n}\\n.ui-tooltip {\\n\\tpadding: 8px;\\n\\tposition: absolute;\\n\\tz-index: 9999;\\n\\tmax-width: 300px;\\n}\\nbody .ui-tooltip {\\n\\tborder-width: 2px;\\n}\\n\\n/* Component containers\\n----------------------------------*/\\n.ui-widget {\\n\\tfont-family: Arial,Helvetica,sans-serif;\\n\\tfont-size: 1em;\\n}\\n.ui-widget .ui-widget {\\n\\tfont-size: 1em;\\n}\\n.ui-widget input,\\n.ui-widget select,\\n.ui-widget textarea,\\n.ui-widget button {\\n\\tfont-family: Arial,Helvetica,sans-serif;\\n\\tfont-size: 1em;\\n}\\n.ui-widget.ui-widget-content {\\n\\tborder: 1px solid #c5c5c5;\\n}\\n.ui-widget-content {\\n\\tborder: 1px solid #dddddd;\\n\\tbackground: #ffffff;\\n\\tcolor: #333333;\\n}\\n.ui-widget-content a {\\n\\tcolor: #333333;\\n}\\n.ui-widget-header {\\n\\tborder: 1px solid #dddddd;\\n\\tbackground: #e9e9e9;\\n\\tcolor: #333333;\\n\\tfont-weight: bold;\\n}\\n.ui-widget-header a {\\n\\tcolor: #333333;\\n}\\n\\n/* Interaction states\\n----------------------------------*/\\n.ui-state-default,\\n.ui-widget-content .ui-state-default,\\n.ui-widget-header .ui-state-default,\\n.ui-button,\\n\\n/* We use html here because we need a greater specificity to make sure disabled\\nworks properly when clicked or hovered */\\nhtml .ui-button.ui-state-disabled:hover,\\nhtml .ui-button.ui-state-disabled:active {\\n\\tborder: 1px solid #c5c5c5;\\n\\tbackground: #f6f6f6;\\n\\tfont-weight: normal;\\n\\tcolor: #454545;\\n}\\n.ui-state-default a,\\n.ui-state-default a:link,\\n.ui-state-default a:visited,\\na.ui-button,\\na:link.ui-button,\\na:visited.ui-button,\\n.ui-button {\\n\\tcolor: #454545;\\n\\ttext-decoration: none;\\n}\\n.ui-state-hover,\\n.ui-widget-content .ui-state-hover,\\n.ui-widget-header .ui-state-hover,\\n.ui-state-focus,\\n.ui-widget-content .ui-state-focus,\\n.ui-widget-header .ui-state-focus,\\n.ui-button:hover,\\n.ui-button:focus {\\n\\tborder: 1px solid #cccccc;\\n\\tbackground: #ededed;\\n\\tfont-weight: normal;\\n\\tcolor: #2b2b2b;\\n}\\n.ui-state-hover a,\\n.ui-state-hover a:hover,\\n.ui-state-hover a:link,\\n.ui-state-hover a:visited,\\n.ui-state-focus a,\\n.ui-state-focus a:hover,\\n.ui-state-focus a:link,\\n.ui-state-focus a:visited,\\na.ui-button:hover,\\na.ui-button:focus {\\n\\tcolor: #2b2b2b;\\n\\ttext-decoration: none;\\n}\\n\\n.ui-visual-focus {\\n\\tbox-shadow: 0 0 3px 1px rgb(94, 158, 214);\\n}\\n.ui-state-active,\\n.ui-widget-content .ui-state-active,\\n.ui-widget-header .ui-state-active,\\na.ui-button:active,\\n.ui-button:active,\\n.ui-button.ui-state-active:hover {\\n\\tborder: 1px solid #003eff;\\n\\tbackground: #007fff;\\n\\tfont-weight: normal;\\n\\tcolor: #ffffff;\\n}\\n.ui-icon-background,\\n.ui-state-active .ui-icon-background {\\n\\tborder: #003eff;\\n\\tbackground-color: #ffffff;\\n}\\n.ui-state-active a,\\n.ui-state-active a:link,\\n.ui-state-active a:visited {\\n\\tcolor: #ffffff;\\n\\ttext-decoration: none;\\n}\\n\\n/* Interaction Cues\\n----------------------------------*/\\n.ui-state-highlight,\\n.ui-widget-content .ui-state-highlight,\\n.ui-widget-header .ui-state-highlight {\\n\\tborder: 1px solid #dad55e;\\n\\tbackground: #fffa90;\\n\\tcolor: #777620;\\n}\\n.ui-state-checked {\\n\\tborder: 1px solid #dad55e;\\n\\tbackground: #fffa90;\\n}\\n.ui-state-highlight a,\\n.ui-widget-content .ui-state-highlight a,\\n.ui-widget-header .ui-state-highlight a {\\n\\tcolor: #777620;\\n}\\n.ui-state-error,\\n.ui-widget-content .ui-state-error,\\n.ui-widget-header .ui-state-error {\\n\\tborder: 1px solid #f1a899;\\n\\tbackground: #fddfdf;\\n\\tcolor: #5f3f3f;\\n}\\n.ui-state-error a,\\n.ui-widget-content .ui-state-error a,\\n.ui-widget-header .ui-state-error a {\\n\\tcolor: #5f3f3f;\\n}\\n.ui-state-error-text,\\n.ui-widget-content .ui-state-error-text,\\n.ui-widget-header .ui-state-error-text {\\n\\tcolor: #5f3f3f;\\n}\\n.ui-priority-primary,\\n.ui-widget-content .ui-priority-primary,\\n.ui-widget-header .ui-priority-primary {\\n\\tfont-weight: bold;\\n}\\n.ui-priority-secondary,\\n.ui-widget-content .ui-priority-secondary,\\n.ui-widget-header .ui-priority-secondary {\\n\\topacity: .7;\\n\\t-ms-filter: \\\"alpha(opacity=70)\\\"; /* support: IE8 */\\n\\tfont-weight: normal;\\n}\\n.ui-state-disabled,\\n.ui-widget-content .ui-state-disabled,\\n.ui-widget-header .ui-state-disabled {\\n\\topacity: .35;\\n\\t-ms-filter: \\\"alpha(opacity=35)\\\"; /* support: IE8 */\\n\\tbackground-image: none;\\n}\\n.ui-state-disabled .ui-icon {\\n\\t-ms-filter: \\\"alpha(opacity=35)\\\"; /* support: IE8 - See #6059 */\\n}\\n\\n/* Icons\\n----------------------------------*/\\n\\n/* states and images */\\n.ui-icon {\\n\\twidth: 16px;\\n\\theight: 16px;\\n}\\n.ui-icon,\\n.ui-widget-content .ui-icon {\\n\\tbackground-image: url(\\\"images/ui-icons_444444_256x240.png\\\");\\n}\\n.ui-widget-header .ui-icon {\\n\\tbackground-image: url(\\\"images/ui-icons_444444_256x240.png\\\");\\n}\\n.ui-state-hover .ui-icon,\\n.ui-state-focus .ui-icon,\\n.ui-button:hover .ui-icon,\\n.ui-button:focus .ui-icon {\\n\\tbackground-image: url(\\\"images/ui-icons_555555_256x240.png\\\");\\n}\\n.ui-state-active .ui-icon,\\n.ui-button:active .ui-icon {\\n\\tbackground-image: url(\\\"images/ui-icons_ffffff_256x240.png\\\");\\n}\\n.ui-state-highlight .ui-icon,\\n.ui-button .ui-state-highlight.ui-icon {\\n\\tbackground-image: url(\\\"images/ui-icons_777620_256x240.png\\\");\\n}\\n.ui-state-error .ui-icon,\\n.ui-state-error-text .ui-icon {\\n\\tbackground-image: url(\\\"images/ui-icons_cc0000_256x240.png\\\");\\n}\\n.ui-button .ui-icon {\\n\\tbackground-image: url(\\\"images/ui-icons_777777_256x240.png\\\");\\n}\\n\\n/* positioning */\\n/* Three classes needed to override `.ui-button:hover .ui-icon` */\\n.ui-icon-blank.ui-icon-blank.ui-icon-blank {\\n\\tbackground-image: none;\\n}\\n.ui-icon-caret-1-n { background-position: 0 0; }\\n.ui-icon-caret-1-ne { background-position: -16px 0; }\\n.ui-icon-caret-1-e { background-position: -32px 0; }\\n.ui-icon-caret-1-se { background-position: -48px 0; }\\n.ui-icon-caret-1-s { background-position: -65px 0; }\\n.ui-icon-caret-1-sw { background-position: -80px 0; }\\n.ui-icon-caret-1-w { background-position: -96px 0; }\\n.ui-icon-caret-1-nw { background-position: -112px 0; }\\n.ui-icon-caret-2-n-s { background-position: -128px 0; }\\n.ui-icon-caret-2-e-w { background-position: -144px 0; }\\n.ui-icon-triangle-1-n { background-position: 0 -16px; }\\n.ui-icon-triangle-1-ne { background-position: -16px -16px; }\\n.ui-icon-triangle-1-e { background-position: -32px -16px; }\\n.ui-icon-triangle-1-se { background-position: -48px -16px; }\\n.ui-icon-triangle-1-s { background-position: -65px -16px; }\\n.ui-icon-triangle-1-sw { background-position: -80px -16px; }\\n.ui-icon-triangle-1-w { background-position: -96px -16px; }\\n.ui-icon-triangle-1-nw { background-position: -112px -16px; }\\n.ui-icon-triangle-2-n-s { background-position: -128px -16px; }\\n.ui-icon-triangle-2-e-w { background-position: -144px -16px; }\\n.ui-icon-arrow-1-n { background-position: 0 -32px; }\\n.ui-icon-arrow-1-ne { background-position: -16px -32px; }\\n.ui-icon-arrow-1-e { background-position: -32px -32px; }\\n.ui-icon-arrow-1-se { background-position: -48px -32px; }\\n.ui-icon-arrow-1-s { background-position: -65px -32px; }\\n.ui-icon-arrow-1-sw { background-position: -80px -32px; }\\n.ui-icon-arrow-1-w { background-position: -96px -32px; }\\n.ui-icon-arrow-1-nw { background-position: -112px -32px; }\\n.ui-icon-arrow-2-n-s { background-position: -128px -32px; }\\n.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }\\n.ui-icon-arrow-2-e-w { background-position: -160px -32px; }\\n.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }\\n.ui-icon-arrowstop-1-n { background-position: -192px -32px; }\\n.ui-icon-arrowstop-1-e { background-position: -208px -32px; }\\n.ui-icon-arrowstop-1-s { background-position: -224px -32px; }\\n.ui-icon-arrowstop-1-w { background-position: -240px -32px; }\\n.ui-icon-arrowthick-1-n { background-position: 1px -48px; }\\n.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }\\n.ui-icon-arrowthick-1-e { background-position: -32px -48px; }\\n.ui-icon-arrowthick-1-se { background-position: -48px -48px; }\\n.ui-icon-arrowthick-1-s { background-position: -64px -48px; }\\n.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }\\n.ui-icon-arrowthick-1-w { background-position: -96px -48px; }\\n.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }\\n.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }\\n.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }\\n.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }\\n.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }\\n.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }\\n.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }\\n.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }\\n.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }\\n.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }\\n.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }\\n.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }\\n.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }\\n.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }\\n.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }\\n.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }\\n.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }\\n.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }\\n.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }\\n.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }\\n.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }\\n.ui-icon-arrow-4 { background-position: 0 -80px; }\\n.ui-icon-arrow-4-diag { background-position: -16px -80px; }\\n.ui-icon-extlink { background-position: -32px -80px; }\\n.ui-icon-newwin { background-position: -48px -80px; }\\n.ui-icon-refresh { background-position: -64px -80px; }\\n.ui-icon-shuffle { background-position: -80px -80px; }\\n.ui-icon-transfer-e-w { background-position: -96px -80px; }\\n.ui-icon-transferthick-e-w { background-position: -112px -80px; }\\n.ui-icon-folder-collapsed { background-position: 0 -96px; }\\n.ui-icon-folder-open { background-position: -16px -96px; }\\n.ui-icon-document { background-position: -32px -96px; }\\n.ui-icon-document-b { background-position: -48px -96px; }\\n.ui-icon-note { background-position: -64px -96px; }\\n.ui-icon-mail-closed { background-position: -80px -96px; }\\n.ui-icon-mail-open { background-position: -96px -96px; }\\n.ui-icon-suitcase { background-position: -112px -96px; }\\n.ui-icon-comment { background-position: -128px -96px; }\\n.ui-icon-person { background-position: -144px -96px; }\\n.ui-icon-print { background-position: -160px -96px; }\\n.ui-icon-trash { background-position: -176px -96px; }\\n.ui-icon-locked { background-position: -192px -96px; }\\n.ui-icon-unlocked { background-position: -208px -96px; }\\n.ui-icon-bookmark { background-position: -224px -96px; }\\n.ui-icon-tag { background-position: -240px -96px; }\\n.ui-icon-home { background-position: 0 -112px; }\\n.ui-icon-flag { background-position: -16px -112px; }\\n.ui-icon-calendar { background-position: -32px -112px; }\\n.ui-icon-cart { background-position: -48px -112px; }\\n.ui-icon-pencil { background-position: -64px -112px; }\\n.ui-icon-clock { background-position: -80px -112px; }\\n.ui-icon-disk { background-position: -96px -112px; }\\n.ui-icon-calculator { background-position: -112px -112px; }\\n.ui-icon-zoomin { background-position: -128px -112px; }\\n.ui-icon-zoomout { background-position: -144px -112px; }\\n.ui-icon-search { background-position: -160px -112px; }\\n.ui-icon-wrench { background-position: -176px -112px; }\\n.ui-icon-gear { background-position: -192px -112px; }\\n.ui-icon-heart { background-position: -208px -112px; }\\n.ui-icon-star { background-position: -224px -112px; }\\n.ui-icon-link { background-position: -240px -112px; }\\n.ui-icon-cancel { background-position: 0 -128px; }\\n.ui-icon-plus { background-position: -16px -128px; }\\n.ui-icon-plusthick { background-position: -32px -128px; }\\n.ui-icon-minus { background-position: -48px -128px; }\\n.ui-icon-minusthick { background-position: -64px -128px; }\\n.ui-icon-close { background-position: -80px -128px; }\\n.ui-icon-closethick { background-position: -96px -128px; }\\n.ui-icon-key { background-position: -112px -128px; }\\n.ui-icon-lightbulb { background-position: -128px -128px; }\\n.ui-icon-scissors { background-position: -144px -128px; }\\n.ui-icon-clipboard { background-position: -160px -128px; }\\n.ui-icon-copy { background-position: -176px -128px; }\\n.ui-icon-contact { background-position: -192px -128px; }\\n.ui-icon-image { background-position: -208px -128px; }\\n.ui-icon-video { background-position: -224px -128px; }\\n.ui-icon-script { background-position: -240px -128px; }\\n.ui-icon-alert { background-position: 0 -144px; }\\n.ui-icon-info { background-position: -16px -144px; }\\n.ui-icon-notice { background-position: -32px -144px; }\\n.ui-icon-help { background-position: -48px -144px; }\\n.ui-icon-check { background-position: -64px -144px; }\\n.ui-icon-bullet { background-position: -80px -144px; }\\n.ui-icon-radio-on { background-position: -96px -144px; }\\n.ui-icon-radio-off { background-position: -112px -144px; }\\n.ui-icon-pin-w { background-position: -128px -144px; }\\n.ui-icon-pin-s { background-position: -144px -144px; }\\n.ui-icon-play { background-position: 0 -160px; }\\n.ui-icon-pause { background-position: -16px -160px; }\\n.ui-icon-seek-next { background-position: -32px -160px; }\\n.ui-icon-seek-prev { background-position: -48px -160px; }\\n.ui-icon-seek-end { background-position: -64px -160px; }\\n.ui-icon-seek-start { background-position: -80px -160px; }\\n/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */\\n.ui-icon-seek-first { background-position: -80px -160px; }\\n.ui-icon-stop { background-position: -96px -160px; }\\n.ui-icon-eject { background-position: -112px -160px; }\\n.ui-icon-volume-off { background-position: -128px -160px; }\\n.ui-icon-volume-on { background-position: -144px -160px; }\\n.ui-icon-power { background-position: 0 -176px; }\\n.ui-icon-signal-diag { background-position: -16px -176px; }\\n.ui-icon-signal { background-position: -32px -176px; }\\n.ui-icon-battery-0 { background-position: -48px -176px; }\\n.ui-icon-battery-1 { background-position: -64px -176px; }\\n.ui-icon-battery-2 { background-position: -80px -176px; }\\n.ui-icon-battery-3 { background-position: -96px -176px; }\\n.ui-icon-circle-plus { background-position: 0 -192px; }\\n.ui-icon-circle-minus { background-position: -16px -192px; }\\n.ui-icon-circle-close { background-position: -32px -192px; }\\n.ui-icon-circle-triangle-e { background-position: -48px -192px; }\\n.ui-icon-circle-triangle-s { background-position: -64px -192px; }\\n.ui-icon-circle-triangle-w { background-position: -80px -192px; }\\n.ui-icon-circle-triangle-n { background-position: -96px -192px; }\\n.ui-icon-circle-arrow-e { background-position: -112px -192px; }\\n.ui-icon-circle-arrow-s { background-position: -128px -192px; }\\n.ui-icon-circle-arrow-w { background-position: -144px -192px; }\\n.ui-icon-circle-arrow-n { background-position: -160px -192px; }\\n.ui-icon-circle-zoomin { background-position: -176px -192px; }\\n.ui-icon-circle-zoomout { background-position: -192px -192px; }\\n.ui-icon-circle-check { background-position: -208px -192px; }\\n.ui-icon-circlesmall-plus { background-position: 0 -208px; }\\n.ui-icon-circlesmall-minus { background-position: -16px -208px; }\\n.ui-icon-circlesmall-close { background-position: -32px -208px; }\\n.ui-icon-squaresmall-plus { background-position: -48px -208px; }\\n.ui-icon-squaresmall-minus { background-position: -64px -208px; }\\n.ui-icon-squaresmall-close { background-position: -80px -208px; }\\n.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }\\n.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }\\n.ui-icon-grip-solid-vertical { background-position: -32px -224px; }\\n.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }\\n.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }\\n.ui-icon-grip-diagonal-se { background-position: -80px -224px; }\\n\\n\\n/* Misc visuals\\n----------------------------------*/\\n\\n/* Corner radius */\\n.ui-corner-all,\\n.ui-corner-top,\\n.ui-corner-left,\\n.ui-corner-tl {\\n\\tborder-top-left-radius: 3px;\\n}\\n.ui-corner-all,\\n.ui-corner-top,\\n.ui-corner-right,\\n.ui-corner-tr {\\n\\tborder-top-right-radius: 3px;\\n}\\n.ui-corner-all,\\n.ui-corner-bottom,\\n.ui-corner-left,\\n.ui-corner-bl {\\n\\tborder-bottom-left-radius: 3px;\\n}\\n.ui-corner-all,\\n.ui-corner-bottom,\\n.ui-corner-right,\\n.ui-corner-br {\\n\\tborder-bottom-right-radius: 3px;\\n}\\n\\n/* Overlays */\\n.ui-widget-overlay {\\n\\tbackground: #aaaaaa;\\n\\topacity: .003;\\n\\t-ms-filter: \\\"alpha(opacity=.3)\\\"; /* support: IE8 */\\n}\\n.ui-widget-shadow {\\n\\t-webkit-box-shadow: 0px 0px 5px #666666;\\n\\tbox-shadow: 0px 0px 5px #666666;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"images/ui-icons_444444_256x240.png\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_1___ = new URL(\"images/ui-icons_555555_256x240.png\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_2___ = new URL(\"images/ui-icons_ffffff_256x240.png\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_3___ = new URL(\"images/ui-icons_777620_256x240.png\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_4___ = new URL(\"images/ui-icons_cc0000_256x240.png\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_5___ = new URL(\"images/ui-icons_777777_256x240.png\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_1___);\nvar ___CSS_LOADER_URL_REPLACEMENT_2___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_2___);\nvar ___CSS_LOADER_URL_REPLACEMENT_3___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_3___);\nvar ___CSS_LOADER_URL_REPLACEMENT_4___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_4___);\nvar ___CSS_LOADER_URL_REPLACEMENT_5___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_5___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*!\n * jQuery UI CSS Framework 1.13.3\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n *\n * https://api.jqueryui.com/category/theming/\n *\n * To view and modify this theme, visit https://jqueryui.com/themeroller/?bgShadowXPos=&bgOverlayXPos=&bgErrorXPos=&bgHighlightXPos=&bgContentXPos=&bgHeaderXPos=&bgActiveXPos=&bgHoverXPos=&bgDefaultXPos=&bgShadowYPos=&bgOverlayYPos=&bgErrorYPos=&bgHighlightYPos=&bgContentYPos=&bgHeaderYPos=&bgActiveYPos=&bgHoverYPos=&bgDefaultYPos=&bgShadowRepeat=&bgOverlayRepeat=&bgErrorRepeat=&bgHighlightRepeat=&bgContentRepeat=&bgHeaderRepeat=&bgActiveRepeat=&bgHoverRepeat=&bgDefaultRepeat=&iconsHover=url(%22images%2Fui-icons_555555_256x240.png%22)&iconsHighlight=url(%22images%2Fui-icons_777620_256x240.png%22)&iconsHeader=url(%22images%2Fui-icons_444444_256x240.png%22)&iconsError=url(%22images%2Fui-icons_cc0000_256x240.png%22)&iconsDefault=url(%22images%2Fui-icons_777777_256x240.png%22)&iconsContent=url(%22images%2Fui-icons_444444_256x240.png%22)&iconsActive=url(%22images%2Fui-icons_ffffff_256x240.png%22)&bgImgUrlShadow=&bgImgUrlOverlay=&bgImgUrlHover=&bgImgUrlHighlight=&bgImgUrlHeader=&bgImgUrlError=&bgImgUrlDefault=&bgImgUrlContent=&bgImgUrlActive=&opacityFilterShadow=%22alpha(opacity%3D30)%22&opacityFilterOverlay=%22alpha(opacity%3D30)%22&opacityShadowPerc=30&opacityOverlayPerc=30&iconColorHover=%23555555&iconColorHighlight=%23777620&iconColorHeader=%23444444&iconColorError=%23cc0000&iconColorDefault=%23777777&iconColorContent=%23444444&iconColorActive=%23ffffff&bgImgOpacityShadow=0&bgImgOpacityOverlay=0&bgImgOpacityError=95&bgImgOpacityHighlight=55&bgImgOpacityContent=75&bgImgOpacityHeader=75&bgImgOpacityActive=65&bgImgOpacityHover=75&bgImgOpacityDefault=75&bgTextureShadow=flat&bgTextureOverlay=flat&bgTextureError=flat&bgTextureHighlight=flat&bgTextureContent=flat&bgTextureHeader=flat&bgTextureActive=flat&bgTextureHover=flat&bgTextureDefault=flat&cornerRadius=3px&fwDefault=normal&ffDefault=Arial%2CHelvetica%2Csans-serif&fsDefault=1em&cornerRadiusShadow=8px&thicknessShadow=5px&offsetLeftShadow=0px&offsetTopShadow=0px&opacityShadow=.3&bgColorShadow=%23666666&opacityOverlay=.3&bgColorOverlay=%23aaaaaa&fcError=%235f3f3f&borderColorError=%23f1a899&bgColorError=%23fddfdf&fcHighlight=%23777620&borderColorHighlight=%23dad55e&bgColorHighlight=%23fffa90&fcContent=%23333333&borderColorContent=%23dddddd&bgColorContent=%23ffffff&fcHeader=%23333333&borderColorHeader=%23dddddd&bgColorHeader=%23e9e9e9&fcActive=%23ffffff&borderColorActive=%23003eff&bgColorActive=%23007fff&fcHover=%232b2b2b&borderColorHover=%23cccccc&bgColorHover=%23ededed&fcDefault=%23454545&borderColorDefault=%23c5c5c5&bgColorDefault=%23f6f6f6\n */\n\n\n/* Component containers\n----------------------------------*/\n.ui-widget {\n\tfont-family: Arial,Helvetica,sans-serif;\n\tfont-size: 1em;\n}\n.ui-widget .ui-widget {\n\tfont-size: 1em;\n}\n.ui-widget input,\n.ui-widget select,\n.ui-widget textarea,\n.ui-widget button {\n\tfont-family: Arial,Helvetica,sans-serif;\n\tfont-size: 1em;\n}\n.ui-widget.ui-widget-content {\n\tborder: 1px solid #c5c5c5;\n}\n.ui-widget-content {\n\tborder: 1px solid #dddddd;\n\tbackground: #ffffff;\n\tcolor: #333333;\n}\n.ui-widget-content a {\n\tcolor: #333333;\n}\n.ui-widget-header {\n\tborder: 1px solid #dddddd;\n\tbackground: #e9e9e9;\n\tcolor: #333333;\n\tfont-weight: bold;\n}\n.ui-widget-header a {\n\tcolor: #333333;\n}\n\n/* Interaction states\n----------------------------------*/\n.ui-state-default,\n.ui-widget-content .ui-state-default,\n.ui-widget-header .ui-state-default,\n.ui-button,\n\n/* We use html here because we need a greater specificity to make sure disabled\nworks properly when clicked or hovered */\nhtml .ui-button.ui-state-disabled:hover,\nhtml .ui-button.ui-state-disabled:active {\n\tborder: 1px solid #c5c5c5;\n\tbackground: #f6f6f6;\n\tfont-weight: normal;\n\tcolor: #454545;\n}\n.ui-state-default a,\n.ui-state-default a:link,\n.ui-state-default a:visited,\na.ui-button,\na:link.ui-button,\na:visited.ui-button,\n.ui-button {\n\tcolor: #454545;\n\ttext-decoration: none;\n}\n.ui-state-hover,\n.ui-widget-content .ui-state-hover,\n.ui-widget-header .ui-state-hover,\n.ui-state-focus,\n.ui-widget-content .ui-state-focus,\n.ui-widget-header .ui-state-focus,\n.ui-button:hover,\n.ui-button:focus {\n\tborder: 1px solid #cccccc;\n\tbackground: #ededed;\n\tfont-weight: normal;\n\tcolor: #2b2b2b;\n}\n.ui-state-hover a,\n.ui-state-hover a:hover,\n.ui-state-hover a:link,\n.ui-state-hover a:visited,\n.ui-state-focus a,\n.ui-state-focus a:hover,\n.ui-state-focus a:link,\n.ui-state-focus a:visited,\na.ui-button:hover,\na.ui-button:focus {\n\tcolor: #2b2b2b;\n\ttext-decoration: none;\n}\n\n.ui-visual-focus {\n\tbox-shadow: 0 0 3px 1px rgb(94, 158, 214);\n}\n.ui-state-active,\n.ui-widget-content .ui-state-active,\n.ui-widget-header .ui-state-active,\na.ui-button:active,\n.ui-button:active,\n.ui-button.ui-state-active:hover {\n\tborder: 1px solid #003eff;\n\tbackground: #007fff;\n\tfont-weight: normal;\n\tcolor: #ffffff;\n}\n.ui-icon-background,\n.ui-state-active .ui-icon-background {\n\tborder: #003eff;\n\tbackground-color: #ffffff;\n}\n.ui-state-active a,\n.ui-state-active a:link,\n.ui-state-active a:visited {\n\tcolor: #ffffff;\n\ttext-decoration: none;\n}\n\n/* Interaction Cues\n----------------------------------*/\n.ui-state-highlight,\n.ui-widget-content .ui-state-highlight,\n.ui-widget-header .ui-state-highlight {\n\tborder: 1px solid #dad55e;\n\tbackground: #fffa90;\n\tcolor: #777620;\n}\n.ui-state-checked {\n\tborder: 1px solid #dad55e;\n\tbackground: #fffa90;\n}\n.ui-state-highlight a,\n.ui-widget-content .ui-state-highlight a,\n.ui-widget-header .ui-state-highlight a {\n\tcolor: #777620;\n}\n.ui-state-error,\n.ui-widget-content .ui-state-error,\n.ui-widget-header .ui-state-error {\n\tborder: 1px solid #f1a899;\n\tbackground: #fddfdf;\n\tcolor: #5f3f3f;\n}\n.ui-state-error a,\n.ui-widget-content .ui-state-error a,\n.ui-widget-header .ui-state-error a {\n\tcolor: #5f3f3f;\n}\n.ui-state-error-text,\n.ui-widget-content .ui-state-error-text,\n.ui-widget-header .ui-state-error-text {\n\tcolor: #5f3f3f;\n}\n.ui-priority-primary,\n.ui-widget-content .ui-priority-primary,\n.ui-widget-header .ui-priority-primary {\n\tfont-weight: bold;\n}\n.ui-priority-secondary,\n.ui-widget-content .ui-priority-secondary,\n.ui-widget-header .ui-priority-secondary {\n\topacity: .7;\n\t-ms-filter: \"alpha(opacity=70)\"; /* support: IE8 */\n\tfont-weight: normal;\n}\n.ui-state-disabled,\n.ui-widget-content .ui-state-disabled,\n.ui-widget-header .ui-state-disabled {\n\topacity: .35;\n\t-ms-filter: \"alpha(opacity=35)\"; /* support: IE8 */\n\tbackground-image: none;\n}\n.ui-state-disabled .ui-icon {\n\t-ms-filter: \"alpha(opacity=35)\"; /* support: IE8 - See #6059 */\n}\n\n/* Icons\n----------------------------------*/\n\n/* states and images */\n.ui-icon {\n\twidth: 16px;\n\theight: 16px;\n}\n.ui-icon,\n.ui-widget-content .ui-icon {\n\tbackground-image: url(${___CSS_LOADER_URL_REPLACEMENT_0___});\n}\n.ui-widget-header .ui-icon {\n\tbackground-image: url(${___CSS_LOADER_URL_REPLACEMENT_0___});\n}\n.ui-state-hover .ui-icon,\n.ui-state-focus .ui-icon,\n.ui-button:hover .ui-icon,\n.ui-button:focus .ui-icon {\n\tbackground-image: url(${___CSS_LOADER_URL_REPLACEMENT_1___});\n}\n.ui-state-active .ui-icon,\n.ui-button:active .ui-icon {\n\tbackground-image: url(${___CSS_LOADER_URL_REPLACEMENT_2___});\n}\n.ui-state-highlight .ui-icon,\n.ui-button .ui-state-highlight.ui-icon {\n\tbackground-image: url(${___CSS_LOADER_URL_REPLACEMENT_3___});\n}\n.ui-state-error .ui-icon,\n.ui-state-error-text .ui-icon {\n\tbackground-image: url(${___CSS_LOADER_URL_REPLACEMENT_4___});\n}\n.ui-button .ui-icon {\n\tbackground-image: url(${___CSS_LOADER_URL_REPLACEMENT_5___});\n}\n\n/* positioning */\n/* Three classes needed to override \\`.ui-button:hover .ui-icon\\` */\n.ui-icon-blank.ui-icon-blank.ui-icon-blank {\n\tbackground-image: none;\n}\n.ui-icon-caret-1-n { background-position: 0 0; }\n.ui-icon-caret-1-ne { background-position: -16px 0; }\n.ui-icon-caret-1-e { background-position: -32px 0; }\n.ui-icon-caret-1-se { background-position: -48px 0; }\n.ui-icon-caret-1-s { background-position: -65px 0; }\n.ui-icon-caret-1-sw { background-position: -80px 0; }\n.ui-icon-caret-1-w { background-position: -96px 0; }\n.ui-icon-caret-1-nw { background-position: -112px 0; }\n.ui-icon-caret-2-n-s { background-position: -128px 0; }\n.ui-icon-caret-2-e-w { background-position: -144px 0; }\n.ui-icon-triangle-1-n { background-position: 0 -16px; }\n.ui-icon-triangle-1-ne { background-position: -16px -16px; }\n.ui-icon-triangle-1-e { background-position: -32px -16px; }\n.ui-icon-triangle-1-se { background-position: -48px -16px; }\n.ui-icon-triangle-1-s { background-position: -65px -16px; }\n.ui-icon-triangle-1-sw { background-position: -80px -16px; }\n.ui-icon-triangle-1-w { background-position: -96px -16px; }\n.ui-icon-triangle-1-nw { background-position: -112px -16px; }\n.ui-icon-triangle-2-n-s { background-position: -128px -16px; }\n.ui-icon-triangle-2-e-w { background-position: -144px -16px; }\n.ui-icon-arrow-1-n { background-position: 0 -32px; }\n.ui-icon-arrow-1-ne { background-position: -16px -32px; }\n.ui-icon-arrow-1-e { background-position: -32px -32px; }\n.ui-icon-arrow-1-se { background-position: -48px -32px; }\n.ui-icon-arrow-1-s { background-position: -65px -32px; }\n.ui-icon-arrow-1-sw { background-position: -80px -32px; }\n.ui-icon-arrow-1-w { background-position: -96px -32px; }\n.ui-icon-arrow-1-nw { background-position: -112px -32px; }\n.ui-icon-arrow-2-n-s { background-position: -128px -32px; }\n.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }\n.ui-icon-arrow-2-e-w { background-position: -160px -32px; }\n.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }\n.ui-icon-arrowstop-1-n { background-position: -192px -32px; }\n.ui-icon-arrowstop-1-e { background-position: -208px -32px; }\n.ui-icon-arrowstop-1-s { background-position: -224px -32px; }\n.ui-icon-arrowstop-1-w { background-position: -240px -32px; }\n.ui-icon-arrowthick-1-n { background-position: 1px -48px; }\n.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }\n.ui-icon-arrowthick-1-e { background-position: -32px -48px; }\n.ui-icon-arrowthick-1-se { background-position: -48px -48px; }\n.ui-icon-arrowthick-1-s { background-position: -64px -48px; }\n.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }\n.ui-icon-arrowthick-1-w { background-position: -96px -48px; }\n.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }\n.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }\n.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }\n.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }\n.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }\n.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }\n.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }\n.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }\n.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }\n.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }\n.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }\n.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }\n.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }\n.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }\n.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }\n.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }\n.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }\n.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }\n.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }\n.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }\n.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }\n.ui-icon-arrow-4 { background-position: 0 -80px; }\n.ui-icon-arrow-4-diag { background-position: -16px -80px; }\n.ui-icon-extlink { background-position: -32px -80px; }\n.ui-icon-newwin { background-position: -48px -80px; }\n.ui-icon-refresh { background-position: -64px -80px; }\n.ui-icon-shuffle { background-position: -80px -80px; }\n.ui-icon-transfer-e-w { background-position: -96px -80px; }\n.ui-icon-transferthick-e-w { background-position: -112px -80px; }\n.ui-icon-folder-collapsed { background-position: 0 -96px; }\n.ui-icon-folder-open { background-position: -16px -96px; }\n.ui-icon-document { background-position: -32px -96px; }\n.ui-icon-document-b { background-position: -48px -96px; }\n.ui-icon-note { background-position: -64px -96px; }\n.ui-icon-mail-closed { background-position: -80px -96px; }\n.ui-icon-mail-open { background-position: -96px -96px; }\n.ui-icon-suitcase { background-position: -112px -96px; }\n.ui-icon-comment { background-position: -128px -96px; }\n.ui-icon-person { background-position: -144px -96px; }\n.ui-icon-print { background-position: -160px -96px; }\n.ui-icon-trash { background-position: -176px -96px; }\n.ui-icon-locked { background-position: -192px -96px; }\n.ui-icon-unlocked { background-position: -208px -96px; }\n.ui-icon-bookmark { background-position: -224px -96px; }\n.ui-icon-tag { background-position: -240px -96px; }\n.ui-icon-home { background-position: 0 -112px; }\n.ui-icon-flag { background-position: -16px -112px; }\n.ui-icon-calendar { background-position: -32px -112px; }\n.ui-icon-cart { background-position: -48px -112px; }\n.ui-icon-pencil { background-position: -64px -112px; }\n.ui-icon-clock { background-position: -80px -112px; }\n.ui-icon-disk { background-position: -96px -112px; }\n.ui-icon-calculator { background-position: -112px -112px; }\n.ui-icon-zoomin { background-position: -128px -112px; }\n.ui-icon-zoomout { background-position: -144px -112px; }\n.ui-icon-search { background-position: -160px -112px; }\n.ui-icon-wrench { background-position: -176px -112px; }\n.ui-icon-gear { background-position: -192px -112px; }\n.ui-icon-heart { background-position: -208px -112px; }\n.ui-icon-star { background-position: -224px -112px; }\n.ui-icon-link { background-position: -240px -112px; }\n.ui-icon-cancel { background-position: 0 -128px; }\n.ui-icon-plus { background-position: -16px -128px; }\n.ui-icon-plusthick { background-position: -32px -128px; }\n.ui-icon-minus { background-position: -48px -128px; }\n.ui-icon-minusthick { background-position: -64px -128px; }\n.ui-icon-close { background-position: -80px -128px; }\n.ui-icon-closethick { background-position: -96px -128px; }\n.ui-icon-key { background-position: -112px -128px; }\n.ui-icon-lightbulb { background-position: -128px -128px; }\n.ui-icon-scissors { background-position: -144px -128px; }\n.ui-icon-clipboard { background-position: -160px -128px; }\n.ui-icon-copy { background-position: -176px -128px; }\n.ui-icon-contact { background-position: -192px -128px; }\n.ui-icon-image { background-position: -208px -128px; }\n.ui-icon-video { background-position: -224px -128px; }\n.ui-icon-script { background-position: -240px -128px; }\n.ui-icon-alert { background-position: 0 -144px; }\n.ui-icon-info { background-position: -16px -144px; }\n.ui-icon-notice { background-position: -32px -144px; }\n.ui-icon-help { background-position: -48px -144px; }\n.ui-icon-check { background-position: -64px -144px; }\n.ui-icon-bullet { background-position: -80px -144px; }\n.ui-icon-radio-on { background-position: -96px -144px; }\n.ui-icon-radio-off { background-position: -112px -144px; }\n.ui-icon-pin-w { background-position: -128px -144px; }\n.ui-icon-pin-s { background-position: -144px -144px; }\n.ui-icon-play { background-position: 0 -160px; }\n.ui-icon-pause { background-position: -16px -160px; }\n.ui-icon-seek-next { background-position: -32px -160px; }\n.ui-icon-seek-prev { background-position: -48px -160px; }\n.ui-icon-seek-end { background-position: -64px -160px; }\n.ui-icon-seek-start { background-position: -80px -160px; }\n/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */\n.ui-icon-seek-first { background-position: -80px -160px; }\n.ui-icon-stop { background-position: -96px -160px; }\n.ui-icon-eject { background-position: -112px -160px; }\n.ui-icon-volume-off { background-position: -128px -160px; }\n.ui-icon-volume-on { background-position: -144px -160px; }\n.ui-icon-power { background-position: 0 -176px; }\n.ui-icon-signal-diag { background-position: -16px -176px; }\n.ui-icon-signal { background-position: -32px -176px; }\n.ui-icon-battery-0 { background-position: -48px -176px; }\n.ui-icon-battery-1 { background-position: -64px -176px; }\n.ui-icon-battery-2 { background-position: -80px -176px; }\n.ui-icon-battery-3 { background-position: -96px -176px; }\n.ui-icon-circle-plus { background-position: 0 -192px; }\n.ui-icon-circle-minus { background-position: -16px -192px; }\n.ui-icon-circle-close { background-position: -32px -192px; }\n.ui-icon-circle-triangle-e { background-position: -48px -192px; }\n.ui-icon-circle-triangle-s { background-position: -64px -192px; }\n.ui-icon-circle-triangle-w { background-position: -80px -192px; }\n.ui-icon-circle-triangle-n { background-position: -96px -192px; }\n.ui-icon-circle-arrow-e { background-position: -112px -192px; }\n.ui-icon-circle-arrow-s { background-position: -128px -192px; }\n.ui-icon-circle-arrow-w { background-position: -144px -192px; }\n.ui-icon-circle-arrow-n { background-position: -160px -192px; }\n.ui-icon-circle-zoomin { background-position: -176px -192px; }\n.ui-icon-circle-zoomout { background-position: -192px -192px; }\n.ui-icon-circle-check { background-position: -208px -192px; }\n.ui-icon-circlesmall-plus { background-position: 0 -208px; }\n.ui-icon-circlesmall-minus { background-position: -16px -208px; }\n.ui-icon-circlesmall-close { background-position: -32px -208px; }\n.ui-icon-squaresmall-plus { background-position: -48px -208px; }\n.ui-icon-squaresmall-minus { background-position: -64px -208px; }\n.ui-icon-squaresmall-close { background-position: -80px -208px; }\n.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }\n.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }\n.ui-icon-grip-solid-vertical { background-position: -32px -224px; }\n.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }\n.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }\n.ui-icon-grip-diagonal-se { background-position: -80px -224px; }\n\n\n/* Misc visuals\n----------------------------------*/\n\n/* Corner radius */\n.ui-corner-all,\n.ui-corner-top,\n.ui-corner-left,\n.ui-corner-tl {\n\tborder-top-left-radius: 3px;\n}\n.ui-corner-all,\n.ui-corner-top,\n.ui-corner-right,\n.ui-corner-tr {\n\tborder-top-right-radius: 3px;\n}\n.ui-corner-all,\n.ui-corner-bottom,\n.ui-corner-left,\n.ui-corner-bl {\n\tborder-bottom-left-radius: 3px;\n}\n.ui-corner-all,\n.ui-corner-bottom,\n.ui-corner-right,\n.ui-corner-br {\n\tborder-bottom-right-radius: 3px;\n}\n\n/* Overlays */\n.ui-widget-overlay {\n\tbackground: #aaaaaa;\n\topacity: .003;\n\t-ms-filter: \"alpha(opacity=.3)\"; /* support: IE8 */\n}\n.ui-widget-shadow {\n\t-webkit-box-shadow: 0px 0px 5px #666666;\n\tbox-shadow: 0px 0px 5px #666666;\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/jquery-ui-dist/jquery-ui.theme.css\"],\"names\":[],\"mappings\":\"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\",\"sourcesContent\":[\"/*!\\n * jQuery UI CSS Framework 1.13.3\\n * https://jqueryui.com\\n *\\n * Copyright OpenJS Foundation and other contributors\\n * Released under the MIT license.\\n * https://jquery.org/license\\n *\\n * https://api.jqueryui.com/category/theming/\\n *\\n * To view and modify this theme, visit https://jqueryui.com/themeroller/?bgShadowXPos=&bgOverlayXPos=&bgErrorXPos=&bgHighlightXPos=&bgContentXPos=&bgHeaderXPos=&bgActiveXPos=&bgHoverXPos=&bgDefaultXPos=&bgShadowYPos=&bgOverlayYPos=&bgErrorYPos=&bgHighlightYPos=&bgContentYPos=&bgHeaderYPos=&bgActiveYPos=&bgHoverYPos=&bgDefaultYPos=&bgShadowRepeat=&bgOverlayRepeat=&bgErrorRepeat=&bgHighlightRepeat=&bgContentRepeat=&bgHeaderRepeat=&bgActiveRepeat=&bgHoverRepeat=&bgDefaultRepeat=&iconsHover=url(%22images%2Fui-icons_555555_256x240.png%22)&iconsHighlight=url(%22images%2Fui-icons_777620_256x240.png%22)&iconsHeader=url(%22images%2Fui-icons_444444_256x240.png%22)&iconsError=url(%22images%2Fui-icons_cc0000_256x240.png%22)&iconsDefault=url(%22images%2Fui-icons_777777_256x240.png%22)&iconsContent=url(%22images%2Fui-icons_444444_256x240.png%22)&iconsActive=url(%22images%2Fui-icons_ffffff_256x240.png%22)&bgImgUrlShadow=&bgImgUrlOverlay=&bgImgUrlHover=&bgImgUrlHighlight=&bgImgUrlHeader=&bgImgUrlError=&bgImgUrlDefault=&bgImgUrlContent=&bgImgUrlActive=&opacityFilterShadow=%22alpha(opacity%3D30)%22&opacityFilterOverlay=%22alpha(opacity%3D30)%22&opacityShadowPerc=30&opacityOverlayPerc=30&iconColorHover=%23555555&iconColorHighlight=%23777620&iconColorHeader=%23444444&iconColorError=%23cc0000&iconColorDefault=%23777777&iconColorContent=%23444444&iconColorActive=%23ffffff&bgImgOpacityShadow=0&bgImgOpacityOverlay=0&bgImgOpacityError=95&bgImgOpacityHighlight=55&bgImgOpacityContent=75&bgImgOpacityHeader=75&bgImgOpacityActive=65&bgImgOpacityHover=75&bgImgOpacityDefault=75&bgTextureShadow=flat&bgTextureOverlay=flat&bgTextureError=flat&bgTextureHighlight=flat&bgTextureContent=flat&bgTextureHeader=flat&bgTextureActive=flat&bgTextureHover=flat&bgTextureDefault=flat&cornerRadius=3px&fwDefault=normal&ffDefault=Arial%2CHelvetica%2Csans-serif&fsDefault=1em&cornerRadiusShadow=8px&thicknessShadow=5px&offsetLeftShadow=0px&offsetTopShadow=0px&opacityShadow=.3&bgColorShadow=%23666666&opacityOverlay=.3&bgColorOverlay=%23aaaaaa&fcError=%235f3f3f&borderColorError=%23f1a899&bgColorError=%23fddfdf&fcHighlight=%23777620&borderColorHighlight=%23dad55e&bgColorHighlight=%23fffa90&fcContent=%23333333&borderColorContent=%23dddddd&bgColorContent=%23ffffff&fcHeader=%23333333&borderColorHeader=%23dddddd&bgColorHeader=%23e9e9e9&fcActive=%23ffffff&borderColorActive=%23003eff&bgColorActive=%23007fff&fcHover=%232b2b2b&borderColorHover=%23cccccc&bgColorHover=%23ededed&fcDefault=%23454545&borderColorDefault=%23c5c5c5&bgColorDefault=%23f6f6f6\\n */\\n\\n\\n/* Component containers\\n----------------------------------*/\\n.ui-widget {\\n\\tfont-family: Arial,Helvetica,sans-serif;\\n\\tfont-size: 1em;\\n}\\n.ui-widget .ui-widget {\\n\\tfont-size: 1em;\\n}\\n.ui-widget input,\\n.ui-widget select,\\n.ui-widget textarea,\\n.ui-widget button {\\n\\tfont-family: Arial,Helvetica,sans-serif;\\n\\tfont-size: 1em;\\n}\\n.ui-widget.ui-widget-content {\\n\\tborder: 1px solid #c5c5c5;\\n}\\n.ui-widget-content {\\n\\tborder: 1px solid #dddddd;\\n\\tbackground: #ffffff;\\n\\tcolor: #333333;\\n}\\n.ui-widget-content a {\\n\\tcolor: #333333;\\n}\\n.ui-widget-header {\\n\\tborder: 1px solid #dddddd;\\n\\tbackground: #e9e9e9;\\n\\tcolor: #333333;\\n\\tfont-weight: bold;\\n}\\n.ui-widget-header a {\\n\\tcolor: #333333;\\n}\\n\\n/* Interaction states\\n----------------------------------*/\\n.ui-state-default,\\n.ui-widget-content .ui-state-default,\\n.ui-widget-header .ui-state-default,\\n.ui-button,\\n\\n/* We use html here because we need a greater specificity to make sure disabled\\nworks properly when clicked or hovered */\\nhtml .ui-button.ui-state-disabled:hover,\\nhtml .ui-button.ui-state-disabled:active {\\n\\tborder: 1px solid #c5c5c5;\\n\\tbackground: #f6f6f6;\\n\\tfont-weight: normal;\\n\\tcolor: #454545;\\n}\\n.ui-state-default a,\\n.ui-state-default a:link,\\n.ui-state-default a:visited,\\na.ui-button,\\na:link.ui-button,\\na:visited.ui-button,\\n.ui-button {\\n\\tcolor: #454545;\\n\\ttext-decoration: none;\\n}\\n.ui-state-hover,\\n.ui-widget-content .ui-state-hover,\\n.ui-widget-header .ui-state-hover,\\n.ui-state-focus,\\n.ui-widget-content .ui-state-focus,\\n.ui-widget-header .ui-state-focus,\\n.ui-button:hover,\\n.ui-button:focus {\\n\\tborder: 1px solid #cccccc;\\n\\tbackground: #ededed;\\n\\tfont-weight: normal;\\n\\tcolor: #2b2b2b;\\n}\\n.ui-state-hover a,\\n.ui-state-hover a:hover,\\n.ui-state-hover a:link,\\n.ui-state-hover a:visited,\\n.ui-state-focus a,\\n.ui-state-focus a:hover,\\n.ui-state-focus a:link,\\n.ui-state-focus a:visited,\\na.ui-button:hover,\\na.ui-button:focus {\\n\\tcolor: #2b2b2b;\\n\\ttext-decoration: none;\\n}\\n\\n.ui-visual-focus {\\n\\tbox-shadow: 0 0 3px 1px rgb(94, 158, 214);\\n}\\n.ui-state-active,\\n.ui-widget-content .ui-state-active,\\n.ui-widget-header .ui-state-active,\\na.ui-button:active,\\n.ui-button:active,\\n.ui-button.ui-state-active:hover {\\n\\tborder: 1px solid #003eff;\\n\\tbackground: #007fff;\\n\\tfont-weight: normal;\\n\\tcolor: #ffffff;\\n}\\n.ui-icon-background,\\n.ui-state-active .ui-icon-background {\\n\\tborder: #003eff;\\n\\tbackground-color: #ffffff;\\n}\\n.ui-state-active a,\\n.ui-state-active a:link,\\n.ui-state-active a:visited {\\n\\tcolor: #ffffff;\\n\\ttext-decoration: none;\\n}\\n\\n/* Interaction Cues\\n----------------------------------*/\\n.ui-state-highlight,\\n.ui-widget-content .ui-state-highlight,\\n.ui-widget-header .ui-state-highlight {\\n\\tborder: 1px solid #dad55e;\\n\\tbackground: #fffa90;\\n\\tcolor: #777620;\\n}\\n.ui-state-checked {\\n\\tborder: 1px solid #dad55e;\\n\\tbackground: #fffa90;\\n}\\n.ui-state-highlight a,\\n.ui-widget-content .ui-state-highlight a,\\n.ui-widget-header .ui-state-highlight a {\\n\\tcolor: #777620;\\n}\\n.ui-state-error,\\n.ui-widget-content .ui-state-error,\\n.ui-widget-header .ui-state-error {\\n\\tborder: 1px solid #f1a899;\\n\\tbackground: #fddfdf;\\n\\tcolor: #5f3f3f;\\n}\\n.ui-state-error a,\\n.ui-widget-content .ui-state-error a,\\n.ui-widget-header .ui-state-error a {\\n\\tcolor: #5f3f3f;\\n}\\n.ui-state-error-text,\\n.ui-widget-content .ui-state-error-text,\\n.ui-widget-header .ui-state-error-text {\\n\\tcolor: #5f3f3f;\\n}\\n.ui-priority-primary,\\n.ui-widget-content .ui-priority-primary,\\n.ui-widget-header .ui-priority-primary {\\n\\tfont-weight: bold;\\n}\\n.ui-priority-secondary,\\n.ui-widget-content .ui-priority-secondary,\\n.ui-widget-header .ui-priority-secondary {\\n\\topacity: .7;\\n\\t-ms-filter: \\\"alpha(opacity=70)\\\"; /* support: IE8 */\\n\\tfont-weight: normal;\\n}\\n.ui-state-disabled,\\n.ui-widget-content .ui-state-disabled,\\n.ui-widget-header .ui-state-disabled {\\n\\topacity: .35;\\n\\t-ms-filter: \\\"alpha(opacity=35)\\\"; /* support: IE8 */\\n\\tbackground-image: none;\\n}\\n.ui-state-disabled .ui-icon {\\n\\t-ms-filter: \\\"alpha(opacity=35)\\\"; /* support: IE8 - See #6059 */\\n}\\n\\n/* Icons\\n----------------------------------*/\\n\\n/* states and images */\\n.ui-icon {\\n\\twidth: 16px;\\n\\theight: 16px;\\n}\\n.ui-icon,\\n.ui-widget-content .ui-icon {\\n\\tbackground-image: url(\\\"images/ui-icons_444444_256x240.png\\\");\\n}\\n.ui-widget-header .ui-icon {\\n\\tbackground-image: url(\\\"images/ui-icons_444444_256x240.png\\\");\\n}\\n.ui-state-hover .ui-icon,\\n.ui-state-focus .ui-icon,\\n.ui-button:hover .ui-icon,\\n.ui-button:focus .ui-icon {\\n\\tbackground-image: url(\\\"images/ui-icons_555555_256x240.png\\\");\\n}\\n.ui-state-active .ui-icon,\\n.ui-button:active .ui-icon {\\n\\tbackground-image: url(\\\"images/ui-icons_ffffff_256x240.png\\\");\\n}\\n.ui-state-highlight .ui-icon,\\n.ui-button .ui-state-highlight.ui-icon {\\n\\tbackground-image: url(\\\"images/ui-icons_777620_256x240.png\\\");\\n}\\n.ui-state-error .ui-icon,\\n.ui-state-error-text .ui-icon {\\n\\tbackground-image: url(\\\"images/ui-icons_cc0000_256x240.png\\\");\\n}\\n.ui-button .ui-icon {\\n\\tbackground-image: url(\\\"images/ui-icons_777777_256x240.png\\\");\\n}\\n\\n/* positioning */\\n/* Three classes needed to override `.ui-button:hover .ui-icon` */\\n.ui-icon-blank.ui-icon-blank.ui-icon-blank {\\n\\tbackground-image: none;\\n}\\n.ui-icon-caret-1-n { background-position: 0 0; }\\n.ui-icon-caret-1-ne { background-position: -16px 0; }\\n.ui-icon-caret-1-e { background-position: -32px 0; }\\n.ui-icon-caret-1-se { background-position: -48px 0; }\\n.ui-icon-caret-1-s { background-position: -65px 0; }\\n.ui-icon-caret-1-sw { background-position: -80px 0; }\\n.ui-icon-caret-1-w { background-position: -96px 0; }\\n.ui-icon-caret-1-nw { background-position: -112px 0; }\\n.ui-icon-caret-2-n-s { background-position: -128px 0; }\\n.ui-icon-caret-2-e-w { background-position: -144px 0; }\\n.ui-icon-triangle-1-n { background-position: 0 -16px; }\\n.ui-icon-triangle-1-ne { background-position: -16px -16px; }\\n.ui-icon-triangle-1-e { background-position: -32px -16px; }\\n.ui-icon-triangle-1-se { background-position: -48px -16px; }\\n.ui-icon-triangle-1-s { background-position: -65px -16px; }\\n.ui-icon-triangle-1-sw { background-position: -80px -16px; }\\n.ui-icon-triangle-1-w { background-position: -96px -16px; }\\n.ui-icon-triangle-1-nw { background-position: -112px -16px; }\\n.ui-icon-triangle-2-n-s { background-position: -128px -16px; }\\n.ui-icon-triangle-2-e-w { background-position: -144px -16px; }\\n.ui-icon-arrow-1-n { background-position: 0 -32px; }\\n.ui-icon-arrow-1-ne { background-position: -16px -32px; }\\n.ui-icon-arrow-1-e { background-position: -32px -32px; }\\n.ui-icon-arrow-1-se { background-position: -48px -32px; }\\n.ui-icon-arrow-1-s { background-position: -65px -32px; }\\n.ui-icon-arrow-1-sw { background-position: -80px -32px; }\\n.ui-icon-arrow-1-w { background-position: -96px -32px; }\\n.ui-icon-arrow-1-nw { background-position: -112px -32px; }\\n.ui-icon-arrow-2-n-s { background-position: -128px -32px; }\\n.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }\\n.ui-icon-arrow-2-e-w { background-position: -160px -32px; }\\n.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }\\n.ui-icon-arrowstop-1-n { background-position: -192px -32px; }\\n.ui-icon-arrowstop-1-e { background-position: -208px -32px; }\\n.ui-icon-arrowstop-1-s { background-position: -224px -32px; }\\n.ui-icon-arrowstop-1-w { background-position: -240px -32px; }\\n.ui-icon-arrowthick-1-n { background-position: 1px -48px; }\\n.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }\\n.ui-icon-arrowthick-1-e { background-position: -32px -48px; }\\n.ui-icon-arrowthick-1-se { background-position: -48px -48px; }\\n.ui-icon-arrowthick-1-s { background-position: -64px -48px; }\\n.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }\\n.ui-icon-arrowthick-1-w { background-position: -96px -48px; }\\n.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }\\n.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }\\n.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }\\n.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }\\n.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }\\n.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }\\n.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }\\n.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }\\n.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }\\n.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }\\n.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }\\n.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }\\n.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }\\n.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }\\n.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }\\n.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }\\n.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }\\n.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }\\n.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }\\n.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }\\n.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }\\n.ui-icon-arrow-4 { background-position: 0 -80px; }\\n.ui-icon-arrow-4-diag { background-position: -16px -80px; }\\n.ui-icon-extlink { background-position: -32px -80px; }\\n.ui-icon-newwin { background-position: -48px -80px; }\\n.ui-icon-refresh { background-position: -64px -80px; }\\n.ui-icon-shuffle { background-position: -80px -80px; }\\n.ui-icon-transfer-e-w { background-position: -96px -80px; }\\n.ui-icon-transferthick-e-w { background-position: -112px -80px; }\\n.ui-icon-folder-collapsed { background-position: 0 -96px; }\\n.ui-icon-folder-open { background-position: -16px -96px; }\\n.ui-icon-document { background-position: -32px -96px; }\\n.ui-icon-document-b { background-position: -48px -96px; }\\n.ui-icon-note { background-position: -64px -96px; }\\n.ui-icon-mail-closed { background-position: -80px -96px; }\\n.ui-icon-mail-open { background-position: -96px -96px; }\\n.ui-icon-suitcase { background-position: -112px -96px; }\\n.ui-icon-comment { background-position: -128px -96px; }\\n.ui-icon-person { background-position: -144px -96px; }\\n.ui-icon-print { background-position: -160px -96px; }\\n.ui-icon-trash { background-position: -176px -96px; }\\n.ui-icon-locked { background-position: -192px -96px; }\\n.ui-icon-unlocked { background-position: -208px -96px; }\\n.ui-icon-bookmark { background-position: -224px -96px; }\\n.ui-icon-tag { background-position: -240px -96px; }\\n.ui-icon-home { background-position: 0 -112px; }\\n.ui-icon-flag { background-position: -16px -112px; }\\n.ui-icon-calendar { background-position: -32px -112px; }\\n.ui-icon-cart { background-position: -48px -112px; }\\n.ui-icon-pencil { background-position: -64px -112px; }\\n.ui-icon-clock { background-position: -80px -112px; }\\n.ui-icon-disk { background-position: -96px -112px; }\\n.ui-icon-calculator { background-position: -112px -112px; }\\n.ui-icon-zoomin { background-position: -128px -112px; }\\n.ui-icon-zoomout { background-position: -144px -112px; }\\n.ui-icon-search { background-position: -160px -112px; }\\n.ui-icon-wrench { background-position: -176px -112px; }\\n.ui-icon-gear { background-position: -192px -112px; }\\n.ui-icon-heart { background-position: -208px -112px; }\\n.ui-icon-star { background-position: -224px -112px; }\\n.ui-icon-link { background-position: -240px -112px; }\\n.ui-icon-cancel { background-position: 0 -128px; }\\n.ui-icon-plus { background-position: -16px -128px; }\\n.ui-icon-plusthick { background-position: -32px -128px; }\\n.ui-icon-minus { background-position: -48px -128px; }\\n.ui-icon-minusthick { background-position: -64px -128px; }\\n.ui-icon-close { background-position: -80px -128px; }\\n.ui-icon-closethick { background-position: -96px -128px; }\\n.ui-icon-key { background-position: -112px -128px; }\\n.ui-icon-lightbulb { background-position: -128px -128px; }\\n.ui-icon-scissors { background-position: -144px -128px; }\\n.ui-icon-clipboard { background-position: -160px -128px; }\\n.ui-icon-copy { background-position: -176px -128px; }\\n.ui-icon-contact { background-position: -192px -128px; }\\n.ui-icon-image { background-position: -208px -128px; }\\n.ui-icon-video { background-position: -224px -128px; }\\n.ui-icon-script { background-position: -240px -128px; }\\n.ui-icon-alert { background-position: 0 -144px; }\\n.ui-icon-info { background-position: -16px -144px; }\\n.ui-icon-notice { background-position: -32px -144px; }\\n.ui-icon-help { background-position: -48px -144px; }\\n.ui-icon-check { background-position: -64px -144px; }\\n.ui-icon-bullet { background-position: -80px -144px; }\\n.ui-icon-radio-on { background-position: -96px -144px; }\\n.ui-icon-radio-off { background-position: -112px -144px; }\\n.ui-icon-pin-w { background-position: -128px -144px; }\\n.ui-icon-pin-s { background-position: -144px -144px; }\\n.ui-icon-play { background-position: 0 -160px; }\\n.ui-icon-pause { background-position: -16px -160px; }\\n.ui-icon-seek-next { background-position: -32px -160px; }\\n.ui-icon-seek-prev { background-position: -48px -160px; }\\n.ui-icon-seek-end { background-position: -64px -160px; }\\n.ui-icon-seek-start { background-position: -80px -160px; }\\n/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */\\n.ui-icon-seek-first { background-position: -80px -160px; }\\n.ui-icon-stop { background-position: -96px -160px; }\\n.ui-icon-eject { background-position: -112px -160px; }\\n.ui-icon-volume-off { background-position: -128px -160px; }\\n.ui-icon-volume-on { background-position: -144px -160px; }\\n.ui-icon-power { background-position: 0 -176px; }\\n.ui-icon-signal-diag { background-position: -16px -176px; }\\n.ui-icon-signal { background-position: -32px -176px; }\\n.ui-icon-battery-0 { background-position: -48px -176px; }\\n.ui-icon-battery-1 { background-position: -64px -176px; }\\n.ui-icon-battery-2 { background-position: -80px -176px; }\\n.ui-icon-battery-3 { background-position: -96px -176px; }\\n.ui-icon-circle-plus { background-position: 0 -192px; }\\n.ui-icon-circle-minus { background-position: -16px -192px; }\\n.ui-icon-circle-close { background-position: -32px -192px; }\\n.ui-icon-circle-triangle-e { background-position: -48px -192px; }\\n.ui-icon-circle-triangle-s { background-position: -64px -192px; }\\n.ui-icon-circle-triangle-w { background-position: -80px -192px; }\\n.ui-icon-circle-triangle-n { background-position: -96px -192px; }\\n.ui-icon-circle-arrow-e { background-position: -112px -192px; }\\n.ui-icon-circle-arrow-s { background-position: -128px -192px; }\\n.ui-icon-circle-arrow-w { background-position: -144px -192px; }\\n.ui-icon-circle-arrow-n { background-position: -160px -192px; }\\n.ui-icon-circle-zoomin { background-position: -176px -192px; }\\n.ui-icon-circle-zoomout { background-position: -192px -192px; }\\n.ui-icon-circle-check { background-position: -208px -192px; }\\n.ui-icon-circlesmall-plus { background-position: 0 -208px; }\\n.ui-icon-circlesmall-minus { background-position: -16px -208px; }\\n.ui-icon-circlesmall-close { background-position: -32px -208px; }\\n.ui-icon-squaresmall-plus { background-position: -48px -208px; }\\n.ui-icon-squaresmall-minus { background-position: -64px -208px; }\\n.ui-icon-squaresmall-close { background-position: -80px -208px; }\\n.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }\\n.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }\\n.ui-icon-grip-solid-vertical { background-position: -32px -224px; }\\n.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }\\n.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }\\n.ui-icon-grip-diagonal-se { background-position: -80px -224px; }\\n\\n\\n/* Misc visuals\\n----------------------------------*/\\n\\n/* Corner radius */\\n.ui-corner-all,\\n.ui-corner-top,\\n.ui-corner-left,\\n.ui-corner-tl {\\n\\tborder-top-left-radius: 3px;\\n}\\n.ui-corner-all,\\n.ui-corner-top,\\n.ui-corner-right,\\n.ui-corner-tr {\\n\\tborder-top-right-radius: 3px;\\n}\\n.ui-corner-all,\\n.ui-corner-bottom,\\n.ui-corner-left,\\n.ui-corner-bl {\\n\\tborder-bottom-left-radius: 3px;\\n}\\n.ui-corner-all,\\n.ui-corner-bottom,\\n.ui-corner-right,\\n.ui-corner-br {\\n\\tborder-bottom-right-radius: 3px;\\n}\\n\\n/* Overlays */\\n.ui-widget-overlay {\\n\\tbackground: #aaaaaa;\\n\\topacity: .003;\\n\\t-ms-filter: \\\"alpha(opacity=.3)\\\"; /* support: IE8 */\\n}\\n.ui-widget-shadow {\\n\\t-webkit-box-shadow: 0px 0px 5px #666666;\\n\\tbox-shadow: 0px 0px 5px #666666;\\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\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"images/ui-icons_1d2d44_256x240.png\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_1___ = new URL(\"images/ui-icons_ffffff_256x240.png\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_2___ = new URL(\"images/ui-icons_ffd27a_256x240.png\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_3___ = new URL(\"images/ui-bg_diagonals-thick_20_666666_40x40.png\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_4___ = new URL(\"images/ui-bg_flat_10_000000_40x100.png\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_1___);\nvar ___CSS_LOADER_URL_REPLACEMENT_2___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_2___);\nvar ___CSS_LOADER_URL_REPLACEMENT_3___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_3___);\nvar ___CSS_LOADER_URL_REPLACEMENT_4___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_4___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.ui-widget-content{border:1px solid var(--color-border);background:var(--color-main-background) none;color:var(--color-main-text)}.ui-widget-content a{color:var(--color-main-text)}.ui-widget-header{border:none;color:var(--color-main-text);background-image:none}.ui-widget-header a{color:var(--color-main-text)}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid var(--color-border);background:var(--color-main-background) none;font-weight:bold;color:#555}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#555}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #ddd;background:var(--color-main-background) none;font-weight:bold;color:var(--color-main-text)}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited{color:var(--color-main-text)}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid var(--color-primary-element);background:var(--color-main-background) none;font-weight:bold;color:var(--color-main-text)}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:var(--color-main-text)}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid var(--color-main-background);background:var(--color-main-background) none;color:var(--color-text-light);font-weight:600}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:var(--color-text-lighter)}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:var(--color-error);background:var(--color-error) none;color:#fff}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#fff}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#fff}.ui-state-default .ui-icon{background-image:url(${___CSS_LOADER_URL_REPLACEMENT_0___})}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url(${___CSS_LOADER_URL_REPLACEMENT_0___})}.ui-state-active .ui-icon{background-image:url(${___CSS_LOADER_URL_REPLACEMENT_0___})}.ui-state-highlight .ui-icon{background-image:url(${___CSS_LOADER_URL_REPLACEMENT_1___})}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url(${___CSS_LOADER_URL_REPLACEMENT_2___})}.ui-icon.ui-icon-none{display:none}.ui-widget-overlay{background:#666 url(${___CSS_LOADER_URL_REPLACEMENT_3___}) 50% 50% repeat;opacity:.5}.ui-widget-shadow{margin:-5px 0 0 -5px;padding:5px;background:#000 url(${___CSS_LOADER_URL_REPLACEMENT_4___}) 50% 50% repeat-x;opacity:.2;border-radius:5px}.ui-tabs{border:none}.ui-tabs .ui-tabs-nav.ui-corner-all{border-end-start-radius:0;border-end-end-radius:0}.ui-tabs .ui-tabs-nav{background:none;margin-bottom:15px}.ui-tabs .ui-tabs-nav .ui-state-default{border:none;border-bottom:1px solid rgba(0,0,0,0);font-weight:normal;margin:0 !important;padding:0 !important}.ui-tabs .ui-tabs-nav .ui-state-hover,.ui-tabs .ui-tabs-nav .ui-state-active{border:none;border-bottom:1px solid var(--color-main-text);color:var(--color-main-text)}.ui-tabs .ui-tabs-nav .ui-state-hover a,.ui-tabs .ui-tabs-nav .ui-state-hover a:link,.ui-tabs .ui-tabs-nav .ui-state-hover a:hover,.ui-tabs .ui-tabs-nav .ui-state-hover a:visited,.ui-tabs .ui-tabs-nav .ui-state-active a,.ui-tabs .ui-tabs-nav .ui-state-active a:link,.ui-tabs .ui-tabs-nav .ui-state-active a:hover,.ui-tabs .ui-tabs-nav .ui-state-active a:visited{color:var(--color-main-text)}.ui-tabs .ui-tabs-nav .ui-state-active{font-weight:bold}.ui-autocomplete.ui-menu{padding:0}.ui-autocomplete.ui-menu.item-count-1,.ui-autocomplete.ui-menu.item-count-2{overflow-y:hidden}.ui-autocomplete.ui-menu .ui-menu-item a{color:var(--color-text-lighter);display:block;padding:4px;padding-inline-start:14px}.ui-autocomplete.ui-menu .ui-menu-item a.ui-state-focus,.ui-autocomplete.ui-menu .ui-menu-item a.ui-state-active{box-shadow:inset 4px 0 var(--color-primary-element);color:var(--color-main-text)}.ui-autocomplete.ui-widget-content{background:var(--color-main-background);border-top:none}.ui-autocomplete.ui-corner-all{border-radius:0;border-end-start-radius:var(--border-radius);border-end-end-radius:var(--border-radius)}.ui-autocomplete .ui-state-hover,.ui-autocomplete .ui-widget-content .ui-state-hover,.ui-autocomplete .ui-widget-header .ui-state-hover,.ui-autocomplete .ui-state-focus,.ui-autocomplete .ui-widget-content .ui-state-focus,.ui-autocomplete .ui-widget-header .ui-state-focus{border:1px solid rgba(0,0,0,0);background:inherit;color:var(--color-primary-element)}.ui-autocomplete .ui-menu-item a{border-radius:0 !important}.ui-button.primary{background-color:var(--color-primary-element);color:var(--color-primary-element-text);border:1px solid var(--color-primary-element-text)}.ui-button:hover{font-weight:bold !important}.ui-draggable-handle,.ui-selectable{touch-action:pan-y}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/jquery/css/jquery-ui-fixes.scss\"],\"names\":[],\"mappings\":\"AAMA,mBACC,oCAAA,CACA,4CAAA,CACA,4BAAA,CAED,qBACC,4BAAA,CAED,kBACC,WAAA,CACA,4BAAA,CACA,qBAAA,CAED,oBACC,4BAAA,CAKD,2FAGC,oCAAA,CACA,4CAAA,CACA,gBAAA,CACA,UAAA,CAED,yEAGC,UAAA,CAED,0KAMC,qBAAA,CACA,4CAAA,CACA,gBAAA,CACA,4BAAA,CAED,2FAIC,4BAAA,CAED,wFAGC,6CAAA,CACA,4CAAA,CACA,gBAAA,CACA,4BAAA,CAED,sEAGC,4BAAA,CAKD,iGAGC,6CAAA,CACA,4CAAA,CACA,6BAAA,CACA,eAAA,CAED,uGAGC,+BAAA,CAED,qFAGC,yBAAA,CACA,kCAAA,CACA,UAAA,CAED,2FAGC,UAAA,CAED,oGAGC,UAAA,CAKD,2BACC,wDAAA,CAED,kDAEC,wDAAA,CAED,0BACC,wDAAA,CAED,6BACC,wDAAA,CAED,uDAEC,wDAAA,CAED,sBACC,YAAA,CAMD,mBACC,sEAAA,CACA,UAAA,CAED,kBACC,oBAAA,CACA,WAAA,CACA,wEAAA,CACA,UAAA,CACA,iBAAA,CAID,SACC,WAAA,CAEA,oCACC,yBAAA,CACA,uBAAA,CAGD,sBACC,eAAA,CACA,kBAAA,CAEA,wCACC,WAAA,CACA,qCAAA,CACA,kBAAA,CACA,mBAAA,CACA,oBAAA,CAGD,6EAEC,WAAA,CACA,8CAAA,CACA,4BAAA,CACA,0WACC,4BAAA,CAGF,uCACC,gBAAA,CAOF,yBACC,SAAA,CAIA,4EAEC,iBAAA,CAGD,yCACC,+BAAA,CACA,aAAA,CACA,WAAA,CACA,yBAAA,CAEA,iHACC,mDAAA,CACA,4BAAA,CAKH,mCACC,uCAAA,CACA,eAAA,CAGD,+BACC,eAAA,CACA,4CAAA,CACA,0CAAA,CAGD,gRAKC,8BAAA,CACA,kBAAA,CACA,kCAAA,CAIA,iCACC,0BAAA,CAKH,mBACC,6CAAA,CACA,uCAAA,CACA,kDAAA,CAID,iBACI,2BAAA,CAKJ,oCAEC,kBAAA\",\"sourcesContent\":[\"/**\\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\\n * SPDX-License-Identifier: AGPL-3.0-or-later\\n */\\n/* Component containers\\n----------------------------------*/\\n.ui-widget-content {\\n\\tborder: 1px solid var(--color-border);\\n\\tbackground: var(--color-main-background) none;\\n\\tcolor: var(--color-main-text);\\n}\\n.ui-widget-content a {\\n\\tcolor: var(--color-main-text);\\n}\\n.ui-widget-header {\\n\\tborder: none;\\n\\tcolor: var(--color-main-text);\\n\\tbackground-image: none;\\n}\\n.ui-widget-header a {\\n\\tcolor: var(--color-main-text);\\n}\\n\\n/* Interaction states\\n----------------------------------*/\\n.ui-state-default,\\n.ui-widget-content .ui-state-default,\\n.ui-widget-header .ui-state-default {\\n\\tborder: 1px solid var(--color-border);\\n\\tbackground: var(--color-main-background) none;\\n\\tfont-weight: bold;\\n\\tcolor: #555;\\n}\\n.ui-state-default a,\\n.ui-state-default a:link,\\n.ui-state-default a:visited {\\n\\tcolor: #555;\\n}\\n.ui-state-hover,\\n.ui-widget-content .ui-state-hover,\\n.ui-widget-header .ui-state-hover,\\n.ui-state-focus,\\n.ui-widget-content .ui-state-focus,\\n.ui-widget-header .ui-state-focus {\\n\\tborder: 1px solid #ddd;\\n\\tbackground: var(--color-main-background) none;\\n\\tfont-weight: bold;\\n\\tcolor: var(--color-main-text);\\n}\\n.ui-state-hover a,\\n.ui-state-hover a:hover,\\n.ui-state-hover a:link,\\n.ui-state-hover a:visited {\\n\\tcolor: var(--color-main-text);\\n}\\n.ui-state-active,\\n.ui-widget-content .ui-state-active,\\n.ui-widget-header .ui-state-active {\\n\\tborder: 1px solid var(--color-primary-element);\\n\\tbackground: var(--color-main-background) none;\\n\\tfont-weight: bold;\\n\\tcolor: var(--color-main-text);\\n}\\n.ui-state-active a,\\n.ui-state-active a:link,\\n.ui-state-active a:visited {\\n\\tcolor: var(--color-main-text);\\n}\\n\\n/* Interaction Cues\\n----------------------------------*/\\n.ui-state-highlight,\\n.ui-widget-content .ui-state-highlight,\\n.ui-widget-header .ui-state-highlight {\\n\\tborder: 1px solid var(--color-main-background);\\n\\tbackground: var(--color-main-background) none;\\n\\tcolor: var(--color-text-light);\\n\\tfont-weight: 600;\\n}\\n.ui-state-highlight a,\\n.ui-widget-content .ui-state-highlight a,\\n.ui-widget-header .ui-state-highlight a {\\n\\tcolor: var(--color-text-lighter);\\n}\\n.ui-state-error,\\n.ui-widget-content .ui-state-error,\\n.ui-widget-header .ui-state-error {\\n\\tborder: var(--color-error);\\n\\tbackground: var(--color-error) none;\\n\\tcolor: #ffffff;\\n}\\n.ui-state-error a,\\n.ui-widget-content .ui-state-error a,\\n.ui-widget-header .ui-state-error a {\\n\\tcolor: #ffffff;\\n}\\n.ui-state-error-text,\\n.ui-widget-content .ui-state-error-text,\\n.ui-widget-header .ui-state-error-text {\\n\\tcolor: #ffffff;\\n}\\n\\n/* Icons\\n----------------------------------*/\\n.ui-state-default .ui-icon {\\n\\tbackground-image: url('images/ui-icons_1d2d44_256x240.png');\\n}\\n.ui-state-hover .ui-icon,\\n.ui-state-focus .ui-icon {\\n\\tbackground-image: url('images/ui-icons_1d2d44_256x240.png');\\n}\\n.ui-state-active .ui-icon {\\n\\tbackground-image: url('images/ui-icons_1d2d44_256x240.png');\\n}\\n.ui-state-highlight .ui-icon {\\n\\tbackground-image: url('images/ui-icons_ffffff_256x240.png');\\n}\\n.ui-state-error .ui-icon,\\n.ui-state-error-text .ui-icon {\\n\\tbackground-image: url('images/ui-icons_ffd27a_256x240.png');\\n}\\n.ui-icon.ui-icon-none {\\n\\tdisplay: none;\\n}\\n\\n/* Misc visuals\\n----------------------------------*/\\n/* Overlays */\\n.ui-widget-overlay {\\n\\tbackground: #666666 url('images/ui-bg_diagonals-thick_20_666666_40x40.png') 50% 50% repeat;\\n\\topacity: .5;\\n}\\n.ui-widget-shadow {\\n\\tmargin: -5px 0 0 -5px;\\n\\tpadding: 5px;\\n\\tbackground: #000000 url('images/ui-bg_flat_10_000000_40x100.png') 50% 50% repeat-x;\\n\\topacity: .2;\\n\\tborder-radius: 5px;\\n}\\n\\n/* Tabs customizations */\\n.ui-tabs {\\n\\tborder: none;\\n\\n\\t.ui-tabs-nav.ui-corner-all {\\n\\t\\tborder-end-start-radius: 0;\\n\\t\\tborder-end-end-radius: 0;\\n\\t}\\n\\n\\t.ui-tabs-nav {\\n\\t\\tbackground: none;\\n\\t\\tmargin-bottom: 15px;\\n\\n\\t\\t.ui-state-default {\\n\\t\\t\\tborder: none;\\n\\t\\t\\tborder-bottom: 1px solid transparent;\\n\\t\\t\\tfont-weight: normal;\\n\\t\\t\\tmargin: 0 !important;\\n\\t\\t\\tpadding: 0 !important;\\n\\t\\t}\\n\\n\\t\\t.ui-state-hover,\\n\\t\\t.ui-state-active {\\n\\t\\t\\tborder: none;\\n\\t\\t\\tborder-bottom: 1px solid var(--color-main-text);\\n\\t\\t\\tcolor: var(--color-main-text);\\n\\t\\t\\ta, a:link, a:hover, a:visited {\\n\\t\\t\\t\\tcolor: var(--color-main-text);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\t.ui-state-active {\\n\\t\\t\\tfont-weight: bold;\\n\\t\\t}\\n\\t}\\n}\\n\\n/* Select menus */\\n.ui-autocomplete {\\n\\t&.ui-menu {\\n\\t\\tpadding: 0;\\n\\n\\t\\t/* scrolling starts from three items,\\n\\t\\t * so hide overflow and scrollbars for a clean layout */\\n\\t\\t&.item-count-1,\\n\\t\\t&.item-count-2 {\\n\\t\\t\\toverflow-y: hidden;\\n\\t\\t}\\n\\n\\t\\t.ui-menu-item a {\\n\\t\\t\\tcolor: var(--color-text-lighter);\\n\\t\\t\\tdisplay: block;\\n\\t\\t\\tpadding: 4px;\\n\\t\\t\\tpadding-inline-start: 14px;\\n\\n\\t\\t\\t&.ui-state-focus, &.ui-state-active {\\n\\t\\t\\t\\tbox-shadow: inset 4px 0 var(--color-primary-element);\\n\\t\\t\\t\\tcolor: var(--color-main-text);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&.ui-widget-content {\\n\\t\\tbackground: var(--color-main-background);\\n\\t\\tborder-top: none;\\n\\t}\\n\\n\\t&.ui-corner-all {\\n\\t\\tborder-radius: 0;\\n\\t\\tborder-end-start-radius: var(--border-radius);\\n\\t\\tborder-end-end-radius: var(--border-radius);\\n\\t}\\n\\n\\t.ui-state-hover, .ui-widget-content .ui-state-hover,\\n\\t.ui-widget-header .ui-state-hover,\\n\\t.ui-state-focus,\\n\\t.ui-widget-content .ui-state-focus,\\n\\t.ui-widget-header .ui-state-focus {\\n\\t\\tborder: 1px solid transparent;\\n\\t\\tbackground: inherit;\\n\\t\\tcolor: var(--color-primary-element);\\n\\t}\\n\\n\\t.ui-menu-item {\\n\\t\\ta {\\n\\t\\t\\tborder-radius: 0 !important;\\n\\t\\t}\\n\\t}\\n}\\n\\n.ui-button.primary {\\n\\tbackground-color: var(--color-primary-element);\\n\\tcolor: var(--color-primary-element-text);\\n\\tborder: 1px solid var(--color-primary-element-text);\\n}\\n\\n// fix ui-buttons on hover\\n.ui-button:hover {\\n font-weight:bold !important;\\n}\\n\\n\\n/* DRAGGABLE */\\n.ui-draggable-handle,\\n.ui-selectable {\\n\\ttouch-action: pan-y;\\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, `.oc-dialog{background:var(--color-main-background);color:var(--color-text-light);border-radius:var(--border-radius-large);box-shadow:0 0 30px var(--color-box-shadow);padding:24px;z-index:100001;font-size:100%;box-sizing:border-box;min-width:200px;top:50%;inset-inline-start:50%;transform:translate(-50%, -50%);max-height:calc(100% - 20px);max-width:calc(100% - 20px);overflow:auto}.oc-dialog-title{background:var(--color-main-background)}.oc-dialog-buttonrow{position:relative;display:flex;background:rgba(0,0,0,0);right:0;bottom:0;padding:0;padding-top:10px;box-sizing:border-box;width:100%;background-image:linear-gradient(rgba(255, 255, 255, 0), var(--color-main-background))}.oc-dialog-buttonrow.twobuttons{justify-content:space-between}.oc-dialog-buttonrow.onebutton,.oc-dialog-buttonrow.twobuttons.aside{justify-content:flex-end}.oc-dialog-buttonrow button{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;height:44px;min-width:44px}.oc-dialog-close{position:absolute;width:44px !important;height:44px !important;top:4px;right:4px;padding:25px;background:var(--icon-close-dark) no-repeat center;opacity:.5;border-radius:var(--border-radius-pill)}.oc-dialog-close:hover,.oc-dialog-close:focus,.oc-dialog-close:active{opacity:1}.oc-dialog-dim{background-color:#000;opacity:.2;z-index:100001;position:fixed;top:0;left:0;width:100%;height:100%}body.theme--dark .oc-dialog-dim{opacity:.8}.oc-dialog-content{width:100%;max-width:550px}.oc-dialog.password-confirmation .oc-dialog-content{width:auto}.oc-dialog.password-confirmation .oc-dialog-content input[type=password]{width:100%}.oc-dialog.password-confirmation .oc-dialog-content label{display:none}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/jquery/css/jquery.ocdialog.scss\"],\"names\":[],\"mappings\":\"AAIA,WACC,uCAAA,CACA,6BAAA,CACA,wCAAA,CACA,2CAAA,CACA,YAAA,CACA,cAAA,CACA,cAAA,CACA,qBAAA,CACA,eAAA,CACA,OAAA,CACA,sBAAA,CACA,+BAAA,CACA,4BAAA,CACA,2BAAA,CACA,aAAA,CAED,iBACC,uCAAA,CAED,qBACC,iBAAA,CACA,YAAA,CACA,wBAAA,CACA,OAAA,CACA,QAAA,CACA,SAAA,CACA,gBAAA,CACA,qBAAA,CACA,UAAA,CACA,sFAAA,CAEA,gCACO,6BAAA,CAGP,qEAEC,wBAAA,CAGD,4BACI,kBAAA,CACA,eAAA,CACH,sBAAA,CACA,WAAA,CACA,cAAA,CAIF,iBACC,iBAAA,CACA,qBAAA,CACA,sBAAA,CACA,OAAA,CACA,SAAA,CACA,YAAA,CACA,kDAAA,CACA,UAAA,CACA,uCAAA,CAEA,sEAGC,SAAA,CAIF,eACC,qBAAA,CACA,UAAA,CACA,cAAA,CACA,cAAA,CACA,KAAA,CACA,MAAA,CACA,UAAA,CACA,WAAA,CAGD,gCACC,UAAA,CAGD,mBACC,UAAA,CACA,eAAA,CAIA,oDACC,UAAA,CAEA,yEACC,UAAA,CAED,0DACC,YAAA\",\"sourcesContent\":[\"/**\\n * SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors\\n * SPDX-License-Identifier: AGPL-3.0-or-later\\n */\\n.oc-dialog {\\n\\tbackground: var(--color-main-background);\\n\\tcolor: var(--color-text-light);\\n\\tborder-radius: var(--border-radius-large);\\n\\tbox-shadow: 0 0 30px var(--color-box-shadow);\\n\\tpadding: 24px;\\n\\tz-index: 100001;\\n\\tfont-size: 100%;\\n\\tbox-sizing: border-box;\\n\\tmin-width: 200px;\\n\\ttop: 50%;\\n\\tinset-inline-start: 50%;\\n\\ttransform: translate(-50%, -50%);\\n\\tmax-height: calc(100% - 20px);\\n\\tmax-width: calc(100% - 20px);\\n\\toverflow: auto;\\n}\\n.oc-dialog-title {\\n\\tbackground: var(--color-main-background);\\n}\\n.oc-dialog-buttonrow {\\n\\tposition: relative;\\n\\tdisplay: flex;\\n\\tbackground: transparent;\\n\\tright: 0;\\n\\tbottom: 0;\\n\\tpadding: 0;\\n\\tpadding-top: 10px;\\n\\tbox-sizing: border-box;\\n\\twidth: 100%;\\n\\tbackground-image: linear-gradient(rgba(255, 255, 255, 0.0), var(--color-main-background));\\n\\n\\t&.twobuttons {\\n justify-content: space-between;\\n }\\n\\n\\t&.onebutton,\\n\\t&.twobuttons.aside {\\n\\t\\tjustify-content: flex-end;\\n\\t}\\n\\n\\tbutton {\\n\\t white-space: nowrap;\\n\\t overflow: hidden;\\n\\t\\ttext-overflow: ellipsis;\\n\\t\\theight: 44px;\\n\\t\\tmin-width: 44px;\\n\\t}\\n}\\n\\n.oc-dialog-close {\\n\\tposition: absolute;\\n\\twidth: 44px !important;\\n\\theight: 44px !important;\\n\\ttop: 4px;\\n\\tright: 4px;\\n\\tpadding: 25px;\\n\\tbackground: var(--icon-close-dark) no-repeat center;\\n\\topacity: .5;\\n\\tborder-radius: var(--border-radius-pill);\\n\\n\\t&:hover,\\n\\t&:focus,\\n\\t&:active {\\n\\t\\topacity: 1;\\n\\t}\\n}\\n\\n.oc-dialog-dim {\\n\\tbackground-color: #000;\\n\\topacity: .2;\\n\\tz-index: 100001;\\n\\tposition: fixed;\\n\\ttop: 0;\\n\\tleft: 0;\\n\\twidth: 100%;\\n\\theight: 100%;\\n}\\n\\nbody.theme--dark .oc-dialog-dim {\\n\\topacity: .8;\\n}\\n\\n.oc-dialog-content {\\n\\twidth: 100%;\\n\\tmax-width: 550px;\\n}\\n\\n.oc-dialog.password-confirmation {\\n\\t.oc-dialog-content {\\n\\t\\twidth: auto;\\n\\n\\t\\tinput[type=password] {\\n\\t\\t\\twidth: 100%;\\n\\t\\t}\\n\\t\\tlabel {\\n\\t\\t\\tdisplay: none;\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"select2.png\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_1___ = new URL(\"select2-spinner.gif\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_2___ = new URL(\"select2x2.png\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_1___);\nvar ___CSS_LOADER_URL_REPLACEMENT_2___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_2___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*\nVersion: @@ver@@ Timestamp: @@timestamp@@\n*/\n.select2-container {\n margin: 0;\n position: relative;\n display: inline-block;\n /* inline-block for ie7 */\n zoom: 1;\n *display: inline;\n vertical-align: middle;\n}\n\n.select2-container,\n.select2-drop,\n.select2-search,\n.select2-search input {\n /*\n Force border-box so that % widths fit the parent\n container without overlap because of margin/padding.\n More Info : http://www.quirksmode.org/css/box.html\n */\n -webkit-box-sizing: border-box; /* webkit */\n -moz-box-sizing: border-box; /* firefox */\n box-sizing: border-box; /* css3 */\n}\n\n.select2-container .select2-choice {\n display: block;\n height: 26px;\n padding: 0 0 0 8px;\n overflow: hidden;\n position: relative;\n\n border: 1px solid #aaa;\n white-space: nowrap;\n line-height: 26px;\n color: #444;\n text-decoration: none;\n\n border-radius: 4px;\n\n background-clip: padding-box;\n\n -webkit-touch-callout: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n\n background-color: #fff;\n background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #eee), color-stop(0.5, #fff));\n background-image: -webkit-linear-gradient(center bottom, #eee 0%, #fff 50%);\n background-image: -moz-linear-gradient(center bottom, #eee 0%, #fff 50%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#ffffff', endColorstr = '#eeeeee', GradientType = 0);\n background-image: linear-gradient(to top, #eee 0%, #fff 50%);\n}\n\nhtml[dir=\"rtl\"] .select2-container .select2-choice {\n padding: 0 8px 0 0;\n}\n\n.select2-container.select2-drop-above .select2-choice {\n border-bottom-color: #aaa;\n\n border-radius: 0 0 4px 4px;\n\n background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #eee), color-stop(0.9, #fff));\n background-image: -webkit-linear-gradient(center bottom, #eee 0%, #fff 90%);\n background-image: -moz-linear-gradient(center bottom, #eee 0%, #fff 90%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#eeeeee', GradientType=0);\n background-image: linear-gradient(to bottom, #eee 0%, #fff 90%);\n}\n\n.select2-container.select2-allowclear .select2-choice .select2-chosen {\n margin-right: 42px;\n}\n\n.select2-container .select2-choice > .select2-chosen {\n margin-right: 26px;\n display: block;\n overflow: hidden;\n\n white-space: nowrap;\n\n text-overflow: ellipsis;\n float: none;\n width: auto;\n}\n\nhtml[dir=\"rtl\"] .select2-container .select2-choice > .select2-chosen {\n margin-left: 26px;\n margin-right: 0;\n}\n\n.select2-container .select2-choice abbr {\n display: none;\n width: 12px;\n height: 12px;\n position: absolute;\n right: 24px;\n top: 8px;\n\n font-size: 1px;\n text-decoration: none;\n\n border: 0;\n background: url(${___CSS_LOADER_URL_REPLACEMENT_0___}) right top no-repeat;\n cursor: pointer;\n outline: 0;\n}\n\n.select2-container.select2-allowclear .select2-choice abbr {\n display: inline-block;\n}\n\n.select2-container .select2-choice abbr:hover {\n background-position: right -11px;\n cursor: pointer;\n}\n\n.select2-drop-mask {\n border: 0;\n margin: 0;\n padding: 0;\n position: fixed;\n left: 0;\n top: 0;\n min-height: 100%;\n min-width: 100%;\n height: auto;\n width: auto;\n opacity: 0;\n z-index: 9998;\n /* styles required for IE to work */\n background-color: #fff;\n filter: alpha(opacity=0);\n}\n\n.select2-drop {\n width: 100%;\n margin-top: -1px;\n position: absolute;\n z-index: 9999;\n top: 100%;\n\n background: #fff;\n color: #000;\n border: 1px solid #aaa;\n border-top: 0;\n\n border-radius: 0 0 4px 4px;\n\n -webkit-box-shadow: 0 4px 5px rgba(0, 0, 0, .15);\n box-shadow: 0 4px 5px rgba(0, 0, 0, .15);\n}\n\n.select2-drop.select2-drop-above {\n margin-top: 1px;\n border-top: 1px solid #aaa;\n border-bottom: 0;\n\n border-radius: 4px 4px 0 0;\n\n -webkit-box-shadow: 0 -4px 5px rgba(0, 0, 0, .15);\n box-shadow: 0 -4px 5px rgba(0, 0, 0, .15);\n}\n\n.select2-drop-active {\n border: 1px solid #5897fb;\n border-top: none;\n}\n\n.select2-drop.select2-drop-above.select2-drop-active {\n border-top: 1px solid #5897fb;\n}\n\n.select2-drop-auto-width {\n border-top: 1px solid #aaa;\n width: auto;\n}\n\n.select2-drop-auto-width .select2-search {\n padding-top: 4px;\n}\n\n.select2-container .select2-choice .select2-arrow {\n display: inline-block;\n width: 18px;\n height: 100%;\n position: absolute;\n right: 0;\n top: 0;\n\n border-left: 1px solid #aaa;\n border-radius: 0 4px 4px 0;\n\n background-clip: padding-box;\n\n background: #ccc;\n background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #ccc), color-stop(0.6, #eee));\n background-image: -webkit-linear-gradient(center bottom, #ccc 0%, #eee 60%);\n background-image: -moz-linear-gradient(center bottom, #ccc 0%, #eee 60%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#eeeeee', endColorstr = '#cccccc', GradientType = 0);\n background-image: linear-gradient(to top, #ccc 0%, #eee 60%);\n}\n\nhtml[dir=\"rtl\"] .select2-container .select2-choice .select2-arrow {\n left: 0;\n right: auto;\n\n border-left: none;\n border-right: 1px solid #aaa;\n border-radius: 4px 0 0 4px;\n}\n\n.select2-container .select2-choice .select2-arrow b {\n display: block;\n width: 100%;\n height: 100%;\n background: url(${___CSS_LOADER_URL_REPLACEMENT_0___}) no-repeat 0 1px;\n}\n\nhtml[dir=\"rtl\"] .select2-container .select2-choice .select2-arrow b {\n background-position: 2px 1px;\n}\n\n.select2-search {\n display: inline-block;\n width: 100%;\n min-height: 26px;\n margin: 0;\n padding-left: 4px;\n padding-right: 4px;\n\n position: relative;\n z-index: 10000;\n\n white-space: nowrap;\n}\n\n.select2-search input {\n width: 100%;\n height: auto !important;\n min-height: 26px;\n padding: 4px 20px 4px 5px;\n margin: 0;\n\n outline: 0;\n font-family: sans-serif;\n font-size: 1em;\n\n border: 1px solid #aaa;\n border-radius: 0;\n\n -webkit-box-shadow: none;\n box-shadow: none;\n\n background: #fff url(${___CSS_LOADER_URL_REPLACEMENT_0___}) no-repeat 100% -22px;\n background: url(${___CSS_LOADER_URL_REPLACEMENT_0___}) no-repeat 100% -22px, -webkit-gradient(linear, left bottom, left top, color-stop(0.85, #fff), color-stop(0.99, #eee));\n background: url(${___CSS_LOADER_URL_REPLACEMENT_0___}) no-repeat 100% -22px, -webkit-linear-gradient(center bottom, #fff 85%, #eee 99%);\n background: url(${___CSS_LOADER_URL_REPLACEMENT_0___}) no-repeat 100% -22px, -moz-linear-gradient(center bottom, #fff 85%, #eee 99%);\n background: url(${___CSS_LOADER_URL_REPLACEMENT_0___}) no-repeat 100% -22px, linear-gradient(to bottom, #fff 85%, #eee 99%) 0 0;\n}\n\nhtml[dir=\"rtl\"] .select2-search input {\n padding: 4px 5px 4px 20px;\n\n background: #fff url(${___CSS_LOADER_URL_REPLACEMENT_0___}) no-repeat -37px -22px;\n background: url(${___CSS_LOADER_URL_REPLACEMENT_0___}) no-repeat -37px -22px, -webkit-gradient(linear, left bottom, left top, color-stop(0.85, #fff), color-stop(0.99, #eee));\n background: url(${___CSS_LOADER_URL_REPLACEMENT_0___}) no-repeat -37px -22px, -webkit-linear-gradient(center bottom, #fff 85%, #eee 99%);\n background: url(${___CSS_LOADER_URL_REPLACEMENT_0___}) no-repeat -37px -22px, -moz-linear-gradient(center bottom, #fff 85%, #eee 99%);\n background: url(${___CSS_LOADER_URL_REPLACEMENT_0___}) no-repeat -37px -22px, linear-gradient(to bottom, #fff 85%, #eee 99%) 0 0;\n}\n\n.select2-drop.select2-drop-above .select2-search input {\n margin-top: 4px;\n}\n\n.select2-search input.select2-active {\n background: #fff url(${___CSS_LOADER_URL_REPLACEMENT_1___}) no-repeat 100%;\n background: url(${___CSS_LOADER_URL_REPLACEMENT_1___}) no-repeat 100%, -webkit-gradient(linear, left bottom, left top, color-stop(0.85, #fff), color-stop(0.99, #eee));\n background: url(${___CSS_LOADER_URL_REPLACEMENT_1___}) no-repeat 100%, -webkit-linear-gradient(center bottom, #fff 85%, #eee 99%);\n background: url(${___CSS_LOADER_URL_REPLACEMENT_1___}) no-repeat 100%, -moz-linear-gradient(center bottom, #fff 85%, #eee 99%);\n background: url(${___CSS_LOADER_URL_REPLACEMENT_1___}) no-repeat 100%, linear-gradient(to bottom, #fff 85%, #eee 99%) 0 0;\n}\n\n.select2-container-active .select2-choice,\n.select2-container-active .select2-choices {\n border: 1px solid #5897fb;\n outline: none;\n\n -webkit-box-shadow: 0 0 5px rgba(0, 0, 0, .3);\n box-shadow: 0 0 5px rgba(0, 0, 0, .3);\n}\n\n.select2-dropdown-open .select2-choice {\n border-bottom-color: transparent;\n -webkit-box-shadow: 0 1px 0 #fff inset;\n box-shadow: 0 1px 0 #fff inset;\n\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n\n background-color: #eee;\n background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #fff), color-stop(0.5, #eee));\n background-image: -webkit-linear-gradient(center bottom, #fff 0%, #eee 50%);\n background-image: -moz-linear-gradient(center bottom, #fff 0%, #eee 50%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#ffffff', GradientType=0);\n background-image: linear-gradient(to top, #fff 0%, #eee 50%);\n}\n\n.select2-dropdown-open.select2-drop-above .select2-choice,\n.select2-dropdown-open.select2-drop-above .select2-choices {\n border: 1px solid #5897fb;\n border-top-color: transparent;\n\n background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #fff), color-stop(0.5, #eee));\n background-image: -webkit-linear-gradient(center top, #fff 0%, #eee 50%);\n background-image: -moz-linear-gradient(center top, #fff 0%, #eee 50%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#ffffff', GradientType=0);\n background-image: linear-gradient(to bottom, #fff 0%, #eee 50%);\n}\n\n.select2-dropdown-open .select2-choice .select2-arrow {\n background: transparent;\n border-left: none;\n filter: none;\n}\nhtml[dir=\"rtl\"] .select2-dropdown-open .select2-choice .select2-arrow {\n border-right: none;\n}\n\n.select2-dropdown-open .select2-choice .select2-arrow b {\n background-position: -18px 1px;\n}\n\nhtml[dir=\"rtl\"] .select2-dropdown-open .select2-choice .select2-arrow b {\n background-position: -16px 1px;\n}\n\n.select2-hidden-accessible {\n border: 0;\n clip: rect(0 0 0 0);\n height: 1px;\n margin: -1px;\n overflow: hidden;\n padding: 0;\n position: absolute;\n width: 1px;\n}\n\n/* results */\n.select2-results {\n max-height: 200px;\n padding: 0 0 0 4px;\n margin: 4px 4px 4px 0;\n position: relative;\n overflow-x: hidden;\n overflow-y: auto;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\n\nhtml[dir=\"rtl\"] .select2-results {\n padding: 0 4px 0 0;\n margin: 4px 0 4px 4px;\n}\n\n.select2-results ul.select2-result-sub {\n margin: 0;\n padding-left: 0;\n}\n\n.select2-results li {\n list-style: none;\n display: list-item;\n background-image: none;\n}\n\n.select2-results li.select2-result-with-children > .select2-result-label {\n font-weight: bold;\n}\n\n.select2-results .select2-result-label {\n padding: 3px 7px 4px;\n margin: 0;\n cursor: pointer;\n\n min-height: 1em;\n\n -webkit-touch-callout: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n\n.select2-results-dept-1 .select2-result-label { padding-left: 20px }\n.select2-results-dept-2 .select2-result-label { padding-left: 40px }\n.select2-results-dept-3 .select2-result-label { padding-left: 60px }\n.select2-results-dept-4 .select2-result-label { padding-left: 80px }\n.select2-results-dept-5 .select2-result-label { padding-left: 100px }\n.select2-results-dept-6 .select2-result-label { padding-left: 110px }\n.select2-results-dept-7 .select2-result-label { padding-left: 120px }\n\n.select2-results .select2-highlighted {\n background: #3875d7;\n color: #fff;\n}\n\n.select2-results li em {\n background: #feffde;\n font-style: normal;\n}\n\n.select2-results .select2-highlighted em {\n background: transparent;\n}\n\n.select2-results .select2-highlighted ul {\n background: #fff;\n color: #000;\n}\n\n.select2-results .select2-no-results,\n.select2-results .select2-searching,\n.select2-results .select2-ajax-error,\n.select2-results .select2-selection-limit {\n background: #f4f4f4;\n display: list-item;\n padding-left: 5px;\n}\n\n/*\ndisabled look for disabled choices in the results dropdown\n*/\n.select2-results .select2-disabled.select2-highlighted {\n color: #666;\n background: #f4f4f4;\n display: list-item;\n cursor: default;\n}\n.select2-results .select2-disabled {\n background: #f4f4f4;\n display: list-item;\n cursor: default;\n}\n\n.select2-results .select2-selected {\n display: none;\n}\n\n.select2-more-results.select2-active {\n background: #f4f4f4 url(${___CSS_LOADER_URL_REPLACEMENT_1___}) no-repeat 100%;\n}\n\n.select2-results .select2-ajax-error {\n background: rgba(255, 50, 50, .2);\n}\n\n.select2-more-results {\n background: #f4f4f4;\n display: list-item;\n}\n\n/* disabled styles */\n\n.select2-container.select2-container-disabled .select2-choice {\n background-color: #f4f4f4;\n background-image: none;\n border: 1px solid #ddd;\n cursor: default;\n}\n\n.select2-container.select2-container-disabled .select2-choice .select2-arrow {\n background-color: #f4f4f4;\n background-image: none;\n border-left: 0;\n}\n\n.select2-container.select2-container-disabled .select2-choice abbr {\n display: none;\n}\n\n\n/* multiselect */\n\n.select2-container-multi .select2-choices {\n height: auto !important;\n height: 1%;\n margin: 0;\n padding: 0 5px 0 0;\n position: relative;\n\n border: 1px solid #aaa;\n cursor: text;\n overflow: hidden;\n\n background-color: #fff;\n background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(1%, #eee), color-stop(15%, #fff));\n background-image: -webkit-linear-gradient(top, #eee 1%, #fff 15%);\n background-image: -moz-linear-gradient(top, #eee 1%, #fff 15%);\n background-image: linear-gradient(to bottom, #eee 1%, #fff 15%);\n}\n\nhtml[dir=\"rtl\"] .select2-container-multi .select2-choices {\n padding: 0 0 0 5px;\n}\n\n.select2-locked {\n padding: 3px 5px 3px 5px !important;\n}\n\n.select2-container-multi .select2-choices {\n min-height: 26px;\n}\n\n.select2-container-multi.select2-container-active .select2-choices {\n border: 1px solid #5897fb;\n outline: none;\n\n -webkit-box-shadow: 0 0 5px rgba(0, 0, 0, .3);\n box-shadow: 0 0 5px rgba(0, 0, 0, .3);\n}\n.select2-container-multi .select2-choices li {\n float: left;\n list-style: none;\n}\nhtml[dir=\"rtl\"] .select2-container-multi .select2-choices li\n{\n float: right;\n}\n.select2-container-multi .select2-choices .select2-search-field {\n margin: 0;\n padding: 0;\n white-space: nowrap;\n}\n\n.select2-container-multi .select2-choices .select2-search-field input {\n padding: 5px;\n margin: 1px 0;\n\n font-family: sans-serif;\n font-size: 100%;\n color: #666;\n outline: 0;\n border: 0;\n -webkit-box-shadow: none;\n box-shadow: none;\n background: transparent !important;\n}\n\n.select2-container-multi .select2-choices .select2-search-field input.select2-active {\n background: #fff url(${___CSS_LOADER_URL_REPLACEMENT_1___}) no-repeat 100% !important;\n}\n\n.select2-default {\n color: #999 !important;\n}\n\n.select2-container-multi .select2-choices .select2-search-choice {\n padding: 3px 5px 3px 18px;\n margin: 3px 0 3px 5px;\n position: relative;\n\n line-height: 13px;\n color: #333;\n cursor: default;\n border: 1px solid #aaaaaa;\n\n border-radius: 3px;\n\n -webkit-box-shadow: 0 0 2px #fff inset, 0 1px 0 rgba(0, 0, 0, 0.05);\n box-shadow: 0 0 2px #fff inset, 0 1px 0 rgba(0, 0, 0, 0.05);\n\n background-clip: padding-box;\n\n -webkit-touch-callout: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n\n background-color: #e4e4e4;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#f4f4f4', GradientType=0);\n background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(20%, #f4f4f4), color-stop(50%, #f0f0f0), color-stop(52%, #e8e8e8), color-stop(100%, #eee));\n background-image: -webkit-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eee 100%);\n background-image: -moz-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eee 100%);\n background-image: linear-gradient(to bottom, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eee 100%);\n}\nhtml[dir=\"rtl\"] .select2-container-multi .select2-choices .select2-search-choice\n{\n margin: 3px 5px 3px 0;\n padding: 3px 18px 3px 5px;\n}\n.select2-container-multi .select2-choices .select2-search-choice .select2-chosen {\n cursor: default;\n}\n.select2-container-multi .select2-choices .select2-search-choice-focus {\n background: #d4d4d4;\n}\n\n.select2-search-choice-close {\n display: block;\n width: 12px;\n height: 13px;\n position: absolute;\n right: 3px;\n top: 4px;\n\n font-size: 1px;\n outline: none;\n background: url(${___CSS_LOADER_URL_REPLACEMENT_0___}) right top no-repeat;\n}\nhtml[dir=\"rtl\"] .select2-search-choice-close {\n right: auto;\n left: 3px;\n}\n\n.select2-container-multi .select2-search-choice-close {\n left: 3px;\n}\n\nhtml[dir=\"rtl\"] .select2-container-multi .select2-search-choice-close {\n left: auto;\n right: 2px;\n}\n\n.select2-container-multi .select2-choices .select2-search-choice .select2-search-choice-close:hover {\n background-position: right -11px;\n}\n.select2-container-multi .select2-choices .select2-search-choice-focus .select2-search-choice-close {\n background-position: right -11px;\n}\n\n/* disabled styles */\n.select2-container-multi.select2-container-disabled .select2-choices {\n background-color: #f4f4f4;\n background-image: none;\n border: 1px solid #ddd;\n cursor: default;\n}\n\n.select2-container-multi.select2-container-disabled .select2-choices .select2-search-choice {\n padding: 3px 5px 3px 5px;\n border: 1px solid #ddd;\n background-image: none;\n background-color: #f4f4f4;\n}\n\n.select2-container-multi.select2-container-disabled .select2-choices .select2-search-choice .select2-search-choice-close { display: none;\n background: none;\n}\n/* end multiselect */\n\n\n.select2-result-selectable .select2-match,\n.select2-result-unselectable .select2-match {\n text-decoration: underline;\n}\n\n.select2-offscreen, .select2-offscreen:focus {\n clip: rect(0 0 0 0) !important;\n width: 1px !important;\n height: 1px !important;\n border: 0 !important;\n margin: 0 !important;\n padding: 0 !important;\n overflow: hidden !important;\n position: absolute !important;\n outline: 0 !important;\n left: 0px !important;\n top: 0px !important;\n}\n\n.select2-display-none {\n display: none;\n}\n\n.select2-measure-scrollbar {\n position: absolute;\n top: -10000px;\n left: -10000px;\n width: 100px;\n height: 100px;\n overflow: scroll;\n}\n\n/* Retina-ize icons */\n\n@media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (min-resolution: 2dppx) {\n .select2-search input,\n .select2-search-choice-close,\n .select2-container .select2-choice abbr,\n .select2-container .select2-choice .select2-arrow b {\n background-image: url(${___CSS_LOADER_URL_REPLACEMENT_2___}) !important;\n background-repeat: no-repeat !important;\n background-size: 60px 40px !important;\n }\n\n .select2-search input {\n background-position: 100% -21px !important;\n }\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/select2/select2.css\"],\"names\":[],\"mappings\":\"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\",\"sourcesContent\":[\"/*\\nVersion: @@ver@@ Timestamp: @@timestamp@@\\n*/\\n.select2-container {\\n margin: 0;\\n position: relative;\\n display: inline-block;\\n /* inline-block for ie7 */\\n zoom: 1;\\n *display: inline;\\n vertical-align: middle;\\n}\\n\\n.select2-container,\\n.select2-drop,\\n.select2-search,\\n.select2-search input {\\n /*\\n Force border-box so that % widths fit the parent\\n container without overlap because of margin/padding.\\n More Info : http://www.quirksmode.org/css/box.html\\n */\\n -webkit-box-sizing: border-box; /* webkit */\\n -moz-box-sizing: border-box; /* firefox */\\n box-sizing: border-box; /* css3 */\\n}\\n\\n.select2-container .select2-choice {\\n display: block;\\n height: 26px;\\n padding: 0 0 0 8px;\\n overflow: hidden;\\n position: relative;\\n\\n border: 1px solid #aaa;\\n white-space: nowrap;\\n line-height: 26px;\\n color: #444;\\n text-decoration: none;\\n\\n border-radius: 4px;\\n\\n background-clip: padding-box;\\n\\n -webkit-touch-callout: none;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -ms-user-select: none;\\n user-select: none;\\n\\n background-color: #fff;\\n background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #eee), color-stop(0.5, #fff));\\n background-image: -webkit-linear-gradient(center bottom, #eee 0%, #fff 50%);\\n background-image: -moz-linear-gradient(center bottom, #eee 0%, #fff 50%);\\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#ffffff', endColorstr = '#eeeeee', GradientType = 0);\\n background-image: linear-gradient(to top, #eee 0%, #fff 50%);\\n}\\n\\nhtml[dir=\\\"rtl\\\"] .select2-container .select2-choice {\\n padding: 0 8px 0 0;\\n}\\n\\n.select2-container.select2-drop-above .select2-choice {\\n border-bottom-color: #aaa;\\n\\n border-radius: 0 0 4px 4px;\\n\\n background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #eee), color-stop(0.9, #fff));\\n background-image: -webkit-linear-gradient(center bottom, #eee 0%, #fff 90%);\\n background-image: -moz-linear-gradient(center bottom, #eee 0%, #fff 90%);\\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#eeeeee', GradientType=0);\\n background-image: linear-gradient(to bottom, #eee 0%, #fff 90%);\\n}\\n\\n.select2-container.select2-allowclear .select2-choice .select2-chosen {\\n margin-right: 42px;\\n}\\n\\n.select2-container .select2-choice > .select2-chosen {\\n margin-right: 26px;\\n display: block;\\n overflow: hidden;\\n\\n white-space: nowrap;\\n\\n text-overflow: ellipsis;\\n float: none;\\n width: auto;\\n}\\n\\nhtml[dir=\\\"rtl\\\"] .select2-container .select2-choice > .select2-chosen {\\n margin-left: 26px;\\n margin-right: 0;\\n}\\n\\n.select2-container .select2-choice abbr {\\n display: none;\\n width: 12px;\\n height: 12px;\\n position: absolute;\\n right: 24px;\\n top: 8px;\\n\\n font-size: 1px;\\n text-decoration: none;\\n\\n border: 0;\\n background: url('select2.png') right top no-repeat;\\n cursor: pointer;\\n outline: 0;\\n}\\n\\n.select2-container.select2-allowclear .select2-choice abbr {\\n display: inline-block;\\n}\\n\\n.select2-container .select2-choice abbr:hover {\\n background-position: right -11px;\\n cursor: pointer;\\n}\\n\\n.select2-drop-mask {\\n border: 0;\\n margin: 0;\\n padding: 0;\\n position: fixed;\\n left: 0;\\n top: 0;\\n min-height: 100%;\\n min-width: 100%;\\n height: auto;\\n width: auto;\\n opacity: 0;\\n z-index: 9998;\\n /* styles required for IE to work */\\n background-color: #fff;\\n filter: alpha(opacity=0);\\n}\\n\\n.select2-drop {\\n width: 100%;\\n margin-top: -1px;\\n position: absolute;\\n z-index: 9999;\\n top: 100%;\\n\\n background: #fff;\\n color: #000;\\n border: 1px solid #aaa;\\n border-top: 0;\\n\\n border-radius: 0 0 4px 4px;\\n\\n -webkit-box-shadow: 0 4px 5px rgba(0, 0, 0, .15);\\n box-shadow: 0 4px 5px rgba(0, 0, 0, .15);\\n}\\n\\n.select2-drop.select2-drop-above {\\n margin-top: 1px;\\n border-top: 1px solid #aaa;\\n border-bottom: 0;\\n\\n border-radius: 4px 4px 0 0;\\n\\n -webkit-box-shadow: 0 -4px 5px rgba(0, 0, 0, .15);\\n box-shadow: 0 -4px 5px rgba(0, 0, 0, .15);\\n}\\n\\n.select2-drop-active {\\n border: 1px solid #5897fb;\\n border-top: none;\\n}\\n\\n.select2-drop.select2-drop-above.select2-drop-active {\\n border-top: 1px solid #5897fb;\\n}\\n\\n.select2-drop-auto-width {\\n border-top: 1px solid #aaa;\\n width: auto;\\n}\\n\\n.select2-drop-auto-width .select2-search {\\n padding-top: 4px;\\n}\\n\\n.select2-container .select2-choice .select2-arrow {\\n display: inline-block;\\n width: 18px;\\n height: 100%;\\n position: absolute;\\n right: 0;\\n top: 0;\\n\\n border-left: 1px solid #aaa;\\n border-radius: 0 4px 4px 0;\\n\\n background-clip: padding-box;\\n\\n background: #ccc;\\n background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #ccc), color-stop(0.6, #eee));\\n background-image: -webkit-linear-gradient(center bottom, #ccc 0%, #eee 60%);\\n background-image: -moz-linear-gradient(center bottom, #ccc 0%, #eee 60%);\\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#eeeeee', endColorstr = '#cccccc', GradientType = 0);\\n background-image: linear-gradient(to top, #ccc 0%, #eee 60%);\\n}\\n\\nhtml[dir=\\\"rtl\\\"] .select2-container .select2-choice .select2-arrow {\\n left: 0;\\n right: auto;\\n\\n border-left: none;\\n border-right: 1px solid #aaa;\\n border-radius: 4px 0 0 4px;\\n}\\n\\n.select2-container .select2-choice .select2-arrow b {\\n display: block;\\n width: 100%;\\n height: 100%;\\n background: url('select2.png') no-repeat 0 1px;\\n}\\n\\nhtml[dir=\\\"rtl\\\"] .select2-container .select2-choice .select2-arrow b {\\n background-position: 2px 1px;\\n}\\n\\n.select2-search {\\n display: inline-block;\\n width: 100%;\\n min-height: 26px;\\n margin: 0;\\n padding-left: 4px;\\n padding-right: 4px;\\n\\n position: relative;\\n z-index: 10000;\\n\\n white-space: nowrap;\\n}\\n\\n.select2-search input {\\n width: 100%;\\n height: auto !important;\\n min-height: 26px;\\n padding: 4px 20px 4px 5px;\\n margin: 0;\\n\\n outline: 0;\\n font-family: sans-serif;\\n font-size: 1em;\\n\\n border: 1px solid #aaa;\\n border-radius: 0;\\n\\n -webkit-box-shadow: none;\\n box-shadow: none;\\n\\n background: #fff url('select2.png') no-repeat 100% -22px;\\n background: url('select2.png') no-repeat 100% -22px, -webkit-gradient(linear, left bottom, left top, color-stop(0.85, #fff), color-stop(0.99, #eee));\\n background: url('select2.png') no-repeat 100% -22px, -webkit-linear-gradient(center bottom, #fff 85%, #eee 99%);\\n background: url('select2.png') no-repeat 100% -22px, -moz-linear-gradient(center bottom, #fff 85%, #eee 99%);\\n background: url('select2.png') no-repeat 100% -22px, linear-gradient(to bottom, #fff 85%, #eee 99%) 0 0;\\n}\\n\\nhtml[dir=\\\"rtl\\\"] .select2-search input {\\n padding: 4px 5px 4px 20px;\\n\\n background: #fff url('select2.png') no-repeat -37px -22px;\\n background: url('select2.png') no-repeat -37px -22px, -webkit-gradient(linear, left bottom, left top, color-stop(0.85, #fff), color-stop(0.99, #eee));\\n background: url('select2.png') no-repeat -37px -22px, -webkit-linear-gradient(center bottom, #fff 85%, #eee 99%);\\n background: url('select2.png') no-repeat -37px -22px, -moz-linear-gradient(center bottom, #fff 85%, #eee 99%);\\n background: url('select2.png') no-repeat -37px -22px, linear-gradient(to bottom, #fff 85%, #eee 99%) 0 0;\\n}\\n\\n.select2-drop.select2-drop-above .select2-search input {\\n margin-top: 4px;\\n}\\n\\n.select2-search input.select2-active {\\n background: #fff url('select2-spinner.gif') no-repeat 100%;\\n background: url('select2-spinner.gif') no-repeat 100%, -webkit-gradient(linear, left bottom, left top, color-stop(0.85, #fff), color-stop(0.99, #eee));\\n background: url('select2-spinner.gif') no-repeat 100%, -webkit-linear-gradient(center bottom, #fff 85%, #eee 99%);\\n background: url('select2-spinner.gif') no-repeat 100%, -moz-linear-gradient(center bottom, #fff 85%, #eee 99%);\\n background: url('select2-spinner.gif') no-repeat 100%, linear-gradient(to bottom, #fff 85%, #eee 99%) 0 0;\\n}\\n\\n.select2-container-active .select2-choice,\\n.select2-container-active .select2-choices {\\n border: 1px solid #5897fb;\\n outline: none;\\n\\n -webkit-box-shadow: 0 0 5px rgba(0, 0, 0, .3);\\n box-shadow: 0 0 5px rgba(0, 0, 0, .3);\\n}\\n\\n.select2-dropdown-open .select2-choice {\\n border-bottom-color: transparent;\\n -webkit-box-shadow: 0 1px 0 #fff inset;\\n box-shadow: 0 1px 0 #fff inset;\\n\\n border-bottom-left-radius: 0;\\n border-bottom-right-radius: 0;\\n\\n background-color: #eee;\\n background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #fff), color-stop(0.5, #eee));\\n background-image: -webkit-linear-gradient(center bottom, #fff 0%, #eee 50%);\\n background-image: -moz-linear-gradient(center bottom, #fff 0%, #eee 50%);\\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#ffffff', GradientType=0);\\n background-image: linear-gradient(to top, #fff 0%, #eee 50%);\\n}\\n\\n.select2-dropdown-open.select2-drop-above .select2-choice,\\n.select2-dropdown-open.select2-drop-above .select2-choices {\\n border: 1px solid #5897fb;\\n border-top-color: transparent;\\n\\n background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #fff), color-stop(0.5, #eee));\\n background-image: -webkit-linear-gradient(center top, #fff 0%, #eee 50%);\\n background-image: -moz-linear-gradient(center top, #fff 0%, #eee 50%);\\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#ffffff', GradientType=0);\\n background-image: linear-gradient(to bottom, #fff 0%, #eee 50%);\\n}\\n\\n.select2-dropdown-open .select2-choice .select2-arrow {\\n background: transparent;\\n border-left: none;\\n filter: none;\\n}\\nhtml[dir=\\\"rtl\\\"] .select2-dropdown-open .select2-choice .select2-arrow {\\n border-right: none;\\n}\\n\\n.select2-dropdown-open .select2-choice .select2-arrow b {\\n background-position: -18px 1px;\\n}\\n\\nhtml[dir=\\\"rtl\\\"] .select2-dropdown-open .select2-choice .select2-arrow b {\\n background-position: -16px 1px;\\n}\\n\\n.select2-hidden-accessible {\\n border: 0;\\n clip: rect(0 0 0 0);\\n height: 1px;\\n margin: -1px;\\n overflow: hidden;\\n padding: 0;\\n position: absolute;\\n width: 1px;\\n}\\n\\n/* results */\\n.select2-results {\\n max-height: 200px;\\n padding: 0 0 0 4px;\\n margin: 4px 4px 4px 0;\\n position: relative;\\n overflow-x: hidden;\\n overflow-y: auto;\\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\\n}\\n\\nhtml[dir=\\\"rtl\\\"] .select2-results {\\n padding: 0 4px 0 0;\\n margin: 4px 0 4px 4px;\\n}\\n\\n.select2-results ul.select2-result-sub {\\n margin: 0;\\n padding-left: 0;\\n}\\n\\n.select2-results li {\\n list-style: none;\\n display: list-item;\\n background-image: none;\\n}\\n\\n.select2-results li.select2-result-with-children > .select2-result-label {\\n font-weight: bold;\\n}\\n\\n.select2-results .select2-result-label {\\n padding: 3px 7px 4px;\\n margin: 0;\\n cursor: pointer;\\n\\n min-height: 1em;\\n\\n -webkit-touch-callout: none;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -ms-user-select: none;\\n user-select: none;\\n}\\n\\n.select2-results-dept-1 .select2-result-label { padding-left: 20px }\\n.select2-results-dept-2 .select2-result-label { padding-left: 40px }\\n.select2-results-dept-3 .select2-result-label { padding-left: 60px }\\n.select2-results-dept-4 .select2-result-label { padding-left: 80px }\\n.select2-results-dept-5 .select2-result-label { padding-left: 100px }\\n.select2-results-dept-6 .select2-result-label { padding-left: 110px }\\n.select2-results-dept-7 .select2-result-label { padding-left: 120px }\\n\\n.select2-results .select2-highlighted {\\n background: #3875d7;\\n color: #fff;\\n}\\n\\n.select2-results li em {\\n background: #feffde;\\n font-style: normal;\\n}\\n\\n.select2-results .select2-highlighted em {\\n background: transparent;\\n}\\n\\n.select2-results .select2-highlighted ul {\\n background: #fff;\\n color: #000;\\n}\\n\\n.select2-results .select2-no-results,\\n.select2-results .select2-searching,\\n.select2-results .select2-ajax-error,\\n.select2-results .select2-selection-limit {\\n background: #f4f4f4;\\n display: list-item;\\n padding-left: 5px;\\n}\\n\\n/*\\ndisabled look for disabled choices in the results dropdown\\n*/\\n.select2-results .select2-disabled.select2-highlighted {\\n color: #666;\\n background: #f4f4f4;\\n display: list-item;\\n cursor: default;\\n}\\n.select2-results .select2-disabled {\\n background: #f4f4f4;\\n display: list-item;\\n cursor: default;\\n}\\n\\n.select2-results .select2-selected {\\n display: none;\\n}\\n\\n.select2-more-results.select2-active {\\n background: #f4f4f4 url('select2-spinner.gif') no-repeat 100%;\\n}\\n\\n.select2-results .select2-ajax-error {\\n background: rgba(255, 50, 50, .2);\\n}\\n\\n.select2-more-results {\\n background: #f4f4f4;\\n display: list-item;\\n}\\n\\n/* disabled styles */\\n\\n.select2-container.select2-container-disabled .select2-choice {\\n background-color: #f4f4f4;\\n background-image: none;\\n border: 1px solid #ddd;\\n cursor: default;\\n}\\n\\n.select2-container.select2-container-disabled .select2-choice .select2-arrow {\\n background-color: #f4f4f4;\\n background-image: none;\\n border-left: 0;\\n}\\n\\n.select2-container.select2-container-disabled .select2-choice abbr {\\n display: none;\\n}\\n\\n\\n/* multiselect */\\n\\n.select2-container-multi .select2-choices {\\n height: auto !important;\\n height: 1%;\\n margin: 0;\\n padding: 0 5px 0 0;\\n position: relative;\\n\\n border: 1px solid #aaa;\\n cursor: text;\\n overflow: hidden;\\n\\n background-color: #fff;\\n background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(1%, #eee), color-stop(15%, #fff));\\n background-image: -webkit-linear-gradient(top, #eee 1%, #fff 15%);\\n background-image: -moz-linear-gradient(top, #eee 1%, #fff 15%);\\n background-image: linear-gradient(to bottom, #eee 1%, #fff 15%);\\n}\\n\\nhtml[dir=\\\"rtl\\\"] .select2-container-multi .select2-choices {\\n padding: 0 0 0 5px;\\n}\\n\\n.select2-locked {\\n padding: 3px 5px 3px 5px !important;\\n}\\n\\n.select2-container-multi .select2-choices {\\n min-height: 26px;\\n}\\n\\n.select2-container-multi.select2-container-active .select2-choices {\\n border: 1px solid #5897fb;\\n outline: none;\\n\\n -webkit-box-shadow: 0 0 5px rgba(0, 0, 0, .3);\\n box-shadow: 0 0 5px rgba(0, 0, 0, .3);\\n}\\n.select2-container-multi .select2-choices li {\\n float: left;\\n list-style: none;\\n}\\nhtml[dir=\\\"rtl\\\"] .select2-container-multi .select2-choices li\\n{\\n float: right;\\n}\\n.select2-container-multi .select2-choices .select2-search-field {\\n margin: 0;\\n padding: 0;\\n white-space: nowrap;\\n}\\n\\n.select2-container-multi .select2-choices .select2-search-field input {\\n padding: 5px;\\n margin: 1px 0;\\n\\n font-family: sans-serif;\\n font-size: 100%;\\n color: #666;\\n outline: 0;\\n border: 0;\\n -webkit-box-shadow: none;\\n box-shadow: none;\\n background: transparent !important;\\n}\\n\\n.select2-container-multi .select2-choices .select2-search-field input.select2-active {\\n background: #fff url('select2-spinner.gif') no-repeat 100% !important;\\n}\\n\\n.select2-default {\\n color: #999 !important;\\n}\\n\\n.select2-container-multi .select2-choices .select2-search-choice {\\n padding: 3px 5px 3px 18px;\\n margin: 3px 0 3px 5px;\\n position: relative;\\n\\n line-height: 13px;\\n color: #333;\\n cursor: default;\\n border: 1px solid #aaaaaa;\\n\\n border-radius: 3px;\\n\\n -webkit-box-shadow: 0 0 2px #fff inset, 0 1px 0 rgba(0, 0, 0, 0.05);\\n box-shadow: 0 0 2px #fff inset, 0 1px 0 rgba(0, 0, 0, 0.05);\\n\\n background-clip: padding-box;\\n\\n -webkit-touch-callout: none;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -ms-user-select: none;\\n user-select: none;\\n\\n background-color: #e4e4e4;\\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#f4f4f4', GradientType=0);\\n background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(20%, #f4f4f4), color-stop(50%, #f0f0f0), color-stop(52%, #e8e8e8), color-stop(100%, #eee));\\n background-image: -webkit-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eee 100%);\\n background-image: -moz-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eee 100%);\\n background-image: linear-gradient(to bottom, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eee 100%);\\n}\\nhtml[dir=\\\"rtl\\\"] .select2-container-multi .select2-choices .select2-search-choice\\n{\\n margin: 3px 5px 3px 0;\\n padding: 3px 18px 3px 5px;\\n}\\n.select2-container-multi .select2-choices .select2-search-choice .select2-chosen {\\n cursor: default;\\n}\\n.select2-container-multi .select2-choices .select2-search-choice-focus {\\n background: #d4d4d4;\\n}\\n\\n.select2-search-choice-close {\\n display: block;\\n width: 12px;\\n height: 13px;\\n position: absolute;\\n right: 3px;\\n top: 4px;\\n\\n font-size: 1px;\\n outline: none;\\n background: url('select2.png') right top no-repeat;\\n}\\nhtml[dir=\\\"rtl\\\"] .select2-search-choice-close {\\n right: auto;\\n left: 3px;\\n}\\n\\n.select2-container-multi .select2-search-choice-close {\\n left: 3px;\\n}\\n\\nhtml[dir=\\\"rtl\\\"] .select2-container-multi .select2-search-choice-close {\\n left: auto;\\n right: 2px;\\n}\\n\\n.select2-container-multi .select2-choices .select2-search-choice .select2-search-choice-close:hover {\\n background-position: right -11px;\\n}\\n.select2-container-multi .select2-choices .select2-search-choice-focus .select2-search-choice-close {\\n background-position: right -11px;\\n}\\n\\n/* disabled styles */\\n.select2-container-multi.select2-container-disabled .select2-choices {\\n background-color: #f4f4f4;\\n background-image: none;\\n border: 1px solid #ddd;\\n cursor: default;\\n}\\n\\n.select2-container-multi.select2-container-disabled .select2-choices .select2-search-choice {\\n padding: 3px 5px 3px 5px;\\n border: 1px solid #ddd;\\n background-image: none;\\n background-color: #f4f4f4;\\n}\\n\\n.select2-container-multi.select2-container-disabled .select2-choices .select2-search-choice .select2-search-choice-close { display: none;\\n background: none;\\n}\\n/* end multiselect */\\n\\n\\n.select2-result-selectable .select2-match,\\n.select2-result-unselectable .select2-match {\\n text-decoration: underline;\\n}\\n\\n.select2-offscreen, .select2-offscreen:focus {\\n clip: rect(0 0 0 0) !important;\\n width: 1px !important;\\n height: 1px !important;\\n border: 0 !important;\\n margin: 0 !important;\\n padding: 0 !important;\\n overflow: hidden !important;\\n position: absolute !important;\\n outline: 0 !important;\\n left: 0px !important;\\n top: 0px !important;\\n}\\n\\n.select2-display-none {\\n display: none;\\n}\\n\\n.select2-measure-scrollbar {\\n position: absolute;\\n top: -10000px;\\n left: -10000px;\\n width: 100px;\\n height: 100px;\\n overflow: scroll;\\n}\\n\\n/* Retina-ize icons */\\n\\n@media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (min-resolution: 2dppx) {\\n .select2-search input,\\n .select2-search-choice-close,\\n .select2-container .select2-choice abbr,\\n .select2-container .select2-choice .select2-arrow b {\\n background-image: url('select2x2.png') !important;\\n background-repeat: no-repeat !important;\\n background-size: 60px 40px !important;\\n }\\n\\n .select2-search input {\\n background-position: 100% -21px !important;\\n }\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../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 * Strengthify - show the weakness of a password (uses zxcvbn for this)\n * https://github.com/MorrisJobke/strengthify\n * Version: 0.5.9\n * License: The MIT License (MIT)\n * Copyright (c) 2013-2020 Morris Jobke \n */\n\n.strengthify-wrapper {\n position: relative;\n}\n\n.strengthify-wrapper > * {\n\t-ms-filter:\"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)\";\n\tfilter: alpha(opacity=0);\n\topacity: 0;\n\t-webkit-transition:all .5s ease-in-out;\n\t-moz-transition:all .5s ease-in-out;\n\ttransition:all .5s ease-in-out;\n}\n\n.strengthify-bg, .strengthify-container, .strengthify-separator {\n\theight: 3px;\n}\n\n.strengthify-bg, .strengthify-container {\n\tdisplay: block;\n\tposition: absolute;\n\twidth: 100%;\n}\n\n.strengthify-bg {\n\tbackground-color: #BBB;\n}\n\n.strengthify-separator {\n\tdisplay: inline-block;\n\tposition: absolute;\n\tbackground-color: #FFF;\n\twidth: 1px;\n\tz-index: 10;\n}\n\n.password-bad {\n\tbackground-color: #C33;\n}\n.password-medium {\n\tbackground-color: #F80;\n}\n.password-good {\n\tbackground-color: #3C3;\n}\n\ndiv[data-strengthifyMessage] {\n padding: 3px 8px;\n}\n\n.strengthify-tiles{\n\tfloat: right;\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/strengthify/strengthify.css\"],\"names\":[],\"mappings\":\"AAAA;;;;;;EAME;;AAEF;IACI,kBAAkB;AACtB;;AAEA;CACC,+DAA+D;CAC/D,wBAAwB;CACxB,UAAU;CACV,sCAAsC;CACtC,mCAAmC;CACnC,8BAA8B;AAC/B;;AAEA;CACC,WAAW;AACZ;;AAEA;CACC,cAAc;CACd,kBAAkB;CAClB,WAAW;AACZ;;AAEA;CACC,sBAAsB;AACvB;;AAEA;CACC,qBAAqB;CACrB,kBAAkB;CAClB,sBAAsB;CACtB,UAAU;CACV,WAAW;AACZ;;AAEA;CACC,sBAAsB;AACvB;AACA;CACC,sBAAsB;AACvB;AACA;CACC,sBAAsB;AACvB;;AAEA;IACI,gBAAgB;AACpB;;AAEA;CACC,YAAY;AACb\",\"sourcesContent\":[\"/**\\n * Strengthify - show the weakness of a password (uses zxcvbn for this)\\n * https://github.com/MorrisJobke/strengthify\\n * Version: 0.5.9\\n * License: The MIT License (MIT)\\n * Copyright (c) 2013-2020 Morris Jobke \\n */\\n\\n.strengthify-wrapper {\\n position: relative;\\n}\\n\\n.strengthify-wrapper > * {\\n\\t-ms-filter:\\\"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)\\\";\\n\\tfilter: alpha(opacity=0);\\n\\topacity: 0;\\n\\t-webkit-transition:all .5s ease-in-out;\\n\\t-moz-transition:all .5s ease-in-out;\\n\\ttransition:all .5s ease-in-out;\\n}\\n\\n.strengthify-bg, .strengthify-container, .strengthify-separator {\\n\\theight: 3px;\\n}\\n\\n.strengthify-bg, .strengthify-container {\\n\\tdisplay: block;\\n\\tposition: absolute;\\n\\twidth: 100%;\\n}\\n\\n.strengthify-bg {\\n\\tbackground-color: #BBB;\\n}\\n\\n.strengthify-separator {\\n\\tdisplay: inline-block;\\n\\tposition: absolute;\\n\\tbackground-color: #FFF;\\n\\twidth: 1px;\\n\\tz-index: 10;\\n}\\n\\n.password-bad {\\n\\tbackground-color: #C33;\\n}\\n.password-medium {\\n\\tbackground-color: #F80;\\n}\\n.password-good {\\n\\tbackground-color: #3C3;\\n}\\n\\ndiv[data-strengthifyMessage] {\\n padding: 3px 8px;\\n}\\n\\n.strengthify-tiles{\\n\\tfloat: right;\\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, `.account-menu-entry__icon[data-v-2e0a74a6]{height:16px;width:16px;margin:calc((var(--default-clickable-area) - 16px)/2);filter:var(--background-invert-if-dark)}.account-menu-entry__icon--active[data-v-2e0a74a6]{filter:var(--primary-invert-if-dark)}.account-menu-entry[data-v-2e0a74a6] .list-item-content__main{width:fit-content}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/AccountMenu/AccountMenuEntry.vue\"],\"names\":[],\"mappings\":\"AAEC,2CACC,WAAA,CACA,UAAA,CACA,qDAAA,CACA,uCAAA,CAEA,mDACC,oCAAA,CAIF,8DACC,iBAAA\",\"sourcesContent\":[\"\\n.account-menu-entry {\\n\\t&__icon {\\n\\t\\theight: 16px;\\n\\t\\twidth: 16px;\\n\\t\\tmargin: calc((var(--default-clickable-area) - 16px) / 2); // 16px icon size\\n\\t\\tfilter: var(--background-invert-if-dark);\\n\\n\\t\\t&--active {\\n\\t\\t\\tfilter: var(--primary-invert-if-dark);\\n\\t\\t}\\n\\t}\\n\\n\\t:deep(.list-item-content__main) {\\n\\t\\twidth: fit-content;\\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-menu[data-v-7661a89b]{--app-menu-entry-growth: calc(var(--default-grid-baseline) * 4);display:flex;flex:1 1;width:0}.app-menu__list[data-v-7661a89b]{display:flex;flex-wrap:nowrap;margin-inline:calc(var(--app-menu-entry-growth)/2)}.app-menu__overflow[data-v-7661a89b]{margin-block:auto}.app-menu__overflow[data-v-7661a89b] .button-vue--vue-tertiary{opacity:.7;margin:3px;filter:var(--background-image-invert-if-bright)}.app-menu__overflow[data-v-7661a89b] .button-vue--vue-tertiary:not([aria-expanded=true]){color:var(--color-background-plain-text)}.app-menu__overflow[data-v-7661a89b] .button-vue--vue-tertiary:not([aria-expanded=true]):hover{opacity:1;background-color:rgba(0,0,0,0) !important}.app-menu__overflow[data-v-7661a89b] .button-vue--vue-tertiary:focus-visible{opacity:1;outline:none !important}.app-menu__overflow-entry[data-v-7661a89b] .action-link__icon{filter:var(--background-invert-if-bright) !important}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/AppMenu.vue\"],\"names\":[],\"mappings\":\"AACA,2BAEC,+DAAA,CACA,YAAA,CACA,QAAA,CACA,OAAA,CAEA,iCACC,YAAA,CACA,gBAAA,CACA,kDAAA,CAGD,qCACC,iBAAA,CAGA,+DACC,UAAA,CACA,UAAA,CACA,+CAAA,CAGA,yFACC,wCAAA,CAEA,+FACC,SAAA,CACA,yCAAA,CAIF,6EACC,SAAA,CACA,uBAAA,CAMF,8DAEC,oDAAA\",\"sourcesContent\":[\"\\n.app-menu {\\n\\t// The size the currently focussed entry will grow to show the full name\\n\\t--app-menu-entry-growth: calc(var(--default-grid-baseline) * 4);\\n\\tdisplay: flex;\\n\\tflex: 1 1;\\n\\twidth: 0;\\n\\n\\t&__list {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-wrap: nowrap;\\n\\t\\tmargin-inline: calc(var(--app-menu-entry-growth) / 2);\\n\\t}\\n\\n\\t&__overflow {\\n\\t\\tmargin-block: auto;\\n\\n\\t\\t// Adjust the overflow NcActions styles as they are directly rendered on the background\\n\\t\\t:deep(.button-vue--vue-tertiary) {\\n\\t\\t\\topacity: .7;\\n\\t\\t\\tmargin: 3px;\\n\\t\\t\\tfilter: var(--background-image-invert-if-bright);\\n\\n\\t\\t\\t/* Remove all background and align text color if not expanded */\\n\\t\\t\\t&:not([aria-expanded=\\\"true\\\"]) {\\n\\t\\t\\t\\tcolor: var(--color-background-plain-text);\\n\\n\\t\\t\\t\\t&:hover {\\n\\t\\t\\t\\t\\topacity: 1;\\n\\t\\t\\t\\t\\tbackground-color: transparent !important;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t&:focus-visible {\\n\\t\\t\\t\\topacity: 1;\\n\\t\\t\\t\\toutline: none !important;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&__overflow-entry {\\n\\t\\t:deep(.action-link__icon) {\\n\\t\\t\\t// Icons are bright so invert them if bright color theme == bright background is used\\n\\t\\t\\tfilter: var(--background-invert-if-bright) !important;\\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-menu-entry[data-v-1c485052]{--app-menu-entry-font-size: 12px;width:var(--header-height);height:var(--header-height);position:relative}.app-menu-entry__link[data-v-1c485052]{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--color-background-plain-text);width:calc(100% - 4px);height:calc(100% - 4px);margin:2px}.app-menu-entry__label[data-v-1c485052]{opacity:0;position:absolute;font-size:var(--app-menu-entry-font-size);color:var(--color-background-plain-text);text-align:center;bottom:0;inset-inline-start:50%;top:50%;display:block;transform:translateX(-50%);max-width:100%;text-overflow:ellipsis;overflow:hidden;letter-spacing:-0.5px}.app-menu-entry__icon[data-v-1c485052]{font-size:var(--app-menu-entry-font-size)}.app-menu-entry--active .app-menu-entry__label[data-v-1c485052]{font-weight:bolder}.app-menu-entry--active[data-v-1c485052]::before{content:\" \";position:absolute;pointer-events:none;border-bottom-color:var(--color-main-background);transform:translateX(-50%);width:10px;height:5px;border-radius:3px;background-color:var(--color-background-plain-text);inset-inline-start:50%;bottom:8px;display:block;transition:all var(--animation-quick) ease-in-out;opacity:1}.app-menu-entry__icon[data-v-1c485052],.app-menu-entry__label[data-v-1c485052]{transition:all var(--animation-quick) ease-in-out}.app-menu-entry:hover .app-menu-entry__label[data-v-1c485052],.app-menu-entry:focus-within .app-menu-entry__label[data-v-1c485052]{font-weight:bold}.app-menu-entry--truncated:hover .app-menu-entry__label[data-v-1c485052],.app-menu-entry--truncated:focus-within .app-menu-entry__label[data-v-1c485052]{max-width:calc(var(--header-height) + var(--app-menu-entry-growth))}.app-menu-entry--truncated:hover+.app-menu-entry .app-menu-entry__label[data-v-1c485052],.app-menu-entry--truncated:focus-within+.app-menu-entry .app-menu-entry__label[data-v-1c485052]{font-weight:normal;max-width:calc(var(--header-height) - var(--app-menu-entry-growth))}.app-menu-entry:has(+.app-menu-entry--truncated:hover) .app-menu-entry__label[data-v-1c485052],.app-menu-entry:has(+.app-menu-entry--truncated:focus-within) .app-menu-entry__label[data-v-1c485052]{font-weight:normal;max-width:calc(var(--header-height) - var(--app-menu-entry-growth))}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/AppMenuEntry.vue\"],\"names\":[],\"mappings\":\"AACA,iCACC,gCAAA,CACA,0BAAA,CACA,2BAAA,CACA,iBAAA,CAEA,uCACC,iBAAA,CACA,YAAA,CACA,qBAAA,CACA,kBAAA,CACA,sBAAA,CAEA,wCAAA,CAEA,sBAAA,CACA,uBAAA,CACA,UAAA,CAGD,wCACC,SAAA,CACA,iBAAA,CACA,yCAAA,CAEA,wCAAA,CACA,iBAAA,CACA,QAAA,CACA,sBAAA,CACA,OAAA,CACA,aAAA,CACA,0BAAA,CACA,cAAA,CACA,sBAAA,CACA,eAAA,CACA,qBAAA,CAGD,uCACC,yCAAA,CAKA,gEACC,kBAAA,CAID,iDACC,WAAA,CACA,iBAAA,CACA,mBAAA,CACA,gDAAA,CACA,0BAAA,CACA,UAAA,CACA,UAAA,CACA,iBAAA,CACA,mDAAA,CACA,sBAAA,CACA,UAAA,CACA,aAAA,CACA,iDAAA,CACA,SAAA,CAIF,+EAEC,iDAAA,CAID,mIAEC,gBAAA,CAOA,yJACC,mEAAA,CAKA,yLACC,kBAAA,CACA,mEAAA,CAQF,qMACC,kBAAA,CACA,mEAAA\",\"sourcesContent\":[\"\\n.app-menu-entry {\\n\\t--app-menu-entry-font-size: 12px;\\n\\twidth: var(--header-height);\\n\\theight: var(--header-height);\\n\\tposition: relative;\\n\\n\\t&__link {\\n\\t\\tposition: relative;\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\talign-items: center;\\n\\t\\tjustify-content: center;\\n\\t\\t// Set color as this is shown directly on the background\\n\\t\\tcolor: var(--color-background-plain-text);\\n\\t\\t// Make space for focus-visible outline\\n\\t\\twidth: calc(100% - 4px);\\n\\t\\theight: calc(100% - 4px);\\n\\t\\tmargin: 2px;\\n\\t}\\n\\n\\t&__label {\\n\\t\\topacity: 0;\\n\\t\\tposition: absolute;\\n\\t\\tfont-size: var(--app-menu-entry-font-size);\\n\\t\\t// this is shown directly on the background\\n\\t\\tcolor: var(--color-background-plain-text);\\n\\t\\ttext-align: center;\\n\\t\\tbottom: 0;\\n\\t\\tinset-inline-start: 50%;\\n\\t\\ttop: 50%;\\n\\t\\tdisplay: block;\\n\\t\\ttransform: translateX(-50%);\\n\\t\\tmax-width: 100%;\\n\\t\\ttext-overflow: ellipsis;\\n\\t\\toverflow: hidden;\\n\\t\\tletter-spacing: -0.5px;\\n\\t}\\n\\n\\t&__icon {\\n\\t\\tfont-size: var(--app-menu-entry-font-size);\\n\\t}\\n\\n\\t&--active {\\n\\t\\t// When hover or focus, show the label and make it bolder than the other entries\\n\\t\\t.app-menu-entry__label {\\n\\t\\t\\tfont-weight: bolder;\\n\\t\\t}\\n\\n\\t\\t// When active show a line below the entry as an \\\"active\\\" indicator\\n\\t\\t&::before {\\n\\t\\t\\tcontent: \\\" \\\";\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\tpointer-events: none;\\n\\t\\t\\tborder-bottom-color: var(--color-main-background);\\n\\t\\t\\ttransform: translateX(-50%);\\n\\t\\t\\twidth: 10px;\\n\\t\\t\\theight: 5px;\\n\\t\\t\\tborder-radius: 3px;\\n\\t\\t\\tbackground-color: var(--color-background-plain-text);\\n\\t\\t\\tinset-inline-start: 50%;\\n\\t\\t\\tbottom: 8px;\\n\\t\\t\\tdisplay: block;\\n\\t\\t\\ttransition: all var(--animation-quick) ease-in-out;\\n\\t\\t\\topacity: 1;\\n\\t\\t}\\n\\t}\\n\\n\\t&__icon,\\n\\t&__label {\\n\\t\\ttransition: all var(--animation-quick) ease-in-out;\\n\\t}\\n\\n\\t// Make the hovered entry bold to see that it is hovered\\n\\t&:hover .app-menu-entry__label,\\n\\t&:focus-within .app-menu-entry__label {\\n\\t\\tfont-weight: bold;\\n\\t}\\n\\n\\t// Adjust the width when an entry is focussed\\n\\t// The focussed / hovered entry should grow, while both neighbors need to shrink\\n\\t&--truncated:hover,\\n\\t&--truncated:focus-within {\\n\\t\\t.app-menu-entry__label {\\n\\t\\t\\tmax-width: calc(var(--header-height) + var(--app-menu-entry-growth));\\n\\t\\t}\\n\\n\\t\\t// The next entry needs to shrink half the growth\\n\\t\\t+ .app-menu-entry {\\n\\t\\t\\t.app-menu-entry__label {\\n\\t\\t\\t\\tfont-weight: normal;\\n\\t\\t\\t\\tmax-width: calc(var(--header-height) - var(--app-menu-entry-growth));\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t// The previous entry needs to shrink half the growth\\n\\t&:has(+ .app-menu-entry--truncated:hover),\\n\\t&:has(+ .app-menu-entry--truncated:focus-within) {\\n\\t\\t.app-menu-entry__label {\\n\\t\\t\\tfont-weight: normal;\\n\\t\\t\\tmax-width: calc(var(--header-height) - var(--app-menu-entry-growth));\\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-menu-entry:hover .app-menu-entry__icon,.app-menu-entry:focus-within .app-menu-entry__icon,.app-menu__list:hover .app-menu-entry__icon,.app-menu__list:focus-within .app-menu-entry__icon{margin-block-end:1lh}.app-menu-entry:hover .app-menu-entry__label,.app-menu-entry:focus-within .app-menu-entry__label,.app-menu__list:hover .app-menu-entry__label,.app-menu__list:focus-within .app-menu-entry__label{opacity:1}.app-menu-entry:hover .app-menu-entry--active::before,.app-menu-entry:focus-within .app-menu-entry--active::before,.app-menu__list:hover .app-menu-entry--active::before,.app-menu__list:focus-within .app-menu-entry--active::before{opacity:0}.app-menu-entry:hover .app-menu-icon__unread,.app-menu-entry:focus-within .app-menu-icon__unread,.app-menu__list:hover .app-menu-icon__unread,.app-menu__list:focus-within .app-menu-icon__unread{opacity:0}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/AppMenuEntry.vue\"],\"names\":[],\"mappings\":\"AAOC,8LACC,oBAAA,CAID,kMACC,SAAA,CAID,sOACC,SAAA,CAGD,kMACC,SAAA\",\"sourcesContent\":[\"\\n// Showing the label\\n.app-menu-entry:hover,\\n.app-menu-entry:focus-within,\\n.app-menu__list:hover,\\n.app-menu__list:focus-within {\\n\\t// Move icon up so that the name does not overflow the icon\\n\\t.app-menu-entry__icon {\\n\\t\\tmargin-block-end: 1lh;\\n\\t}\\n\\n\\t// Make the label visible\\n\\t.app-menu-entry__label {\\n\\t\\topacity: 1;\\n\\t}\\n\\n\\t// Hide indicator when the text is shown\\n\\t.app-menu-entry--active::before {\\n\\t\\topacity: 0;\\n\\t}\\n\\n\\t.app-menu-icon__unread {\\n\\t\\topacity: 0;\\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-menu-icon[data-v-e7078f90]{box-sizing:border-box;position:relative;height:20px;width:20px}.app-menu-icon__icon[data-v-e7078f90]{transition:margin .1s ease-in-out;height:20px;width:20px;filter:var(--background-image-invert-if-bright)}.app-menu-icon__unread[data-v-e7078f90]{color:var(--color-error);position:absolute;inset-block-end:15px;inset-inline-end:-5px;transition:all .1s ease-in-out}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/AppMenuIcon.vue\"],\"names\":[],\"mappings\":\"AAIA,gCACC,qBAAA,CACA,iBAAA,CAEA,WAPW,CAQX,UARW,CAUX,sCACC,iCAAA,CACA,WAZU,CAaV,UAbU,CAcV,+CAAA,CAGD,wCACC,wBAAA,CACA,iBAAA,CAEA,oBAAA,CACA,qBAAA,CACA,8BAAA\",\"sourcesContent\":[\"\\n$icon-size: 20px;\\n$unread-indicator-size: 10px;\\n\\n.app-menu-icon {\\n\\tbox-sizing: border-box;\\n\\tposition: relative;\\n\\n\\theight: $icon-size;\\n\\twidth: $icon-size;\\n\\n\\t&__icon {\\n\\t\\ttransition: margin 0.1s ease-in-out;\\n\\t\\theight: $icon-size;\\n\\t\\twidth: $icon-size;\\n\\t\\tfilter: var(--background-image-invert-if-bright);\\n\\t}\\n\\n\\t&__unread {\\n\\t\\tcolor: var(--color-error);\\n\\t\\tposition: absolute;\\n\\t\\t// Align the dot to the top right corner of the icon\\n\\t\\tinset-block-end: calc($icon-size + ($unread-indicator-size / -2));\\n\\t\\tinset-inline-end: calc($unread-indicator-size / -2);\\n\\t\\ttransition: all 0.1s ease-in-out;\\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, `.contact[data-v-97ebdcaa]{display:flex;position:relative;align-items:center;padding:3px;padding-inline-start:10px}.contact__action__icon[data-v-97ebdcaa]{width:20px;height:20px;padding:12px;filter:var(--background-invert-if-dark)}.contact__avatar[data-v-97ebdcaa]{display:inherit}.contact__body[data-v-97ebdcaa]{flex-grow:1;padding-inline-start:10px;margin-inline-start:10px;min-width:0}.contact__body div[data-v-97ebdcaa]{position:relative;width:100%;overflow-x:hidden;text-overflow:ellipsis;margin:-1px 0}.contact__body div[data-v-97ebdcaa]:first-of-type{margin-top:0}.contact__body div[data-v-97ebdcaa]:last-of-type{margin-bottom:0}.contact__body__last-message[data-v-97ebdcaa],.contact__body__status-message[data-v-97ebdcaa],.contact__body__email-address[data-v-97ebdcaa]{color:var(--color-text-maxcontrast)}.contact__body[data-v-97ebdcaa]:focus-visible{box-shadow:0 0 0 4px var(--color-main-background) !important;outline:2px solid var(--color-main-text) !important}.contact .other-actions[data-v-97ebdcaa]{width:16px;height:16px;cursor:pointer}.contact .other-actions img[data-v-97ebdcaa]{filter:var(--background-invert-if-dark)}.contact button.other-actions[data-v-97ebdcaa]{width:44px}.contact button.other-actions[data-v-97ebdcaa]:focus{border-color:rgba(0,0,0,0);box-shadow:0 0 0 2px var(--color-main-text)}.contact button.other-actions[data-v-97ebdcaa]:focus-visible{border-radius:var(--border-radius-pill)}.contact .menu[data-v-97ebdcaa]{top:47px;margin-inline-end:13px}.contact .popovermenu[data-v-97ebdcaa]::after{inset-inline-end:2px}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/ContactsMenu/Contact.vue\"],\"names\":[],\"mappings\":\"AACA,0BACC,YAAA,CACA,iBAAA,CACA,kBAAA,CACA,WAAA,CACA,yBAAA,CAGC,wCACC,UAAA,CACA,WAAA,CACA,YAAA,CACA,uCAAA,CAIF,kCACC,eAAA,CAGD,gCACC,WAAA,CACA,yBAAA,CACA,wBAAA,CACA,WAAA,CAEA,oCACC,iBAAA,CACA,UAAA,CACA,iBAAA,CACA,sBAAA,CACA,aAAA,CAED,kDACC,YAAA,CAED,iDACC,eAAA,CAGD,6IACC,mCAAA,CAGD,8CACC,4DAAA,CACA,mDAAA,CAIF,yCACC,UAAA,CACA,WAAA,CACA,cAAA,CAEA,6CACC,uCAAA,CAIF,+CACC,UAAA,CAEA,qDACC,0BAAA,CACA,2CAAA,CAGD,6DACC,uCAAA,CAKF,gCACC,QAAA,CACA,sBAAA,CAGD,8CACC,oBAAA\",\"sourcesContent\":[\"\\n.contact {\\n\\tdisplay: flex;\\n\\tposition: relative;\\n\\talign-items: center;\\n\\tpadding: 3px;\\n\\tpadding-inline-start: 10px;\\n\\n\\t&__action {\\n\\t\\t&__icon {\\n\\t\\t\\twidth: 20px;\\n\\t\\t\\theight: 20px;\\n\\t\\t\\tpadding: 12px;\\n\\t\\t\\tfilter: var(--background-invert-if-dark);\\n\\t\\t}\\n\\t}\\n\\n\\t&__avatar {\\n\\t\\tdisplay: inherit;\\n\\t}\\n\\n\\t&__body {\\n\\t\\tflex-grow: 1;\\n\\t\\tpadding-inline-start: 10px;\\n\\t\\tmargin-inline-start: 10px;\\n\\t\\tmin-width: 0;\\n\\n\\t\\tdiv {\\n\\t\\t\\tposition: relative;\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\toverflow-x: hidden;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\tmargin: -1px 0;\\n\\t\\t}\\n\\t\\tdiv:first-of-type {\\n\\t\\t\\tmargin-top: 0;\\n\\t\\t}\\n\\t\\tdiv:last-of-type {\\n\\t\\t\\tmargin-bottom: 0;\\n\\t\\t}\\n\\n\\t\\t&__last-message, &__status-message, &__email-address {\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t}\\n\\n\\t\\t&:focus-visible {\\n\\t\\t\\tbox-shadow: 0 0 0 4px var(--color-main-background) !important;\\n\\t\\t\\toutline: 2px solid var(--color-main-text) !important;\\n\\t\\t}\\n\\t}\\n\\n\\t.other-actions {\\n\\t\\twidth: 16px;\\n\\t\\theight: 16px;\\n\\t\\tcursor: pointer;\\n\\n\\t\\timg {\\n\\t\\t\\tfilter: var(--background-invert-if-dark);\\n\\t\\t}\\n\\t}\\n\\n\\tbutton.other-actions {\\n\\t\\twidth: 44px;\\n\\n\\t\\t&:focus {\\n\\t\\t\\tborder-color: transparent;\\n\\t\\t\\tbox-shadow: 0 0 0 2px var(--color-main-text);\\n\\t\\t}\\n\\n\\t\\t&:focus-visible {\\n\\t\\t\\tborder-radius: var(--border-radius-pill);\\n\\t\\t}\\n\\t}\\n\\n\\t/* actions menu */\\n\\t.menu {\\n\\t\\ttop: 47px;\\n\\t\\tmargin-inline-end: 13px;\\n\\t}\\n\\n\\t.popovermenu::after {\\n\\t\\tinset-inline-end: 2px;\\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, `[data-v-a886d77a] #header-menu-user-menu{padding:0 !important}.account-menu[data-v-a886d77a] button{opacity:1 !important}.account-menu[data-v-a886d77a] button:focus-visible .account-menu__avatar{border:var(--border-width-input-focused) solid var(--color-background-plain-text)}.account-menu[data-v-a886d77a] .header-menu__content{width:fit-content !important}.account-menu__avatar[data-v-a886d77a]:hover{border:var(--border-width-input-focused) solid var(--color-background-plain-text)}.account-menu__list[data-v-a886d77a]{display:inline-flex;flex-direction:column;padding-block:var(--default-grid-baseline) 0;padding-inline:0 var(--default-grid-baseline)}.account-menu__list[data-v-a886d77a]> li{box-sizing:border-box;flex:0 1}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/views/AccountMenu.vue\"],\"names\":[],\"mappings\":\"AACA,yCACC,oBAAA,CAIA,sCAGC,oBAAA,CAKC,0EACC,iFAAA,CAMH,qDACC,4BAAA,CAIA,6CAEC,iFAAA,CAIF,qCACC,mBAAA,CACA,qBAAA,CACA,4CAAA,CACA,6CAAA,CAEA,yCACC,qBAAA,CAEA,QAAA\",\"sourcesContent\":[\"\\n:deep(#header-menu-user-menu) {\\n\\tpadding: 0 !important;\\n}\\n\\n.account-menu {\\n\\t:deep(button) {\\n\\t\\t// Normally header menus are slightly translucent when not active\\n\\t\\t// this is generally ok but for the avatar this is weird so fix the opacity\\n\\t\\topacity: 1 !important;\\n\\n\\t\\t// The avatar is just the \\\"icon\\\" of the button\\n\\t\\t// So we add the focus-visible manually\\n\\t\\t&:focus-visible {\\n\\t\\t\\t.account-menu__avatar {\\n\\t\\t\\t\\tborder: var(--border-width-input-focused) solid var(--color-background-plain-text);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t// Ensure we do not wast space, as the header menu sets a default width of 350px\\n\\t:deep(.header-menu__content) {\\n\\t\\twidth: fit-content !important;\\n\\t}\\n\\n\\t&__avatar {\\n\\t\\t&:hover {\\n\\t\\t\\t// Add hover styles similar to the focus-visible style\\n\\t\\t\\tborder: var(--border-width-input-focused) solid var(--color-background-plain-text);\\n\\t\\t}\\n\\t}\\n\\n\\t&__list {\\n\\t\\tdisplay: inline-flex;\\n\\t\\tflex-direction: column;\\n\\t\\tpadding-block: var(--default-grid-baseline) 0;\\n\\t\\tpadding-inline: 0 var(--default-grid-baseline);\\n\\n\\t\\t> :deep(li) {\\n\\t\\t\\tbox-sizing: border-box;\\n\\t\\t\\t// basically \\\"fit-content\\\"\\n\\t\\t\\tflex: 0 1;\\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, `.contactsmenu[data-v-5cad18ba]{overflow-y:hidden}.contactsmenu__trigger-icon[data-v-5cad18ba]{color:var(--color-background-plain-text) !important}.contactsmenu__menu[data-v-5cad18ba]{display:flex;flex-direction:column;overflow:hidden;height:328px;max-height:inherit}.contactsmenu__menu label[for=contactsmenu__menu__search][data-v-5cad18ba]{font-weight:bold;font-size:19px;margin-inline-start:13px}.contactsmenu__menu__input-wrapper[data-v-5cad18ba]{padding:10px;z-index:2;top:0}.contactsmenu__menu__search[data-v-5cad18ba]{width:100%;height:34px;margin-top:0 !important}.contactsmenu__menu__content[data-v-5cad18ba]{overflow-y:auto;margin-top:10px;flex:1 1 auto}.contactsmenu__menu__content__footer[data-v-5cad18ba]{display:flex;flex-direction:column;align-items:center}.contactsmenu__menu a[data-v-5cad18ba]:focus-visible{box-shadow:inset 0 0 0 2px var(--color-main-text) !important}.contactsmenu[data-v-5cad18ba] .empty-content{margin:0 !important}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/views/ContactsMenu.vue\"],\"names\":[],\"mappings\":\"AACA,+BACC,iBAAA,CAEA,6CACC,mDAAA,CAGD,qCACC,YAAA,CACA,qBAAA,CACA,eAAA,CACA,YAAA,CACA,kBAAA,CAEA,2EACC,gBAAA,CACA,cAAA,CACA,wBAAA,CAGD,oDACC,YAAA,CACA,SAAA,CACA,KAAA,CAGD,6CACC,UAAA,CACA,WAAA,CACA,uBAAA,CAGD,8CACC,eAAA,CACA,eAAA,CACA,aAAA,CAEA,sDACC,YAAA,CACA,qBAAA,CACA,kBAAA,CAKD,qDACC,4DAAA,CAKH,8CACC,mBAAA\",\"sourcesContent\":[\"\\n.contactsmenu {\\n\\toverflow-y: hidden;\\n\\n\\t&__trigger-icon {\\n\\t\\tcolor: var(--color-background-plain-text) !important;\\n\\t}\\n\\n\\t&__menu {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\toverflow: hidden;\\n\\t\\theight: calc(50px * 6 + 2px + 26px);\\n\\t\\tmax-height: inherit;\\n\\n\\t\\tlabel[for=\\\"contactsmenu__menu__search\\\"] {\\n\\t\\t\\tfont-weight: bold;\\n\\t\\t\\tfont-size: 19px;\\n\\t\\t\\tmargin-inline-start: 13px;\\n\\t\\t}\\n\\n\\t\\t&__input-wrapper {\\n\\t\\t\\tpadding: 10px;\\n\\t\\t\\tz-index: 2;\\n\\t\\t\\ttop: 0;\\n\\t\\t}\\n\\n\\t\\t&__search {\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\theight: 34px;\\n\\t\\t\\tmargin-top: 0!important;\\n\\t\\t}\\n\\n\\t\\t&__content {\\n\\t\\t\\toverflow-y: auto;\\n\\t\\t\\tmargin-top: 10px;\\n\\t\\t\\tflex: 1 1 auto;\\n\\n\\t\\t\\t&__footer {\\n\\t\\t\\t\\tdisplay: flex;\\n\\t\\t\\t\\tflex-direction: column;\\n\\t\\t\\t\\talign-items: center;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\ta {\\n\\t\\t\\t&:focus-visible {\\n\\t\\t\\t\\tbox-shadow: inset 0 0 0 2px var(--color-main-text) !important; // override rule in core/css/headers.scss #header a:focus-visible\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t:deep(.empty-content) {\\n\\t\\tmargin: 0 !important;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","/*\n * vim: expandtab shiftwidth=4 softtabstop=4\n */\n\n/* global dav */\nvar dav = dav || {}\n\ndav._XML_CHAR_MAP = {\n '<': '<',\n '>': '>',\n '&': '&',\n '\"': '"',\n \"'\": '''\n};\n\ndav._escapeXml = function(s) {\n return s.replace(/[<>&\"']/g, function (ch) {\n return dav._XML_CHAR_MAP[ch];\n });\n};\n\ndav.Client = function(options) {\n var i;\n for(i in options) {\n this[i] = options[i];\n }\n\n};\n\ndav.Client.prototype = {\n\n baseUrl : null,\n\n userName : null,\n\n password : null,\n\n\n xmlNamespaces : {\n 'DAV:' : 'd'\n },\n\n /**\n * Generates a propFind request.\n *\n * @param {string} url Url to do the propfind request on\n * @param {Array} properties List of properties to retrieve.\n * @param {string} depth \"0\", \"1\" or \"infinity\"\n * @param {Object} [headers] headers\n * @return {Promise}\n */\n propFind : function(url, properties, depth, headers) {\n\n if(typeof depth === \"undefined\") {\n depth = '0';\n }\n\n // depth header must be a string, in case a number was passed in\n depth = '' + depth;\n\n headers = headers || {};\n\n headers['Depth'] = depth;\n headers['Content-Type'] = 'application/xml; charset=utf-8';\n\n var body =\n '\\n' +\n '\\n';\n\n for(var ii in properties) {\n if (!properties.hasOwnProperty(ii)) {\n continue;\n }\n\n var property = this.parseClarkNotation(properties[ii]);\n if (this.xmlNamespaces[property.namespace]) {\n body+=' <' + this.xmlNamespaces[property.namespace] + ':' + property.name + ' />\\n';\n } else {\n body+=' \\n';\n }\n\n }\n body+=' \\n';\n body+='';\n\n return this.request('PROPFIND', url, headers, body).then(\n function(result) {\n\n if (depth === '0') {\n return {\n status: result.status,\n body: result.body[0],\n xhr: result.xhr\n };\n } else {\n return {\n status: result.status,\n body: result.body,\n xhr: result.xhr\n };\n }\n\n }.bind(this)\n );\n\n },\n\n /**\n * Renders a \"d:set\" block for the given properties.\n *\n * @param {Object.} properties\n * @return {String} XML \"\" block\n */\n _renderPropSet: function(properties) {\n var body = ' \\n' +\n ' \\n';\n\n for(var ii in properties) {\n if (!properties.hasOwnProperty(ii)) {\n continue;\n }\n\n var property = this.parseClarkNotation(ii);\n var propName;\n var propValue = properties[ii];\n if (this.xmlNamespaces[property.namespace]) {\n propName = this.xmlNamespaces[property.namespace] + ':' + property.name;\n } else {\n propName = 'x:' + property.name + ' xmlns:x=\"' + property.namespace + '\"';\n }\n\n // FIXME: hard-coded for now until we allow properties to\n // specify whether to be escaped or not\n if (propName !== 'd:resourcetype') {\n propValue = dav._escapeXml(propValue);\n }\n body += ' <' + propName + '>' + propValue + '\\n';\n }\n body +=' \\n';\n body +=' \\n';\n return body;\n },\n\n /**\n * Generates a propPatch request.\n *\n * @param {string} url Url to do the proppatch request on\n * @param {Object.} properties List of properties to store.\n * @param {Object} [headers] headers\n * @return {Promise}\n */\n propPatch : function(url, properties, headers) {\n headers = headers || {};\n\n headers['Content-Type'] = 'application/xml; charset=utf-8';\n\n var body =\n '\\n' +\n '} [properties] list of properties to store.\n * @param {Object} [headers] headers\n * @return {Promise}\n */\n mkcol : function(url, properties, headers) {\n var body = '';\n headers = headers || {};\n headers['Content-Type'] = 'application/xml; charset=utf-8';\n\n if (properties) {\n body =\n '\\n' +\n ' 0) {\n var subNodes = [];\n // filter out text nodes\n for (var j = 0; j < propNode.childNodes.length; j++) {\n var node = propNode.childNodes[j];\n if (node.nodeType === 1) {\n subNodes.push(node);\n }\n }\n if (subNodes.length) {\n content = subNodes;\n }\n }\n\n return content || propNode.textContent || propNode.text || '';\n },\n\n /**\n * Parses a multi-status response body.\n *\n * @param {string} xmlBody\n * @param {Array}\n */\n parseMultiStatus : function(xmlBody) {\n\n var parser = new DOMParser();\n var doc = parser.parseFromString(xmlBody, \"application/xml\");\n\n var resolver = function(foo) {\n var ii;\n for(ii in this.xmlNamespaces) {\n if (this.xmlNamespaces[ii] === foo) {\n return ii;\n }\n }\n }.bind(this);\n\n var responseIterator = doc.evaluate('/d:multistatus/d:response', doc, resolver, XPathResult.ANY_TYPE, null);\n\n var result = [];\n var responseNode = responseIterator.iterateNext();\n\n while(responseNode) {\n\n var response = {\n href : null,\n propStat : []\n };\n\n response.href = doc.evaluate('string(d:href)', responseNode, resolver, XPathResult.ANY_TYPE, null).stringValue;\n\n var propStatIterator = doc.evaluate('d:propstat', responseNode, resolver, XPathResult.ANY_TYPE, null);\n var propStatNode = propStatIterator.iterateNext();\n\n while(propStatNode) {\n var propStat = {\n status : doc.evaluate('string(d:status)', propStatNode, resolver, XPathResult.ANY_TYPE, null).stringValue,\n properties : {},\n };\n\n var propIterator = doc.evaluate('d:prop/*', propStatNode, resolver, XPathResult.ANY_TYPE, null);\n\n var propNode = propIterator.iterateNext();\n while(propNode) {\n var content = this._parsePropNode(propNode);\n propStat.properties['{' + propNode.namespaceURI + '}' + propNode.localName] = content;\n propNode = propIterator.iterateNext();\n\n }\n response.propStat.push(propStat);\n propStatNode = propStatIterator.iterateNext();\n\n\n }\n\n result.push(response);\n responseNode = responseIterator.iterateNext();\n\n }\n\n return result;\n\n },\n\n /**\n * Takes a relative url, and maps it to an absolute url, using the baseUrl\n *\n * @param {string} url\n * @return {string}\n */\n resolveUrl : function(url) {\n\n // Note: this is rudamentary.. not sure yet if it handles every case.\n if (/^https?:\\/\\//i.test(url)) {\n // absolute\n return url;\n }\n\n var baseParts = this.parseUrl(this.baseUrl);\n if (url.charAt('/')) {\n // Url starts with a slash\n return baseParts.root + url;\n }\n\n // Url does not start with a slash, we need grab the base url right up until the last slash.\n var newUrl = baseParts.root + '/';\n if (baseParts.path.lastIndexOf('/')!==-1) {\n newUrl = newUrl = baseParts.path.subString(0, baseParts.path.lastIndexOf('/')) + '/';\n }\n newUrl+=url;\n return url;\n\n },\n\n /**\n * Parses a url and returns its individual components.\n *\n * @param {String} url\n * @return {Object}\n */\n parseUrl : function(url) {\n\n var parts = url.match(/^(?:([A-Za-z]+):)?(\\/{0,3})([0-9.\\-A-Za-z]+)(?::(\\d+))?(?:\\/([^?#]*))?(?:\\?([^#]*))?(?:#(.*))?$/);\n var result = {\n url : parts[0],\n scheme : parts[1],\n host : parts[3],\n port : parts[4],\n path : parts[5],\n query : parts[6],\n fragment : parts[7],\n };\n result.root =\n result.scheme + '://' +\n result.host +\n (result.port ? ':' + result.port : '');\n\n return result;\n\n },\n\n parseClarkNotation : function(propertyName) {\n\n var result = propertyName.match(/^{([^}]+)}(.*)$/);\n if (!result) {\n return;\n }\n\n return {\n name : result[2],\n namespace : result[1]\n };\n\n }\n\n};\n\nif (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\n module.exports.Client = dav.Client;\n}\n","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"
          • \\n\t\\n\t\t\"\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"icon\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":2},\"end\":{\"line\":3,\"column\":41}}})) != null ? stack1 : \"\")\n + \"\\n\t\t\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"title\") || (depth0 != null ? lookupProperty(depth0,\"title\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"title\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":4,\"column\":8},\"end\":{\"line\":4,\"column\":17}}}) : helper)))\n + \"\\n\t\\n
          • \\n\";\n},\"useData\":true});","/*! jQuery UI - v1.13.3 - 2024-04-26\n* https://jqueryui.com\n* Includes: widget.js, position.js, data.js, disable-selection.js, effect.js, effects/effect-blind.js, effects/effect-bounce.js, effects/effect-clip.js, effects/effect-drop.js, effects/effect-explode.js, effects/effect-fade.js, effects/effect-fold.js, effects/effect-highlight.js, effects/effect-puff.js, effects/effect-pulsate.js, effects/effect-scale.js, effects/effect-shake.js, effects/effect-size.js, effects/effect-slide.js, effects/effect-transfer.js, focusable.js, form-reset-mixin.js, jquery-patch.js, keycode.js, labels.js, scroll-parent.js, tabbable.js, unique-id.js, widgets/accordion.js, widgets/autocomplete.js, widgets/button.js, widgets/checkboxradio.js, widgets/controlgroup.js, widgets/datepicker.js, widgets/dialog.js, widgets/draggable.js, widgets/droppable.js, widgets/menu.js, widgets/mouse.js, widgets/progressbar.js, widgets/resizable.js, widgets/selectable.js, widgets/selectmenu.js, widgets/slider.js, widgets/sortable.js, widgets/spinner.js, widgets/tabs.js, widgets/tooltip.js\n* Copyright OpenJS Foundation and other contributors; Licensed MIT */\n\n( function( factory ) {\n\t\"use strict\";\n\t\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [ \"jquery\" ], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n} )( function( $ ) {\n\"use strict\";\n\n$.ui = $.ui || {};\n\nvar version = $.ui.version = \"1.13.3\";\n\n\n/*!\n * jQuery UI Widget 1.13.3\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n//>>label: Widget\n//>>group: Core\n//>>description: Provides a factory for creating stateful widgets with a common API.\n//>>docs: https://api.jqueryui.com/jQuery.widget/\n//>>demos: https://jqueryui.com/widget/\n\n\nvar widgetUuid = 0;\nvar widgetHasOwnProperty = Array.prototype.hasOwnProperty;\nvar widgetSlice = Array.prototype.slice;\n\n$.cleanData = ( function( orig ) {\n\treturn function( elems ) {\n\t\tvar events, elem, i;\n\t\tfor ( i = 0; ( elem = elems[ i ] ) != null; i++ ) {\n\n\t\t\t// Only trigger remove when necessary to save time\n\t\t\tevents = $._data( elem, \"events\" );\n\t\t\tif ( events && events.remove ) {\n\t\t\t\t$( elem ).triggerHandler( \"remove\" );\n\t\t\t}\n\t\t}\n\t\torig( elems );\n\t};\n} )( $.cleanData );\n\n$.widget = function( name, base, prototype ) {\n\tvar existingConstructor, constructor, basePrototype;\n\n\t// ProxiedPrototype allows the provided prototype to remain unmodified\n\t// so that it can be used as a mixin for multiple widgets (#8876)\n\tvar proxiedPrototype = {};\n\n\tvar namespace = name.split( \".\" )[ 0 ];\n\tname = name.split( \".\" )[ 1 ];\n\tvar fullName = namespace + \"-\" + name;\n\n\tif ( !prototype ) {\n\t\tprototype = base;\n\t\tbase = $.Widget;\n\t}\n\n\tif ( Array.isArray( prototype ) ) {\n\t\tprototype = $.extend.apply( null, [ {} ].concat( prototype ) );\n\t}\n\n\t// Create selector for plugin\n\t$.expr.pseudos[ fullName.toLowerCase() ] = function( elem ) {\n\t\treturn !!$.data( elem, fullName );\n\t};\n\n\t$[ namespace ] = $[ namespace ] || {};\n\texistingConstructor = $[ namespace ][ name ];\n\tconstructor = $[ namespace ][ name ] = function( options, element ) {\n\n\t\t// Allow instantiation without \"new\" keyword\n\t\tif ( !this || !this._createWidget ) {\n\t\t\treturn new constructor( options, element );\n\t\t}\n\n\t\t// Allow instantiation without initializing for simple inheritance\n\t\t// must use \"new\" keyword (the code above always passes args)\n\t\tif ( arguments.length ) {\n\t\t\tthis._createWidget( options, element );\n\t\t}\n\t};\n\n\t// Extend with the existing constructor to carry over any static properties\n\t$.extend( constructor, existingConstructor, {\n\t\tversion: prototype.version,\n\n\t\t// Copy the object used to create the prototype in case we need to\n\t\t// redefine the widget later\n\t\t_proto: $.extend( {}, prototype ),\n\n\t\t// Track widgets that inherit from this widget in case this widget is\n\t\t// redefined after a widget inherits from it\n\t\t_childConstructors: []\n\t} );\n\n\tbasePrototype = new base();\n\n\t// We need to make the options hash a property directly on the new instance\n\t// otherwise we'll modify the options hash on the prototype that we're\n\t// inheriting from\n\tbasePrototype.options = $.widget.extend( {}, basePrototype.options );\n\t$.each( prototype, function( prop, value ) {\n\t\tif ( typeof value !== \"function\" ) {\n\t\t\tproxiedPrototype[ prop ] = value;\n\t\t\treturn;\n\t\t}\n\t\tproxiedPrototype[ prop ] = ( function() {\n\t\t\tfunction _super() {\n\t\t\t\treturn base.prototype[ prop ].apply( this, arguments );\n\t\t\t}\n\n\t\t\tfunction _superApply( args ) {\n\t\t\t\treturn base.prototype[ prop ].apply( this, args );\n\t\t\t}\n\n\t\t\treturn function() {\n\t\t\t\tvar __super = this._super;\n\t\t\t\tvar __superApply = this._superApply;\n\t\t\t\tvar returnValue;\n\n\t\t\t\tthis._super = _super;\n\t\t\t\tthis._superApply = _superApply;\n\n\t\t\t\treturnValue = value.apply( this, arguments );\n\n\t\t\t\tthis._super = __super;\n\t\t\t\tthis._superApply = __superApply;\n\n\t\t\t\treturn returnValue;\n\t\t\t};\n\t\t} )();\n\t} );\n\tconstructor.prototype = $.widget.extend( basePrototype, {\n\n\t\t// TODO: remove support for widgetEventPrefix\n\t\t// always use the name + a colon as the prefix, e.g., draggable:start\n\t\t// don't prefix for widgets that aren't DOM-based\n\t\twidgetEventPrefix: existingConstructor ? ( basePrototype.widgetEventPrefix || name ) : name\n\t}, proxiedPrototype, {\n\t\tconstructor: constructor,\n\t\tnamespace: namespace,\n\t\twidgetName: name,\n\t\twidgetFullName: fullName\n\t} );\n\n\t// If this widget is being redefined then we need to find all widgets that\n\t// are inheriting from it and redefine all of them so that they inherit from\n\t// the new version of this widget. We're essentially trying to replace one\n\t// level in the prototype chain.\n\tif ( existingConstructor ) {\n\t\t$.each( existingConstructor._childConstructors, function( i, child ) {\n\t\t\tvar childPrototype = child.prototype;\n\n\t\t\t// Redefine the child widget using the same prototype that was\n\t\t\t// originally used, but inherit from the new version of the base\n\t\t\t$.widget( childPrototype.namespace + \".\" + childPrototype.widgetName, constructor,\n\t\t\t\tchild._proto );\n\t\t} );\n\n\t\t// Remove the list of existing child constructors from the old constructor\n\t\t// so the old child constructors can be garbage collected\n\t\tdelete existingConstructor._childConstructors;\n\t} else {\n\t\tbase._childConstructors.push( constructor );\n\t}\n\n\t$.widget.bridge( name, constructor );\n\n\treturn constructor;\n};\n\n$.widget.extend = function( target ) {\n\tvar input = widgetSlice.call( arguments, 1 );\n\tvar inputIndex = 0;\n\tvar inputLength = input.length;\n\tvar key;\n\tvar value;\n\n\tfor ( ; inputIndex < inputLength; inputIndex++ ) {\n\t\tfor ( key in input[ inputIndex ] ) {\n\t\t\tvalue = input[ inputIndex ][ key ];\n\t\t\tif ( widgetHasOwnProperty.call( input[ inputIndex ], key ) && value !== undefined ) {\n\n\t\t\t\t// Clone objects\n\t\t\t\tif ( $.isPlainObject( value ) ) {\n\t\t\t\t\ttarget[ key ] = $.isPlainObject( target[ key ] ) ?\n\t\t\t\t\t\t$.widget.extend( {}, target[ key ], value ) :\n\n\t\t\t\t\t\t// Don't extend strings, arrays, etc. with objects\n\t\t\t\t\t\t$.widget.extend( {}, value );\n\n\t\t\t\t// Copy everything else by reference\n\t\t\t\t} else {\n\t\t\t\t\ttarget[ key ] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn target;\n};\n\n$.widget.bridge = function( name, object ) {\n\tvar fullName = object.prototype.widgetFullName || name;\n\t$.fn[ name ] = function( options ) {\n\t\tvar isMethodCall = typeof options === \"string\";\n\t\tvar args = widgetSlice.call( arguments, 1 );\n\t\tvar returnValue = this;\n\n\t\tif ( isMethodCall ) {\n\n\t\t\t// If this is an empty collection, we need to have the instance method\n\t\t\t// return undefined instead of the jQuery instance\n\t\t\tif ( !this.length && options === \"instance\" ) {\n\t\t\t\treturnValue = undefined;\n\t\t\t} else {\n\t\t\t\tthis.each( function() {\n\t\t\t\t\tvar methodValue;\n\t\t\t\t\tvar instance = $.data( this, fullName );\n\n\t\t\t\t\tif ( options === \"instance\" ) {\n\t\t\t\t\t\treturnValue = instance;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( !instance ) {\n\t\t\t\t\t\treturn $.error( \"cannot call methods on \" + name +\n\t\t\t\t\t\t\t\" prior to initialization; \" +\n\t\t\t\t\t\t\t\"attempted to call method '\" + options + \"'\" );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( typeof instance[ options ] !== \"function\" ||\n\t\t\t\t\t\toptions.charAt( 0 ) === \"_\" ) {\n\t\t\t\t\t\treturn $.error( \"no such method '\" + options + \"' for \" + name +\n\t\t\t\t\t\t\t\" widget instance\" );\n\t\t\t\t\t}\n\n\t\t\t\t\tmethodValue = instance[ options ].apply( instance, args );\n\n\t\t\t\t\tif ( methodValue !== instance && methodValue !== undefined ) {\n\t\t\t\t\t\treturnValue = methodValue && methodValue.jquery ?\n\t\t\t\t\t\t\treturnValue.pushStack( methodValue.get() ) :\n\t\t\t\t\t\t\tmethodValue;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t}\n\t\t} else {\n\n\t\t\t// Allow multiple hashes to be passed on init\n\t\t\tif ( args.length ) {\n\t\t\t\toptions = $.widget.extend.apply( null, [ options ].concat( args ) );\n\t\t\t}\n\n\t\t\tthis.each( function() {\n\t\t\t\tvar instance = $.data( this, fullName );\n\t\t\t\tif ( instance ) {\n\t\t\t\t\tinstance.option( options || {} );\n\t\t\t\t\tif ( instance._init ) {\n\t\t\t\t\t\tinstance._init();\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t$.data( this, fullName, new object( options, this ) );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn returnValue;\n\t};\n};\n\n$.Widget = function( /* options, element */ ) {};\n$.Widget._childConstructors = [];\n\n$.Widget.prototype = {\n\twidgetName: \"widget\",\n\twidgetEventPrefix: \"\",\n\tdefaultElement: \"
            \",\n\n\toptions: {\n\t\tclasses: {},\n\t\tdisabled: false,\n\n\t\t// Callbacks\n\t\tcreate: null\n\t},\n\n\t_createWidget: function( options, element ) {\n\t\telement = $( element || this.defaultElement || this )[ 0 ];\n\t\tthis.element = $( element );\n\t\tthis.uuid = widgetUuid++;\n\t\tthis.eventNamespace = \".\" + this.widgetName + this.uuid;\n\n\t\tthis.bindings = $();\n\t\tthis.hoverable = $();\n\t\tthis.focusable = $();\n\t\tthis.classesElementLookup = {};\n\n\t\tif ( element !== this ) {\n\t\t\t$.data( element, this.widgetFullName, this );\n\t\t\tthis._on( true, this.element, {\n\t\t\t\tremove: function( event ) {\n\t\t\t\t\tif ( event.target === element ) {\n\t\t\t\t\t\tthis.destroy();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t\tthis.document = $( element.style ?\n\n\t\t\t\t// Element within the document\n\t\t\t\telement.ownerDocument :\n\n\t\t\t\t// Element is window or document\n\t\t\t\telement.document || element );\n\t\t\tthis.window = $( this.document[ 0 ].defaultView || this.document[ 0 ].parentWindow );\n\t\t}\n\n\t\tthis.options = $.widget.extend( {},\n\t\t\tthis.options,\n\t\t\tthis._getCreateOptions(),\n\t\t\toptions );\n\n\t\tthis._create();\n\n\t\tif ( this.options.disabled ) {\n\t\t\tthis._setOptionDisabled( this.options.disabled );\n\t\t}\n\n\t\tthis._trigger( \"create\", null, this._getCreateEventData() );\n\t\tthis._init();\n\t},\n\n\t_getCreateOptions: function() {\n\t\treturn {};\n\t},\n\n\t_getCreateEventData: $.noop,\n\n\t_create: $.noop,\n\n\t_init: $.noop,\n\n\tdestroy: function() {\n\t\tvar that = this;\n\n\t\tthis._destroy();\n\t\t$.each( this.classesElementLookup, function( key, value ) {\n\t\t\tthat._removeClass( value, key );\n\t\t} );\n\n\t\t// We can probably remove the unbind calls in 2.0\n\t\t// all event bindings should go through this._on()\n\t\tthis.element\n\t\t\t.off( this.eventNamespace )\n\t\t\t.removeData( this.widgetFullName );\n\t\tthis.widget()\n\t\t\t.off( this.eventNamespace )\n\t\t\t.removeAttr( \"aria-disabled\" );\n\n\t\t// Clean up events and states\n\t\tthis.bindings.off( this.eventNamespace );\n\t},\n\n\t_destroy: $.noop,\n\n\twidget: function() {\n\t\treturn this.element;\n\t},\n\n\toption: function( key, value ) {\n\t\tvar options = key;\n\t\tvar parts;\n\t\tvar curOption;\n\t\tvar i;\n\n\t\tif ( arguments.length === 0 ) {\n\n\t\t\t// Don't return a reference to the internal hash\n\t\t\treturn $.widget.extend( {}, this.options );\n\t\t}\n\n\t\tif ( typeof key === \"string\" ) {\n\n\t\t\t// Handle nested keys, e.g., \"foo.bar\" => { foo: { bar: ___ } }\n\t\t\toptions = {};\n\t\t\tparts = key.split( \".\" );\n\t\t\tkey = parts.shift();\n\t\t\tif ( parts.length ) {\n\t\t\t\tcurOption = options[ key ] = $.widget.extend( {}, this.options[ key ] );\n\t\t\t\tfor ( i = 0; i < parts.length - 1; i++ ) {\n\t\t\t\t\tcurOption[ parts[ i ] ] = curOption[ parts[ i ] ] || {};\n\t\t\t\t\tcurOption = curOption[ parts[ i ] ];\n\t\t\t\t}\n\t\t\t\tkey = parts.pop();\n\t\t\t\tif ( arguments.length === 1 ) {\n\t\t\t\t\treturn curOption[ key ] === undefined ? null : curOption[ key ];\n\t\t\t\t}\n\t\t\t\tcurOption[ key ] = value;\n\t\t\t} else {\n\t\t\t\tif ( arguments.length === 1 ) {\n\t\t\t\t\treturn this.options[ key ] === undefined ? null : this.options[ key ];\n\t\t\t\t}\n\t\t\t\toptions[ key ] = value;\n\t\t\t}\n\t\t}\n\n\t\tthis._setOptions( options );\n\n\t\treturn this;\n\t},\n\n\t_setOptions: function( options ) {\n\t\tvar key;\n\n\t\tfor ( key in options ) {\n\t\t\tthis._setOption( key, options[ key ] );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tif ( key === \"classes\" ) {\n\t\t\tthis._setOptionClasses( value );\n\t\t}\n\n\t\tthis.options[ key ] = value;\n\n\t\tif ( key === \"disabled\" ) {\n\t\t\tthis._setOptionDisabled( value );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\t_setOptionClasses: function( value ) {\n\t\tvar classKey, elements, currentElements;\n\n\t\tfor ( classKey in value ) {\n\t\t\tcurrentElements = this.classesElementLookup[ classKey ];\n\t\t\tif ( value[ classKey ] === this.options.classes[ classKey ] ||\n\t\t\t\t\t!currentElements ||\n\t\t\t\t\t!currentElements.length ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// We are doing this to create a new jQuery object because the _removeClass() call\n\t\t\t// on the next line is going to destroy the reference to the current elements being\n\t\t\t// tracked. We need to save a copy of this collection so that we can add the new classes\n\t\t\t// below.\n\t\t\telements = $( currentElements.get() );\n\t\t\tthis._removeClass( currentElements, classKey );\n\n\t\t\t// We don't use _addClass() here, because that uses this.options.classes\n\t\t\t// for generating the string of classes. We want to use the value passed in from\n\t\t\t// _setOption(), this is the new value of the classes option which was passed to\n\t\t\t// _setOption(). We pass this value directly to _classes().\n\t\t\telements.addClass( this._classes( {\n\t\t\t\telement: elements,\n\t\t\t\tkeys: classKey,\n\t\t\t\tclasses: value,\n\t\t\t\tadd: true\n\t\t\t} ) );\n\t\t}\n\t},\n\n\t_setOptionDisabled: function( value ) {\n\t\tthis._toggleClass( this.widget(), this.widgetFullName + \"-disabled\", null, !!value );\n\n\t\t// If the widget is becoming disabled, then nothing is interactive\n\t\tif ( value ) {\n\t\t\tthis._removeClass( this.hoverable, null, \"ui-state-hover\" );\n\t\t\tthis._removeClass( this.focusable, null, \"ui-state-focus\" );\n\t\t}\n\t},\n\n\tenable: function() {\n\t\treturn this._setOptions( { disabled: false } );\n\t},\n\n\tdisable: function() {\n\t\treturn this._setOptions( { disabled: true } );\n\t},\n\n\t_classes: function( options ) {\n\t\tvar full = [];\n\t\tvar that = this;\n\n\t\toptions = $.extend( {\n\t\t\telement: this.element,\n\t\t\tclasses: this.options.classes || {}\n\t\t}, options );\n\n\t\tfunction bindRemoveEvent() {\n\t\t\tvar nodesToBind = [];\n\n\t\t\toptions.element.each( function( _, element ) {\n\t\t\t\tvar isTracked = $.map( that.classesElementLookup, function( elements ) {\n\t\t\t\t\treturn elements;\n\t\t\t\t} )\n\t\t\t\t\t.some( function( elements ) {\n\t\t\t\t\t\treturn elements.is( element );\n\t\t\t\t\t} );\n\n\t\t\t\tif ( !isTracked ) {\n\t\t\t\t\tnodesToBind.push( element );\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tthat._on( $( nodesToBind ), {\n\t\t\t\tremove: \"_untrackClassesElement\"\n\t\t\t} );\n\t\t}\n\n\t\tfunction processClassString( classes, checkOption ) {\n\t\t\tvar current, i;\n\t\t\tfor ( i = 0; i < classes.length; i++ ) {\n\t\t\t\tcurrent = that.classesElementLookup[ classes[ i ] ] || $();\n\t\t\t\tif ( options.add ) {\n\t\t\t\t\tbindRemoveEvent();\n\t\t\t\t\tcurrent = $( $.uniqueSort( current.get().concat( options.element.get() ) ) );\n\t\t\t\t} else {\n\t\t\t\t\tcurrent = $( current.not( options.element ).get() );\n\t\t\t\t}\n\t\t\t\tthat.classesElementLookup[ classes[ i ] ] = current;\n\t\t\t\tfull.push( classes[ i ] );\n\t\t\t\tif ( checkOption && options.classes[ classes[ i ] ] ) {\n\t\t\t\t\tfull.push( options.classes[ classes[ i ] ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( options.keys ) {\n\t\t\tprocessClassString( options.keys.match( /\\S+/g ) || [], true );\n\t\t}\n\t\tif ( options.extra ) {\n\t\t\tprocessClassString( options.extra.match( /\\S+/g ) || [] );\n\t\t}\n\n\t\treturn full.join( \" \" );\n\t},\n\n\t_untrackClassesElement: function( event ) {\n\t\tvar that = this;\n\t\t$.each( that.classesElementLookup, function( key, value ) {\n\t\t\tif ( $.inArray( event.target, value ) !== -1 ) {\n\t\t\t\tthat.classesElementLookup[ key ] = $( value.not( event.target ).get() );\n\t\t\t}\n\t\t} );\n\n\t\tthis._off( $( event.target ) );\n\t},\n\n\t_removeClass: function( element, keys, extra ) {\n\t\treturn this._toggleClass( element, keys, extra, false );\n\t},\n\n\t_addClass: function( element, keys, extra ) {\n\t\treturn this._toggleClass( element, keys, extra, true );\n\t},\n\n\t_toggleClass: function( element, keys, extra, add ) {\n\t\tadd = ( typeof add === \"boolean\" ) ? add : extra;\n\t\tvar shift = ( typeof element === \"string\" || element === null ),\n\t\t\toptions = {\n\t\t\t\textra: shift ? keys : extra,\n\t\t\t\tkeys: shift ? element : keys,\n\t\t\t\telement: shift ? this.element : element,\n\t\t\t\tadd: add\n\t\t\t};\n\t\toptions.element.toggleClass( this._classes( options ), add );\n\t\treturn this;\n\t},\n\n\t_on: function( suppressDisabledCheck, element, handlers ) {\n\t\tvar delegateElement;\n\t\tvar instance = this;\n\n\t\t// No suppressDisabledCheck flag, shuffle arguments\n\t\tif ( typeof suppressDisabledCheck !== \"boolean\" ) {\n\t\t\thandlers = element;\n\t\t\telement = suppressDisabledCheck;\n\t\t\tsuppressDisabledCheck = false;\n\t\t}\n\n\t\t// No element argument, shuffle and use this.element\n\t\tif ( !handlers ) {\n\t\t\thandlers = element;\n\t\t\telement = this.element;\n\t\t\tdelegateElement = this.widget();\n\t\t} else {\n\t\t\telement = delegateElement = $( element );\n\t\t\tthis.bindings = this.bindings.add( element );\n\t\t}\n\n\t\t$.each( handlers, function( event, handler ) {\n\t\t\tfunction handlerProxy() {\n\n\t\t\t\t// Allow widgets to customize the disabled handling\n\t\t\t\t// - disabled as an array instead of boolean\n\t\t\t\t// - disabled class as method for disabling individual parts\n\t\t\t\tif ( !suppressDisabledCheck &&\n\t\t\t\t\t\t( instance.options.disabled === true ||\n\t\t\t\t\t\t$( this ).hasClass( \"ui-state-disabled\" ) ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\treturn ( typeof handler === \"string\" ? instance[ handler ] : handler )\n\t\t\t\t\t.apply( instance, arguments );\n\t\t\t}\n\n\t\t\t// Copy the guid so direct unbinding works\n\t\t\tif ( typeof handler !== \"string\" ) {\n\t\t\t\thandlerProxy.guid = handler.guid =\n\t\t\t\t\thandler.guid || handlerProxy.guid || $.guid++;\n\t\t\t}\n\n\t\t\tvar match = event.match( /^([\\w:-]*)\\s*(.*)$/ );\n\t\t\tvar eventName = match[ 1 ] + instance.eventNamespace;\n\t\t\tvar selector = match[ 2 ];\n\n\t\t\tif ( selector ) {\n\t\t\t\tdelegateElement.on( eventName, selector, handlerProxy );\n\t\t\t} else {\n\t\t\t\telement.on( eventName, handlerProxy );\n\t\t\t}\n\t\t} );\n\t},\n\n\t_off: function( element, eventName ) {\n\t\teventName = ( eventName || \"\" ).split( \" \" ).join( this.eventNamespace + \" \" ) +\n\t\t\tthis.eventNamespace;\n\t\telement.off( eventName );\n\n\t\t// Clear the stack to avoid memory leaks (#10056)\n\t\tthis.bindings = $( this.bindings.not( element ).get() );\n\t\tthis.focusable = $( this.focusable.not( element ).get() );\n\t\tthis.hoverable = $( this.hoverable.not( element ).get() );\n\t},\n\n\t_delay: function( handler, delay ) {\n\t\tfunction handlerProxy() {\n\t\t\treturn ( typeof handler === \"string\" ? instance[ handler ] : handler )\n\t\t\t\t.apply( instance, arguments );\n\t\t}\n\t\tvar instance = this;\n\t\treturn setTimeout( handlerProxy, delay || 0 );\n\t},\n\n\t_hoverable: function( element ) {\n\t\tthis.hoverable = this.hoverable.add( element );\n\t\tthis._on( element, {\n\t\t\tmouseenter: function( event ) {\n\t\t\t\tthis._addClass( $( event.currentTarget ), null, \"ui-state-hover\" );\n\t\t\t},\n\t\t\tmouseleave: function( event ) {\n\t\t\t\tthis._removeClass( $( event.currentTarget ), null, \"ui-state-hover\" );\n\t\t\t}\n\t\t} );\n\t},\n\n\t_focusable: function( element ) {\n\t\tthis.focusable = this.focusable.add( element );\n\t\tthis._on( element, {\n\t\t\tfocusin: function( event ) {\n\t\t\t\tthis._addClass( $( event.currentTarget ), null, \"ui-state-focus\" );\n\t\t\t},\n\t\t\tfocusout: function( event ) {\n\t\t\t\tthis._removeClass( $( event.currentTarget ), null, \"ui-state-focus\" );\n\t\t\t}\n\t\t} );\n\t},\n\n\t_trigger: function( type, event, data ) {\n\t\tvar prop, orig;\n\t\tvar callback = this.options[ type ];\n\n\t\tdata = data || {};\n\t\tevent = $.Event( event );\n\t\tevent.type = ( type === this.widgetEventPrefix ?\n\t\t\ttype :\n\t\t\tthis.widgetEventPrefix + type ).toLowerCase();\n\n\t\t// The original event may come from any element\n\t\t// so we need to reset the target on the new event\n\t\tevent.target = this.element[ 0 ];\n\n\t\t// Copy original event properties over to the new event\n\t\torig = event.originalEvent;\n\t\tif ( orig ) {\n\t\t\tfor ( prop in orig ) {\n\t\t\t\tif ( !( prop in event ) ) {\n\t\t\t\t\tevent[ prop ] = orig[ prop ];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.element.trigger( event, data );\n\t\treturn !( typeof callback === \"function\" &&\n\t\t\tcallback.apply( this.element[ 0 ], [ event ].concat( data ) ) === false ||\n\t\t\tevent.isDefaultPrevented() );\n\t}\n};\n\n$.each( { show: \"fadeIn\", hide: \"fadeOut\" }, function( method, defaultEffect ) {\n\t$.Widget.prototype[ \"_\" + method ] = function( element, options, callback ) {\n\t\tif ( typeof options === \"string\" ) {\n\t\t\toptions = { effect: options };\n\t\t}\n\n\t\tvar hasOptions;\n\t\tvar effectName = !options ?\n\t\t\tmethod :\n\t\t\toptions === true || typeof options === \"number\" ?\n\t\t\t\tdefaultEffect :\n\t\t\t\toptions.effect || defaultEffect;\n\n\t\toptions = options || {};\n\t\tif ( typeof options === \"number\" ) {\n\t\t\toptions = { duration: options };\n\t\t} else if ( options === true ) {\n\t\t\toptions = {};\n\t\t}\n\n\t\thasOptions = !$.isEmptyObject( options );\n\t\toptions.complete = callback;\n\n\t\tif ( options.delay ) {\n\t\t\telement.delay( options.delay );\n\t\t}\n\n\t\tif ( hasOptions && $.effects && $.effects.effect[ effectName ] ) {\n\t\t\telement[ method ]( options );\n\t\t} else if ( effectName !== method && element[ effectName ] ) {\n\t\t\telement[ effectName ]( options.duration, options.easing, callback );\n\t\t} else {\n\t\t\telement.queue( function( next ) {\n\t\t\t\t$( this )[ method ]();\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback.call( element[ 0 ] );\n\t\t\t\t}\n\t\t\t\tnext();\n\t\t\t} );\n\t\t}\n\t};\n} );\n\nvar widget = $.widget;\n\n\n/*!\n * jQuery UI Position 1.13.3\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n *\n * https://api.jqueryui.com/position/\n */\n\n//>>label: Position\n//>>group: Core\n//>>description: Positions elements relative to other elements.\n//>>docs: https://api.jqueryui.com/position/\n//>>demos: https://jqueryui.com/position/\n\n\n( function() {\nvar cachedScrollbarWidth,\n\tmax = Math.max,\n\tabs = Math.abs,\n\trhorizontal = /left|center|right/,\n\trvertical = /top|center|bottom/,\n\troffset = /[\\+\\-]\\d+(\\.[\\d]+)?%?/,\n\trposition = /^\\w+/,\n\trpercent = /%$/,\n\t_position = $.fn.position;\n\nfunction getOffsets( offsets, width, height ) {\n\treturn [\n\t\tparseFloat( offsets[ 0 ] ) * ( rpercent.test( offsets[ 0 ] ) ? width / 100 : 1 ),\n\t\tparseFloat( offsets[ 1 ] ) * ( rpercent.test( offsets[ 1 ] ) ? height / 100 : 1 )\n\t];\n}\n\nfunction parseCss( element, property ) {\n\treturn parseInt( $.css( element, property ), 10 ) || 0;\n}\n\nfunction isWindow( obj ) {\n\treturn obj != null && obj === obj.window;\n}\n\nfunction getDimensions( elem ) {\n\tvar raw = elem[ 0 ];\n\tif ( raw.nodeType === 9 ) {\n\t\treturn {\n\t\t\twidth: elem.width(),\n\t\t\theight: elem.height(),\n\t\t\toffset: { top: 0, left: 0 }\n\t\t};\n\t}\n\tif ( isWindow( raw ) ) {\n\t\treturn {\n\t\t\twidth: elem.width(),\n\t\t\theight: elem.height(),\n\t\t\toffset: { top: elem.scrollTop(), left: elem.scrollLeft() }\n\t\t};\n\t}\n\tif ( raw.preventDefault ) {\n\t\treturn {\n\t\t\twidth: 0,\n\t\t\theight: 0,\n\t\t\toffset: { top: raw.pageY, left: raw.pageX }\n\t\t};\n\t}\n\treturn {\n\t\twidth: elem.outerWidth(),\n\t\theight: elem.outerHeight(),\n\t\toffset: elem.offset()\n\t};\n}\n\n$.position = {\n\tscrollbarWidth: function() {\n\t\tif ( cachedScrollbarWidth !== undefined ) {\n\t\t\treturn cachedScrollbarWidth;\n\t\t}\n\t\tvar w1, w2,\n\t\t\tdiv = $( \"
            \" +\n\t\t\t\t\"
            \" ),\n\t\t\tinnerDiv = div.children()[ 0 ];\n\n\t\t$( \"body\" ).append( div );\n\t\tw1 = innerDiv.offsetWidth;\n\t\tdiv.css( \"overflow\", \"scroll\" );\n\n\t\tw2 = innerDiv.offsetWidth;\n\n\t\tif ( w1 === w2 ) {\n\t\t\tw2 = div[ 0 ].clientWidth;\n\t\t}\n\n\t\tdiv.remove();\n\n\t\treturn ( cachedScrollbarWidth = w1 - w2 );\n\t},\n\tgetScrollInfo: function( within ) {\n\t\tvar overflowX = within.isWindow || within.isDocument ? \"\" :\n\t\t\t\twithin.element.css( \"overflow-x\" ),\n\t\t\toverflowY = within.isWindow || within.isDocument ? \"\" :\n\t\t\t\twithin.element.css( \"overflow-y\" ),\n\t\t\thasOverflowX = overflowX === \"scroll\" ||\n\t\t\t\t( overflowX === \"auto\" && within.width < within.element[ 0 ].scrollWidth ),\n\t\t\thasOverflowY = overflowY === \"scroll\" ||\n\t\t\t\t( overflowY === \"auto\" && within.height < within.element[ 0 ].scrollHeight );\n\t\treturn {\n\t\t\twidth: hasOverflowY ? $.position.scrollbarWidth() : 0,\n\t\t\theight: hasOverflowX ? $.position.scrollbarWidth() : 0\n\t\t};\n\t},\n\tgetWithinInfo: function( element ) {\n\t\tvar withinElement = $( element || window ),\n\t\t\tisElemWindow = isWindow( withinElement[ 0 ] ),\n\t\t\tisDocument = !!withinElement[ 0 ] && withinElement[ 0 ].nodeType === 9,\n\t\t\thasOffset = !isElemWindow && !isDocument;\n\t\treturn {\n\t\t\telement: withinElement,\n\t\t\tisWindow: isElemWindow,\n\t\t\tisDocument: isDocument,\n\t\t\toffset: hasOffset ? $( element ).offset() : { left: 0, top: 0 },\n\t\t\tscrollLeft: withinElement.scrollLeft(),\n\t\t\tscrollTop: withinElement.scrollTop(),\n\t\t\twidth: withinElement.outerWidth(),\n\t\t\theight: withinElement.outerHeight()\n\t\t};\n\t}\n};\n\n$.fn.position = function( options ) {\n\tif ( !options || !options.of ) {\n\t\treturn _position.apply( this, arguments );\n\t}\n\n\t// Make a copy, we don't want to modify arguments\n\toptions = $.extend( {}, options );\n\n\tvar atOffset, targetWidth, targetHeight, targetOffset, basePosition, dimensions,\n\n\t\t// Make sure string options are treated as CSS selectors\n\t\ttarget = typeof options.of === \"string\" ?\n\t\t\t$( document ).find( options.of ) :\n\t\t\t$( options.of ),\n\n\t\twithin = $.position.getWithinInfo( options.within ),\n\t\tscrollInfo = $.position.getScrollInfo( within ),\n\t\tcollision = ( options.collision || \"flip\" ).split( \" \" ),\n\t\toffsets = {};\n\n\tdimensions = getDimensions( target );\n\tif ( target[ 0 ].preventDefault ) {\n\n\t\t// Force left top to allow flipping\n\t\toptions.at = \"left top\";\n\t}\n\ttargetWidth = dimensions.width;\n\ttargetHeight = dimensions.height;\n\ttargetOffset = dimensions.offset;\n\n\t// Clone to reuse original targetOffset later\n\tbasePosition = $.extend( {}, targetOffset );\n\n\t// Force my and at to have valid horizontal and vertical positions\n\t// if a value is missing or invalid, it will be converted to center\n\t$.each( [ \"my\", \"at\" ], function() {\n\t\tvar pos = ( options[ this ] || \"\" ).split( \" \" ),\n\t\t\thorizontalOffset,\n\t\t\tverticalOffset;\n\n\t\tif ( pos.length === 1 ) {\n\t\t\tpos = rhorizontal.test( pos[ 0 ] ) ?\n\t\t\t\tpos.concat( [ \"center\" ] ) :\n\t\t\t\trvertical.test( pos[ 0 ] ) ?\n\t\t\t\t\t[ \"center\" ].concat( pos ) :\n\t\t\t\t\t[ \"center\", \"center\" ];\n\t\t}\n\t\tpos[ 0 ] = rhorizontal.test( pos[ 0 ] ) ? pos[ 0 ] : \"center\";\n\t\tpos[ 1 ] = rvertical.test( pos[ 1 ] ) ? pos[ 1 ] : \"center\";\n\n\t\t// Calculate offsets\n\t\thorizontalOffset = roffset.exec( pos[ 0 ] );\n\t\tverticalOffset = roffset.exec( pos[ 1 ] );\n\t\toffsets[ this ] = [\n\t\t\thorizontalOffset ? horizontalOffset[ 0 ] : 0,\n\t\t\tverticalOffset ? verticalOffset[ 0 ] : 0\n\t\t];\n\n\t\t// Reduce to just the positions without the offsets\n\t\toptions[ this ] = [\n\t\t\trposition.exec( pos[ 0 ] )[ 0 ],\n\t\t\trposition.exec( pos[ 1 ] )[ 0 ]\n\t\t];\n\t} );\n\n\t// Normalize collision option\n\tif ( collision.length === 1 ) {\n\t\tcollision[ 1 ] = collision[ 0 ];\n\t}\n\n\tif ( options.at[ 0 ] === \"right\" ) {\n\t\tbasePosition.left += targetWidth;\n\t} else if ( options.at[ 0 ] === \"center\" ) {\n\t\tbasePosition.left += targetWidth / 2;\n\t}\n\n\tif ( options.at[ 1 ] === \"bottom\" ) {\n\t\tbasePosition.top += targetHeight;\n\t} else if ( options.at[ 1 ] === \"center\" ) {\n\t\tbasePosition.top += targetHeight / 2;\n\t}\n\n\tatOffset = getOffsets( offsets.at, targetWidth, targetHeight );\n\tbasePosition.left += atOffset[ 0 ];\n\tbasePosition.top += atOffset[ 1 ];\n\n\treturn this.each( function() {\n\t\tvar collisionPosition, using,\n\t\t\telem = $( this ),\n\t\t\telemWidth = elem.outerWidth(),\n\t\t\telemHeight = elem.outerHeight(),\n\t\t\tmarginLeft = parseCss( this, \"marginLeft\" ),\n\t\t\tmarginTop = parseCss( this, \"marginTop\" ),\n\t\t\tcollisionWidth = elemWidth + marginLeft + parseCss( this, \"marginRight\" ) +\n\t\t\t\tscrollInfo.width,\n\t\t\tcollisionHeight = elemHeight + marginTop + parseCss( this, \"marginBottom\" ) +\n\t\t\t\tscrollInfo.height,\n\t\t\tposition = $.extend( {}, basePosition ),\n\t\t\tmyOffset = getOffsets( offsets.my, elem.outerWidth(), elem.outerHeight() );\n\n\t\tif ( options.my[ 0 ] === \"right\" ) {\n\t\t\tposition.left -= elemWidth;\n\t\t} else if ( options.my[ 0 ] === \"center\" ) {\n\t\t\tposition.left -= elemWidth / 2;\n\t\t}\n\n\t\tif ( options.my[ 1 ] === \"bottom\" ) {\n\t\t\tposition.top -= elemHeight;\n\t\t} else if ( options.my[ 1 ] === \"center\" ) {\n\t\t\tposition.top -= elemHeight / 2;\n\t\t}\n\n\t\tposition.left += myOffset[ 0 ];\n\t\tposition.top += myOffset[ 1 ];\n\n\t\tcollisionPosition = {\n\t\t\tmarginLeft: marginLeft,\n\t\t\tmarginTop: marginTop\n\t\t};\n\n\t\t$.each( [ \"left\", \"top\" ], function( i, dir ) {\n\t\t\tif ( $.ui.position[ collision[ i ] ] ) {\n\t\t\t\t$.ui.position[ collision[ i ] ][ dir ]( position, {\n\t\t\t\t\ttargetWidth: targetWidth,\n\t\t\t\t\ttargetHeight: targetHeight,\n\t\t\t\t\telemWidth: elemWidth,\n\t\t\t\t\telemHeight: elemHeight,\n\t\t\t\t\tcollisionPosition: collisionPosition,\n\t\t\t\t\tcollisionWidth: collisionWidth,\n\t\t\t\t\tcollisionHeight: collisionHeight,\n\t\t\t\t\toffset: [ atOffset[ 0 ] + myOffset[ 0 ], atOffset [ 1 ] + myOffset[ 1 ] ],\n\t\t\t\t\tmy: options.my,\n\t\t\t\t\tat: options.at,\n\t\t\t\t\twithin: within,\n\t\t\t\t\telem: elem\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\n\t\tif ( options.using ) {\n\n\t\t\t// Adds feedback as second argument to using callback, if present\n\t\t\tusing = function( props ) {\n\t\t\t\tvar left = targetOffset.left - position.left,\n\t\t\t\t\tright = left + targetWidth - elemWidth,\n\t\t\t\t\ttop = targetOffset.top - position.top,\n\t\t\t\t\tbottom = top + targetHeight - elemHeight,\n\t\t\t\t\tfeedback = {\n\t\t\t\t\t\ttarget: {\n\t\t\t\t\t\t\telement: target,\n\t\t\t\t\t\t\tleft: targetOffset.left,\n\t\t\t\t\t\t\ttop: targetOffset.top,\n\t\t\t\t\t\t\twidth: targetWidth,\n\t\t\t\t\t\t\theight: targetHeight\n\t\t\t\t\t\t},\n\t\t\t\t\t\telement: {\n\t\t\t\t\t\t\telement: elem,\n\t\t\t\t\t\t\tleft: position.left,\n\t\t\t\t\t\t\ttop: position.top,\n\t\t\t\t\t\t\twidth: elemWidth,\n\t\t\t\t\t\t\theight: elemHeight\n\t\t\t\t\t\t},\n\t\t\t\t\t\thorizontal: right < 0 ? \"left\" : left > 0 ? \"right\" : \"center\",\n\t\t\t\t\t\tvertical: bottom < 0 ? \"top\" : top > 0 ? \"bottom\" : \"middle\"\n\t\t\t\t\t};\n\t\t\t\tif ( targetWidth < elemWidth && abs( left + right ) < targetWidth ) {\n\t\t\t\t\tfeedback.horizontal = \"center\";\n\t\t\t\t}\n\t\t\t\tif ( targetHeight < elemHeight && abs( top + bottom ) < targetHeight ) {\n\t\t\t\t\tfeedback.vertical = \"middle\";\n\t\t\t\t}\n\t\t\t\tif ( max( abs( left ), abs( right ) ) > max( abs( top ), abs( bottom ) ) ) {\n\t\t\t\t\tfeedback.important = \"horizontal\";\n\t\t\t\t} else {\n\t\t\t\t\tfeedback.important = \"vertical\";\n\t\t\t\t}\n\t\t\t\toptions.using.call( this, props, feedback );\n\t\t\t};\n\t\t}\n\n\t\telem.offset( $.extend( position, { using: using } ) );\n\t} );\n};\n\n$.ui.position = {\n\tfit: {\n\t\tleft: function( position, data ) {\n\t\t\tvar within = data.within,\n\t\t\t\twithinOffset = within.isWindow ? within.scrollLeft : within.offset.left,\n\t\t\t\touterWidth = within.width,\n\t\t\t\tcollisionPosLeft = position.left - data.collisionPosition.marginLeft,\n\t\t\t\toverLeft = withinOffset - collisionPosLeft,\n\t\t\t\toverRight = collisionPosLeft + data.collisionWidth - outerWidth - withinOffset,\n\t\t\t\tnewOverRight;\n\n\t\t\t// Element is wider than within\n\t\t\tif ( data.collisionWidth > outerWidth ) {\n\n\t\t\t\t// Element is initially over the left side of within\n\t\t\t\tif ( overLeft > 0 && overRight <= 0 ) {\n\t\t\t\t\tnewOverRight = position.left + overLeft + data.collisionWidth - outerWidth -\n\t\t\t\t\t\twithinOffset;\n\t\t\t\t\tposition.left += overLeft - newOverRight;\n\n\t\t\t\t// Element is initially over right side of within\n\t\t\t\t} else if ( overRight > 0 && overLeft <= 0 ) {\n\t\t\t\t\tposition.left = withinOffset;\n\n\t\t\t\t// Element is initially over both left and right sides of within\n\t\t\t\t} else {\n\t\t\t\t\tif ( overLeft > overRight ) {\n\t\t\t\t\t\tposition.left = withinOffset + outerWidth - data.collisionWidth;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tposition.left = withinOffset;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Too far left -> align with left edge\n\t\t\t} else if ( overLeft > 0 ) {\n\t\t\t\tposition.left += overLeft;\n\n\t\t\t// Too far right -> align with right edge\n\t\t\t} else if ( overRight > 0 ) {\n\t\t\t\tposition.left -= overRight;\n\n\t\t\t// Adjust based on position and margin\n\t\t\t} else {\n\t\t\t\tposition.left = max( position.left - collisionPosLeft, position.left );\n\t\t\t}\n\t\t},\n\t\ttop: function( position, data ) {\n\t\t\tvar within = data.within,\n\t\t\t\twithinOffset = within.isWindow ? within.scrollTop : within.offset.top,\n\t\t\t\touterHeight = data.within.height,\n\t\t\t\tcollisionPosTop = position.top - data.collisionPosition.marginTop,\n\t\t\t\toverTop = withinOffset - collisionPosTop,\n\t\t\t\toverBottom = collisionPosTop + data.collisionHeight - outerHeight - withinOffset,\n\t\t\t\tnewOverBottom;\n\n\t\t\t// Element is taller than within\n\t\t\tif ( data.collisionHeight > outerHeight ) {\n\n\t\t\t\t// Element is initially over the top of within\n\t\t\t\tif ( overTop > 0 && overBottom <= 0 ) {\n\t\t\t\t\tnewOverBottom = position.top + overTop + data.collisionHeight - outerHeight -\n\t\t\t\t\t\twithinOffset;\n\t\t\t\t\tposition.top += overTop - newOverBottom;\n\n\t\t\t\t// Element is initially over bottom of within\n\t\t\t\t} else if ( overBottom > 0 && overTop <= 0 ) {\n\t\t\t\t\tposition.top = withinOffset;\n\n\t\t\t\t// Element is initially over both top and bottom of within\n\t\t\t\t} else {\n\t\t\t\t\tif ( overTop > overBottom ) {\n\t\t\t\t\t\tposition.top = withinOffset + outerHeight - data.collisionHeight;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tposition.top = withinOffset;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Too far up -> align with top\n\t\t\t} else if ( overTop > 0 ) {\n\t\t\t\tposition.top += overTop;\n\n\t\t\t// Too far down -> align with bottom edge\n\t\t\t} else if ( overBottom > 0 ) {\n\t\t\t\tposition.top -= overBottom;\n\n\t\t\t// Adjust based on position and margin\n\t\t\t} else {\n\t\t\t\tposition.top = max( position.top - collisionPosTop, position.top );\n\t\t\t}\n\t\t}\n\t},\n\tflip: {\n\t\tleft: function( position, data ) {\n\t\t\tvar within = data.within,\n\t\t\t\twithinOffset = within.offset.left + within.scrollLeft,\n\t\t\t\touterWidth = within.width,\n\t\t\t\toffsetLeft = within.isWindow ? within.scrollLeft : within.offset.left,\n\t\t\t\tcollisionPosLeft = position.left - data.collisionPosition.marginLeft,\n\t\t\t\toverLeft = collisionPosLeft - offsetLeft,\n\t\t\t\toverRight = collisionPosLeft + data.collisionWidth - outerWidth - offsetLeft,\n\t\t\t\tmyOffset = data.my[ 0 ] === \"left\" ?\n\t\t\t\t\t-data.elemWidth :\n\t\t\t\t\tdata.my[ 0 ] === \"right\" ?\n\t\t\t\t\t\tdata.elemWidth :\n\t\t\t\t\t\t0,\n\t\t\t\tatOffset = data.at[ 0 ] === \"left\" ?\n\t\t\t\t\tdata.targetWidth :\n\t\t\t\t\tdata.at[ 0 ] === \"right\" ?\n\t\t\t\t\t\t-data.targetWidth :\n\t\t\t\t\t\t0,\n\t\t\t\toffset = -2 * data.offset[ 0 ],\n\t\t\t\tnewOverRight,\n\t\t\t\tnewOverLeft;\n\n\t\t\tif ( overLeft < 0 ) {\n\t\t\t\tnewOverRight = position.left + myOffset + atOffset + offset + data.collisionWidth -\n\t\t\t\t\touterWidth - withinOffset;\n\t\t\t\tif ( newOverRight < 0 || newOverRight < abs( overLeft ) ) {\n\t\t\t\t\tposition.left += myOffset + atOffset + offset;\n\t\t\t\t}\n\t\t\t} else if ( overRight > 0 ) {\n\t\t\t\tnewOverLeft = position.left - data.collisionPosition.marginLeft + myOffset +\n\t\t\t\t\tatOffset + offset - offsetLeft;\n\t\t\t\tif ( newOverLeft > 0 || abs( newOverLeft ) < overRight ) {\n\t\t\t\t\tposition.left += myOffset + atOffset + offset;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\ttop: function( position, data ) {\n\t\t\tvar within = data.within,\n\t\t\t\twithinOffset = within.offset.top + within.scrollTop,\n\t\t\t\touterHeight = within.height,\n\t\t\t\toffsetTop = within.isWindow ? within.scrollTop : within.offset.top,\n\t\t\t\tcollisionPosTop = position.top - data.collisionPosition.marginTop,\n\t\t\t\toverTop = collisionPosTop - offsetTop,\n\t\t\t\toverBottom = collisionPosTop + data.collisionHeight - outerHeight - offsetTop,\n\t\t\t\ttop = data.my[ 1 ] === \"top\",\n\t\t\t\tmyOffset = top ?\n\t\t\t\t\t-data.elemHeight :\n\t\t\t\t\tdata.my[ 1 ] === \"bottom\" ?\n\t\t\t\t\t\tdata.elemHeight :\n\t\t\t\t\t\t0,\n\t\t\t\tatOffset = data.at[ 1 ] === \"top\" ?\n\t\t\t\t\tdata.targetHeight :\n\t\t\t\t\tdata.at[ 1 ] === \"bottom\" ?\n\t\t\t\t\t\t-data.targetHeight :\n\t\t\t\t\t\t0,\n\t\t\t\toffset = -2 * data.offset[ 1 ],\n\t\t\t\tnewOverTop,\n\t\t\t\tnewOverBottom;\n\t\t\tif ( overTop < 0 ) {\n\t\t\t\tnewOverBottom = position.top + myOffset + atOffset + offset + data.collisionHeight -\n\t\t\t\t\touterHeight - withinOffset;\n\t\t\t\tif ( newOverBottom < 0 || newOverBottom < abs( overTop ) ) {\n\t\t\t\t\tposition.top += myOffset + atOffset + offset;\n\t\t\t\t}\n\t\t\t} else if ( overBottom > 0 ) {\n\t\t\t\tnewOverTop = position.top - data.collisionPosition.marginTop + myOffset + atOffset +\n\t\t\t\t\toffset - offsetTop;\n\t\t\t\tif ( newOverTop > 0 || abs( newOverTop ) < overBottom ) {\n\t\t\t\t\tposition.top += myOffset + atOffset + offset;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tflipfit: {\n\t\tleft: function() {\n\t\t\t$.ui.position.flip.left.apply( this, arguments );\n\t\t\t$.ui.position.fit.left.apply( this, arguments );\n\t\t},\n\t\ttop: function() {\n\t\t\t$.ui.position.flip.top.apply( this, arguments );\n\t\t\t$.ui.position.fit.top.apply( this, arguments );\n\t\t}\n\t}\n};\n\n} )();\n\nvar position = $.ui.position;\n\n\n/*!\n * jQuery UI :data 1.13.3\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n//>>label: :data Selector\n//>>group: Core\n//>>description: Selects elements which have data stored under the specified key.\n//>>docs: https://api.jqueryui.com/data-selector/\n\n\nvar data = $.extend( $.expr.pseudos, {\n\tdata: $.expr.createPseudo ?\n\t\t$.expr.createPseudo( function( dataName ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn !!$.data( elem, dataName );\n\t\t\t};\n\t\t} ) :\n\n\t\t// Support: jQuery <1.8\n\t\tfunction( elem, i, match ) {\n\t\t\treturn !!$.data( elem, match[ 3 ] );\n\t\t}\n} );\n\n/*!\n * jQuery UI Disable Selection 1.13.3\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n//>>label: disableSelection\n//>>group: Core\n//>>description: Disable selection of text content within the set of matched elements.\n//>>docs: https://api.jqueryui.com/disableSelection/\n\n// This file is deprecated\n\nvar disableSelection = $.fn.extend( {\n\tdisableSelection: ( function() {\n\t\tvar eventType = \"onselectstart\" in document.createElement( \"div\" ) ?\n\t\t\t\"selectstart\" :\n\t\t\t\"mousedown\";\n\n\t\treturn function() {\n\t\t\treturn this.on( eventType + \".ui-disableSelection\", function( event ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t} );\n\t\t};\n\t} )(),\n\n\tenableSelection: function() {\n\t\treturn this.off( \".ui-disableSelection\" );\n\t}\n} );\n\n\n\n// Create a local jQuery because jQuery Color relies on it and the\n// global may not exist with AMD and a custom build (#10199).\n// This module is a noop if used as a regular AMD module.\n// eslint-disable-next-line no-unused-vars\nvar jQuery = $;\n\n\n/*!\n * jQuery Color Animations v2.2.0\n * https://github.com/jquery/jquery-color\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n *\n * Date: Sun May 10 09:02:36 2020 +0200\n */\n\n\n\n\tvar stepHooks = \"backgroundColor borderBottomColor borderLeftColor borderRightColor \" +\n\t\t\"borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor\",\n\n\tclass2type = {},\n\ttoString = class2type.toString,\n\n\t// plusequals test for += 100 -= 100\n\trplusequals = /^([\\-+])=\\s*(\\d+\\.?\\d*)/,\n\n\t// a set of RE's that can match strings and generate color tuples.\n\tstringParsers = [ {\n\t\t\tre: /rgba?\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*(?:,\\s*(\\d?(?:\\.\\d+)?)\\s*)?\\)/,\n\t\t\tparse: function( execResult ) {\n\t\t\t\treturn [\n\t\t\t\t\texecResult[ 1 ],\n\t\t\t\t\texecResult[ 2 ],\n\t\t\t\t\texecResult[ 3 ],\n\t\t\t\t\texecResult[ 4 ]\n\t\t\t\t];\n\t\t\t}\n\t\t}, {\n\t\t\tre: /rgba?\\(\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*(?:,\\s*(\\d?(?:\\.\\d+)?)\\s*)?\\)/,\n\t\t\tparse: function( execResult ) {\n\t\t\t\treturn [\n\t\t\t\t\texecResult[ 1 ] * 2.55,\n\t\t\t\t\texecResult[ 2 ] * 2.55,\n\t\t\t\t\texecResult[ 3 ] * 2.55,\n\t\t\t\t\texecResult[ 4 ]\n\t\t\t\t];\n\t\t\t}\n\t\t}, {\n\n\t\t\t// this regex ignores A-F because it's compared against an already lowercased string\n\t\t\tre: /#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})?/,\n\t\t\tparse: function( execResult ) {\n\t\t\t\treturn [\n\t\t\t\t\tparseInt( execResult[ 1 ], 16 ),\n\t\t\t\t\tparseInt( execResult[ 2 ], 16 ),\n\t\t\t\t\tparseInt( execResult[ 3 ], 16 ),\n\t\t\t\t\texecResult[ 4 ] ?\n\t\t\t\t\t\t( parseInt( execResult[ 4 ], 16 ) / 255 ).toFixed( 2 ) :\n\t\t\t\t\t\t1\n\t\t\t\t];\n\t\t\t}\n\t\t}, {\n\n\t\t\t// this regex ignores A-F because it's compared against an already lowercased string\n\t\t\tre: /#([a-f0-9])([a-f0-9])([a-f0-9])([a-f0-9])?/,\n\t\t\tparse: function( execResult ) {\n\t\t\t\treturn [\n\t\t\t\t\tparseInt( execResult[ 1 ] + execResult[ 1 ], 16 ),\n\t\t\t\t\tparseInt( execResult[ 2 ] + execResult[ 2 ], 16 ),\n\t\t\t\t\tparseInt( execResult[ 3 ] + execResult[ 3 ], 16 ),\n\t\t\t\t\texecResult[ 4 ] ?\n\t\t\t\t\t\t( parseInt( execResult[ 4 ] + execResult[ 4 ], 16 ) / 255 )\n\t\t\t\t\t\t\t.toFixed( 2 ) :\n\t\t\t\t\t\t1\n\t\t\t\t];\n\t\t\t}\n\t\t}, {\n\t\t\tre: /hsla?\\(\\s*(\\d+(?:\\.\\d+)?)\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*(?:,\\s*(\\d?(?:\\.\\d+)?)\\s*)?\\)/,\n\t\t\tspace: \"hsla\",\n\t\t\tparse: function( execResult ) {\n\t\t\t\treturn [\n\t\t\t\t\texecResult[ 1 ],\n\t\t\t\t\texecResult[ 2 ] / 100,\n\t\t\t\t\texecResult[ 3 ] / 100,\n\t\t\t\t\texecResult[ 4 ]\n\t\t\t\t];\n\t\t\t}\n\t\t} ],\n\n\t// jQuery.Color( )\n\tcolor = jQuery.Color = function( color, green, blue, alpha ) {\n\t\treturn new jQuery.Color.fn.parse( color, green, blue, alpha );\n\t},\n\tspaces = {\n\t\trgba: {\n\t\t\tprops: {\n\t\t\t\tred: {\n\t\t\t\t\tidx: 0,\n\t\t\t\t\ttype: \"byte\"\n\t\t\t\t},\n\t\t\t\tgreen: {\n\t\t\t\t\tidx: 1,\n\t\t\t\t\ttype: \"byte\"\n\t\t\t\t},\n\t\t\t\tblue: {\n\t\t\t\t\tidx: 2,\n\t\t\t\t\ttype: \"byte\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\thsla: {\n\t\t\tprops: {\n\t\t\t\thue: {\n\t\t\t\t\tidx: 0,\n\t\t\t\t\ttype: \"degrees\"\n\t\t\t\t},\n\t\t\t\tsaturation: {\n\t\t\t\t\tidx: 1,\n\t\t\t\t\ttype: \"percent\"\n\t\t\t\t},\n\t\t\t\tlightness: {\n\t\t\t\t\tidx: 2,\n\t\t\t\t\ttype: \"percent\"\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tpropTypes = {\n\t\t\"byte\": {\n\t\t\tfloor: true,\n\t\t\tmax: 255\n\t\t},\n\t\t\"percent\": {\n\t\t\tmax: 1\n\t\t},\n\t\t\"degrees\": {\n\t\t\tmod: 360,\n\t\t\tfloor: true\n\t\t}\n\t},\n\tsupport = color.support = {},\n\n\t// element for support tests\n\tsupportElem = jQuery( \"

            \" )[ 0 ],\n\n\t// colors = jQuery.Color.names\n\tcolors,\n\n\t// local aliases of functions called often\n\teach = jQuery.each;\n\n// determine rgba support immediately\nsupportElem.style.cssText = \"background-color:rgba(1,1,1,.5)\";\nsupport.rgba = supportElem.style.backgroundColor.indexOf( \"rgba\" ) > -1;\n\n// define cache name and alpha properties\n// for rgba and hsla spaces\neach( spaces, function( spaceName, space ) {\n\tspace.cache = \"_\" + spaceName;\n\tspace.props.alpha = {\n\t\tidx: 3,\n\t\ttype: \"percent\",\n\t\tdef: 1\n\t};\n} );\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\n\tfunction( _i, name ) {\n\t\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n\t} );\n\nfunction getType( obj ) {\n\tif ( obj == null ) {\n\t\treturn obj + \"\";\n\t}\n\n\treturn typeof obj === \"object\" ?\n\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\ttypeof obj;\n}\n\nfunction clamp( value, prop, allowEmpty ) {\n\tvar type = propTypes[ prop.type ] || {};\n\n\tif ( value == null ) {\n\t\treturn ( allowEmpty || !prop.def ) ? null : prop.def;\n\t}\n\n\t// ~~ is an short way of doing floor for positive numbers\n\tvalue = type.floor ? ~~value : parseFloat( value );\n\n\t// IE will pass in empty strings as value for alpha,\n\t// which will hit this case\n\tif ( isNaN( value ) ) {\n\t\treturn prop.def;\n\t}\n\n\tif ( type.mod ) {\n\n\t\t// we add mod before modding to make sure that negatives values\n\t\t// get converted properly: -10 -> 350\n\t\treturn ( value + type.mod ) % type.mod;\n\t}\n\n\t// for now all property types without mod have min and max\n\treturn Math.min( type.max, Math.max( 0, value ) );\n}\n\nfunction stringParse( string ) {\n\tvar inst = color(),\n\t\trgba = inst._rgba = [];\n\n\tstring = string.toLowerCase();\n\n\teach( stringParsers, function( _i, parser ) {\n\t\tvar parsed,\n\t\t\tmatch = parser.re.exec( string ),\n\t\t\tvalues = match && parser.parse( match ),\n\t\t\tspaceName = parser.space || \"rgba\";\n\n\t\tif ( values ) {\n\t\t\tparsed = inst[ spaceName ]( values );\n\n\t\t\t// if this was an rgba parse the assignment might happen twice\n\t\t\t// oh well....\n\t\t\tinst[ spaces[ spaceName ].cache ] = parsed[ spaces[ spaceName ].cache ];\n\t\t\trgba = inst._rgba = parsed._rgba;\n\n\t\t\t// exit each( stringParsers ) here because we matched\n\t\t\treturn false;\n\t\t}\n\t} );\n\n\t// Found a stringParser that handled it\n\tif ( rgba.length ) {\n\n\t\t// if this came from a parsed string, force \"transparent\" when alpha is 0\n\t\t// chrome, (and maybe others) return \"transparent\" as rgba(0,0,0,0)\n\t\tif ( rgba.join() === \"0,0,0,0\" ) {\n\t\t\tjQuery.extend( rgba, colors.transparent );\n\t\t}\n\t\treturn inst;\n\t}\n\n\t// named colors\n\treturn colors[ string ];\n}\n\ncolor.fn = jQuery.extend( color.prototype, {\n\tparse: function( red, green, blue, alpha ) {\n\t\tif ( red === undefined ) {\n\t\t\tthis._rgba = [ null, null, null, null ];\n\t\t\treturn this;\n\t\t}\n\t\tif ( red.jquery || red.nodeType ) {\n\t\t\tred = jQuery( red ).css( green );\n\t\t\tgreen = undefined;\n\t\t}\n\n\t\tvar inst = this,\n\t\t\ttype = getType( red ),\n\t\t\trgba = this._rgba = [];\n\n\t\t// more than 1 argument specified - assume ( red, green, blue, alpha )\n\t\tif ( green !== undefined ) {\n\t\t\tred = [ red, green, blue, alpha ];\n\t\t\ttype = \"array\";\n\t\t}\n\n\t\tif ( type === \"string\" ) {\n\t\t\treturn this.parse( stringParse( red ) || colors._default );\n\t\t}\n\n\t\tif ( type === \"array\" ) {\n\t\t\teach( spaces.rgba.props, function( _key, prop ) {\n\t\t\t\trgba[ prop.idx ] = clamp( red[ prop.idx ], prop );\n\t\t\t} );\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( type === \"object\" ) {\n\t\t\tif ( red instanceof color ) {\n\t\t\t\teach( spaces, function( _spaceName, space ) {\n\t\t\t\t\tif ( red[ space.cache ] ) {\n\t\t\t\t\t\tinst[ space.cache ] = red[ space.cache ].slice();\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t} else {\n\t\t\t\teach( spaces, function( _spaceName, space ) {\n\t\t\t\t\tvar cache = space.cache;\n\t\t\t\t\teach( space.props, function( key, prop ) {\n\n\t\t\t\t\t\t// if the cache doesn't exist, and we know how to convert\n\t\t\t\t\t\tif ( !inst[ cache ] && space.to ) {\n\n\t\t\t\t\t\t\t// if the value was null, we don't need to copy it\n\t\t\t\t\t\t\t// if the key was alpha, we don't need to copy it either\n\t\t\t\t\t\t\tif ( key === \"alpha\" || red[ key ] == null ) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tinst[ cache ] = space.to( inst._rgba );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// this is the only case where we allow nulls for ALL properties.\n\t\t\t\t\t\t// call clamp with alwaysAllowEmpty\n\t\t\t\t\t\tinst[ cache ][ prop.idx ] = clamp( red[ key ], prop, true );\n\t\t\t\t\t} );\n\n\t\t\t\t\t// everything defined but alpha?\n\t\t\t\t\tif ( inst[ cache ] && jQuery.inArray( null, inst[ cache ].slice( 0, 3 ) ) < 0 ) {\n\n\t\t\t\t\t\t// use the default of 1\n\t\t\t\t\t\tif ( inst[ cache ][ 3 ] == null ) {\n\t\t\t\t\t\t\tinst[ cache ][ 3 ] = 1;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( space.from ) {\n\t\t\t\t\t\t\tinst._rgba = space.from( inst[ cache ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t},\n\tis: function( compare ) {\n\t\tvar is = color( compare ),\n\t\t\tsame = true,\n\t\t\tinst = this;\n\n\t\teach( spaces, function( _, space ) {\n\t\t\tvar localCache,\n\t\t\t\tisCache = is[ space.cache ];\n\t\t\tif ( isCache ) {\n\t\t\t\tlocalCache = inst[ space.cache ] || space.to && space.to( inst._rgba ) || [];\n\t\t\t\teach( space.props, function( _, prop ) {\n\t\t\t\t\tif ( isCache[ prop.idx ] != null ) {\n\t\t\t\t\t\tsame = ( isCache[ prop.idx ] === localCache[ prop.idx ] );\n\t\t\t\t\t\treturn same;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t}\n\t\t\treturn same;\n\t\t} );\n\t\treturn same;\n\t},\n\t_space: function() {\n\t\tvar used = [],\n\t\t\tinst = this;\n\t\teach( spaces, function( spaceName, space ) {\n\t\t\tif ( inst[ space.cache ] ) {\n\t\t\t\tused.push( spaceName );\n\t\t\t}\n\t\t} );\n\t\treturn used.pop();\n\t},\n\ttransition: function( other, distance ) {\n\t\tvar end = color( other ),\n\t\t\tspaceName = end._space(),\n\t\t\tspace = spaces[ spaceName ],\n\t\t\tstartColor = this.alpha() === 0 ? color( \"transparent\" ) : this,\n\t\t\tstart = startColor[ space.cache ] || space.to( startColor._rgba ),\n\t\t\tresult = start.slice();\n\n\t\tend = end[ space.cache ];\n\t\teach( space.props, function( _key, prop ) {\n\t\t\tvar index = prop.idx,\n\t\t\t\tstartValue = start[ index ],\n\t\t\t\tendValue = end[ index ],\n\t\t\t\ttype = propTypes[ prop.type ] || {};\n\n\t\t\t// if null, don't override start value\n\t\t\tif ( endValue === null ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// if null - use end\n\t\t\tif ( startValue === null ) {\n\t\t\t\tresult[ index ] = endValue;\n\t\t\t} else {\n\t\t\t\tif ( type.mod ) {\n\t\t\t\t\tif ( endValue - startValue > type.mod / 2 ) {\n\t\t\t\t\t\tstartValue += type.mod;\n\t\t\t\t\t} else if ( startValue - endValue > type.mod / 2 ) {\n\t\t\t\t\t\tstartValue -= type.mod;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tresult[ index ] = clamp( ( endValue - startValue ) * distance + startValue, prop );\n\t\t\t}\n\t\t} );\n\t\treturn this[ spaceName ]( result );\n\t},\n\tblend: function( opaque ) {\n\n\t\t// if we are already opaque - return ourself\n\t\tif ( this._rgba[ 3 ] === 1 ) {\n\t\t\treturn this;\n\t\t}\n\n\t\tvar rgb = this._rgba.slice(),\n\t\t\ta = rgb.pop(),\n\t\t\tblend = color( opaque )._rgba;\n\n\t\treturn color( jQuery.map( rgb, function( v, i ) {\n\t\t\treturn ( 1 - a ) * blend[ i ] + a * v;\n\t\t} ) );\n\t},\n\ttoRgbaString: function() {\n\t\tvar prefix = \"rgba(\",\n\t\t\trgba = jQuery.map( this._rgba, function( v, i ) {\n\t\t\t\tif ( v != null ) {\n\t\t\t\t\treturn v;\n\t\t\t\t}\n\t\t\t\treturn i > 2 ? 1 : 0;\n\t\t\t} );\n\n\t\tif ( rgba[ 3 ] === 1 ) {\n\t\t\trgba.pop();\n\t\t\tprefix = \"rgb(\";\n\t\t}\n\n\t\treturn prefix + rgba.join() + \")\";\n\t},\n\ttoHslaString: function() {\n\t\tvar prefix = \"hsla(\",\n\t\t\thsla = jQuery.map( this.hsla(), function( v, i ) {\n\t\t\t\tif ( v == null ) {\n\t\t\t\t\tv = i > 2 ? 1 : 0;\n\t\t\t\t}\n\n\t\t\t\t// catch 1 and 2\n\t\t\t\tif ( i && i < 3 ) {\n\t\t\t\t\tv = Math.round( v * 100 ) + \"%\";\n\t\t\t\t}\n\t\t\t\treturn v;\n\t\t\t} );\n\n\t\tif ( hsla[ 3 ] === 1 ) {\n\t\t\thsla.pop();\n\t\t\tprefix = \"hsl(\";\n\t\t}\n\t\treturn prefix + hsla.join() + \")\";\n\t},\n\ttoHexString: function( includeAlpha ) {\n\t\tvar rgba = this._rgba.slice(),\n\t\t\talpha = rgba.pop();\n\n\t\tif ( includeAlpha ) {\n\t\t\trgba.push( ~~( alpha * 255 ) );\n\t\t}\n\n\t\treturn \"#\" + jQuery.map( rgba, function( v ) {\n\n\t\t\t// default to 0 when nulls exist\n\t\t\tv = ( v || 0 ).toString( 16 );\n\t\t\treturn v.length === 1 ? \"0\" + v : v;\n\t\t} ).join( \"\" );\n\t},\n\ttoString: function() {\n\t\treturn this._rgba[ 3 ] === 0 ? \"transparent\" : this.toRgbaString();\n\t}\n} );\ncolor.fn.parse.prototype = color.fn;\n\n// hsla conversions adapted from:\n// https://code.google.com/p/maashaack/source/browse/packages/graphics/trunk/src/graphics/colors/HUE2RGB.as?r=5021\n\nfunction hue2rgb( p, q, h ) {\n\th = ( h + 1 ) % 1;\n\tif ( h * 6 < 1 ) {\n\t\treturn p + ( q - p ) * h * 6;\n\t}\n\tif ( h * 2 < 1 ) {\n\t\treturn q;\n\t}\n\tif ( h * 3 < 2 ) {\n\t\treturn p + ( q - p ) * ( ( 2 / 3 ) - h ) * 6;\n\t}\n\treturn p;\n}\n\nspaces.hsla.to = function( rgba ) {\n\tif ( rgba[ 0 ] == null || rgba[ 1 ] == null || rgba[ 2 ] == null ) {\n\t\treturn [ null, null, null, rgba[ 3 ] ];\n\t}\n\tvar r = rgba[ 0 ] / 255,\n\t\tg = rgba[ 1 ] / 255,\n\t\tb = rgba[ 2 ] / 255,\n\t\ta = rgba[ 3 ],\n\t\tmax = Math.max( r, g, b ),\n\t\tmin = Math.min( r, g, b ),\n\t\tdiff = max - min,\n\t\tadd = max + min,\n\t\tl = add * 0.5,\n\t\th, s;\n\n\tif ( min === max ) {\n\t\th = 0;\n\t} else if ( r === max ) {\n\t\th = ( 60 * ( g - b ) / diff ) + 360;\n\t} else if ( g === max ) {\n\t\th = ( 60 * ( b - r ) / diff ) + 120;\n\t} else {\n\t\th = ( 60 * ( r - g ) / diff ) + 240;\n\t}\n\n\t// chroma (diff) == 0 means greyscale which, by definition, saturation = 0%\n\t// otherwise, saturation is based on the ratio of chroma (diff) to lightness (add)\n\tif ( diff === 0 ) {\n\t\ts = 0;\n\t} else if ( l <= 0.5 ) {\n\t\ts = diff / add;\n\t} else {\n\t\ts = diff / ( 2 - add );\n\t}\n\treturn [ Math.round( h ) % 360, s, l, a == null ? 1 : a ];\n};\n\nspaces.hsla.from = function( hsla ) {\n\tif ( hsla[ 0 ] == null || hsla[ 1 ] == null || hsla[ 2 ] == null ) {\n\t\treturn [ null, null, null, hsla[ 3 ] ];\n\t}\n\tvar h = hsla[ 0 ] / 360,\n\t\ts = hsla[ 1 ],\n\t\tl = hsla[ 2 ],\n\t\ta = hsla[ 3 ],\n\t\tq = l <= 0.5 ? l * ( 1 + s ) : l + s - l * s,\n\t\tp = 2 * l - q;\n\n\treturn [\n\t\tMath.round( hue2rgb( p, q, h + ( 1 / 3 ) ) * 255 ),\n\t\tMath.round( hue2rgb( p, q, h ) * 255 ),\n\t\tMath.round( hue2rgb( p, q, h - ( 1 / 3 ) ) * 255 ),\n\t\ta\n\t];\n};\n\n\neach( spaces, function( spaceName, space ) {\n\tvar props = space.props,\n\t\tcache = space.cache,\n\t\tto = space.to,\n\t\tfrom = space.from;\n\n\t// makes rgba() and hsla()\n\tcolor.fn[ spaceName ] = function( value ) {\n\n\t\t// generate a cache for this space if it doesn't exist\n\t\tif ( to && !this[ cache ] ) {\n\t\t\tthis[ cache ] = to( this._rgba );\n\t\t}\n\t\tif ( value === undefined ) {\n\t\t\treturn this[ cache ].slice();\n\t\t}\n\n\t\tvar ret,\n\t\t\ttype = getType( value ),\n\t\t\tarr = ( type === \"array\" || type === \"object\" ) ? value : arguments,\n\t\t\tlocal = this[ cache ].slice();\n\n\t\teach( props, function( key, prop ) {\n\t\t\tvar val = arr[ type === \"object\" ? key : prop.idx ];\n\t\t\tif ( val == null ) {\n\t\t\t\tval = local[ prop.idx ];\n\t\t\t}\n\t\t\tlocal[ prop.idx ] = clamp( val, prop );\n\t\t} );\n\n\t\tif ( from ) {\n\t\t\tret = color( from( local ) );\n\t\t\tret[ cache ] = local;\n\t\t\treturn ret;\n\t\t} else {\n\t\t\treturn color( local );\n\t\t}\n\t};\n\n\t// makes red() green() blue() alpha() hue() saturation() lightness()\n\teach( props, function( key, prop ) {\n\n\t\t// alpha is included in more than one space\n\t\tif ( color.fn[ key ] ) {\n\t\t\treturn;\n\t\t}\n\t\tcolor.fn[ key ] = function( value ) {\n\t\t\tvar local, cur, match, fn,\n\t\t\t\tvtype = getType( value );\n\n\t\t\tif ( key === \"alpha\" ) {\n\t\t\t\tfn = this._hsla ? \"hsla\" : \"rgba\";\n\t\t\t} else {\n\t\t\t\tfn = spaceName;\n\t\t\t}\n\t\t\tlocal = this[ fn ]();\n\t\t\tcur = local[ prop.idx ];\n\n\t\t\tif ( vtype === \"undefined\" ) {\n\t\t\t\treturn cur;\n\t\t\t}\n\n\t\t\tif ( vtype === \"function\" ) {\n\t\t\t\tvalue = value.call( this, cur );\n\t\t\t\tvtype = getType( value );\n\t\t\t}\n\t\t\tif ( value == null && prop.empty ) {\n\t\t\t\treturn this;\n\t\t\t}\n\t\t\tif ( vtype === \"string\" ) {\n\t\t\t\tmatch = rplusequals.exec( value );\n\t\t\t\tif ( match ) {\n\t\t\t\t\tvalue = cur + parseFloat( match[ 2 ] ) * ( match[ 1 ] === \"+\" ? 1 : -1 );\n\t\t\t\t}\n\t\t\t}\n\t\t\tlocal[ prop.idx ] = value;\n\t\t\treturn this[ fn ]( local );\n\t\t};\n\t} );\n} );\n\n// add cssHook and .fx.step function for each named hook.\n// accept a space separated string of properties\ncolor.hook = function( hook ) {\n\tvar hooks = hook.split( \" \" );\n\teach( hooks, function( _i, hook ) {\n\t\tjQuery.cssHooks[ hook ] = {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar parsed, curElem,\n\t\t\t\t\tbackgroundColor = \"\";\n\n\t\t\t\tif ( value !== \"transparent\" && ( getType( value ) !== \"string\" || ( parsed = stringParse( value ) ) ) ) {\n\t\t\t\t\tvalue = color( parsed || value );\n\t\t\t\t\tif ( !support.rgba && value._rgba[ 3 ] !== 1 ) {\n\t\t\t\t\t\tcurElem = hook === \"backgroundColor\" ? elem.parentNode : elem;\n\t\t\t\t\t\twhile (\n\t\t\t\t\t\t\t( backgroundColor === \"\" || backgroundColor === \"transparent\" ) &&\n\t\t\t\t\t\t\tcurElem && curElem.style\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tbackgroundColor = jQuery.css( curElem, \"backgroundColor\" );\n\t\t\t\t\t\t\t\tcurElem = curElem.parentNode;\n\t\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvalue = value.blend( backgroundColor && backgroundColor !== \"transparent\" ?\n\t\t\t\t\t\t\tbackgroundColor :\n\t\t\t\t\t\t\t\"_default\" );\n\t\t\t\t\t}\n\n\t\t\t\t\tvalue = value.toRgbaString();\n\t\t\t\t}\n\t\t\t\ttry {\n\t\t\t\t\telem.style[ hook ] = value;\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// wrapped to prevent IE from throwing errors on \"invalid\" values like 'auto' or 'inherit'\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\tjQuery.fx.step[ hook ] = function( fx ) {\n\t\t\tif ( !fx.colorInit ) {\n\t\t\t\tfx.start = color( fx.elem, hook );\n\t\t\t\tfx.end = color( fx.end );\n\t\t\t\tfx.colorInit = true;\n\t\t\t}\n\t\t\tjQuery.cssHooks[ hook ].set( fx.elem, fx.start.transition( fx.end, fx.pos ) );\n\t\t};\n\t} );\n\n};\n\ncolor.hook( stepHooks );\n\njQuery.cssHooks.borderColor = {\n\texpand: function( value ) {\n\t\tvar expanded = {};\n\n\t\teach( [ \"Top\", \"Right\", \"Bottom\", \"Left\" ], function( _i, part ) {\n\t\t\texpanded[ \"border\" + part + \"Color\" ] = value;\n\t\t} );\n\t\treturn expanded;\n\t}\n};\n\n// Basic color names only.\n// Usage of any of the other color names requires adding yourself or including\n// jquery.color.svg-names.js.\ncolors = jQuery.Color.names = {\n\n\t// 4.1. Basic color keywords\n\taqua: \"#00ffff\",\n\tblack: \"#000000\",\n\tblue: \"#0000ff\",\n\tfuchsia: \"#ff00ff\",\n\tgray: \"#808080\",\n\tgreen: \"#008000\",\n\tlime: \"#00ff00\",\n\tmaroon: \"#800000\",\n\tnavy: \"#000080\",\n\tolive: \"#808000\",\n\tpurple: \"#800080\",\n\tred: \"#ff0000\",\n\tsilver: \"#c0c0c0\",\n\tteal: \"#008080\",\n\twhite: \"#ffffff\",\n\tyellow: \"#ffff00\",\n\n\t// 4.2.3. \"transparent\" color keyword\n\ttransparent: [ null, null, null, 0 ],\n\n\t_default: \"#ffffff\"\n};\n\n\n/*!\n * jQuery UI Effects 1.13.3\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n//>>label: Effects Core\n//>>group: Effects\n/* eslint-disable max-len */\n//>>description: Extends the internal jQuery effects. Includes morphing and easing. Required by all other effects.\n/* eslint-enable max-len */\n//>>docs: https://api.jqueryui.com/category/effects-core/\n//>>demos: https://jqueryui.com/effect/\n\n\nvar dataSpace = \"ui-effects-\",\n\tdataSpaceStyle = \"ui-effects-style\",\n\tdataSpaceAnimated = \"ui-effects-animated\";\n\n$.effects = {\n\teffect: {}\n};\n\n/******************************************************************************/\n/****************************** CLASS ANIMATIONS ******************************/\n/******************************************************************************/\n( function() {\n\nvar classAnimationActions = [ \"add\", \"remove\", \"toggle\" ],\n\tshorthandStyles = {\n\t\tborder: 1,\n\t\tborderBottom: 1,\n\t\tborderColor: 1,\n\t\tborderLeft: 1,\n\t\tborderRight: 1,\n\t\tborderTop: 1,\n\t\tborderWidth: 1,\n\t\tmargin: 1,\n\t\tpadding: 1\n\t};\n\n$.each(\n\t[ \"borderLeftStyle\", \"borderRightStyle\", \"borderBottomStyle\", \"borderTopStyle\" ],\n\tfunction( _, prop ) {\n\t\t$.fx.step[ prop ] = function( fx ) {\n\t\t\tif ( fx.end !== \"none\" && !fx.setAttr || fx.pos === 1 && !fx.setAttr ) {\n\t\t\t\tjQuery.style( fx.elem, prop, fx.end );\n\t\t\t\tfx.setAttr = true;\n\t\t\t}\n\t\t};\n\t}\n);\n\nfunction camelCase( string ) {\n\treturn string.replace( /-([\\da-z])/gi, function( all, letter ) {\n\t\treturn letter.toUpperCase();\n\t} );\n}\n\nfunction getElementStyles( elem ) {\n\tvar key, len,\n\t\tstyle = elem.ownerDocument.defaultView ?\n\t\t\telem.ownerDocument.defaultView.getComputedStyle( elem, null ) :\n\t\t\telem.currentStyle,\n\t\tstyles = {};\n\n\tif ( style && style.length && style[ 0 ] && style[ style[ 0 ] ] ) {\n\t\tlen = style.length;\n\t\twhile ( len-- ) {\n\t\t\tkey = style[ len ];\n\t\t\tif ( typeof style[ key ] === \"string\" ) {\n\t\t\t\tstyles[ camelCase( key ) ] = style[ key ];\n\t\t\t}\n\t\t}\n\n\t// Support: Opera, IE <9\n\t} else {\n\t\tfor ( key in style ) {\n\t\t\tif ( typeof style[ key ] === \"string\" ) {\n\t\t\t\tstyles[ key ] = style[ key ];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn styles;\n}\n\nfunction styleDifference( oldStyle, newStyle ) {\n\tvar diff = {},\n\t\tname, value;\n\n\tfor ( name in newStyle ) {\n\t\tvalue = newStyle[ name ];\n\t\tif ( oldStyle[ name ] !== value ) {\n\t\t\tif ( !shorthandStyles[ name ] ) {\n\t\t\t\tif ( $.fx.step[ name ] || !isNaN( parseFloat( value ) ) ) {\n\t\t\t\t\tdiff[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn diff;\n}\n\n// Support: jQuery <1.8\nif ( !$.fn.addBack ) {\n\t$.fn.addBack = function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t};\n}\n\n$.effects.animateClass = function( value, duration, easing, callback ) {\n\tvar o = $.speed( duration, easing, callback );\n\n\treturn this.queue( function() {\n\t\tvar animated = $( this ),\n\t\t\tbaseClass = animated.attr( \"class\" ) || \"\",\n\t\t\tapplyClassChange,\n\t\t\tallAnimations = o.children ? animated.find( \"*\" ).addBack() : animated;\n\n\t\t// Map the animated objects to store the original styles.\n\t\tallAnimations = allAnimations.map( function() {\n\t\t\tvar el = $( this );\n\t\t\treturn {\n\t\t\t\tel: el,\n\t\t\t\tstart: getElementStyles( this )\n\t\t\t};\n\t\t} );\n\n\t\t// Apply class change\n\t\tapplyClassChange = function() {\n\t\t\t$.each( classAnimationActions, function( i, action ) {\n\t\t\t\tif ( value[ action ] ) {\n\t\t\t\t\tanimated[ action + \"Class\" ]( value[ action ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t};\n\t\tapplyClassChange();\n\n\t\t// Map all animated objects again - calculate new styles and diff\n\t\tallAnimations = allAnimations.map( function() {\n\t\t\tthis.end = getElementStyles( this.el[ 0 ] );\n\t\t\tthis.diff = styleDifference( this.start, this.end );\n\t\t\treturn this;\n\t\t} );\n\n\t\t// Apply original class\n\t\tanimated.attr( \"class\", baseClass );\n\n\t\t// Map all animated objects again - this time collecting a promise\n\t\tallAnimations = allAnimations.map( function() {\n\t\t\tvar styleInfo = this,\n\t\t\t\tdfd = $.Deferred(),\n\t\t\t\topts = $.extend( {}, o, {\n\t\t\t\t\tqueue: false,\n\t\t\t\t\tcomplete: function() {\n\t\t\t\t\t\tdfd.resolve( styleInfo );\n\t\t\t\t\t}\n\t\t\t\t} );\n\n\t\t\tthis.el.animate( this.diff, opts );\n\t\t\treturn dfd.promise();\n\t\t} );\n\n\t\t// Once all animations have completed:\n\t\t$.when.apply( $, allAnimations.get() ).done( function() {\n\n\t\t\t// Set the final class\n\t\t\tapplyClassChange();\n\n\t\t\t// For each animated element,\n\t\t\t// clear all css properties that were animated\n\t\t\t$.each( arguments, function() {\n\t\t\t\tvar el = this.el;\n\t\t\t\t$.each( this.diff, function( key ) {\n\t\t\t\t\tel.css( key, \"\" );\n\t\t\t\t} );\n\t\t\t} );\n\n\t\t\t// This is guarnteed to be there if you use jQuery.speed()\n\t\t\t// it also handles dequeuing the next anim...\n\t\t\to.complete.call( animated[ 0 ] );\n\t\t} );\n\t} );\n};\n\n$.fn.extend( {\n\taddClass: ( function( orig ) {\n\t\treturn function( classNames, speed, easing, callback ) {\n\t\t\treturn speed ?\n\t\t\t\t$.effects.animateClass.call( this,\n\t\t\t\t\t{ add: classNames }, speed, easing, callback ) :\n\t\t\t\torig.apply( this, arguments );\n\t\t};\n\t} )( $.fn.addClass ),\n\n\tremoveClass: ( function( orig ) {\n\t\treturn function( classNames, speed, easing, callback ) {\n\t\t\treturn arguments.length > 1 ?\n\t\t\t\t$.effects.animateClass.call( this,\n\t\t\t\t\t{ remove: classNames }, speed, easing, callback ) :\n\t\t\t\torig.apply( this, arguments );\n\t\t};\n\t} )( $.fn.removeClass ),\n\n\ttoggleClass: ( function( orig ) {\n\t\treturn function( classNames, force, speed, easing, callback ) {\n\t\t\tif ( typeof force === \"boolean\" || force === undefined ) {\n\t\t\t\tif ( !speed ) {\n\n\t\t\t\t\t// Without speed parameter\n\t\t\t\t\treturn orig.apply( this, arguments );\n\t\t\t\t} else {\n\t\t\t\t\treturn $.effects.animateClass.call( this,\n\t\t\t\t\t\t( force ? { add: classNames } : { remove: classNames } ),\n\t\t\t\t\t\tspeed, easing, callback );\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Without force parameter\n\t\t\t\treturn $.effects.animateClass.call( this,\n\t\t\t\t\t{ toggle: classNames }, force, speed, easing );\n\t\t\t}\n\t\t};\n\t} )( $.fn.toggleClass ),\n\n\tswitchClass: function( remove, add, speed, easing, callback ) {\n\t\treturn $.effects.animateClass.call( this, {\n\t\t\tadd: add,\n\t\t\tremove: remove\n\t\t}, speed, easing, callback );\n\t}\n} );\n\n} )();\n\n/******************************************************************************/\n/*********************************** EFFECTS **********************************/\n/******************************************************************************/\n\n( function() {\n\nif ( $.expr && $.expr.pseudos && $.expr.pseudos.animated ) {\n\t$.expr.pseudos.animated = ( function( orig ) {\n\t\treturn function( elem ) {\n\t\t\treturn !!$( elem ).data( dataSpaceAnimated ) || orig( elem );\n\t\t};\n\t} )( $.expr.pseudos.animated );\n}\n\nif ( $.uiBackCompat !== false ) {\n\t$.extend( $.effects, {\n\n\t\t// Saves a set of properties in a data storage\n\t\tsave: function( element, set ) {\n\t\t\tvar i = 0, length = set.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( set[ i ] !== null ) {\n\t\t\t\t\telement.data( dataSpace + set[ i ], element[ 0 ].style[ set[ i ] ] );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Restores a set of previously saved properties from a data storage\n\t\trestore: function( element, set ) {\n\t\t\tvar val, i = 0, length = set.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( set[ i ] !== null ) {\n\t\t\t\t\tval = element.data( dataSpace + set[ i ] );\n\t\t\t\t\telement.css( set[ i ], val );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tsetMode: function( el, mode ) {\n\t\t\tif ( mode === \"toggle\" ) {\n\t\t\t\tmode = el.is( \":hidden\" ) ? \"show\" : \"hide\";\n\t\t\t}\n\t\t\treturn mode;\n\t\t},\n\n\t\t// Wraps the element around a wrapper that copies position properties\n\t\tcreateWrapper: function( element ) {\n\n\t\t\t// If the element is already wrapped, return it\n\t\t\tif ( element.parent().is( \".ui-effects-wrapper\" ) ) {\n\t\t\t\treturn element.parent();\n\t\t\t}\n\n\t\t\t// Wrap the element\n\t\t\tvar props = {\n\t\t\t\t\twidth: element.outerWidth( true ),\n\t\t\t\t\theight: element.outerHeight( true ),\n\t\t\t\t\t\"float\": element.css( \"float\" )\n\t\t\t\t},\n\t\t\t\twrapper = $( \"

            \" )\n\t\t\t\t\t.addClass( \"ui-effects-wrapper\" )\n\t\t\t\t\t.css( {\n\t\t\t\t\t\tfontSize: \"100%\",\n\t\t\t\t\t\tbackground: \"transparent\",\n\t\t\t\t\t\tborder: \"none\",\n\t\t\t\t\t\tmargin: 0,\n\t\t\t\t\t\tpadding: 0\n\t\t\t\t\t} ),\n\n\t\t\t\t// Store the size in case width/height are defined in % - Fixes #5245\n\t\t\t\tsize = {\n\t\t\t\t\twidth: element.width(),\n\t\t\t\t\theight: element.height()\n\t\t\t\t},\n\t\t\t\tactive = document.activeElement;\n\n\t\t\t// Support: Firefox\n\t\t\t// Firefox incorrectly exposes anonymous content\n\t\t\t// https://bugzilla.mozilla.org/show_bug.cgi?id=561664\n\t\t\ttry {\n\t\t\t\t// eslint-disable-next-line no-unused-expressions\n\t\t\t\tactive.id;\n\t\t\t} catch ( e ) {\n\t\t\t\tactive = document.body;\n\t\t\t}\n\n\t\t\telement.wrap( wrapper );\n\n\t\t\t// Fixes #7595 - Elements lose focus when wrapped.\n\t\t\tif ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) {\n\t\t\t\t$( active ).trigger( \"focus\" );\n\t\t\t}\n\n\t\t\t// Hotfix for jQuery 1.4 since some change in wrap() seems to actually\n\t\t\t// lose the reference to the wrapped element\n\t\t\twrapper = element.parent();\n\n\t\t\t// Transfer positioning properties to the wrapper\n\t\t\tif ( element.css( \"position\" ) === \"static\" ) {\n\t\t\t\twrapper.css( { position: \"relative\" } );\n\t\t\t\telement.css( { position: \"relative\" } );\n\t\t\t} else {\n\t\t\t\t$.extend( props, {\n\t\t\t\t\tposition: element.css( \"position\" ),\n\t\t\t\t\tzIndex: element.css( \"z-index\" )\n\t\t\t\t} );\n\t\t\t\t$.each( [ \"top\", \"left\", \"bottom\", \"right\" ], function( i, pos ) {\n\t\t\t\t\tprops[ pos ] = element.css( pos );\n\t\t\t\t\tif ( isNaN( parseInt( props[ pos ], 10 ) ) ) {\n\t\t\t\t\t\tprops[ pos ] = \"auto\";\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\telement.css( {\n\t\t\t\t\tposition: \"relative\",\n\t\t\t\t\ttop: 0,\n\t\t\t\t\tleft: 0,\n\t\t\t\t\tright: \"auto\",\n\t\t\t\t\tbottom: \"auto\"\n\t\t\t\t} );\n\t\t\t}\n\t\t\telement.css( size );\n\n\t\t\treturn wrapper.css( props ).show();\n\t\t},\n\n\t\tremoveWrapper: function( element ) {\n\t\t\tvar active = document.activeElement;\n\n\t\t\tif ( element.parent().is( \".ui-effects-wrapper\" ) ) {\n\t\t\t\telement.parent().replaceWith( element );\n\n\t\t\t\t// Fixes #7595 - Elements lose focus when wrapped.\n\t\t\t\tif ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) {\n\t\t\t\t\t$( active ).trigger( \"focus\" );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn element;\n\t\t}\n\t} );\n}\n\n$.extend( $.effects, {\n\tversion: \"1.13.3\",\n\n\tdefine: function( name, mode, effect ) {\n\t\tif ( !effect ) {\n\t\t\teffect = mode;\n\t\t\tmode = \"effect\";\n\t\t}\n\n\t\t$.effects.effect[ name ] = effect;\n\t\t$.effects.effect[ name ].mode = mode;\n\n\t\treturn effect;\n\t},\n\n\tscaledDimensions: function( element, percent, direction ) {\n\t\tif ( percent === 0 ) {\n\t\t\treturn {\n\t\t\t\theight: 0,\n\t\t\t\twidth: 0,\n\t\t\t\touterHeight: 0,\n\t\t\t\touterWidth: 0\n\t\t\t};\n\t\t}\n\n\t\tvar x = direction !== \"horizontal\" ? ( ( percent || 100 ) / 100 ) : 1,\n\t\t\ty = direction !== \"vertical\" ? ( ( percent || 100 ) / 100 ) : 1;\n\n\t\treturn {\n\t\t\theight: element.height() * y,\n\t\t\twidth: element.width() * x,\n\t\t\touterHeight: element.outerHeight() * y,\n\t\t\touterWidth: element.outerWidth() * x\n\t\t};\n\n\t},\n\n\tclipToBox: function( animation ) {\n\t\treturn {\n\t\t\twidth: animation.clip.right - animation.clip.left,\n\t\t\theight: animation.clip.bottom - animation.clip.top,\n\t\t\tleft: animation.clip.left,\n\t\t\ttop: animation.clip.top\n\t\t};\n\t},\n\n\t// Injects recently queued functions to be first in line (after \"inprogress\")\n\tunshift: function( element, queueLength, count ) {\n\t\tvar queue = element.queue();\n\n\t\tif ( queueLength > 1 ) {\n\t\t\tqueue.splice.apply( queue,\n\t\t\t\t[ 1, 0 ].concat( queue.splice( queueLength, count ) ) );\n\t\t}\n\t\telement.dequeue();\n\t},\n\n\tsaveStyle: function( element ) {\n\t\telement.data( dataSpaceStyle, element[ 0 ].style.cssText );\n\t},\n\n\trestoreStyle: function( element ) {\n\t\telement[ 0 ].style.cssText = element.data( dataSpaceStyle ) || \"\";\n\t\telement.removeData( dataSpaceStyle );\n\t},\n\n\tmode: function( element, mode ) {\n\t\tvar hidden = element.is( \":hidden\" );\n\n\t\tif ( mode === \"toggle\" ) {\n\t\t\tmode = hidden ? \"show\" : \"hide\";\n\t\t}\n\t\tif ( hidden ? mode === \"hide\" : mode === \"show\" ) {\n\t\t\tmode = \"none\";\n\t\t}\n\t\treturn mode;\n\t},\n\n\t// Translates a [top,left] array into a baseline value\n\tgetBaseline: function( origin, original ) {\n\t\tvar y, x;\n\n\t\tswitch ( origin[ 0 ] ) {\n\t\tcase \"top\":\n\t\t\ty = 0;\n\t\t\tbreak;\n\t\tcase \"middle\":\n\t\t\ty = 0.5;\n\t\t\tbreak;\n\t\tcase \"bottom\":\n\t\t\ty = 1;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\ty = origin[ 0 ] / original.height;\n\t\t}\n\n\t\tswitch ( origin[ 1 ] ) {\n\t\tcase \"left\":\n\t\t\tx = 0;\n\t\t\tbreak;\n\t\tcase \"center\":\n\t\t\tx = 0.5;\n\t\t\tbreak;\n\t\tcase \"right\":\n\t\t\tx = 1;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tx = origin[ 1 ] / original.width;\n\t\t}\n\n\t\treturn {\n\t\t\tx: x,\n\t\t\ty: y\n\t\t};\n\t},\n\n\t// Creates a placeholder element so that the original element can be made absolute\n\tcreatePlaceholder: function( element ) {\n\t\tvar placeholder,\n\t\t\tcssPosition = element.css( \"position\" ),\n\t\t\tposition = element.position();\n\n\t\t// Lock in margins first to account for form elements, which\n\t\t// will change margin if you explicitly set height\n\t\t// see: https://jsfiddle.net/JZSMt/3/ https://bugs.webkit.org/show_bug.cgi?id=107380\n\t\t// Support: Safari\n\t\telement.css( {\n\t\t\tmarginTop: element.css( \"marginTop\" ),\n\t\t\tmarginBottom: element.css( \"marginBottom\" ),\n\t\t\tmarginLeft: element.css( \"marginLeft\" ),\n\t\t\tmarginRight: element.css( \"marginRight\" )\n\t\t} )\n\t\t.outerWidth( element.outerWidth() )\n\t\t.outerHeight( element.outerHeight() );\n\n\t\tif ( /^(static|relative)/.test( cssPosition ) ) {\n\t\t\tcssPosition = \"absolute\";\n\n\t\t\tplaceholder = $( \"<\" + element[ 0 ].nodeName + \">\" ).insertAfter( element ).css( {\n\n\t\t\t\t// Convert inline to inline block to account for inline elements\n\t\t\t\t// that turn to inline block based on content (like img)\n\t\t\t\tdisplay: /^(inline|ruby)/.test( element.css( \"display\" ) ) ?\n\t\t\t\t\t\"inline-block\" :\n\t\t\t\t\t\"block\",\n\t\t\t\tvisibility: \"hidden\",\n\n\t\t\t\t// Margins need to be set to account for margin collapse\n\t\t\t\tmarginTop: element.css( \"marginTop\" ),\n\t\t\t\tmarginBottom: element.css( \"marginBottom\" ),\n\t\t\t\tmarginLeft: element.css( \"marginLeft\" ),\n\t\t\t\tmarginRight: element.css( \"marginRight\" ),\n\t\t\t\t\"float\": element.css( \"float\" )\n\t\t\t} )\n\t\t\t.outerWidth( element.outerWidth() )\n\t\t\t.outerHeight( element.outerHeight() )\n\t\t\t.addClass( \"ui-effects-placeholder\" );\n\n\t\t\telement.data( dataSpace + \"placeholder\", placeholder );\n\t\t}\n\n\t\telement.css( {\n\t\t\tposition: cssPosition,\n\t\t\tleft: position.left,\n\t\t\ttop: position.top\n\t\t} );\n\n\t\treturn placeholder;\n\t},\n\n\tremovePlaceholder: function( element ) {\n\t\tvar dataKey = dataSpace + \"placeholder\",\n\t\t\t\tplaceholder = element.data( dataKey );\n\n\t\tif ( placeholder ) {\n\t\t\tplaceholder.remove();\n\t\t\telement.removeData( dataKey );\n\t\t}\n\t},\n\n\t// Removes a placeholder if it exists and restores\n\t// properties that were modified during placeholder creation\n\tcleanUp: function( element ) {\n\t\t$.effects.restoreStyle( element );\n\t\t$.effects.removePlaceholder( element );\n\t},\n\n\tsetTransition: function( element, list, factor, value ) {\n\t\tvalue = value || {};\n\t\t$.each( list, function( i, x ) {\n\t\t\tvar unit = element.cssUnit( x );\n\t\t\tif ( unit[ 0 ] > 0 ) {\n\t\t\t\tvalue[ x ] = unit[ 0 ] * factor + unit[ 1 ];\n\t\t\t}\n\t\t} );\n\t\treturn value;\n\t}\n} );\n\n// Return an effect options object for the given parameters:\nfunction _normalizeArguments( effect, options, speed, callback ) {\n\n\t// Allow passing all options as the first parameter\n\tif ( $.isPlainObject( effect ) ) {\n\t\toptions = effect;\n\t\teffect = effect.effect;\n\t}\n\n\t// Convert to an object\n\teffect = { effect: effect };\n\n\t// Catch (effect, null, ...)\n\tif ( options == null ) {\n\t\toptions = {};\n\t}\n\n\t// Catch (effect, callback)\n\tif ( typeof options === \"function\" ) {\n\t\tcallback = options;\n\t\tspeed = null;\n\t\toptions = {};\n\t}\n\n\t// Catch (effect, speed, ?)\n\tif ( typeof options === \"number\" || $.fx.speeds[ options ] ) {\n\t\tcallback = speed;\n\t\tspeed = options;\n\t\toptions = {};\n\t}\n\n\t// Catch (effect, options, callback)\n\tif ( typeof speed === \"function\" ) {\n\t\tcallback = speed;\n\t\tspeed = null;\n\t}\n\n\t// Add options to effect\n\tif ( options ) {\n\t\t$.extend( effect, options );\n\t}\n\n\tspeed = speed || options.duration;\n\teffect.duration = $.fx.off ? 0 :\n\t\ttypeof speed === \"number\" ? speed :\n\t\tspeed in $.fx.speeds ? $.fx.speeds[ speed ] :\n\t\t$.fx.speeds._default;\n\n\teffect.complete = callback || options.complete;\n\n\treturn effect;\n}\n\nfunction standardAnimationOption( option ) {\n\n\t// Valid standard speeds (nothing, number, named speed)\n\tif ( !option || typeof option === \"number\" || $.fx.speeds[ option ] ) {\n\t\treturn true;\n\t}\n\n\t// Invalid strings - treat as \"normal\" speed\n\tif ( typeof option === \"string\" && !$.effects.effect[ option ] ) {\n\t\treturn true;\n\t}\n\n\t// Complete callback\n\tif ( typeof option === \"function\" ) {\n\t\treturn true;\n\t}\n\n\t// Options hash (but not naming an effect)\n\tif ( typeof option === \"object\" && !option.effect ) {\n\t\treturn true;\n\t}\n\n\t// Didn't match any standard API\n\treturn false;\n}\n\n$.fn.extend( {\n\teffect: function( /* effect, options, speed, callback */ ) {\n\t\tvar args = _normalizeArguments.apply( this, arguments ),\n\t\t\teffectMethod = $.effects.effect[ args.effect ],\n\t\t\tdefaultMode = effectMethod.mode,\n\t\t\tqueue = args.queue,\n\t\t\tqueueName = queue || \"fx\",\n\t\t\tcomplete = args.complete,\n\t\t\tmode = args.mode,\n\t\t\tmodes = [],\n\t\t\tprefilter = function( next ) {\n\t\t\t\tvar el = $( this ),\n\t\t\t\t\tnormalizedMode = $.effects.mode( el, mode ) || defaultMode;\n\n\t\t\t\t// Sentinel for duck-punching the :animated pseudo-selector\n\t\t\t\tel.data( dataSpaceAnimated, true );\n\n\t\t\t\t// Save effect mode for later use,\n\t\t\t\t// we can't just call $.effects.mode again later,\n\t\t\t\t// as the .show() below destroys the initial state\n\t\t\t\tmodes.push( normalizedMode );\n\n\t\t\t\t// See $.uiBackCompat inside of run() for removal of defaultMode in 1.14\n\t\t\t\tif ( defaultMode && ( normalizedMode === \"show\" ||\n\t\t\t\t\t\t( normalizedMode === defaultMode && normalizedMode === \"hide\" ) ) ) {\n\t\t\t\t\tel.show();\n\t\t\t\t}\n\n\t\t\t\tif ( !defaultMode || normalizedMode !== \"none\" ) {\n\t\t\t\t\t$.effects.saveStyle( el );\n\t\t\t\t}\n\n\t\t\t\tif ( typeof next === \"function\" ) {\n\t\t\t\t\tnext();\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( $.fx.off || !effectMethod ) {\n\n\t\t\t// Delegate to the original method (e.g., .show()) if possible\n\t\t\tif ( mode ) {\n\t\t\t\treturn this[ mode ]( args.duration, complete );\n\t\t\t} else {\n\t\t\t\treturn this.each( function() {\n\t\t\t\t\tif ( complete ) {\n\t\t\t\t\t\tcomplete.call( this );\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\n\t\tfunction run( next ) {\n\t\t\tvar elem = $( this );\n\n\t\t\tfunction cleanup() {\n\t\t\t\telem.removeData( dataSpaceAnimated );\n\n\t\t\t\t$.effects.cleanUp( elem );\n\n\t\t\t\tif ( args.mode === \"hide\" ) {\n\t\t\t\t\telem.hide();\n\t\t\t\t}\n\n\t\t\t\tdone();\n\t\t\t}\n\n\t\t\tfunction done() {\n\t\t\t\tif ( typeof complete === \"function\" ) {\n\t\t\t\t\tcomplete.call( elem[ 0 ] );\n\t\t\t\t}\n\n\t\t\t\tif ( typeof next === \"function\" ) {\n\t\t\t\t\tnext();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override mode option on a per element basis,\n\t\t\t// as toggle can be either show or hide depending on element state\n\t\t\targs.mode = modes.shift();\n\n\t\t\tif ( $.uiBackCompat !== false && !defaultMode ) {\n\t\t\t\tif ( elem.is( \":hidden\" ) ? mode === \"hide\" : mode === \"show\" ) {\n\n\t\t\t\t\t// Call the core method to track \"olddisplay\" properly\n\t\t\t\t\telem[ mode ]();\n\t\t\t\t\tdone();\n\t\t\t\t} else {\n\t\t\t\t\teffectMethod.call( elem[ 0 ], args, done );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ( args.mode === \"none\" ) {\n\n\t\t\t\t\t// Call the core method to track \"olddisplay\" properly\n\t\t\t\t\telem[ mode ]();\n\t\t\t\t\tdone();\n\t\t\t\t} else {\n\t\t\t\t\teffectMethod.call( elem[ 0 ], args, cleanup );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Run prefilter on all elements first to ensure that\n\t\t// any showing or hiding happens before placeholder creation,\n\t\t// which ensures that any layout changes are correctly captured.\n\t\treturn queue === false ?\n\t\t\tthis.each( prefilter ).each( run ) :\n\t\t\tthis.queue( queueName, prefilter ).queue( queueName, run );\n\t},\n\n\tshow: ( function( orig ) {\n\t\treturn function( option ) {\n\t\t\tif ( standardAnimationOption( option ) ) {\n\t\t\t\treturn orig.apply( this, arguments );\n\t\t\t} else {\n\t\t\t\tvar args = _normalizeArguments.apply( this, arguments );\n\t\t\t\targs.mode = \"show\";\n\t\t\t\treturn this.effect.call( this, args );\n\t\t\t}\n\t\t};\n\t} )( $.fn.show ),\n\n\thide: ( function( orig ) {\n\t\treturn function( option ) {\n\t\t\tif ( standardAnimationOption( option ) ) {\n\t\t\t\treturn orig.apply( this, arguments );\n\t\t\t} else {\n\t\t\t\tvar args = _normalizeArguments.apply( this, arguments );\n\t\t\t\targs.mode = \"hide\";\n\t\t\t\treturn this.effect.call( this, args );\n\t\t\t}\n\t\t};\n\t} )( $.fn.hide ),\n\n\ttoggle: ( function( orig ) {\n\t\treturn function( option ) {\n\t\t\tif ( standardAnimationOption( option ) || typeof option === \"boolean\" ) {\n\t\t\t\treturn orig.apply( this, arguments );\n\t\t\t} else {\n\t\t\t\tvar args = _normalizeArguments.apply( this, arguments );\n\t\t\t\targs.mode = \"toggle\";\n\t\t\t\treturn this.effect.call( this, args );\n\t\t\t}\n\t\t};\n\t} )( $.fn.toggle ),\n\n\tcssUnit: function( key ) {\n\t\tvar style = this.css( key ),\n\t\t\tval = [];\n\n\t\t$.each( [ \"em\", \"px\", \"%\", \"pt\" ], function( i, unit ) {\n\t\t\tif ( style.indexOf( unit ) > 0 ) {\n\t\t\t\tval = [ parseFloat( style ), unit ];\n\t\t\t}\n\t\t} );\n\t\treturn val;\n\t},\n\n\tcssClip: function( clipObj ) {\n\t\tif ( clipObj ) {\n\t\t\treturn this.css( \"clip\", \"rect(\" + clipObj.top + \"px \" + clipObj.right + \"px \" +\n\t\t\t\tclipObj.bottom + \"px \" + clipObj.left + \"px)\" );\n\t\t}\n\t\treturn parseClip( this.css( \"clip\" ), this );\n\t},\n\n\ttransfer: function( options, done ) {\n\t\tvar element = $( this ),\n\t\t\ttarget = $( options.to ),\n\t\t\ttargetFixed = target.css( \"position\" ) === \"fixed\",\n\t\t\tbody = $( \"body\" ),\n\t\t\tfixTop = targetFixed ? body.scrollTop() : 0,\n\t\t\tfixLeft = targetFixed ? body.scrollLeft() : 0,\n\t\t\tendPosition = target.offset(),\n\t\t\tanimation = {\n\t\t\t\ttop: endPosition.top - fixTop,\n\t\t\t\tleft: endPosition.left - fixLeft,\n\t\t\t\theight: target.innerHeight(),\n\t\t\t\twidth: target.innerWidth()\n\t\t\t},\n\t\t\tstartPosition = element.offset(),\n\t\t\ttransfer = $( \"
            \" );\n\n\t\ttransfer\n\t\t\t.appendTo( \"body\" )\n\t\t\t.addClass( options.className )\n\t\t\t.css( {\n\t\t\t\ttop: startPosition.top - fixTop,\n\t\t\t\tleft: startPosition.left - fixLeft,\n\t\t\t\theight: element.innerHeight(),\n\t\t\t\twidth: element.innerWidth(),\n\t\t\t\tposition: targetFixed ? \"fixed\" : \"absolute\"\n\t\t\t} )\n\t\t\t.animate( animation, options.duration, options.easing, function() {\n\t\t\t\ttransfer.remove();\n\t\t\t\tif ( typeof done === \"function\" ) {\n\t\t\t\t\tdone();\n\t\t\t\t}\n\t\t\t} );\n\t}\n} );\n\nfunction parseClip( str, element ) {\n\t\tvar outerWidth = element.outerWidth(),\n\t\t\touterHeight = element.outerHeight(),\n\t\t\tclipRegex = /^rect\\((-?\\d*\\.?\\d*px|-?\\d+%|auto),?\\s*(-?\\d*\\.?\\d*px|-?\\d+%|auto),?\\s*(-?\\d*\\.?\\d*px|-?\\d+%|auto),?\\s*(-?\\d*\\.?\\d*px|-?\\d+%|auto)\\)$/,\n\t\t\tvalues = clipRegex.exec( str ) || [ \"\", 0, outerWidth, outerHeight, 0 ];\n\n\t\treturn {\n\t\t\ttop: parseFloat( values[ 1 ] ) || 0,\n\t\t\tright: values[ 2 ] === \"auto\" ? outerWidth : parseFloat( values[ 2 ] ),\n\t\t\tbottom: values[ 3 ] === \"auto\" ? outerHeight : parseFloat( values[ 3 ] ),\n\t\t\tleft: parseFloat( values[ 4 ] ) || 0\n\t\t};\n}\n\n$.fx.step.clip = function( fx ) {\n\tif ( !fx.clipInit ) {\n\t\tfx.start = $( fx.elem ).cssClip();\n\t\tif ( typeof fx.end === \"string\" ) {\n\t\t\tfx.end = parseClip( fx.end, fx.elem );\n\t\t}\n\t\tfx.clipInit = true;\n\t}\n\n\t$( fx.elem ).cssClip( {\n\t\ttop: fx.pos * ( fx.end.top - fx.start.top ) + fx.start.top,\n\t\tright: fx.pos * ( fx.end.right - fx.start.right ) + fx.start.right,\n\t\tbottom: fx.pos * ( fx.end.bottom - fx.start.bottom ) + fx.start.bottom,\n\t\tleft: fx.pos * ( fx.end.left - fx.start.left ) + fx.start.left\n\t} );\n};\n\n} )();\n\n/******************************************************************************/\n/*********************************** EASING ***********************************/\n/******************************************************************************/\n\n( function() {\n\n// Based on easing equations from Robert Penner (http://robertpenner.com/easing)\n\nvar baseEasings = {};\n\n$.each( [ \"Quad\", \"Cubic\", \"Quart\", \"Quint\", \"Expo\" ], function( i, name ) {\n\tbaseEasings[ name ] = function( p ) {\n\t\treturn Math.pow( p, i + 2 );\n\t};\n} );\n\n$.extend( baseEasings, {\n\tSine: function( p ) {\n\t\treturn 1 - Math.cos( p * Math.PI / 2 );\n\t},\n\tCirc: function( p ) {\n\t\treturn 1 - Math.sqrt( 1 - p * p );\n\t},\n\tElastic: function( p ) {\n\t\treturn p === 0 || p === 1 ? p :\n\t\t\t-Math.pow( 2, 8 * ( p - 1 ) ) * Math.sin( ( ( p - 1 ) * 80 - 7.5 ) * Math.PI / 15 );\n\t},\n\tBack: function( p ) {\n\t\treturn p * p * ( 3 * p - 2 );\n\t},\n\tBounce: function( p ) {\n\t\tvar pow2,\n\t\t\tbounce = 4;\n\n\t\twhile ( p < ( ( pow2 = Math.pow( 2, --bounce ) ) - 1 ) / 11 ) {}\n\t\treturn 1 / Math.pow( 4, 3 - bounce ) - 7.5625 * Math.pow( ( pow2 * 3 - 2 ) / 22 - p, 2 );\n\t}\n} );\n\n$.each( baseEasings, function( name, easeIn ) {\n\t$.easing[ \"easeIn\" + name ] = easeIn;\n\t$.easing[ \"easeOut\" + name ] = function( p ) {\n\t\treturn 1 - easeIn( 1 - p );\n\t};\n\t$.easing[ \"easeInOut\" + name ] = function( p ) {\n\t\treturn p < 0.5 ?\n\t\t\teaseIn( p * 2 ) / 2 :\n\t\t\t1 - easeIn( p * -2 + 2 ) / 2;\n\t};\n} );\n\n} )();\n\nvar effect = $.effects;\n\n\n/*!\n * jQuery UI Effects Blind 1.13.3\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n//>>label: Blind Effect\n//>>group: Effects\n//>>description: Blinds the element.\n//>>docs: https://api.jqueryui.com/blind-effect/\n//>>demos: https://jqueryui.com/effect/\n\n\nvar effectsEffectBlind = $.effects.define( \"blind\", \"hide\", function( options, done ) {\n\tvar map = {\n\t\t\tup: [ \"bottom\", \"top\" ],\n\t\t\tvertical: [ \"bottom\", \"top\" ],\n\t\t\tdown: [ \"top\", \"bottom\" ],\n\t\t\tleft: [ \"right\", \"left\" ],\n\t\t\thorizontal: [ \"right\", \"left\" ],\n\t\t\tright: [ \"left\", \"right\" ]\n\t\t},\n\t\telement = $( this ),\n\t\tdirection = options.direction || \"up\",\n\t\tstart = element.cssClip(),\n\t\tanimate = { clip: $.extend( {}, start ) },\n\t\tplaceholder = $.effects.createPlaceholder( element );\n\n\tanimate.clip[ map[ direction ][ 0 ] ] = animate.clip[ map[ direction ][ 1 ] ];\n\n\tif ( options.mode === \"show\" ) {\n\t\telement.cssClip( animate.clip );\n\t\tif ( placeholder ) {\n\t\t\tplaceholder.css( $.effects.clipToBox( animate ) );\n\t\t}\n\n\t\tanimate.clip = start;\n\t}\n\n\tif ( placeholder ) {\n\t\tplaceholder.animate( $.effects.clipToBox( animate ), options.duration, options.easing );\n\t}\n\n\telement.animate( animate, {\n\t\tqueue: false,\n\t\tduration: options.duration,\n\t\teasing: options.easing,\n\t\tcomplete: done\n\t} );\n} );\n\n\n/*!\n * jQuery UI Effects Bounce 1.13.3\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n//>>label: Bounce Effect\n//>>group: Effects\n//>>description: Bounces an element horizontally or vertically n times.\n//>>docs: https://api.jqueryui.com/bounce-effect/\n//>>demos: https://jqueryui.com/effect/\n\n\nvar effectsEffectBounce = $.effects.define( \"bounce\", function( options, done ) {\n\tvar upAnim, downAnim, refValue,\n\t\telement = $( this ),\n\n\t\t// Defaults:\n\t\tmode = options.mode,\n\t\thide = mode === \"hide\",\n\t\tshow = mode === \"show\",\n\t\tdirection = options.direction || \"up\",\n\t\tdistance = options.distance,\n\t\ttimes = options.times || 5,\n\n\t\t// Number of internal animations\n\t\tanims = times * 2 + ( show || hide ? 1 : 0 ),\n\t\tspeed = options.duration / anims,\n\t\teasing = options.easing,\n\n\t\t// Utility:\n\t\tref = ( direction === \"up\" || direction === \"down\" ) ? \"top\" : \"left\",\n\t\tmotion = ( direction === \"up\" || direction === \"left\" ),\n\t\ti = 0,\n\n\t\tqueuelen = element.queue().length;\n\n\t$.effects.createPlaceholder( element );\n\n\trefValue = element.css( ref );\n\n\t// Default distance for the BIGGEST bounce is the outer Distance / 3\n\tif ( !distance ) {\n\t\tdistance = element[ ref === \"top\" ? \"outerHeight\" : \"outerWidth\" ]() / 3;\n\t}\n\n\tif ( show ) {\n\t\tdownAnim = { opacity: 1 };\n\t\tdownAnim[ ref ] = refValue;\n\n\t\t// If we are showing, force opacity 0 and set the initial position\n\t\t// then do the \"first\" animation\n\t\telement\n\t\t\t.css( \"opacity\", 0 )\n\t\t\t.css( ref, motion ? -distance * 2 : distance * 2 )\n\t\t\t.animate( downAnim, speed, easing );\n\t}\n\n\t// Start at the smallest distance if we are hiding\n\tif ( hide ) {\n\t\tdistance = distance / Math.pow( 2, times - 1 );\n\t}\n\n\tdownAnim = {};\n\tdownAnim[ ref ] = refValue;\n\n\t// Bounces up/down/left/right then back to 0 -- times * 2 animations happen here\n\tfor ( ; i < times; i++ ) {\n\t\tupAnim = {};\n\t\tupAnim[ ref ] = ( motion ? \"-=\" : \"+=\" ) + distance;\n\n\t\telement\n\t\t\t.animate( upAnim, speed, easing )\n\t\t\t.animate( downAnim, speed, easing );\n\n\t\tdistance = hide ? distance * 2 : distance / 2;\n\t}\n\n\t// Last Bounce when Hiding\n\tif ( hide ) {\n\t\tupAnim = { opacity: 0 };\n\t\tupAnim[ ref ] = ( motion ? \"-=\" : \"+=\" ) + distance;\n\n\t\telement.animate( upAnim, speed, easing );\n\t}\n\n\telement.queue( done );\n\n\t$.effects.unshift( element, queuelen, anims + 1 );\n} );\n\n\n/*!\n * jQuery UI Effects Clip 1.13.3\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n//>>label: Clip Effect\n//>>group: Effects\n//>>description: Clips the element on and off like an old TV.\n//>>docs: https://api.jqueryui.com/clip-effect/\n//>>demos: https://jqueryui.com/effect/\n\n\nvar effectsEffectClip = $.effects.define( \"clip\", \"hide\", function( options, done ) {\n\tvar start,\n\t\tanimate = {},\n\t\telement = $( this ),\n\t\tdirection = options.direction || \"vertical\",\n\t\tboth = direction === \"both\",\n\t\thorizontal = both || direction === \"horizontal\",\n\t\tvertical = both || direction === \"vertical\";\n\n\tstart = element.cssClip();\n\tanimate.clip = {\n\t\ttop: vertical ? ( start.bottom - start.top ) / 2 : start.top,\n\t\tright: horizontal ? ( start.right - start.left ) / 2 : start.right,\n\t\tbottom: vertical ? ( start.bottom - start.top ) / 2 : start.bottom,\n\t\tleft: horizontal ? ( start.right - start.left ) / 2 : start.left\n\t};\n\n\t$.effects.createPlaceholder( element );\n\n\tif ( options.mode === \"show\" ) {\n\t\telement.cssClip( animate.clip );\n\t\tanimate.clip = start;\n\t}\n\n\telement.animate( animate, {\n\t\tqueue: false,\n\t\tduration: options.duration,\n\t\teasing: options.easing,\n\t\tcomplete: done\n\t} );\n\n} );\n\n\n/*!\n * jQuery UI Effects Drop 1.13.3\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n//>>label: Drop Effect\n//>>group: Effects\n//>>description: Moves an element in one direction and hides it at the same time.\n//>>docs: https://api.jqueryui.com/drop-effect/\n//>>demos: https://jqueryui.com/effect/\n\n\nvar effectsEffectDrop = $.effects.define( \"drop\", \"hide\", function( options, done ) {\n\n\tvar distance,\n\t\telement = $( this ),\n\t\tmode = options.mode,\n\t\tshow = mode === \"show\",\n\t\tdirection = options.direction || \"left\",\n\t\tref = ( direction === \"up\" || direction === \"down\" ) ? \"top\" : \"left\",\n\t\tmotion = ( direction === \"up\" || direction === \"left\" ) ? \"-=\" : \"+=\",\n\t\toppositeMotion = ( motion === \"+=\" ) ? \"-=\" : \"+=\",\n\t\tanimation = {\n\t\t\topacity: 0\n\t\t};\n\n\t$.effects.createPlaceholder( element );\n\n\tdistance = options.distance ||\n\t\telement[ ref === \"top\" ? \"outerHeight\" : \"outerWidth\" ]( true ) / 2;\n\n\tanimation[ ref ] = motion + distance;\n\n\tif ( show ) {\n\t\telement.css( animation );\n\n\t\tanimation[ ref ] = oppositeMotion + distance;\n\t\tanimation.opacity = 1;\n\t}\n\n\t// Animate\n\telement.animate( animation, {\n\t\tqueue: false,\n\t\tduration: options.duration,\n\t\teasing: options.easing,\n\t\tcomplete: done\n\t} );\n} );\n\n\n/*!\n * jQuery UI Effects Explode 1.13.3\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n//>>label: Explode Effect\n//>>group: Effects\n/* eslint-disable max-len */\n//>>description: Explodes an element in all directions into n pieces. Implodes an element to its original wholeness.\n/* eslint-enable max-len */\n//>>docs: https://api.jqueryui.com/explode-effect/\n//>>demos: https://jqueryui.com/effect/\n\n\nvar effectsEffectExplode = $.effects.define( \"explode\", \"hide\", function( options, done ) {\n\n\tvar i, j, left, top, mx, my,\n\t\trows = options.pieces ? Math.round( Math.sqrt( options.pieces ) ) : 3,\n\t\tcells = rows,\n\t\telement = $( this ),\n\t\tmode = options.mode,\n\t\tshow = mode === \"show\",\n\n\t\t// Show and then visibility:hidden the element before calculating offset\n\t\toffset = element.show().css( \"visibility\", \"hidden\" ).offset(),\n\n\t\t// Width and height of a piece\n\t\twidth = Math.ceil( element.outerWidth() / cells ),\n\t\theight = Math.ceil( element.outerHeight() / rows ),\n\t\tpieces = [];\n\n\t// Children animate complete:\n\tfunction childComplete() {\n\t\tpieces.push( this );\n\t\tif ( pieces.length === rows * cells ) {\n\t\t\tanimComplete();\n\t\t}\n\t}\n\n\t// Clone the element for each row and cell.\n\tfor ( i = 0; i < rows; i++ ) { // ===>\n\t\ttop = offset.top + i * height;\n\t\tmy = i - ( rows - 1 ) / 2;\n\n\t\tfor ( j = 0; j < cells; j++ ) { // |||\n\t\t\tleft = offset.left + j * width;\n\t\t\tmx = j - ( cells - 1 ) / 2;\n\n\t\t\t// Create a clone of the now hidden main element that will be absolute positioned\n\t\t\t// within a wrapper div off the -left and -top equal to size of our pieces\n\t\t\telement\n\t\t\t\t.clone()\n\t\t\t\t.appendTo( \"body\" )\n\t\t\t\t.wrap( \"
            \" )\n\t\t\t\t.css( {\n\t\t\t\t\tposition: \"absolute\",\n\t\t\t\t\tvisibility: \"visible\",\n\t\t\t\t\tleft: -j * width,\n\t\t\t\t\ttop: -i * height\n\t\t\t\t} )\n\n\t\t\t\t// Select the wrapper - make it overflow: hidden and absolute positioned based on\n\t\t\t\t// where the original was located +left and +top equal to the size of pieces\n\t\t\t\t.parent()\n\t\t\t\t\t.addClass( \"ui-effects-explode\" )\n\t\t\t\t\t.css( {\n\t\t\t\t\t\tposition: \"absolute\",\n\t\t\t\t\t\toverflow: \"hidden\",\n\t\t\t\t\t\twidth: width,\n\t\t\t\t\t\theight: height,\n\t\t\t\t\t\tleft: left + ( show ? mx * width : 0 ),\n\t\t\t\t\t\ttop: top + ( show ? my * height : 0 ),\n\t\t\t\t\t\topacity: show ? 0 : 1\n\t\t\t\t\t} )\n\t\t\t\t\t.animate( {\n\t\t\t\t\t\tleft: left + ( show ? 0 : mx * width ),\n\t\t\t\t\t\ttop: top + ( show ? 0 : my * height ),\n\t\t\t\t\t\topacity: show ? 1 : 0\n\t\t\t\t\t}, options.duration || 500, options.easing, childComplete );\n\t\t}\n\t}\n\n\tfunction animComplete() {\n\t\telement.css( {\n\t\t\tvisibility: \"visible\"\n\t\t} );\n\t\t$( pieces ).remove();\n\t\tdone();\n\t}\n} );\n\n\n/*!\n * jQuery UI Effects Fade 1.13.3\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n//>>label: Fade Effect\n//>>group: Effects\n//>>description: Fades the element.\n//>>docs: https://api.jqueryui.com/fade-effect/\n//>>demos: https://jqueryui.com/effect/\n\n\nvar effectsEffectFade = $.effects.define( \"fade\", \"toggle\", function( options, done ) {\n\tvar show = options.mode === \"show\";\n\n\t$( this )\n\t\t.css( \"opacity\", show ? 0 : 1 )\n\t\t.animate( {\n\t\t\topacity: show ? 1 : 0\n\t\t}, {\n\t\t\tqueue: false,\n\t\t\tduration: options.duration,\n\t\t\teasing: options.easing,\n\t\t\tcomplete: done\n\t\t} );\n} );\n\n\n/*!\n * jQuery UI Effects Fold 1.13.3\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n//>>label: Fold Effect\n//>>group: Effects\n//>>description: Folds an element first horizontally and then vertically.\n//>>docs: https://api.jqueryui.com/fold-effect/\n//>>demos: https://jqueryui.com/effect/\n\n\nvar effectsEffectFold = $.effects.define( \"fold\", \"hide\", function( options, done ) {\n\n\t// Create element\n\tvar element = $( this ),\n\t\tmode = options.mode,\n\t\tshow = mode === \"show\",\n\t\thide = mode === \"hide\",\n\t\tsize = options.size || 15,\n\t\tpercent = /([0-9]+)%/.exec( size ),\n\t\thorizFirst = !!options.horizFirst,\n\t\tref = horizFirst ? [ \"right\", \"bottom\" ] : [ \"bottom\", \"right\" ],\n\t\tduration = options.duration / 2,\n\n\t\tplaceholder = $.effects.createPlaceholder( element ),\n\n\t\tstart = element.cssClip(),\n\t\tanimation1 = { clip: $.extend( {}, start ) },\n\t\tanimation2 = { clip: $.extend( {}, start ) },\n\n\t\tdistance = [ start[ ref[ 0 ] ], start[ ref[ 1 ] ] ],\n\n\t\tqueuelen = element.queue().length;\n\n\tif ( percent ) {\n\t\tsize = parseInt( percent[ 1 ], 10 ) / 100 * distance[ hide ? 0 : 1 ];\n\t}\n\tanimation1.clip[ ref[ 0 ] ] = size;\n\tanimation2.clip[ ref[ 0 ] ] = size;\n\tanimation2.clip[ ref[ 1 ] ] = 0;\n\n\tif ( show ) {\n\t\telement.cssClip( animation2.clip );\n\t\tif ( placeholder ) {\n\t\t\tplaceholder.css( $.effects.clipToBox( animation2 ) );\n\t\t}\n\n\t\tanimation2.clip = start;\n\t}\n\n\t// Animate\n\telement\n\t\t.queue( function( next ) {\n\t\t\tif ( placeholder ) {\n\t\t\t\tplaceholder\n\t\t\t\t\t.animate( $.effects.clipToBox( animation1 ), duration, options.easing )\n\t\t\t\t\t.animate( $.effects.clipToBox( animation2 ), duration, options.easing );\n\t\t\t}\n\n\t\t\tnext();\n\t\t} )\n\t\t.animate( animation1, duration, options.easing )\n\t\t.animate( animation2, duration, options.easing )\n\t\t.queue( done );\n\n\t$.effects.unshift( element, queuelen, 4 );\n} );\n\n\n/*!\n * jQuery UI Effects Highlight 1.13.3\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n//>>label: Highlight Effect\n//>>group: Effects\n//>>description: Highlights the background of an element in a defined color for a custom duration.\n//>>docs: https://api.jqueryui.com/highlight-effect/\n//>>demos: https://jqueryui.com/effect/\n\n\nvar effectsEffectHighlight = $.effects.define( \"highlight\", \"show\", function( options, done ) {\n\tvar element = $( this ),\n\t\tanimation = {\n\t\t\tbackgroundColor: element.css( \"backgroundColor\" )\n\t\t};\n\n\tif ( options.mode === \"hide\" ) {\n\t\tanimation.opacity = 0;\n\t}\n\n\t$.effects.saveStyle( element );\n\n\telement\n\t\t.css( {\n\t\t\tbackgroundImage: \"none\",\n\t\t\tbackgroundColor: options.color || \"#ffff99\"\n\t\t} )\n\t\t.animate( animation, {\n\t\t\tqueue: false,\n\t\t\tduration: options.duration,\n\t\t\teasing: options.easing,\n\t\t\tcomplete: done\n\t\t} );\n} );\n\n\n/*!\n * jQuery UI Effects Size 1.13.3\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n//>>label: Size Effect\n//>>group: Effects\n//>>description: Resize an element to a specified width and height.\n//>>docs: https://api.jqueryui.com/size-effect/\n//>>demos: https://jqueryui.com/effect/\n\n\nvar effectsEffectSize = $.effects.define( \"size\", function( options, done ) {\n\n\t// Create element\n\tvar baseline, factor, temp,\n\t\telement = $( this ),\n\n\t\t// Copy for children\n\t\tcProps = [ \"fontSize\" ],\n\t\tvProps = [ \"borderTopWidth\", \"borderBottomWidth\", \"paddingTop\", \"paddingBottom\" ],\n\t\thProps = [ \"borderLeftWidth\", \"borderRightWidth\", \"paddingLeft\", \"paddingRight\" ],\n\n\t\t// Set options\n\t\tmode = options.mode,\n\t\trestore = mode !== \"effect\",\n\t\tscale = options.scale || \"both\",\n\t\torigin = options.origin || [ \"middle\", \"center\" ],\n\t\tposition = element.css( \"position\" ),\n\t\tpos = element.position(),\n\t\toriginal = $.effects.scaledDimensions( element ),\n\t\tfrom = options.from || original,\n\t\tto = options.to || $.effects.scaledDimensions( element, 0 );\n\n\t$.effects.createPlaceholder( element );\n\n\tif ( mode === \"show\" ) {\n\t\ttemp = from;\n\t\tfrom = to;\n\t\tto = temp;\n\t}\n\n\t// Set scaling factor\n\tfactor = {\n\t\tfrom: {\n\t\t\ty: from.height / original.height,\n\t\t\tx: from.width / original.width\n\t\t},\n\t\tto: {\n\t\t\ty: to.height / original.height,\n\t\t\tx: to.width / original.width\n\t\t}\n\t};\n\n\t// Scale the css box\n\tif ( scale === \"box\" || scale === \"both\" ) {\n\n\t\t// Vertical props scaling\n\t\tif ( factor.from.y !== factor.to.y ) {\n\t\t\tfrom = $.effects.setTransition( element, vProps, factor.from.y, from );\n\t\t\tto = $.effects.setTransition( element, vProps, factor.to.y, to );\n\t\t}\n\n\t\t// Horizontal props scaling\n\t\tif ( factor.from.x !== factor.to.x ) {\n\t\t\tfrom = $.effects.setTransition( element, hProps, factor.from.x, from );\n\t\t\tto = $.effects.setTransition( element, hProps, factor.to.x, to );\n\t\t}\n\t}\n\n\t// Scale the content\n\tif ( scale === \"content\" || scale === \"both\" ) {\n\n\t\t// Vertical props scaling\n\t\tif ( factor.from.y !== factor.to.y ) {\n\t\t\tfrom = $.effects.setTransition( element, cProps, factor.from.y, from );\n\t\t\tto = $.effects.setTransition( element, cProps, factor.to.y, to );\n\t\t}\n\t}\n\n\t// Adjust the position properties based on the provided origin points\n\tif ( origin ) {\n\t\tbaseline = $.effects.getBaseline( origin, original );\n\t\tfrom.top = ( original.outerHeight - from.outerHeight ) * baseline.y + pos.top;\n\t\tfrom.left = ( original.outerWidth - from.outerWidth ) * baseline.x + pos.left;\n\t\tto.top = ( original.outerHeight - to.outerHeight ) * baseline.y + pos.top;\n\t\tto.left = ( original.outerWidth - to.outerWidth ) * baseline.x + pos.left;\n\t}\n\tdelete from.outerHeight;\n\tdelete from.outerWidth;\n\telement.css( from );\n\n\t// Animate the children if desired\n\tif ( scale === \"content\" || scale === \"both\" ) {\n\n\t\tvProps = vProps.concat( [ \"marginTop\", \"marginBottom\" ] ).concat( cProps );\n\t\thProps = hProps.concat( [ \"marginLeft\", \"marginRight\" ] );\n\n\t\t// Only animate children with width attributes specified\n\t\t// TODO: is this right? should we include anything with css width specified as well\n\t\telement.find( \"*[width]\" ).each( function() {\n\t\t\tvar child = $( this ),\n\t\t\t\tchildOriginal = $.effects.scaledDimensions( child ),\n\t\t\t\tchildFrom = {\n\t\t\t\t\theight: childOriginal.height * factor.from.y,\n\t\t\t\t\twidth: childOriginal.width * factor.from.x,\n\t\t\t\t\touterHeight: childOriginal.outerHeight * factor.from.y,\n\t\t\t\t\touterWidth: childOriginal.outerWidth * factor.from.x\n\t\t\t\t},\n\t\t\t\tchildTo = {\n\t\t\t\t\theight: childOriginal.height * factor.to.y,\n\t\t\t\t\twidth: childOriginal.width * factor.to.x,\n\t\t\t\t\touterHeight: childOriginal.height * factor.to.y,\n\t\t\t\t\touterWidth: childOriginal.width * factor.to.x\n\t\t\t\t};\n\n\t\t\t// Vertical props scaling\n\t\t\tif ( factor.from.y !== factor.to.y ) {\n\t\t\t\tchildFrom = $.effects.setTransition( child, vProps, factor.from.y, childFrom );\n\t\t\t\tchildTo = $.effects.setTransition( child, vProps, factor.to.y, childTo );\n\t\t\t}\n\n\t\t\t// Horizontal props scaling\n\t\t\tif ( factor.from.x !== factor.to.x ) {\n\t\t\t\tchildFrom = $.effects.setTransition( child, hProps, factor.from.x, childFrom );\n\t\t\t\tchildTo = $.effects.setTransition( child, hProps, factor.to.x, childTo );\n\t\t\t}\n\n\t\t\tif ( restore ) {\n\t\t\t\t$.effects.saveStyle( child );\n\t\t\t}\n\n\t\t\t// Animate children\n\t\t\tchild.css( childFrom );\n\t\t\tchild.animate( childTo, options.duration, options.easing, function() {\n\n\t\t\t\t// Restore children\n\t\t\t\tif ( restore ) {\n\t\t\t\t\t$.effects.restoreStyle( child );\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Animate\n\telement.animate( to, {\n\t\tqueue: false,\n\t\tduration: options.duration,\n\t\teasing: options.easing,\n\t\tcomplete: function() {\n\n\t\t\tvar offset = element.offset();\n\n\t\t\tif ( to.opacity === 0 ) {\n\t\t\t\telement.css( \"opacity\", from.opacity );\n\t\t\t}\n\n\t\t\tif ( !restore ) {\n\t\t\t\telement\n\t\t\t\t\t.css( \"position\", position === \"static\" ? \"relative\" : position )\n\t\t\t\t\t.offset( offset );\n\n\t\t\t\t// Need to save style here so that automatic style restoration\n\t\t\t\t// doesn't restore to the original styles from before the animation.\n\t\t\t\t$.effects.saveStyle( element );\n\t\t\t}\n\n\t\t\tdone();\n\t\t}\n\t} );\n\n} );\n\n\n/*!\n * jQuery UI Effects Scale 1.13.3\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n//>>label: Scale Effect\n//>>group: Effects\n//>>description: Grows or shrinks an element and its content.\n//>>docs: https://api.jqueryui.com/scale-effect/\n//>>demos: https://jqueryui.com/effect/\n\n\nvar effectsEffectScale = $.effects.define( \"scale\", function( options, done ) {\n\n\t// Create element\n\tvar el = $( this ),\n\t\tmode = options.mode,\n\t\tpercent = parseInt( options.percent, 10 ) ||\n\t\t\t( parseInt( options.percent, 10 ) === 0 ? 0 : ( mode !== \"effect\" ? 0 : 100 ) ),\n\n\t\tnewOptions = $.extend( true, {\n\t\t\tfrom: $.effects.scaledDimensions( el ),\n\t\t\tto: $.effects.scaledDimensions( el, percent, options.direction || \"both\" ),\n\t\t\torigin: options.origin || [ \"middle\", \"center\" ]\n\t\t}, options );\n\n\t// Fade option to support puff\n\tif ( options.fade ) {\n\t\tnewOptions.from.opacity = 1;\n\t\tnewOptions.to.opacity = 0;\n\t}\n\n\t$.effects.effect.size.call( this, newOptions, done );\n} );\n\n\n/*!\n * jQuery UI Effects Puff 1.13.3\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n//>>label: Puff Effect\n//>>group: Effects\n//>>description: Creates a puff effect by scaling the element up and hiding it at the same time.\n//>>docs: https://api.jqueryui.com/puff-effect/\n//>>demos: https://jqueryui.com/effect/\n\n\nvar effectsEffectPuff = $.effects.define( \"puff\", \"hide\", function( options, done ) {\n\tvar newOptions = $.extend( true, {}, options, {\n\t\tfade: true,\n\t\tpercent: parseInt( options.percent, 10 ) || 150\n\t} );\n\n\t$.effects.effect.scale.call( this, newOptions, done );\n} );\n\n\n/*!\n * jQuery UI Effects Pulsate 1.13.3\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n//>>label: Pulsate Effect\n//>>group: Effects\n//>>description: Pulsates an element n times by changing the opacity to zero and back.\n//>>docs: https://api.jqueryui.com/pulsate-effect/\n//>>demos: https://jqueryui.com/effect/\n\n\nvar effectsEffectPulsate = $.effects.define( \"pulsate\", \"show\", function( options, done ) {\n\tvar element = $( this ),\n\t\tmode = options.mode,\n\t\tshow = mode === \"show\",\n\t\thide = mode === \"hide\",\n\t\tshowhide = show || hide,\n\n\t\t// Showing or hiding leaves off the \"last\" animation\n\t\tanims = ( ( options.times || 5 ) * 2 ) + ( showhide ? 1 : 0 ),\n\t\tduration = options.duration / anims,\n\t\tanimateTo = 0,\n\t\ti = 1,\n\t\tqueuelen = element.queue().length;\n\n\tif ( show || !element.is( \":visible\" ) ) {\n\t\telement.css( \"opacity\", 0 ).show();\n\t\tanimateTo = 1;\n\t}\n\n\t// Anims - 1 opacity \"toggles\"\n\tfor ( ; i < anims; i++ ) {\n\t\telement.animate( { opacity: animateTo }, duration, options.easing );\n\t\tanimateTo = 1 - animateTo;\n\t}\n\n\telement.animate( { opacity: animateTo }, duration, options.easing );\n\n\telement.queue( done );\n\n\t$.effects.unshift( element, queuelen, anims + 1 );\n} );\n\n\n/*!\n * jQuery UI Effects Shake 1.13.3\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n//>>label: Shake Effect\n//>>group: Effects\n//>>description: Shakes an element horizontally or vertically n times.\n//>>docs: https://api.jqueryui.com/shake-effect/\n//>>demos: https://jqueryui.com/effect/\n\n\nvar effectsEffectShake = $.effects.define( \"shake\", function( options, done ) {\n\n\tvar i = 1,\n\t\telement = $( this ),\n\t\tdirection = options.direction || \"left\",\n\t\tdistance = options.distance || 20,\n\t\ttimes = options.times || 3,\n\t\tanims = times * 2 + 1,\n\t\tspeed = Math.round( options.duration / anims ),\n\t\tref = ( direction === \"up\" || direction === \"down\" ) ? \"top\" : \"left\",\n\t\tpositiveMotion = ( direction === \"up\" || direction === \"left\" ),\n\t\tanimation = {},\n\t\tanimation1 = {},\n\t\tanimation2 = {},\n\n\t\tqueuelen = element.queue().length;\n\n\t$.effects.createPlaceholder( element );\n\n\t// Animation\n\tanimation[ ref ] = ( positiveMotion ? \"-=\" : \"+=\" ) + distance;\n\tanimation1[ ref ] = ( positiveMotion ? \"+=\" : \"-=\" ) + distance * 2;\n\tanimation2[ ref ] = ( positiveMotion ? \"-=\" : \"+=\" ) + distance * 2;\n\n\t// Animate\n\telement.animate( animation, speed, options.easing );\n\n\t// Shakes\n\tfor ( ; i < times; i++ ) {\n\t\telement\n\t\t\t.animate( animation1, speed, options.easing )\n\t\t\t.animate( animation2, speed, options.easing );\n\t}\n\n\telement\n\t\t.animate( animation1, speed, options.easing )\n\t\t.animate( animation, speed / 2, options.easing )\n\t\t.queue( done );\n\n\t$.effects.unshift( element, queuelen, anims + 1 );\n} );\n\n\n/*!\n * jQuery UI Effects Slide 1.13.3\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n//>>label: Slide Effect\n//>>group: Effects\n//>>description: Slides an element in and out of the viewport.\n//>>docs: https://api.jqueryui.com/slide-effect/\n//>>demos: https://jqueryui.com/effect/\n\n\nvar effectsEffectSlide = $.effects.define( \"slide\", \"show\", function( options, done ) {\n\tvar startClip, startRef,\n\t\telement = $( this ),\n\t\tmap = {\n\t\t\tup: [ \"bottom\", \"top\" ],\n\t\t\tdown: [ \"top\", \"bottom\" ],\n\t\t\tleft: [ \"right\", \"left\" ],\n\t\t\tright: [ \"left\", \"right\" ]\n\t\t},\n\t\tmode = options.mode,\n\t\tdirection = options.direction || \"left\",\n\t\tref = ( direction === \"up\" || direction === \"down\" ) ? \"top\" : \"left\",\n\t\tpositiveMotion = ( direction === \"up\" || direction === \"left\" ),\n\t\tdistance = options.distance ||\n\t\t\telement[ ref === \"top\" ? \"outerHeight\" : \"outerWidth\" ]( true ),\n\t\tanimation = {};\n\n\t$.effects.createPlaceholder( element );\n\n\tstartClip = element.cssClip();\n\tstartRef = element.position()[ ref ];\n\n\t// Define hide animation\n\tanimation[ ref ] = ( positiveMotion ? -1 : 1 ) * distance + startRef;\n\tanimation.clip = element.cssClip();\n\tanimation.clip[ map[ direction ][ 1 ] ] = animation.clip[ map[ direction ][ 0 ] ];\n\n\t// Reverse the animation if we're showing\n\tif ( mode === \"show\" ) {\n\t\telement.cssClip( animation.clip );\n\t\telement.css( ref, animation[ ref ] );\n\t\tanimation.clip = startClip;\n\t\tanimation[ ref ] = startRef;\n\t}\n\n\t// Actually animate\n\telement.animate( animation, {\n\t\tqueue: false,\n\t\tduration: options.duration,\n\t\teasing: options.easing,\n\t\tcomplete: done\n\t} );\n} );\n\n\n/*!\n * jQuery UI Effects Transfer 1.13.3\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n//>>label: Transfer Effect\n//>>group: Effects\n//>>description: Displays a transfer effect from one element to another.\n//>>docs: https://api.jqueryui.com/transfer-effect/\n//>>demos: https://jqueryui.com/effect/\n\n\nvar effect;\nif ( $.uiBackCompat !== false ) {\n\teffect = $.effects.define( \"transfer\", function( options, done ) {\n\t\t$( this ).transfer( options, done );\n\t} );\n}\nvar effectsEffectTransfer = effect;\n\n\n/*!\n * jQuery UI Focusable 1.13.3\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n//>>label: :focusable Selector\n//>>group: Core\n//>>description: Selects elements which can be focused.\n//>>docs: https://api.jqueryui.com/focusable-selector/\n\n\n// Selectors\n$.ui.focusable = function( element, hasTabindex ) {\n\tvar map, mapName, img, focusableIfVisible, fieldset,\n\t\tnodeName = element.nodeName.toLowerCase();\n\n\tif ( \"area\" === nodeName ) {\n\t\tmap = element.parentNode;\n\t\tmapName = map.name;\n\t\tif ( !element.href || !mapName || map.nodeName.toLowerCase() !== \"map\" ) {\n\t\t\treturn false;\n\t\t}\n\t\timg = $( \"img[usemap='#\" + mapName + \"']\" );\n\t\treturn img.length > 0 && img.is( \":visible\" );\n\t}\n\n\tif ( /^(input|select|textarea|button|object)$/.test( nodeName ) ) {\n\t\tfocusableIfVisible = !element.disabled;\n\n\t\tif ( focusableIfVisible ) {\n\n\t\t\t// Form controls within a disabled fieldset are disabled.\n\t\t\t// However, controls within the fieldset's legend do not get disabled.\n\t\t\t// Since controls generally aren't placed inside legends, we skip\n\t\t\t// this portion of the check.\n\t\t\tfieldset = $( element ).closest( \"fieldset\" )[ 0 ];\n\t\t\tif ( fieldset ) {\n\t\t\t\tfocusableIfVisible = !fieldset.disabled;\n\t\t\t}\n\t\t}\n\t} else if ( \"a\" === nodeName ) {\n\t\tfocusableIfVisible = element.href || hasTabindex;\n\t} else {\n\t\tfocusableIfVisible = hasTabindex;\n\t}\n\n\treturn focusableIfVisible && $( element ).is( \":visible\" ) && visible( $( element ) );\n};\n\n// Support: IE 8 only\n// IE 8 doesn't resolve inherit to visible/hidden for computed values\nfunction visible( element ) {\n\tvar visibility = element.css( \"visibility\" );\n\twhile ( visibility === \"inherit\" ) {\n\t\telement = element.parent();\n\t\tvisibility = element.css( \"visibility\" );\n\t}\n\treturn visibility === \"visible\";\n}\n\n$.extend( $.expr.pseudos, {\n\tfocusable: function( element ) {\n\t\treturn $.ui.focusable( element, $.attr( element, \"tabindex\" ) != null );\n\t}\n} );\n\nvar focusable = $.ui.focusable;\n\n\n\n// Support: IE8 Only\n// IE8 does not support the form attribute and when it is supplied. It overwrites the form prop\n// with a string, so we need to find the proper form.\nvar form = $.fn._form = function() {\n\treturn typeof this[ 0 ].form === \"string\" ? this.closest( \"form\" ) : $( this[ 0 ].form );\n};\n\n\n/*!\n * jQuery UI Form Reset Mixin 1.13.3\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n//>>label: Form Reset Mixin\n//>>group: Core\n//>>description: Refresh input widgets when their form is reset\n//>>docs: https://api.jqueryui.com/form-reset-mixin/\n\n\nvar formResetMixin = $.ui.formResetMixin = {\n\t_formResetHandler: function() {\n\t\tvar form = $( this );\n\n\t\t// Wait for the form reset to actually happen before refreshing\n\t\tsetTimeout( function() {\n\t\t\tvar instances = form.data( \"ui-form-reset-instances\" );\n\t\t\t$.each( instances, function() {\n\t\t\t\tthis.refresh();\n\t\t\t} );\n\t\t} );\n\t},\n\n\t_bindFormResetHandler: function() {\n\t\tthis.form = this.element._form();\n\t\tif ( !this.form.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar instances = this.form.data( \"ui-form-reset-instances\" ) || [];\n\t\tif ( !instances.length ) {\n\n\t\t\t// We don't use _on() here because we use a single event handler per form\n\t\t\tthis.form.on( \"reset.ui-form-reset\", this._formResetHandler );\n\t\t}\n\t\tinstances.push( this );\n\t\tthis.form.data( \"ui-form-reset-instances\", instances );\n\t},\n\n\t_unbindFormResetHandler: function() {\n\t\tif ( !this.form.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar instances = this.form.data( \"ui-form-reset-instances\" );\n\t\tinstances.splice( $.inArray( this, instances ), 1 );\n\t\tif ( instances.length ) {\n\t\t\tthis.form.data( \"ui-form-reset-instances\", instances );\n\t\t} else {\n\t\t\tthis.form\n\t\t\t\t.removeData( \"ui-form-reset-instances\" )\n\t\t\t\t.off( \"reset.ui-form-reset\" );\n\t\t}\n\t}\n};\n\n\n/*!\n * jQuery UI Support for jQuery core 1.8.x and newer 1.13.3\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n *\n */\n\n//>>label: jQuery 1.8+ Support\n//>>group: Core\n//>>description: Support version 1.8.x and newer of jQuery core\n\n\n// Support: jQuery 1.9.x or older\n// $.expr[ \":\" ] is deprecated.\nif ( !$.expr.pseudos ) {\n\t$.expr.pseudos = $.expr[ \":\" ];\n}\n\n// Support: jQuery 1.11.x or older\n// $.unique has been renamed to $.uniqueSort\nif ( !$.uniqueSort ) {\n\t$.uniqueSort = $.unique;\n}\n\n// Support: jQuery 2.2.x or older.\n// This method has been defined in jQuery 3.0.0.\n// Code from https://github.com/jquery/jquery/blob/e539bac79e666bba95bba86d690b4e609dca2286/src/selector/escapeSelector.js\nif ( !$.escapeSelector ) {\n\n\t// CSS string/identifier serialization\n\t// https://drafts.csswg.org/cssom/#common-serializing-idioms\n\tvar rcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\x80-\\uFFFF\\w-]/g;\n\n\tvar fcssescape = function( ch, asCodePoint ) {\n\t\tif ( asCodePoint ) {\n\n\t\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\t\tif ( ch === \"\\0\" ) {\n\t\t\t\treturn \"\\uFFFD\";\n\t\t\t}\n\n\t\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\t\treturn ch.slice( 0, -1 ) + \"\\\\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t\t}\n\n\t\t// Other potentially-special ASCII characters get backslash-escaped\n\t\treturn \"\\\\\" + ch;\n\t};\n\n\t$.escapeSelector = function( sel ) {\n\t\treturn ( sel + \"\" ).replace( rcssescape, fcssescape );\n\t};\n}\n\n// Support: jQuery 3.4.x or older\n// These methods have been defined in jQuery 3.5.0.\nif ( !$.fn.even || !$.fn.odd ) {\n\t$.fn.extend( {\n\t\teven: function() {\n\t\t\treturn this.filter( function( i ) {\n\t\t\t\treturn i % 2 === 0;\n\t\t\t} );\n\t\t},\n\t\todd: function() {\n\t\t\treturn this.filter( function( i ) {\n\t\t\t\treturn i % 2 === 1;\n\t\t\t} );\n\t\t}\n\t} );\n}\n\n;\n/*!\n * jQuery UI Keycode 1.13.3\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n//>>label: Keycode\n//>>group: Core\n//>>description: Provide keycodes as keynames\n//>>docs: https://api.jqueryui.com/jQuery.ui.keyCode/\n\n\nvar keycode = $.ui.keyCode = {\n\tBACKSPACE: 8,\n\tCOMMA: 188,\n\tDELETE: 46,\n\tDOWN: 40,\n\tEND: 35,\n\tENTER: 13,\n\tESCAPE: 27,\n\tHOME: 36,\n\tLEFT: 37,\n\tPAGE_DOWN: 34,\n\tPAGE_UP: 33,\n\tPERIOD: 190,\n\tRIGHT: 39,\n\tSPACE: 32,\n\tTAB: 9,\n\tUP: 38\n};\n\n\n/*!\n * jQuery UI Labels 1.13.3\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n//>>label: labels\n//>>group: Core\n//>>description: Find all the labels associated with a given input\n//>>docs: https://api.jqueryui.com/labels/\n\n\nvar labels = $.fn.labels = function() {\n\tvar ancestor, selector, id, labels, ancestors;\n\n\tif ( !this.length ) {\n\t\treturn this.pushStack( [] );\n\t}\n\n\t// Check control.labels first\n\tif ( this[ 0 ].labels && this[ 0 ].labels.length ) {\n\t\treturn this.pushStack( this[ 0 ].labels );\n\t}\n\n\t// Support: IE <= 11, FF <= 37, Android <= 2.3 only\n\t// Above browsers do not support control.labels. Everything below is to support them\n\t// as well as document fragments. control.labels does not work on document fragments\n\tlabels = this.eq( 0 ).parents( \"label\" );\n\n\t// Look for the label based on the id\n\tid = this.attr( \"id\" );\n\tif ( id ) {\n\n\t\t// We don't search against the document in case the element\n\t\t// is disconnected from the DOM\n\t\tancestor = this.eq( 0 ).parents().last();\n\n\t\t// Get a full set of top level ancestors\n\t\tancestors = ancestor.add( ancestor.length ? ancestor.siblings() : this.siblings() );\n\n\t\t// Create a selector for the label based on the id\n\t\tselector = \"label[for='\" + $.escapeSelector( id ) + \"']\";\n\n\t\tlabels = labels.add( ancestors.find( selector ).addBack( selector ) );\n\n\t}\n\n\t// Return whatever we have found for labels\n\treturn this.pushStack( labels );\n};\n\n\n/*!\n * jQuery UI Scroll Parent 1.13.3\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n//>>label: scrollParent\n//>>group: Core\n//>>description: Get the closest ancestor element that is scrollable.\n//>>docs: https://api.jqueryui.com/scrollParent/\n\n\nvar scrollParent = $.fn.scrollParent = function( includeHidden ) {\n\tvar position = this.css( \"position\" ),\n\t\texcludeStaticParent = position === \"absolute\",\n\t\toverflowRegex = includeHidden ? /(auto|scroll|hidden)/ : /(auto|scroll)/,\n\t\tscrollParent = this.parents().filter( function() {\n\t\t\tvar parent = $( this );\n\t\t\tif ( excludeStaticParent && parent.css( \"position\" ) === \"static\" ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn overflowRegex.test( parent.css( \"overflow\" ) + parent.css( \"overflow-y\" ) +\n\t\t\t\tparent.css( \"overflow-x\" ) );\n\t\t} ).eq( 0 );\n\n\treturn position === \"fixed\" || !scrollParent.length ?\n\t\t$( this[ 0 ].ownerDocument || document ) :\n\t\tscrollParent;\n};\n\n\n/*!\n * jQuery UI Tabbable 1.13.3\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n//>>label: :tabbable Selector\n//>>group: Core\n//>>description: Selects elements which can be tabbed to.\n//>>docs: https://api.jqueryui.com/tabbable-selector/\n\n\nvar tabbable = $.extend( $.expr.pseudos, {\n\ttabbable: function( element ) {\n\t\tvar tabIndex = $.attr( element, \"tabindex\" ),\n\t\t\thasTabindex = tabIndex != null;\n\t\treturn ( !hasTabindex || tabIndex >= 0 ) && $.ui.focusable( element, hasTabindex );\n\t}\n} );\n\n\n/*!\n * jQuery UI Unique ID 1.13.3\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n//>>label: uniqueId\n//>>group: Core\n//>>description: Functions to generate and remove uniqueId's\n//>>docs: https://api.jqueryui.com/uniqueId/\n\n\nvar uniqueId = $.fn.extend( {\n\tuniqueId: ( function() {\n\t\tvar uuid = 0;\n\n\t\treturn function() {\n\t\t\treturn this.each( function() {\n\t\t\t\tif ( !this.id ) {\n\t\t\t\t\tthis.id = \"ui-id-\" + ( ++uuid );\n\t\t\t\t}\n\t\t\t} );\n\t\t};\n\t} )(),\n\n\tremoveUniqueId: function() {\n\t\treturn this.each( function() {\n\t\t\tif ( /^ui-id-\\d+$/.test( this.id ) ) {\n\t\t\t\t$( this ).removeAttr( \"id\" );\n\t\t\t}\n\t\t} );\n\t}\n} );\n\n\n/*!\n * jQuery UI Accordion 1.13.3\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n//>>label: Accordion\n//>>group: Widgets\n/* eslint-disable max-len */\n//>>description: Displays collapsible content panels for presenting information in a limited amount of space.\n/* eslint-enable max-len */\n//>>docs: https://api.jqueryui.com/accordion/\n//>>demos: https://jqueryui.com/accordion/\n//>>css.structure: ../../themes/base/core.css\n//>>css.structure: ../../themes/base/accordion.css\n//>>css.theme: ../../themes/base/theme.css\n\n\nvar widgetsAccordion = $.widget( \"ui.accordion\", {\n\tversion: \"1.13.3\",\n\toptions: {\n\t\tactive: 0,\n\t\tanimate: {},\n\t\tclasses: {\n\t\t\t\"ui-accordion-header\": \"ui-corner-top\",\n\t\t\t\"ui-accordion-header-collapsed\": \"ui-corner-all\",\n\t\t\t\"ui-accordion-content\": \"ui-corner-bottom\"\n\t\t},\n\t\tcollapsible: false,\n\t\tevent: \"click\",\n\t\theader: function( elem ) {\n\t\t\treturn elem.find( \"> li > :first-child\" ).add( elem.find( \"> :not(li)\" ).even() );\n\t\t},\n\t\theightStyle: \"auto\",\n\t\ticons: {\n\t\t\tactiveHeader: \"ui-icon-triangle-1-s\",\n\t\t\theader: \"ui-icon-triangle-1-e\"\n\t\t},\n\n\t\t// Callbacks\n\t\tactivate: null,\n\t\tbeforeActivate: null\n\t},\n\n\thideProps: {\n\t\tborderTopWidth: \"hide\",\n\t\tborderBottomWidth: \"hide\",\n\t\tpaddingTop: \"hide\",\n\t\tpaddingBottom: \"hide\",\n\t\theight: \"hide\"\n\t},\n\n\tshowProps: {\n\t\tborderTopWidth: \"show\",\n\t\tborderBottomWidth: \"show\",\n\t\tpaddingTop: \"show\",\n\t\tpaddingBottom: \"show\",\n\t\theight: \"show\"\n\t},\n\n\t_create: function() {\n\t\tvar options = this.options;\n\n\t\tthis.prevShow = this.prevHide = $();\n\t\tthis._addClass( \"ui-accordion\", \"ui-widget ui-helper-reset\" );\n\t\tthis.element.attr( \"role\", \"tablist\" );\n\n\t\t// Don't allow collapsible: false and active: false / null\n\t\tif ( !options.collapsible && ( options.active === false || options.active == null ) ) {\n\t\t\toptions.active = 0;\n\t\t}\n\n\t\tthis._processPanels();\n\n\t\t// handle negative values\n\t\tif ( options.active < 0 ) {\n\t\t\toptions.active += this.headers.length;\n\t\t}\n\t\tthis._refresh();\n\t},\n\n\t_getCreateEventData: function() {\n\t\treturn {\n\t\t\theader: this.active,\n\t\t\tpanel: !this.active.length ? $() : this.active.next()\n\t\t};\n\t},\n\n\t_createIcons: function() {\n\t\tvar icon, children,\n\t\t\ticons = this.options.icons;\n\n\t\tif ( icons ) {\n\t\t\ticon = $( \"\" );\n\t\t\tthis._addClass( icon, \"ui-accordion-header-icon\", \"ui-icon \" + icons.header );\n\t\t\ticon.prependTo( this.headers );\n\t\t\tchildren = this.active.children( \".ui-accordion-header-icon\" );\n\t\t\tthis._removeClass( children, icons.header )\n\t\t\t\t._addClass( children, null, icons.activeHeader )\n\t\t\t\t._addClass( this.headers, \"ui-accordion-icons\" );\n\t\t}\n\t},\n\n\t_destroyIcons: function() {\n\t\tthis._removeClass( this.headers, \"ui-accordion-icons\" );\n\t\tthis.headers.children( \".ui-accordion-header-icon\" ).remove();\n\t},\n\n\t_destroy: function() {\n\t\tvar contents;\n\n\t\t// Clean up main element\n\t\tthis.element.removeAttr( \"role\" );\n\n\t\t// Clean up headers\n\t\tthis.headers\n\t\t\t.removeAttr( \"role aria-expanded aria-selected aria-controls tabIndex\" )\n\t\t\t.removeUniqueId();\n\n\t\tthis._destroyIcons();\n\n\t\t// Clean up content panels\n\t\tcontents = this.headers.next()\n\t\t\t.css( \"display\", \"\" )\n\t\t\t.removeAttr( \"role aria-hidden aria-labelledby\" )\n\t\t\t.removeUniqueId();\n\n\t\tif ( this.options.heightStyle !== \"content\" ) {\n\t\t\tcontents.css( \"height\", \"\" );\n\t\t}\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tif ( key === \"active\" ) {\n\n\t\t\t// _activate() will handle invalid values and update this.options\n\t\t\tthis._activate( value );\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key === \"event\" ) {\n\t\t\tif ( this.options.event ) {\n\t\t\t\tthis._off( this.headers, this.options.event );\n\t\t\t}\n\t\t\tthis._setupEvents( value );\n\t\t}\n\n\t\tthis._super( key, value );\n\n\t\t// Setting collapsible: false while collapsed; open first panel\n\t\tif ( key === \"collapsible\" && !value && this.options.active === false ) {\n\t\t\tthis._activate( 0 );\n\t\t}\n\n\t\tif ( key === \"icons\" ) {\n\t\t\tthis._destroyIcons();\n\t\t\tif ( value ) {\n\t\t\t\tthis._createIcons();\n\t\t\t}\n\t\t}\n\t},\n\n\t_setOptionDisabled: function( value ) {\n\t\tthis._super( value );\n\n\t\tthis.element.attr( \"aria-disabled\", value );\n\n\t\t// Support: IE8 Only\n\t\t// #5332 / #6059 - opacity doesn't cascade to positioned elements in IE\n\t\t// so we need to add the disabled class to the headers and panels\n\t\tthis._toggleClass( null, \"ui-state-disabled\", !!value );\n\t\tthis._toggleClass( this.headers.add( this.headers.next() ), null, \"ui-state-disabled\",\n\t\t\t!!value );\n\t},\n\n\t_keydown: function( event ) {\n\t\tif ( event.altKey || event.ctrlKey ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar keyCode = $.ui.keyCode,\n\t\t\tlength = this.headers.length,\n\t\t\tcurrentIndex = this.headers.index( event.target ),\n\t\t\ttoFocus = false;\n\n\t\tswitch ( event.keyCode ) {\n\t\tcase keyCode.RIGHT:\n\t\tcase keyCode.DOWN:\n\t\t\ttoFocus = this.headers[ ( currentIndex + 1 ) % length ];\n\t\t\tbreak;\n\t\tcase keyCode.LEFT:\n\t\tcase keyCode.UP:\n\t\t\ttoFocus = this.headers[ ( currentIndex - 1 + length ) % length ];\n\t\t\tbreak;\n\t\tcase keyCode.SPACE:\n\t\tcase keyCode.ENTER:\n\t\t\tthis._eventHandler( event );\n\t\t\tbreak;\n\t\tcase keyCode.HOME:\n\t\t\ttoFocus = this.headers[ 0 ];\n\t\t\tbreak;\n\t\tcase keyCode.END:\n\t\t\ttoFocus = this.headers[ length - 1 ];\n\t\t\tbreak;\n\t\t}\n\n\t\tif ( toFocus ) {\n\t\t\t$( event.target ).attr( \"tabIndex\", -1 );\n\t\t\t$( toFocus ).attr( \"tabIndex\", 0 );\n\t\t\t$( toFocus ).trigger( \"focus\" );\n\t\t\tevent.preventDefault();\n\t\t}\n\t},\n\n\t_panelKeyDown: function( event ) {\n\t\tif ( event.keyCode === $.ui.keyCode.UP && event.ctrlKey ) {\n\t\t\t$( event.currentTarget ).prev().trigger( \"focus\" );\n\t\t}\n\t},\n\n\trefresh: function() {\n\t\tvar options = this.options;\n\t\tthis._processPanels();\n\n\t\t// Was collapsed or no panel\n\t\tif ( ( options.active === false && options.collapsible === true ) ||\n\t\t\t\t!this.headers.length ) {\n\t\t\toptions.active = false;\n\t\t\tthis.active = $();\n\n\t\t// active false only when collapsible is true\n\t\t} else if ( options.active === false ) {\n\t\t\tthis._activate( 0 );\n\n\t\t// was active, but active panel is gone\n\t\t} else if ( this.active.length && !$.contains( this.element[ 0 ], this.active[ 0 ] ) ) {\n\n\t\t\t// all remaining panel are disabled\n\t\t\tif ( this.headers.length === this.headers.find( \".ui-state-disabled\" ).length ) {\n\t\t\t\toptions.active = false;\n\t\t\t\tthis.active = $();\n\n\t\t\t// activate previous panel\n\t\t\t} else {\n\t\t\t\tthis._activate( Math.max( 0, options.active - 1 ) );\n\t\t\t}\n\n\t\t// was active, active panel still exists\n\t\t} else {\n\n\t\t\t// make sure active index is correct\n\t\t\toptions.active = this.headers.index( this.active );\n\t\t}\n\n\t\tthis._destroyIcons();\n\n\t\tthis._refresh();\n\t},\n\n\t_processPanels: function() {\n\t\tvar prevHeaders = this.headers,\n\t\t\tprevPanels = this.panels;\n\n\t\tif ( typeof this.options.header === \"function\" ) {\n\t\t\tthis.headers = this.options.header( this.element );\n\t\t} else {\n\t\t\tthis.headers = this.element.find( this.options.header );\n\t\t}\n\t\tthis._addClass( this.headers, \"ui-accordion-header ui-accordion-header-collapsed\",\n\t\t\t\"ui-state-default\" );\n\n\t\tthis.panels = this.headers.next().filter( \":not(.ui-accordion-content-active)\" ).hide();\n\t\tthis._addClass( this.panels, \"ui-accordion-content\", \"ui-helper-reset ui-widget-content\" );\n\n\t\t// Avoid memory leaks (#10056)\n\t\tif ( prevPanels ) {\n\t\t\tthis._off( prevHeaders.not( this.headers ) );\n\t\t\tthis._off( prevPanels.not( this.panels ) );\n\t\t}\n\t},\n\n\t_refresh: function() {\n\t\tvar maxHeight,\n\t\t\toptions = this.options,\n\t\t\theightStyle = options.heightStyle,\n\t\t\tparent = this.element.parent();\n\n\t\tthis.active = this._findActive( options.active );\n\t\tthis._addClass( this.active, \"ui-accordion-header-active\", \"ui-state-active\" )\n\t\t\t._removeClass( this.active, \"ui-accordion-header-collapsed\" );\n\t\tthis._addClass( this.active.next(), \"ui-accordion-content-active\" );\n\t\tthis.active.next().show();\n\n\t\tthis.headers\n\t\t\t.attr( \"role\", \"tab\" )\n\t\t\t.each( function() {\n\t\t\t\tvar header = $( this ),\n\t\t\t\t\theaderId = header.uniqueId().attr( \"id\" ),\n\t\t\t\t\tpanel = header.next(),\n\t\t\t\t\tpanelId = panel.uniqueId().attr( \"id\" );\n\t\t\t\theader.attr( \"aria-controls\", panelId );\n\t\t\t\tpanel.attr( \"aria-labelledby\", headerId );\n\t\t\t} )\n\t\t\t.next()\n\t\t\t\t.attr( \"role\", \"tabpanel\" );\n\n\t\tthis.headers\n\t\t\t.not( this.active )\n\t\t\t\t.attr( {\n\t\t\t\t\t\"aria-selected\": \"false\",\n\t\t\t\t\t\"aria-expanded\": \"false\",\n\t\t\t\t\ttabIndex: -1\n\t\t\t\t} )\n\t\t\t\t.next()\n\t\t\t\t\t.attr( {\n\t\t\t\t\t\t\"aria-hidden\": \"true\"\n\t\t\t\t\t} )\n\t\t\t\t\t.hide();\n\n\t\t// Make sure at least one header is in the tab order\n\t\tif ( !this.active.length ) {\n\t\t\tthis.headers.eq( 0 ).attr( \"tabIndex\", 0 );\n\t\t} else {\n\t\t\tthis.active.attr( {\n\t\t\t\t\"aria-selected\": \"true\",\n\t\t\t\t\"aria-expanded\": \"true\",\n\t\t\t\ttabIndex: 0\n\t\t\t} )\n\t\t\t\t.next()\n\t\t\t\t\t.attr( {\n\t\t\t\t\t\t\"aria-hidden\": \"false\"\n\t\t\t\t\t} );\n\t\t}\n\n\t\tthis._createIcons();\n\n\t\tthis._setupEvents( options.event );\n\n\t\tif ( heightStyle === \"fill\" ) {\n\t\t\tmaxHeight = parent.height();\n\t\t\tthis.element.siblings( \":visible\" ).each( function() {\n\t\t\t\tvar elem = $( this ),\n\t\t\t\t\tposition = elem.css( \"position\" );\n\n\t\t\t\tif ( position === \"absolute\" || position === \"fixed\" ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tmaxHeight -= elem.outerHeight( true );\n\t\t\t} );\n\n\t\t\tthis.headers.each( function() {\n\t\t\t\tmaxHeight -= $( this ).outerHeight( true );\n\t\t\t} );\n\n\t\t\tthis.headers.next()\n\t\t\t\t.each( function() {\n\t\t\t\t\t$( this ).height( Math.max( 0, maxHeight -\n\t\t\t\t\t\t$( this ).innerHeight() + $( this ).height() ) );\n\t\t\t\t} )\n\t\t\t\t.css( \"overflow\", \"auto\" );\n\t\t} else if ( heightStyle === \"auto\" ) {\n\t\t\tmaxHeight = 0;\n\t\t\tthis.headers.next()\n\t\t\t\t.each( function() {\n\t\t\t\t\tvar isVisible = $( this ).is( \":visible\" );\n\t\t\t\t\tif ( !isVisible ) {\n\t\t\t\t\t\t$( this ).show();\n\t\t\t\t\t}\n\t\t\t\t\tmaxHeight = Math.max( maxHeight, $( this ).css( \"height\", \"\" ).height() );\n\t\t\t\t\tif ( !isVisible ) {\n\t\t\t\t\t\t$( this ).hide();\n\t\t\t\t\t}\n\t\t\t\t} )\n\t\t\t\t.height( maxHeight );\n\t\t}\n\t},\n\n\t_activate: function( index ) {\n\t\tvar active = this._findActive( index )[ 0 ];\n\n\t\t// Trying to activate the already active panel\n\t\tif ( active === this.active[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Trying to collapse, simulate a click on the currently active header\n\t\tactive = active || this.active[ 0 ];\n\n\t\tthis._eventHandler( {\n\t\t\ttarget: active,\n\t\t\tcurrentTarget: active,\n\t\t\tpreventDefault: $.noop\n\t\t} );\n\t},\n\n\t_findActive: function( selector ) {\n\t\treturn typeof selector === \"number\" ? this.headers.eq( selector ) : $();\n\t},\n\n\t_setupEvents: function( event ) {\n\t\tvar events = {\n\t\t\tkeydown: \"_keydown\"\n\t\t};\n\t\tif ( event ) {\n\t\t\t$.each( event.split( \" \" ), function( index, eventName ) {\n\t\t\t\tevents[ eventName ] = \"_eventHandler\";\n\t\t\t} );\n\t\t}\n\n\t\tthis._off( this.headers.add( this.headers.next() ) );\n\t\tthis._on( this.headers, events );\n\t\tthis._on( this.headers.next(), { keydown: \"_panelKeyDown\" } );\n\t\tthis._hoverable( this.headers );\n\t\tthis._focusable( this.headers );\n\t},\n\n\t_eventHandler: function( event ) {\n\t\tvar activeChildren, clickedChildren,\n\t\t\toptions = this.options,\n\t\t\tactive = this.active,\n\t\t\tclicked = $( event.currentTarget ),\n\t\t\tclickedIsActive = clicked[ 0 ] === active[ 0 ],\n\t\t\tcollapsing = clickedIsActive && options.collapsible,\n\t\t\ttoShow = collapsing ? $() : clicked.next(),\n\t\t\ttoHide = active.next(),\n\t\t\teventData = {\n\t\t\t\toldHeader: active,\n\t\t\t\toldPanel: toHide,\n\t\t\t\tnewHeader: collapsing ? $() : clicked,\n\t\t\t\tnewPanel: toShow\n\t\t\t};\n\n\t\tevent.preventDefault();\n\n\t\tif (\n\n\t\t\t\t// click on active header, but not collapsible\n\t\t\t\t( clickedIsActive && !options.collapsible ) ||\n\n\t\t\t\t// allow canceling activation\n\t\t\t\t( this._trigger( \"beforeActivate\", event, eventData ) === false ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\toptions.active = collapsing ? false : this.headers.index( clicked );\n\n\t\t// When the call to ._toggle() comes after the class changes\n\t\t// it causes a very odd bug in IE 8 (see #6720)\n\t\tthis.active = clickedIsActive ? $() : clicked;\n\t\tthis._toggle( eventData );\n\n\t\t// Switch classes\n\t\t// corner classes on the previously active header stay after the animation\n\t\tthis._removeClass( active, \"ui-accordion-header-active\", \"ui-state-active\" );\n\t\tif ( options.icons ) {\n\t\t\tactiveChildren = active.children( \".ui-accordion-header-icon\" );\n\t\t\tthis._removeClass( activeChildren, null, options.icons.activeHeader )\n\t\t\t\t._addClass( activeChildren, null, options.icons.header );\n\t\t}\n\n\t\tif ( !clickedIsActive ) {\n\t\t\tthis._removeClass( clicked, \"ui-accordion-header-collapsed\" )\n\t\t\t\t._addClass( clicked, \"ui-accordion-header-active\", \"ui-state-active\" );\n\t\t\tif ( options.icons ) {\n\t\t\t\tclickedChildren = clicked.children( \".ui-accordion-header-icon\" );\n\t\t\t\tthis._removeClass( clickedChildren, null, options.icons.header )\n\t\t\t\t\t._addClass( clickedChildren, null, options.icons.activeHeader );\n\t\t\t}\n\n\t\t\tthis._addClass( clicked.next(), \"ui-accordion-content-active\" );\n\t\t}\n\t},\n\n\t_toggle: function( data ) {\n\t\tvar toShow = data.newPanel,\n\t\t\ttoHide = this.prevShow.length ? this.prevShow : data.oldPanel;\n\n\t\t// Handle activating a panel during the animation for another activation\n\t\tthis.prevShow.add( this.prevHide ).stop( true, true );\n\t\tthis.prevShow = toShow;\n\t\tthis.prevHide = toHide;\n\n\t\tif ( this.options.animate ) {\n\t\t\tthis._animate( toShow, toHide, data );\n\t\t} else {\n\t\t\ttoHide.hide();\n\t\t\ttoShow.show();\n\t\t\tthis._toggleComplete( data );\n\t\t}\n\n\t\ttoHide.attr( {\n\t\t\t\"aria-hidden\": \"true\"\n\t\t} );\n\t\ttoHide.prev().attr( {\n\t\t\t\"aria-selected\": \"false\",\n\t\t\t\"aria-expanded\": \"false\"\n\t\t} );\n\n\t\t// if we're switching panels, remove the old header from the tab order\n\t\t// if we're opening from collapsed state, remove the previous header from the tab order\n\t\t// if we're collapsing, then keep the collapsing header in the tab order\n\t\tif ( toShow.length && toHide.length ) {\n\t\t\ttoHide.prev().attr( {\n\t\t\t\t\"tabIndex\": -1,\n\t\t\t\t\"aria-expanded\": \"false\"\n\t\t\t} );\n\t\t} else if ( toShow.length ) {\n\t\t\tthis.headers.filter( function() {\n\t\t\t\treturn parseInt( $( this ).attr( \"tabIndex\" ), 10 ) === 0;\n\t\t\t} )\n\t\t\t\t.attr( \"tabIndex\", -1 );\n\t\t}\n\n\t\ttoShow\n\t\t\t.attr( \"aria-hidden\", \"false\" )\n\t\t\t.prev()\n\t\t\t\t.attr( {\n\t\t\t\t\t\"aria-selected\": \"true\",\n\t\t\t\t\t\"aria-expanded\": \"true\",\n\t\t\t\t\ttabIndex: 0\n\t\t\t\t} );\n\t},\n\n\t_animate: function( toShow, toHide, data ) {\n\t\tvar total, easing, duration,\n\t\t\tthat = this,\n\t\t\tadjust = 0,\n\t\t\tboxSizing = toShow.css( \"box-sizing\" ),\n\t\t\tdown = toShow.length &&\n\t\t\t\t( !toHide.length || ( toShow.index() < toHide.index() ) ),\n\t\t\tanimate = this.options.animate || {},\n\t\t\toptions = down && animate.down || animate,\n\t\t\tcomplete = function() {\n\t\t\t\tthat._toggleComplete( data );\n\t\t\t};\n\n\t\tif ( typeof options === \"number\" ) {\n\t\t\tduration = options;\n\t\t}\n\t\tif ( typeof options === \"string\" ) {\n\t\t\teasing = options;\n\t\t}\n\n\t\t// fall back from options to animation in case of partial down settings\n\t\teasing = easing || options.easing || animate.easing;\n\t\tduration = duration || options.duration || animate.duration;\n\n\t\tif ( !toHide.length ) {\n\t\t\treturn toShow.animate( this.showProps, duration, easing, complete );\n\t\t}\n\t\tif ( !toShow.length ) {\n\t\t\treturn toHide.animate( this.hideProps, duration, easing, complete );\n\t\t}\n\n\t\ttotal = toShow.show().outerHeight();\n\t\ttoHide.animate( this.hideProps, {\n\t\t\tduration: duration,\n\t\t\teasing: easing,\n\t\t\tstep: function( now, fx ) {\n\t\t\t\tfx.now = Math.round( now );\n\t\t\t}\n\t\t} );\n\t\ttoShow\n\t\t\t.hide()\n\t\t\t.animate( this.showProps, {\n\t\t\t\tduration: duration,\n\t\t\t\teasing: easing,\n\t\t\t\tcomplete: complete,\n\t\t\t\tstep: function( now, fx ) {\n\t\t\t\t\tfx.now = Math.round( now );\n\t\t\t\t\tif ( fx.prop !== \"height\" ) {\n\t\t\t\t\t\tif ( boxSizing === \"content-box\" ) {\n\t\t\t\t\t\t\tadjust += fx.now;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if ( that.options.heightStyle !== \"content\" ) {\n\t\t\t\t\t\tfx.now = Math.round( total - toHide.outerHeight() - adjust );\n\t\t\t\t\t\tadjust = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t},\n\n\t_toggleComplete: function( data ) {\n\t\tvar toHide = data.oldPanel,\n\t\t\tprev = toHide.prev();\n\n\t\tthis._removeClass( toHide, \"ui-accordion-content-active\" );\n\t\tthis._removeClass( prev, \"ui-accordion-header-active\" )\n\t\t\t._addClass( prev, \"ui-accordion-header-collapsed\" );\n\n\t\t// Work around for rendering bug in IE (#5421)\n\t\tif ( toHide.length ) {\n\t\t\ttoHide.parent()[ 0 ].className = toHide.parent()[ 0 ].className;\n\t\t}\n\t\tthis._trigger( \"activate\", null, data );\n\t}\n} );\n\n\n\nvar safeActiveElement = $.ui.safeActiveElement = function( document ) {\n\tvar activeElement;\n\n\t// Support: IE 9 only\n\t// IE9 throws an \"Unspecified error\" accessing document.activeElement from an